导图社区 计算机操作系统-第一章操作系统引论
汤子瀛 - 计算机操作系统(第四版)第一章 操作系统引论思维导图。
编辑于2020-10-21 16:54:28计算机操作系统
第一章 操作系统引论
操作系统(Operating System: OS)
是配置在计算机硬件上的第一层软件,其主要作用是管理好这些硬件设备,提高它们的利用率和系统吞吐量,并为用户和应用程序提供一个简单的接口,便于用户使用。OS是现代计算机系统中最基本和最重要的系统软件,其他的诸如编译程序,数据库管理系统等系统软件,以及大量应用软件,都直接依赖于操作系统的支持
操作系统的目标和作用
操作系统的目标
方便性、有效性、可扩充性、开放性
方便性
用户可以直接通过OS提供的各种命令操作计算机,而不是直接用机器语言书写程序,极大地方便了用户,使计算机变得易学易用
有效性
OS通过合理利用计算机硬件资源,并合理地组织计算机的工作流程,提高了系统资源的利用率,提高了系统的吞吐量
可扩充性
为适应计算机硬件,体系结构以及计算机应用发展的要求,需要OS具有可扩充性
目前广泛采用微内核结构,能方便地增添新的功能和模块,以及对原有功能模块进行修改,具有良好的可扩充性
开放性
近年来,随着Internet的迅速发展,OS由单机环境转向了网络环境,应用环境就必须更加开放。系统需要能够遵循世界标准规范,特别是遵循开放系统互连OSI国际标准
操作系统的作用
OS作为用户与计算机硬件系统之间的接口
用户可以通过三种方式使用计算机
命令方式
系统调用方式
图标-窗口方式
OS作为计算机系统资源的管理者
计算机系统中,通常有多种硬件和软件资源,OS主要也是对这些资源进行有效的管理
处理机
存储器
I/O设备
文件(数据和程序)
多用户对系统中共享资源的需求有可能发生冲突,所以OS必须对使用资源进行授权,以协调各个用户对共享资源的使用
OS实现了对计算机资源的抽象
如果没有OS,即裸机,由于它向用户提供的只有硬件接口,因此用户必须对物理接口的实现细节有充分的了解才能使用,就会使物理机器难于广泛使用
方便用户使用,在物理接口上层实现了I/O设备管理软件,抽象为一组数据结构及一组I/O操作,类似地,在I/O设备管理上层,进一步实现了文件管理的软件,抽象为对文件的操作,总之层层向上覆盖,隐藏底层的细节实现,同时提供更加方便用户操作的接口。随着抽象层次的提高,抽象接口所提供的功能就越强,用户使用起来也越方便
OS隐藏计算机硬件的物理接口操作细节,抽象了新的I/O设备接口及文件管理软件供用户使用
通常把覆盖了上述软件的机器称为扩充机器或虚机器
推动操作系统发展的主要动力
不断提高计算机资源利用率
方便用户
器件的不断更新换代
计算机体系结构的不断发展
不断提出新的应用需求
操作系统的发展过程
未配置操作系统的计算机系统
从1945年诞生的第一台计算机,到50年代中期的计算机,都属于第一代计算机,这时还未出现OS,对计算机的全部操作都是由用户采取人工操作方式进行
人工操作方式
由程序员将事先已穿孔的纸带装入纸带输入机,将纸带上的程序和数据输入计算机,然后启动计算机运行,仅当程序运行完毕并取走计算结果后,才允许下一个用户上机
缺点
用户独占全机
CPU等待人工操作,当用户进行装带,卸带等人工操作时,CPU及内存等资源是空闲的,严重降低计算机资源利用率,即人机矛盾
脱机输入/输出(Off-Line I/O)方式
事先将装有用户程序和数据的纸带装入纸带输入机,在一台外围机的控制下,把纸带上的数据输入到磁带上,当CPU需要这些程序和数据时,再从磁带上高速地调入内存。类似地,当CPU需要输出时,可先由CPU把数据直接从内存高速地输送到磁带上,然后在另一台外围机的控制下,再将磁带上的结果通过相应的输出设备输出
是在脱离主机控制的情况下进行的,故称为脱机输入/输出方式
优点
减少了CPU的空闲时间
提高I/O速度
单道批处理系统(Simple Batch Processing System)
由监督程序(Monitor)将磁带上的作业装入内存,作业完成后,监督程序再把下一个作业装入内存
处理过程中,内存中始终只保持一道作业,故称为"单道"批处理系统
此系统旨在提高系统资源的利用率和系统吞吐量,但是仍然不能充分地利用系统资源,故现在已很少使用
缺点
内存中仅有一道程序,当程序在运行中,发出I/O请求后,CPU便处于等待状态,必须在I/O完成后才继续运行,又因为I/O设备的低速性,更使CPU利用率显著降低
多道批处理系统(Multiprogrammed Batch Processing System)
用户提交的作业先存放在外存上,拍成一个队列,称为后备队列,然后由作业调度程序按一定的算法,从后备队列中选择若干个作业调入内存,使它们共享CPU和系统中的各种资源。这样,可以利用CPU由于等待I/O操作时的空闲事件,再调度另一道程序运行,使躲到程序交替运行,便可以保持CPU处于忙碌状态,充分使用CPU和内存资源
优点
资源利用率高
系统吞吐量大
缺点
平均周转时间长
作业要排队依次处理
无交互能力
作业一旦交给系统,直至作业完成,用户都不能与自己的作业进行交互,修改和调试程序不方便
此系统需要解决的问题
分时系统(Time Sharing System)
在一台主机上连接了多个配有显示器和键盘的终端,并由此组成的系统,该系统允许多个用户同时通过自己的终端,以交互方式使用计算机,共享主机中的资源
推动分时系统形成的主要动力,是为了满足用户对人-机交互得到需求
用户希望能进行人-机交互,方便调试,修改和控制
共享主机
希望能像独占使用一样,用户不仅可以与计算机交互,而且还不会感知到其他用户的存在
分时系统实现中的关键问题
允许有多个用户同时通过自己的键盘键入命令,系统也应能全部及时接收并处理
及时接收
在系统中配置一个多路卡
主机以很快的速度周期性扫描各个终端,如30ms,用于接收从终端发来的数据,此外,为了能使终端上输入的数据被依次地进行处理,还需要为每个终端配置一个缓冲区,用来暂存用户键入的命令(或数据)
及时处理
用户键入命令后,能对自己的作业及其运行及时地实施控制或进行修改,因此各个用户的作用都必须驻留在内存中,并能频繁地获得处理机运行
需要彻底地改变原来批处理系统的运行方式,转而采用以下方式
作业直接进入内存
作业在磁盘上是不能运行的,所以应直接进入内存
采用轮转运行方式
如果一个作业独占CPU连续运行,那么其他的作业就没有机会被调度运行,为避免一个作业长期独占处理机,引入了时间片的概念
时间片
一段很短的时间(如30ms),系统规定每个作业每次只能运行一个时间片,然后就暂停运行,并立即调度下一个作业运行
分时系统的特征
多路性
系统允许将堕胎终端同时连接到主机上,并按分时原则为每个用户服务。多路性显著提高了资源利用率,降低了使用费用,促进了计算机更广泛的应用
独立性
每个用户在各自终端上进行操作,彼此互不干扰,给用户的感觉就像是他一人独占主机进行操作
及时性
用户的请求能在很短的时间内获得响应,通常为1-3秒
交互性
可通过终端与系统进行广泛的人机对话,广泛性体现在用户可以请求系统提供多方面的服务。
实时系统(Real Time System)
实时计算
系统的正确性,不仅由计算的逻辑结果来确定,而且还取决于产生结果的时间
系统能及时响应外部事件的请求,在规定时间内完成对该事件的处理,并控制所有实时任务协调一致地运行
实时系统的类型
工业(武器)控制系统
如火炮自动控制系统,飞机自动驾驶系统等
信息查询系统
如飞机订票系统等
多媒体系统
嵌入式系统
实时任务的类型
周期性实时任务和非周期性实时任务
硬实时任务和软实时任务
硬实时任务是指系统必须满足任务对截止时间的要求,否则可能出现难以预测的后果
软实时任务则并不严格遵守截止时间,即便偶尔错过,对系统产生的影响也不会太大
实时系统与分时系统特征的比较
多路性
信息查询系统,和分时系统中的多路性都表现为系统按分时原则为多个终端用户服务
实时控制系统的多路性则是指系统周期性地对多路现场信息进行采集,以及对多个对象或多个执行机构进行控制
独立性
都保证用户之间的操作和控制彼此互不干扰
及时性
信息查询系统对实时性的要求是根据人所能接受的等待时间确定,而多媒体系统实时性要求,是播放出来的多媒体资料能令人满意。实时控制系统,则是根据控制对象所要求的截止时间来确定的,一般为秒级或毫秒级
交互性
分时系统能为用户提供广泛的服务,而实时系统一般是提供特定的服务
可靠性
分时系统要求系统可靠,实时系统要求系统高度可靠,所以往往在实时系统中,都采取了多级容错措施来保障系统的安全性和数据的安全性
微机操作系统的发展
单用户单任务操作系统
只允许一个用户上机,且只允许用户程序作为一个任务运行
CP/M
1975年,8位微机操作系统
MS-DOS
1981年,16位微机操作系统
单用户多任务操作系统
只允许一个用户上机,但用户把程序分为若干个任务,使他们并发执行,32位微机上配置的操作系统,基本上都是单用户多任务操作系统
windows 1.0
1985年
windows 2.0
1987年
windows 3.0/3.1
1990年,针对32位微机开发
windows 95
1995年
...
多用户多任务操作系统
允许多个用户通过各自的终端,使用同一台机器,共享主机系统的各种资源,而每个用户程序又可进一步分为几个任务,使他们能并发执行,从而进一步提高资源利用率和系统吞吐量
UNIX OS
1969 ~ 1970 年间研发
Solaris
1982年推出
Linux OS
1991年推出
操作系统的主要功能
为多道程序的运行提供良好的运行环境,保证多道程序能有条不紊地,高效地运行,并能最大程度地提高系统中各种资源的利用率,方便用户的使用
处理机管理功能
处理机的分配和运行都是以进程为基本单位
主要功能
进程控制
创建和撤销进程
进程同步
为多个进程的运行进行协调
进程通信
当有一组相互合作的进程去完成一个共同任务时,在他们之间往往需要交换信息,进程通信的任务是实现相互合作进程之间的信息交换
调度
按照一定算法把处理机分配给进程
作业调度
从后备队列中按照一定算法选择出若干个作业,为他们分配运行所需资源,将作业调入内存后,分别为它们建立进程,使他们都称为可能获得处理机的就绪进程,并将他们插入就绪队列中
进程调度
从进程的就绪队列中按照一定的算法选出一个进程,将处理机分配给它,并未它设置运行现场,使其投入执行
存储器管理功能
为多道程序的运行提供良好的环境,提高存储器的利用率,方便用户使用,并能从逻辑上扩充内存
内存分配
内存保护
地址映射
内存扩充
设备管理功能
主要任务
完成用户进程提出的I/O请求,为用户进程分配所需的I/O设备,完成指定I/O操作
提高CPU和I/O设备的利用率,提高I/O速度,方便用户使用I/O设备
缓冲管理
设备分配
设备处理
文件管理功能
对用户文件和系统文件进行管理以方便用户使用,并保证文件的安全性
文件存储空间的管理
目录管理
文件的读/写管理和保护
操作系统与用户之间的接口
用户接口
程序接口
现代操作系统的新功能
系统安全
网络的功能和服务
OS结构设计
软件工程
随着OS规模越来越大,代码和参与的人员越来越多,需要采用工程化的开发方法对大型软件进行开发,由此产生了“软件工程学”
目标
所开发出的软件产品应具有良好的软件质量和合理的费用
指标
功能性
有效性
可靠性
易使用性
可维护性
易移植性
传统操作系统结构
无结构操作系统
早期开发操作系统时,设计者只是把他的注意力放在功能的实现和获得高的效率上,缺乏首尾一致的设计思想,致使OS内部调用复杂和混乱,因此这种OS是无结构的
模块化结构OS
20世纪60年代出现的一种结构化程序设计技术
基于“分解”和“模块化”原则来控制大型软件的复杂度
模块独立性
衡量标准
内聚性
模块内部各部分间联系的紧密程度,内聚性越高,模块独立性越强
耦合度
模块间相互联系和相互影响的程度
耦合度越低,模块独立性越好
优缺点
优点
提高OS设计的正确性,可理解性和可维护性
增强OS的可适应性
加速OS的开发过程
缺点
对模块间的接口规定很难满足在模块设计完成后对接口的实际需求
在OS设计阶段,设计者做出一系列决定,是层层依赖的,但是模块化结构设计中,各模块的设计齐头并进,无法寻找一个可靠的决定顺序,将使程序人员很难做到“设计中的每一步决定”都是建立在可靠的基础上,因此,模块-接口法又称为“无序模块法”
分层式结构OS
为了将模块-接口法中“决定顺序”的无序性变为有序性,引入了有序分层法,一般来说,为自底向上层层递进铺设中间层,每层中间层只依赖上一层的功能而不能依赖其他层的功能
优点
易保证系统的正确性
易扩充和易维护性
缺点
系统效率降低
由于层次结构是分层单向依赖,必须在每层之间建立层次间的通信机制,OS每执行一个功能,通常要自上而下地穿越多个层次,会增加系统通信开销,导致系统效率的降低
客户/服务器模式简介
简称为C/S模式
由来,组成和类型
客户机
通常在LAN网络上连接有堕胎网络工作站(简称客户机),每台客户机都是一个自主计算机,具有一定的处理能力,客户进程在其上运行,平时它处理一些本地业务,也可发送一个消息给服务器,以请求某项服务。
服务器
通常是一台规模较大的机器,能为往上所有的用户提供一种或多种服务,一旦检查到又客户提出服务请求,便去完成客户的请求,并将结果发送回客户
网络系统
用于连接所有客户机和服务器,实现他们之间通信和网络资源共享的系统
客户/服务器之间的交互
客户/服务器模式的优点
数据的分布处理和存储
便于集中管理
灵活性和可扩充性
易于改编应用软件
客户/服务器模式的不足
不可靠性和瓶颈问题
仅有一个服务器时,一旦服务器故障,将导致整个网络瘫痪
当服务器在重负荷下工作,会因忙不过来而显著延长对用户请求的响应时间
面向对象的程序设计(OOP)技术简介
微内核OS结构
基本概念
足够小的内核
能实现现代OS的最基本核心功能的小型内核,微内核并非是一个完整的OS,而只是OS中最基本的部分
基于客户/服务器模式
将操作系统中最基本的部分放入内核中,而把操作系统的绝大部分功能都放在微内核外面的一组服务器(进程)中实现
应用“机制”与策略分离原理
机制
实现某一功能的具体执行机构
策略
在机制的基础上借助于某些参数和算法来实现该功能的优化
通常,机制处于一个系统的基层,而策略则处于系统的高层,在微内核操作系统中,通常将机制放在OS的微内核中
采用面面相对象技术
基本功能
进程(线程)管理
低级存储器管理
中断和陷入处理
微内核操作系统的优点
提高系统的可扩展性
增强了系统的可靠性
可移植性强
提供了对分布式系统的支持
融入了面向对象技术
存在的问题
较之早期的操作系统,微内核操作系统的运行效率有所降低
在完成依次客户对操作系统提出的服务请求时,需要利用消息多次交互和进行你用户/内核模式与上下文的多次切换
为了改善运行效率,可以重新把一些常用的操作系统基本功能由服务器移入微内核,这样可以降低用户/内核模式的上下文切换的次数,但是,这又会使内核的容量明显增大,在小型接口定义的适应性方面的优点也会下降,提高了微内核的设计代价