Files
python-book/03.网络编程与并发/02.操作系统发展史.md
2025-09-18 14:43:27 +08:00

180 lines
16 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 操作系统发展史
## 手工操作 —— 穿孔卡片
1946年第一台计算机诞生--20世纪50年代中期计算机工作还在采用手工操作方式。此时还没有操作系统的概念。
![image-20210725220908985](02.%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%8F%91%E5%B1%95%E5%8F%B2/image-20210725220908985.png)
![image-20210725220917981](02.%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%8F%91%E5%B1%95%E5%8F%B2/image-20210725220917981.png)
程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。
手工操作方式两个特点:
1. 用户独占全机。不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低。
2. CPU 等待手工操作。CPU的利用不充分。
20世纪50年代后期出现人机矛盾手工操作的慢速度和计算机的高速度之间形成了尖锐矛盾手工操作方式已严重损害了系统资源的利用率使资源利用率降为百分之几甚至更低不能容忍。唯一的解决办法只有摆脱人的手工操作实现作业的自动过渡。这样就出现了成批处理。
## 批处理 —— 磁带存储
批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令)。
### 联机批处理系统
首先出现的是联机批处理系统,即作业的输入/输出由CPU来处理。
![image-20210725220928953](02.%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%8F%91%E5%B1%95%E5%8F%B2/image-20210725220928953.png)
主机与输入机之间增加一个存储设备——磁带,在运行于主机上的监督程序的自动控制下,计算机可自动完成:成批地把输入机上的用户作业读入磁带,依次把磁带上的用户作业读入主机内存并执行并把计算结果向输出机输出。完成了上一批作业后,监督程序又从输入机上输入另一批作业,保存在磁带上,并按上述步骤重复处理。
监督程序不停地处理各个作业,从而实现了作业到作业的自动转接,减少了作业建立时间和手工操作时间,有效克服了人机矛盾,提高了计算机的利用率。
但是在作业输入和结果输出时主机的高速CPU仍处于空闲状态等待慢速的输入/输出设备完成工作: 主机处于“忙等”状态。
### 脱机批处理系统
为克服与缓解高速主机与慢速外设的矛盾提高CPU的利用率又引入了脱机批处理系统即输入/输出脱离主机控制。
![image-20210725220936340](02.%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%8F%91%E5%B1%95%E5%8F%B2/image-20210725220936340.png)
卫星机:一台不与主机直接相连而专门用于与输入/输出设备打交道的。
1. 从输入机上读取用户作业并放到输入磁带上。
2. 从输出磁带上读取执行结果并传给输出机
不足:每次主机内存中仅存放一道作业,每当它运行期间发出输入/输出I/O请求后高速的CPU便处于等待低速的I/O完成状态致使CPU空闲。
## 多道程序系统
### 多道程序设计技术
所谓多道程序设计技术就是指允许多个程序同时进入内存并运行。即同时把多个程序放入内存并允许它们交替在CPU中运行它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时CPU便立即转去运行另一道程序。
![image-20210725220944897](02.%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%8F%91%E5%B1%95%E5%8F%B2/image-20210725220944897.png)
在A程序计算时I/O空闲 A程序I/O操作时CPU空闲B程序也是同样必须A工作完成后B才能进入内存中开始工作两者是串行的全部完成共需时间=T1+T2。
![image-20210725220951109](02.%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%8F%91%E5%B1%95%E5%8F%B2/image-20210725220951109.png)
将A、B两道程序同时存放在内存中它们在系统的控制下可相互穿插、交替地在CPU上运行当A程序因请求I/O操作而放弃CPU时B程序就可占用CPU运行这样 CPU不再空闲而正进行A I/O操作的I/O设备也不空闲显然CPU和I/O设备都处于“忙”状态大大提高了资源的利用率从而也提高了系统的效率A、B全部完成所需时间<<T1+T2
单处理机系统中多道程序运行时的特点
1. 多道计算机内存中同时存放几道相互独立的程序
2. 宏观上并行同时进入系统的几道程序都处于运行过程中即它们先后开始了各自的运行但都未运行完毕
3. 微观上串行实际上各道程序轮流地用CPU并交替运行
多道程序系统的出现标志着操作系统渐趋成熟的阶段先后出现了作业调度管理处理机管理存储器管理外部设备管理文件系统管理等功能
由于多个程序同时在计算机中运行开始有了**空间隔离**的概念只有内存空间的隔离才能让数据更加安全稳定
出了空间隔离之外多道技术还第一次体现了**时空复用**的特点遇到IO操作就切换程序使得cpu的利用率提高了计算机的工作效率也随之提高
### 多道批处理系统
20世纪60年代中期在前述的批处理系统中引入多道程序设计技术后形成多道批处理系统简称批处理系统)。
 它有两个特点
