我们来简单看下手工操作阶段的程序员是如何工作的:
程序员事先把想要执行的代码在纸带打孔,有孔是代表二进制的1,没孔代表的是二进制的0
程序员把打好孔的纸带放在纸带机上,然后指代机识别,把这些信息传递给计算机
计算机执行这些对应的程序
程序执行完毕之后,将结果打印在纸带上面,并且由纸带机输出
程序员取走纸带
如图:
那么我们可以发现一个很明显的问题:程序员得手动地放上纸带和取下纸带,纸带机需要向计算机输入纸带的信息,并且识别计算机输出的信息,然后将结果输出到纸带上。所以,真正留给计算机处理的时间是很少的。
我们用一个图表来表示:
用户独占全机、人机速度矛盾导致资源利用率极低
:为了解决这种人机速度矛盾问题,人们发明了单道批处理系统
引入脱机输入/地呼出技术(用外围机 + 磁带完成)
,并由监督程序
负责控制作业的输入、输出。
我们来看下具体的做法:
程序员们把打好孔的纸带放在纸带机上
纸带机和外围机连接,从而纸带机把这些纸带的信息输出到磁带上
控制程序控制着磁带将这些程序输入到计算机(因为磁带的读/写速度比纸带机要快很多)
计算机处理这些程序
计算机把运行的结果在监督程序的控制下输出给纸带机
如图所示:
1.信息输入到磁带
2.在监督程序的监督下,磁带把数据传给计算机并且计算机输出结果到磁带
3.用图表来感受一下:
缓解了一定程度的人机速度矛盾,资源利用率有所上升。
内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。CPU有大量时间是在空闲等待I/O完成。资源利用率依然很低。
我们来看具体图示:
在该阶段,操作系统正式诞生
,用于支持多道程序并发运行。
其实就是在某个阶段,某些机器或者硬件可能处于空闲状态,那么我们就不能让它们闲着,要“压榨”它们,所以在它们空闲的时候,就给它们安排任务,从而提高效率。
多道程序并发运行,共享计算机资源。资源利用率大幅提升,CPU和其他资更能保持“忙碌”状态,系统吞吐量增大。
用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行)。eg:无法调试程序/无法在程序运行过程中输入一些参数
计算机以
时间片
为单位轮流为各个用户/作业服务
,各个用户可用过终端与计算机进行交互。
用户请求可以被及时响应,
解决了人机交互问题
。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
其实我们之前举得老渣的例子就是分时操作系统,一号女朋友和二号女朋友都以为自己在“独占”着老渣的“资源”,即:一号女朋友和二号女朋友都互相感受不到别人的存在。
不能优先处理一些紧急任务
。操作系统对各个用户/作业都是完全公平的,循环地为了每个用户/作业服务一个时间片,不区分任务的紧急性。
能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件
。实时操作系统的主要特点是及时性和可靠性
。
实时操作系统又分为硬实时系统
和软实时系统
。
硬实时系统必须要在绝对严格的规定时间内完成处理,软实时系统能接受偶尔违反时间约定。
比如:导弹控制系统和自动驾驶系统就是硬实时系统。12306火车订票系统需要实时的显示火车票的数量有关的数据,这种就是软实时系统。
是伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信。(如:Windows NT就是一种典型的网络操作系统,网站服务器就可以使用)。
主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同地完成这个任务。
如Windows XP、MacOS,方便个人使用。