并发编程之操作系统的发展史
操作系统发展史
1 .1手工操作——穿孔卡片
程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。
手工操作方式两个特点:
(1) 用户独占全机,不会出现因资源已被其他用户占用而等待的现象,但资源利用率低。
(2)cpu等待手工操作,cpu的利用不充分
1.2.批处理——磁带存储
批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地成批处理一个或多个用户作业。
1.3 多道程序系统
所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行,即同时把多个程序放入内存,并允许它们交替在cpu中运行,它们共享系统中的各种硬软件资源,当一道程序因I/O请求而暂停运行时,cpu便立即转去运行另一道程序。
单处理机系统中多道程序运行的特点:
(1)多道:计算机内存中同时存放几道相互独立的程序;
(2)宏观上并行:同时进入系统的几道程序程序都处于运行过程中,即它们先后开始了各自运行,但都未运行完毕。
(3)微观上串行:实际上,各道程序轮流地使用cpu,交替运行。
多道程序系统的出现,标志着操作系统渐趋成熟的阶段,先后出现了作业调度管理,处理机管理,存储器管理,外部设备管理,文件系统管理等功能。
由于多个程序同时在计算机中运行,开始有了空间隔离的概念,只有内存空间的隔离才能让数据更加安全,稳定。
除了空间隔离之外,多道技术还第一次体现了时空复用的特点,遇到IO就切换程序,使得cpu的利用率提高了,计算机的工作效率也随之提高。
多道批处理系统
两个特点:
(1)多道:系统内可同时容纳多个作业,这些作业放到外存中,组成一个后备队列,系统按一定的调度原则每次从后备作业队列中选取一个或多个作业进入内存运行,运行作业结束,退出运行后备作业进入运行均由系统自动实现,从而在系统中形成一个自动转接的,连续的作业流。
(2)成批:在系统运行过程,不允许用户与其作业发生交互作用,即:作业一旦进入系统,用户就不能直接干预其作业的运行。
批处理系统的一个重要缺点:不提供人机交互能力,给用户使用计算机带来不便
批处理系统的追求目标:提高系统资源利用率和系统吞吐量,以及作业流程的自动化
虽然用户独占全机资源,并且直接控制程序的运行,可以随时了解程序运行情况。但这种工作方式因独占全机造成资源效率极低。
1.4 分时系统
由于cpu速度不断提高和采用分时技术,一台计算机课同时连接多个用户终端,而每个用户可在自己的终端上联机使用计算机,好像字节独占机器一样。
分时技术:把处理机的运行时间分成很短的时间片,按时间轮流把处理机分配给各联机作业使用。
特点:(1)多路性。 若干用户同时使用一台计算机。
(2)交互性。用户可根据系统对请求的响应结果,进一步向系统提出新的请求,这种能使用户与系统进行人机对话的工作方式,明显地有别于批处理系统,因而,分时系统又被称为交互式系统。
(3)独立性。用户之间可以相互独立操作,互不干扰,系统保证各用户程序运行的完整性,不会发生相互混淆或破坏现象。
(4)及时性,系统可对用户的输入及时作出响应,
注意:分时系统的分时间片工作,在没有遇到IO操作的时候就用完了自己的时间片被切走了,这样的切换工作其实并没有提高cpu的效率,反而使得计算机的效率降低了。但是我们牺牲了一点效率,却实现了多个程序共同执行的效果,这样你就可以在计算机上一边听音乐一边聊qq了。
1.5 实时系统
实时系统可分为两类:
(1)实时控制系统:当用于飞机飞行、导弹发射等的自动控制时,要求计算机能尽快处理测量系统测得的数据,及时地对飞机或导弹进行控制,或将有关信息通过显示终端提供给决策人员。当用于轧钢、石化等工业生产过程控制时,也要求计算机能及时处理由各类传感器送来的数据,然后控制相应的执行机构。
(2)实时信息处理系统。当用于预定飞机票、查询有关航班、航线、票价等事宜时,或当用于银行系统、情报检索系统时,都要求计算机能对终端设备发来的服务请求及时予以正确的回答。此类对响应及时性的要求稍弱于第一类。
实时操作系统的主要特点:
(1)及时响应。每一个信息接收、分析处理和发送的过程必须在严格的时间限制内完成。
(2)高可靠性。需采取冗余措施,双机系统前后台工作,也包括必要的保密措施等。
1.6 通用操作系统
操作系统的三种基本类型:多道批处理系统、分时系统、实时系统。
通用操作系统:具有多种类型操作特征的操作系统,可以同时兼有多道批处理,分时实时处理的功能,或其中两种以上的功能。
1.6.1 操作系统的进一步发展
个人计算机操作系统
网络操作系统
分布式操作系统:
(1)分布式系统要求一个统一的操作系统,实现系统操作的统一性。
(2)分布式操作系统管理分布式系统中的所有资源,它负责全系统的资源分配和调度,任务划分,信息传输和控制协调工作,并为用户提供一个统一的界面。
操作系统的作用
总结:
程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,这个繁琐的工作就是操作系统来干的,有了他,程序员就从这些繁琐的工作中解脱了出来,只需要考虑自己的应用软件的编写就可以了,应用软件直接使用操作系统提供的功能来间接使用硬件。
精简的说的话,操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。操作系统所处的位置如图
细说的话,操作系统应该分为两部分功能:
#一:隐藏了丑陋的硬件调用接口,为应用程序员提供调用硬件资源的更好,更简单,更清晰的模型(系统调用接口)。
应用程序员有了这些接口后,就不用再考虑操作硬件的细节,专心开发自己的应用程序即可。 例如:操作系统提供了文件这个抽象概念,对文件的操作就是对磁盘的操作,
有了文件我们无需再去考虑关于磁盘的读写控制(比如控制磁盘转动,移动磁头读写数据等细节), #二:将应用程序对硬件资源的竞态请求变得有序化 例如:很多应用软件其实是共享一套计算机硬件,比方说有可能有三个应用程序同时需要申请打印机来输出内容,
那么a程序竞争到了打印机资源就打印,然后可能是b竞争到打印机资源,也可能是c,这就导致了无序,
打印机可能打印一段a的内容然后又去打印c...,
操作系统的一个功能就是将这种无序变得有序。