本笔记是我在学习《计算机操作系统(第四版)》所记,提取课本重点,加上我自己的理解
操作系统(Operating System, OS)
1.操作系统的目标和作用
1.1操作系统的目标
配置操作系统的主要目标是:方便性、有效性、可扩充性、开放性
1.1.1方便性
没有OS的计算机只能用机器语言书写,极其难用,配置好OS,让计算机更简单易用。
1.1.2有效性
提高系统资源的利用率和系统的吞吐量
OS通过合理组织计算机的工作流程,加速程序的运行,缩短程序运行周期,从而提高吞吐量
1.1.3可扩充性
可扩充性的好坏与OS的结构有着紧密的联系,由此推动OS结构的发展
无结构->层次化结构->微内核结构;现在大都采用微内核结构,扩充性更好
1.1.4开放性
开放性是指系统能遵循世界标准规范,特别是遵循开放系统互连OSI国际标准。
凡是遵循国际标准开发的硬件和软件,都能彼此相容,方便互连。
1.2操作系统的作用
1.2.1 OS作为用户与计算机之间的接口
用户通过OS更方便的操纵计算机系统、运行自己的程序
用户可以通过三种方式来与计算机进行通信:命令方式、系统调用方式、图标—窗口方式
1.2.2 OS作为计算机系统资源的管理者
计算机系统内会有很多种资源,包括硬件包括软件,大致分为四类:处理机、存储器、I/O设备、文件(数据、程序)
OS便实现了对它们的有效管理,详情见本章第四节,另外OS可以在多用户调用资源时,合理分配,防止冲突
1.2.3 OS实现了对计算机资源的抽象
对于输入输出,计算机裸机向用户提供的仅仅是硬件接口(物理接口),所以为了更方便的使用I/O设备,人们在裸机上铺了一层I/O设备管理软件
同样,为了更方便的使用文件系统,人们又在I/O设备管理软件上又铺了一层文件管理软件
由此,一层层软件的铺设即构成了OS
而最终用户使用计算机,即是通过OS操作计算机,对用户来说,计算机便是这OS,所以说OS是计算机资源的抽象
1.3操作系统的发展动力(简略)
-
不断提高计算机资源利用率
最初的推动力
-
方便用户
当利用率提高到一定程度时,方便性又成为人们关注的焦点
-
硬件的不断更新
-
计算机体系结构的不断发展
-
不断出现的需求
2.操作系统的发展过程
2.1未配置操作系统的计算机系统
- 人工操作方式
作为早期的操作方式,程序员将穿孔纸带等插入纸带输入机,再启动它们将纸带上的信息读入计算机,最后启动计算机
缺点:
- 人机矛盾:一个用户占用一台机,且必须人工进行纸带的装填,让计算机处于大量的空闲时间,降低了计算机资源的利用率
- CPU、I/O矛盾:随着发展,IO设备速度提高程度跟不上CPU,CPU与IO设备之间速度不匹配
- 脱机输入/输出(Off-Line I/O)方式
为解决这两个矛盾,20世纪50年代末出现了这种技术,如图,以一个“外围机”为中介,外围机先不断读取IO设备输入数据存入磁带,主机直接读取内部的磁盘,最后以同样的方式输出
- 减少了CPU的空闲时间。装带,卸带,以及将数据从低速I/O设备送到高速磁带上(或反之)的操作,都是在脱机情况下由外围机完成的,并不占用主机时间,从而有效地减少了CPU的空闲时间。
- 提高了I/0速度。当CPU在运行中需要输入数据时,是由高速的磁带进行数据的输入,提高了IO速度。
2.2单道批处理系统
- 处理过程
先将一批作业脱机输入磁带,由监督程序保证作业一个个的输入CPU进行处理,一个处理完再由监督程序将下一个作业送入进行处理
- 优点
解决人机矛盾和CPU、IO设备矛盾
- 缺点
系统资源利用不充分:作业只能一个接一个的处理,导致等待时间CPU空闲(程序向IO发出命令那段时间CPU是等待状态的)
2.3多道批处理系统(重点)
- 处理过程
针对单道批处理系统,此将空闲时间利用起来了,比如在运行A程序时,产生的空闲时间可以运行B,以此类推。充分利用CPU。
- 优点
- 资源利用率更大:不只是利用了CPU等待时间,装入多道程序,还提高了内存和IO设备的利用率
- 系统吞吐量更大:CPU和其他资源都处于运作忙碌的状态,仅在作业完成了或者完成不下去时才会切换
- 缺点
- 运转周期长:作业是排队着在空闲时间完成的,导致作业周转周期变长
- 无交互能力:用户只能最初时进行作业的提交,剩下的都交给了计算机,修改和调试程序都不方便
- 问题
此系统有效但复杂,同样遗留了很多问题,包括:处理机争用问题、内存分配和保护问题、IO设备分配问题、文件组织管理问题、用户与系统接口问题等等。为解决这些问题就要添加一组软件。
这组软件应包括:**能有效地组织和管理四大资源的软件、合理地对各类作业进行调度和控制它们运行的软件,以及方便用户使用计算机的软件。 **
正是这样一组软件构成了操作系统。
据此,我们可把操作系统定义为:操作系统是一组能有效地组织和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序的集合。
2.4分时系统(重点)
20世纪60年代时,计算机的昂贵导致很多用户共享一个主机,且用户希望有较好的人机交互比如为了能写好程序就调试,进行及时修改。
1.改进之处
要满足上述的人机交互和共享主机两个需求,就要使系统及时接收、及时处理并及时返回,响应的及时才能交互
-
及时接收
配置一个多路卡,它可以采用分时多路复用,短周期的扫描终端,做到及时接收多个用户的输入
-
及时处理
- 作业直接进入内存,高速传输
- CPU处理作业的时间被分为时间片(时间片很短,比如30ms,一个时间片处理一个作业,短周期交替),实现”同时“处理多项作业,也能返回的及时
2.特征(具体见2.5实时系统后那张表格)
- 多路性
- 独立性
- 及时性
- 交互性
2.5实时系统
更强调”实时“,实时系统最主要的特征,是将时间作为关键参数,它必须对所接收到的某些信号做出“及时”或“实
时”的反应。对此,系统的正确性,不仅由计算结果决定,还由时间
1.实时系统的类型
- 工业(武器)控制系统
- 信息查询系统
- 多媒体系统
- 嵌入式系统
2.实时任务的类型
-
周期实时任务和非周期实时任务
-
周期实时任务
外部设备给计算机周期性激励信号,要求周期循环执行
-
非周期实时任务
无明显周期性,执行的完成靠截止时间(Deadline)(包括开始截止时间和完成截止时间两种)
-
-
硬实时任务和软实时任务
-
硬实时任务(Hard Real-time Task, HRT)
系统必须满足任务对截止时间的要求,截止时间是硬性条件,错过了后果严重,比如武器控制系统
-
软实时任务(Soft Real-time Task, SRT)
有截止时间但并不严格,偶尔错过时间对系统影响不大,比如检索系统
-
3.实时系统与分视系统的特征比较
特征 | 分时系统 | 实时控制系统 |
---|---|---|
多路性 | 系统按分时原则为多个终端用户服务 | 系统周期性地对多路现场信息进行采集,以及对多个对象或多个执行机构进行控制 |
独立性 | 每个终端用户在与系统交互时,彼此相互独立互不扰 | 对信息的采集和对对象的控制也都是彼此互不干扰的。 |
及时性 | 依据人所能接受的等待时间确定的 | 以控制对象所要求的截止时间来确定的,一般为秒级到毫秒级 |
交互性 | 能向终端用户提供数据处理、资源共享等服务 | 仅限于用户发送某些特定的命令,如开始、停止、快进等 |
可靠性 | 要求系统可靠 | 要求系统高度可靠,采取了多级容错措施来 障系统的安全性及数据的安全性。 |
2.6微机操纵系统(简略)
发展有三类:
- 单用户单任务操作系统
- 单用户多任务操作系统
- 多用户多任务操作系统
3.操作系统的基本特性
由前一节得知不同的操作系统具有不同的特征,除此之外,它们还具有四个基本特性:并发、共享、虚拟、异步
3.1并发和并行
并发性:多个事件在同一时间间隔内发生
并行性:多个事件在同一时刻内发生
联想之前时间片的概念,短时间内的交替运行不同的程序,达到并发,也就可以达到宏观上的并行
另外,若一个计算机系统配备多台处理机,可以同时处理多个程序,达到并行
这里引入进程的概念:
进程:是指在系统中能独立运行并作为资源分配的基本单位
为计算机上多个程序都分别创建一个进程,就可以并发执行,提高资源利用率,增加吞吐量
3.2共享
OS中的资源共享又被称为资源复用,是指系统中的资源可供内存中多个并发执行的进程共同使用。
这里在宏观上既限定了时间(进程在内存期间),也限定了地点(内存),且资源必少于需求,共享就要妥善管理
两种资源共享方式:
-
互斥共享方式
进程A要访问某资源时,先提出请求
若资源空闲,调用给A,A未用完,同样想访问此资源的进程B就要等待
若进程B在用资源,A等待B用完,B用完后释放,A再用
把这种一段时间内只能一个进程访问的资源称为临界资源(或独占资源)
-
同时共享方式
由上一个并发的特性,达到宏观的同时
所以并发和共享是OS最基本的两个特征,也互为存在条件
3.3虚拟
虚拟最早出现在通信系统中,为了让多个用户通过一个物理信道通话,采用时分复用技术或空分复用技术,将一个物理信道变为若干逻辑信道
-
时分复用技术
此技术在计算机领域被广泛利用,以实现虚拟处理机、虚拟设备等。
利用设备为一个用户处理的空闲时间,来处理下一个用户
分开时间
-
空分复用技术
最早在通信系统使用,即将一条比较宽的信道分为多个比较窄的信道(称为频带)
分开频率(空间)
单纯的空分复用技术只能提高利用率,不能在逻辑上实现扩大存储器容量,必须引入虚拟存储技术才能达到此目的
虚拟存储技术:本质上实现了内存的分时复用。
例如,一个100 MB 的应用程序之所以可以运行在30MB的内存空间,实质上就是每次只把用户程序的一部分调入内存运行,运行完成后将该部分换出,再换入另一部
分到内存中运行,通过这样的置换功能,便实现了用户程序的各个部分分时地进入内存运行。
3.4异步
异步是系统处理不同进程时,表现出的一个不可避免的特性,是允许的。
不同的进程因需要调用的资源不同,属性不同,完成的时间也就不能预测在前还是在后
比如:某时先有三个进程要调用打印机,这时有一个进程要在显示屏上输出一个图片,自然打印机拥挤,最后这一个进程可能比前几个更先完成
但只要在OS 中配置有完善的进程同步机制,且运行环境相同,则作业即便多次运行,都会获得相同的结果。
4.操作系统的主要功能
传统OS具有
- 处理机管理
- 存储器管理
- 设备管理
- 文件管理
等基本功能,且为了方便用户使用,还提供
- 操作系统与用户接口
4.1处理机管理
主要任务 | 让进程在系统中更有序,有条不紊的运行 |
主要功能 | 创建和撤消进程,对诸进程的运行进行协调,实现进程之间的信息交换,以及按照一定的算法把处理机分配给进程。 |
-
进程控制
- 创建进程
- 撤销(终止)进程
- 控制进程的状态转移
-
进程通信
当一组相互合作的进程完成一个共同的任务时,它们之间是需要交换信息的
当相互合作的进程在同一计算机系统中时,通常采用直接通信方式
-
进程同步
为了使进程有条不紊的进行,系统必须设置相应的进程同步机制,对多个进程进行协调
两种协调方式:
-
进程互斥方式
指进程在对临界资源进行访问时,应采用互斥方式。
最简单的便是采用给临界资源配备一把锁W,锁开时,才可以访问
-
进程同步方式
指在相互合作去完成共同任务的诸进程间,由同步机构对它们的执行次序加以协调。
最常用的机制是信号量机制
-
-
调度
传统OS中,调度包括:
- 作业调度
- 进程调度
4.2存储器管理
主要任务 | 为多道程序的运行提供良好的环境,提高存储器的利用率,方便用户使用,并能从逻辑上扩充内存。 |
主要功能 | 具有内存分配和回收、内存保护地址映射和内存扩充等功能。 |
-
内存分配
内存分配的主要任务是:
- 为每道程序分配内存空间,使它们“各得其所”
- 提高存储器的利用率,尽量减少不可用的内存空间(碎片)。
- 允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要。
OS在实现内存分配时,可采取静态和动态两种方式:
- 静态分配方式:不允许已经运行的进程再申请内存,不允许作业在内存的”移动“。
- 动态分配方式:即允许已经运行的进程再申请内存,也允许作业在内存的”移动“。
-
内存保护
内存保护的主要任务是:
-
保证每个程序在自己的内存空间中运行,不互相干扰
设立两个寄存器存上限和下限,一旦察觉程序访问的地址越界,中断程序
-
不允许用户程序访问操作系统中的程序和数据,即保护OS中的程序和数据,拒绝用户程序转移到非共享的其他用户程序中运行
-
-
地址映射
将程序中逻辑地址转换为物理地址,即是地址映射。
-
内存扩充
借助虚拟内存技术扩大内存,为了实现逻辑上的内存扩充,系统必须设置内存扩充机制(包含少量硬件),用于实现下述功能
-
请求调入功能
当运行时所需程序和数据未装入内存,申请OS将所需部分调入内存
-
置换功能
将不用的程序和数据暂时转移至硬盘,腾出内存
-
4.3设备管理
主要任务 | 1. 完成用户进程提出的I/O请求,为用户进程分配所需的1/0设备,并完成指定的I/O 操作。 2. 提高CPU和I/O设备的利用率,提高1/O速度,方便用户使用I/O设备. |
主要功能 | 具有缓冲管理、设备分配和设备处理以及虚拟设备等功能 |
-
缓冲管理
在CPU和IO设备之间添加缓冲区,匹配CPU和IO设备之间速度,提高CPU利用率,进而提高吞吐量
不同系统采用不同缓冲区机制,常见的有:单缓冲机制、能实现双向同时传送数据的双缓冲机制、能供多个设备同时使用的公用缓冲池机制。 上述这些缓冲区都由 OS 缓冲管理机制将它们管理起来.
-
设备分配
基本任务:根据用户进程的IO请求、系统现有资源情况以及按照某种设备分配策略,为之分配所需的设备
为实现设备分配,系统中设置了设备控制表、控制器控制表等数据结构,用于记录设备等资源的状况。
-
设备处理
设备处理程序又称为设备驱动程序。(通常在内核)
基本任务:实现CPU和设备控制器之间的通信,利用设备驱动程序完成对设备的操作,还需处理外设的IRQ
4.4文件管理
主要任务 | 对用户文件和系统文件进行管理以方便用户使用,并保证文件的安全性。 |
主要功能 | 具有对文件存储空间的管理、目录管理、文件的读/写管理以及文件的共享与保护等功能。 |
-
文件存储空间的管理
主要任务是:**为每个文件分配必要的外存空间,提高外存的利用率,进而提高文件系统的存、取速度。**设置相应数据结构记录文件存储情况。还应具有对存储空间进行分配和回收的功能。
-
目录管理
主要任务:为每个文件建立一个目录项,目录项包括文件名、文件属性、文件在磁盘上的物理位置等,并对众多的目录项加以有效的组织,以实现方便的按名存取。
-
文件的读/写管理和保护
-
文件的读/写管理
根据用户的请求,进行读/写操作
2. 文件保护
1. 防止未经核准的用户存取文件:
2. 防止冒名顶替存取文件:
3. 防止以不正确的方式使用文件. -
4.5操作系统与用户接口
该接口有两大类:
-
用户接口
-
联机用户接口
为联机用户提供的,由一组键盘操作命令及命令解释程序组成。用户通过键入不同命令控制作业。
-
脱机用户接口
为批处理用户提供,用户用作业控制语言JCL把需要对作业进行的控制和干预的命令事先写在作业说明书上,作业说明书与作业一起提供给系统,系统通过说明书对作业进行操作
-
图形用户接口
键入命令的方式不人性,不方便还要花时间记命令。图像用户接口让用户用鼠标点击菜单的方式更便捷的操作程序以及系统。
-
-
程序接口
程序接口是为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的唯一途径。
由一组系统调用组成,每个系统调用都是一个能完成特定功能的子程序
早期是用汇编语言,用户使用汇编语言才能使用系统调用;后高级语言提供了很多库函数来使用系统调用。
5.OS结构设计
5.1传统结构的OS
5.1.1无结构的OS(第一代)
只追求程序的实现和高效率,复杂而又混乱,难以阅读和理解,维护难
5.1.2模块化的OS(第二代)
按功能划分OS为模块,再将各模块细分为若干个具有一定功能的子模块,规定好各子模块之间的接口。 若子模块较大,可再进一将它细分。 我们把这种设计方法称为==模块-接口法==
靠模块划分功能,靠接口相互连接
优点:
- 提高OS设计的正确性、可理解性和可维护性
- 增强OS的可适应性
- 加速OS的开发过程
存在问题:
- 在OS设计时,对各模块间的接口规定很难满足实际需求。
- 在OS设计时,设计者必须做出一系列的决定(决策),每一个决定必须建立在上一个决定的基础上,但模块化结构设计中,各模块的设计齐头并进,造成各种决定的“无序性”,使设计者无法做出可靠的决策,因此模块-接口法又被称为“无序模块法”。
5.1.3分层式的OS(第三代)
解决模块化的“无序性”,采用自顶向上的分层,让每一步设计都建立在可靠的基础上
优点:
- 易保证系统的正确性。有序性让系统更可靠
- 易扩充和易维护性。在系统中增加、修改或替换一个层次中的模块或整个层次时,只要不改变相应层次间的接口,就不会影响其他层次,这必将使系统维护和扩充变得更加容易。
缺点:
- 系统效率降低。
5.2现代结构的OS(微内核OS结构)
基于C/S模式,应用“机制与策略分离”原理,采用面对对象技术
详细见微内核结构OS的帖子