操作系统是存在于硬件与软件之间,是一个管理、协调、控制计算机软件资源与硬件资源的控制程序
如果没有操作系统,程序员写一个程序,需要完成两层内容
第一层 : 学会底层硬件:CPU,内存,磁盘是如何工作使用的
第二层 : 去调用这些底层的硬件
将一些丑陋复杂的硬件操作封装成美丽的接口,便于使用
例如:操作系统提供了文件这个抽象概念,对文件的操作就是对磁盘的操作,有了文件我们无需再去考虑关于磁盘的读写控制(比如控制磁盘转动,移动磁头读写数据等细节)
合理的调度分配多个进程与CPU的关系,让其有序化
例如:很多应用软件其实是共享一套计算机硬件,比方说有可能有三个应用程序同时需要申请打印机来输出内容,那么a程序竞争到了打印机资源就打印,然后可能是b竞争到打印机资源,也可能是c,这就导致了无序,打印机可能打印一段a的内容然后又去打印c,操作系统的一个功能就是将这种无序变得有序。
诞生于二战时期,需要手工操作,在这个时期,同一个小组里的工程师们,设计、建造、编程、操作及维护同一台机器,所有的程序设计是用纯粹的机器语言编写的,甚至更糟糕,需要通过成千上万根电缆接到插件板上连成电路来控制机器的基本功能,后来出现了穿孔卡片,可以将程序写在卡片上,然后读入机而不用插件板。没有程序设计语言(汇编也没有),也没有操作系统的概念。使用机器需要预约时间,限时进入机房进行操作。
优点:可以一个人独享计算机
缺点:浪费计算机资源(一个人使用),所有的程序都是串行处理
利用磁带存储,批处理系统,不需要程序员进行硬件操作,所有硬件操作都已经是成型的机器了,每个程序刻在磁盘上,工作人员将代码磁盘运行,最后打印结果。
优点:批处理,节省了程序员连接各硬件的操作时间
缺点:不能独享计算机,不能在程序运行时修复bug,还是串行处理
20世纪60年代初期,大多数计算机厂商都有两条完全不兼容的生产线。一条是用于科学计算、运算的计算密集型,一条是用于商用、打印等工作的IO密集型。
有集成电路概念,所有的硬件变得很小,排列在线路板上
引入system/360系列,将两种计算机类型合并成一个
第三代计算机解决的问题
人工中途参与磁盘传递工作,以继输入输出设备不同机的问题
发明了多道技术
多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。
时间上的复用
阻塞: IO阻塞,recv, accept, read input,write, sleep等等,都是阻塞。
当一个程序在等待I/O时,另一个程序可以使用cpu,如果内存中可以同时存放足够多的作业,则cpu的利用率可以接近100%,类似于我们小学数学所学的统筹方法。
如果三个进程全部都没有IO阻塞,多道技术就会影响最终的效率
操作系统调用不同的进程在CPU间来回切换
空间上的复用
将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序。
一个内存可以加载多个进程
原文:https://www.cnblogs.com/biulo/p/11214230.html