1. 多道系统内可同时容纳多个作业这些作业放在外存中组成一个后备队列系统按一定的调度原则每次从后备作业队列中选取一个或多个作业进入内存运行运行作业结束退出运行和后备作业进入运行均由系统自动实现从而在系统中形成一个自动转接的连续的作业流
2. 成批在系统运行过程中不允许用户与其作业发生交互作用作业一旦进入系统用户就不能直接干预其作业的运行
- 批处理系统的追求目标提高系统资源利用率和系统吞吐量以及作业流程的自动化
- 批处理系统的一个重要缺点不提供人机交互能力给用户使用计算机带来不便
- 虽然用户独占全机资源并且直接控制程序的运行可以随时了解程序运行情况但这种工作方式因独占全机造成资源效率极低
- 一种新的追求目标既能保证计算机效率又能方便用户使用计算机 20世纪60年代中期计算机技术和软件技术的发展使这种追求成为可能
## 分时系统
由于CPU速度不断提高和采用分时技术一台计算机可同时连接多个用户终端而每个用户可在自己的终端上联机使用计算机好象自己独占机器一样
![image-20210725221001607](02.%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%8F%91%E5%B1%95%E5%8F%B2/image-20210725221001607.png)
![image-20210725221010282](02.%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%8F%91%E5%B1%95%E5%8F%B2/image-20210725221010282.png)
分时技术把处理机的运行时间分成很短的时间片按时间片轮流把处理机分配给各联机作业使用
若某个作业在分配给它的时间片内不能完成其计算则该作业暂时中断把处理机让给另一作业使用等待下一轮时再继续其运行由于计算机速度很快作业运行轮转得很快给每个用户的印象是好象他独占了一台计算机而每个用户可以通过自己的终端向系统发出各种操作控制命令在充分的人机交互情况下完成作业的运行
具有上述特征的计算机系统称为分时系统它允许多个用户同时联机使用计算机
特点
1. 多路性若干个用户同时使用一台计算机微观上看是各用户轮流使用计算机宏观上看是各用户并行工作
2. 交互性用户可根据系统对请求的响应结果进一步向系统提出新的请求这种能使用户与系统进行人机对话的工作方式明显地有别于批处理系统因而分时系统又被称为交互式系统
3. 独立性用户之间可以相互独立操作互不干扰系统保证各用户程序运行的完整性不会发生相互混淆或破坏现象
4. 及时性系统可对用户的输入及时作出响应分时系统性能的主要指标之一是响应时间它是指从终端发出命令到系统予以应答所需的时间
**分时系统的主要目标**对用户响应的及时性即不至于用户等待每一个命令的处理时间过长
分时系统可以同时接纳数十个甚至上百个用户由于内存空间有限往往采用对换又称交换方式的存储方法即将未轮到的作业放入磁盘一旦轮到”,再将其调入内存而时间片用完后又将作业存回磁盘俗称滚进”、“滚出使同一存储区域轮流为多个用户服务
**注意分时系统的分时间片工作在没有遇到IO操作的时候就用完了自己的时间片被切走了这样的切换工作其实并没有提高cpu的效率反而使得计算机的效率降低了。但是我们牺牲了一点效率却实现了多个程序共同执行的效果这样你就可以在计算机上一边听音乐一边聊qq了。**
## 实时系统
虽然多道批处理系统和分时系统能获得较令人满意的资源利用率和系统响应时间但却不能满足实时控制与实时信息处理两个应用领域的需求于是就产生了实时系统即系统能够及时响应随机发生的外部事件并在严格的时间范围内完成对该事件的处理
实时系统在一个特定的应用中常作为一种控制设备来使用
**实时系统可分成两类**
1. 实时控制系统当用于飞机飞行导弹发射等的自动控制时要求计算机能尽快处理测量系统测得的数据及时地对飞机或导弹进行控制或将有关信息通过显示终端提供给决策人员当用于轧钢石化等工业生产过程控制时也要求计算机能及时处理由各类传感器送来的数据然后控制相应的执行机构
2. 实时信息处理系统当用于预定飞机票查询有关航班航线票价等事宜时或当用于银行系统情报检索系统时都要求计算机能对终端设备发来的服务请求及时予以正确的回答此类对响应及时性的要求稍弱于第一类
**实时操作系统的主要特点**
3. 及时响应每一个信息接收分析处理和发送的过程必须在严格的时间限制内完成
4. 高可靠性需采取冗余措施双机系统前后台工作也包括必要的保密措施等
分时——现在流行的PC服务器都是采用这种运行模式即把CPU的运行分成若干时间片分别处理不同的运算请求 linux系统
实时——一般用于单片机上PLC等比如电梯的上下控制中对于按键等动作要求进行实时处理
## 通用操作系统
操作系统的三种基本类型多道批处理系统分时系统实时系统
- 通用操作系统具有多种类型操作特征的操作系统可以同时兼有多道批处理分时实时处理的功能或其中两种以上的功能
- 例如实时处理+批处理=实时批处理系统。首先保证优先处理实时任务,插空进行批处理作业。常把实时任务称为前台作业,批作业称为后台作业。
- 再如分时处理+批处理=分时批处理系统。即:时间要求不强的作业放入“后台”(批处理)处理,需频繁交互的作业在“前台”(分时)处理,处理机优先运行“前台”作业。
从上世纪60年代中期国际上开始研制一些大型的通用操作系统这些系统试图达到功能齐全可适应各种应用范围和操作方式变化多端的环境的目标但是这些系统过于复杂和庞大不仅付出了巨大的代价且在解决其可靠性可维护性和可理解性方面都遇到很大的困难
相比之下UNIX操作系统却是一个例外这是一个通用的多用户分时交互型的操作系统它首先建立的是一个精干的核心而其功能却足以与许多大型的操作系统相媲美在核心层以外可以支持庞大的软件系统它很快得到应用和推广并不断完善对现代操作系统有着重大的影响
至此操作系统的基本概念功能基本结构和组成都已形成并渐趋完善
## 操作系统的进一步发展
进入20世纪80年代大规模集成电路工艺技术的飞跃发展微处理机的出现和发展掀起了计算机大发展大普及的浪潮一方面迎来了个人计算机的时代同时又向计算机网络分布式处理巨型计算机和智能化方向发展于是操作系统有了进一步的发展个人计算机操作系统网络操作系统分布式操作系统等
### 个人计算机操作系统
个人计算机上的操作系统是联机交互的单用户操作系统它提供的联机交互功能与通用分时系统提供的功能很相似
由于是个人专用因此一些功能会简单得多然而由于个人计算机的应用普及对于提供更方便友好的用户接口和丰富功能的文件系统的要求会愈来愈迫切
### 网络操作系统
计算机网络通过通信设施将地理上分散的具有自治功能的多个计算机系统互连起来实现信息交换资源共享互操作和协作处理的系统
网络操作系统在原来各自计算机操作系统上按照网络体系结构的各个协议标准增加网络管理模块其中包括通信资源共享系统安全和各种网络应用服务
### 分布式操作系统
表面上看分布式系统与计算机网络系统没有多大区别分布式操作系统也是通过通信网络将地理上分散的具有自治功能的数据处理系统或计算机系统互连起来实现信息交换和资源共享协作完成任务。——硬件连接相同
但有如下一些明显的区别
1. 分布式系统要求一个统一的操作系统实现系统操作的统一性
2. 分布式操作系统管理分布式系统中的所有资源它负责全系统的资源分配和调度任务划分信息传输和控制协调工作并为用户提供一个统一的界面
3. 用户通过这一界面实现所需要的操作和使用系统资源至于操作定在哪一台计算机上执行或使用哪台计算机的资源则是操作系统完成的用户不必知道此谓系统的透明性
4. 分布式系统更强调分布式计算和处理因此对于多机合作和系统重构坚强性和容错能力有更高的要求希望系统有更短的响应时间高吞吐量和高可靠性
## 操作系统的作用
现代的计算机系统主要是由一个或者多个处理器主存硬盘键盘鼠标显示器打印机网络接口及其他输入输出设备组成
一般而言现代计算机系统是一个复杂的系统
其一如果每位应用程序员都必须掌握该系统所有的细节那就不可能再编写代码了严重影响了程序员的开发效率全部掌握这些细节可能需要一万年....
其二并且管理这些部件并加以优化使用是一件极富挑战性的工作于是计算安装了一层软件系统软件称为操作系统它的任务就是为用户程序提供一个更好更简单更清晰的计算机模型并管理刚才提到的所有设备
**总结:**
1. 程序员无法把所有的硬件操作细节都了解到管理这些硬件并且加以优化使用是非常繁琐的工作这个繁琐的工作就是操作系统来干的有了他程序员就从这些繁琐的工作中解脱了出来只需要考虑自己的应用软件的编写就可以了应用软件直接使用操作系统提供的功能来间接使用硬件
2. 精简的说的话操作系统就是一个协调管理和控制计算机硬件资源和软件资源的控制程序