操作系统
1、操作系统是计算机系统中最基本的系统软件
2、多道程序设计是指一台处理器上并发运行多个程序
3、操作系统的特征:并发、共享、虚拟、异步
4、操作系统的目标:是方便用户使用计算机系统和提高计算机系统资源利用率。
5、计算机系统中的资源包括:
硬件资源;
处理机、存储器、外部设备
软件资源;
程序和数据
6、进程的特征:
(1)动态性
动态性是进程最基本的特性。进程由创建而产生,由调度而执行,因得不到资源而暂停执行,以及因撤消而消亡。
(2)并发性
这是指多个进程实体,同存于内存中,能在一段时间段内同时执行。并发性是进程的重要特征,同时也是操作系统的重要特征。提高并发性,可以提高系统的效率。
(3)独立性
进程是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。
(4)异步性
这是指进程按各自独立的、不可预知的速度向前推进;或者说,进程按异步方式运行。
(5)结构特征
从结构上看,进程实体是由程序段、数据段及进程控制块三部分组成,也称这三部分为进程映像。
7、现代操作系统的两个基本特征是:程序的并发执行和资源共享
8、进程的基本特性是:动态、并发
9、系统调用是操作系统提供给编程人员的接口
10、进程存在的唯一标识:PCB(进程控制块/进程描述块)
11、 处理机的寄存器包括通用寄存器、指令计数器、程序状态字PSW、用户栈指针。
12、操作系统提供的三种接口是:命令级接口、( 程序级接口 )、图形界面
13、重定位就是把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程。它是实现多道程序在内存中同时运行的基础。重定位有两种,分别是动态重定位与静态重定位。
一、引论
14、两种指令:
特权指令:不允许用户程序使用(只允许操作系统使用)。如IO指令、置中断指令
非特权指令:普通的运算指令
15、两种程序
内核程序:系统的管理者,可执行一切指令、运行在核心态
应用程序:普通用户程序只能执行非特权指令,运行在用户态
16、处理机状态
用户态(目态):CPU只能执行非特权指令
核心态(管态、内核态):可以执行所有指令
用户态到核心态:通过中断(是硬件完成的)
核心态到用户态:特权指令psw的标志0用户态1核心态
17、原语:①处于操作系统的最低层,是最接近硬件的部分;②这些程序的运行具有原子性,其操作只能一气呵成;③这些程序的运行时间都较短,而且调用频繁。
18、中断和异常
内中断(异常,信号来自内部):
自愿中断–指令中断
强迫中断:硬件中断、软件中断
外中断(中断,信号来自外部):
外设请求、人工干预
19、系统调用:系统给程序员(应用程序)提供的唯一接口,可获得OS的服务。在用户态发生,核心态处理。
20、体系结构:大内核、微内核
二、进程调度
1、进程管理
21、引入进程的目的:为了更好地描述和控制程序并发执行,实现操作系统的并发性和共享性(进程是动态的、程序是静态的)
22、进程的定义:是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位
23、进程由PCB(进程控制块)、程序段、数据段组成
PCB:保存进程运行期间相关的数据,是进程存在的唯一标识
程序段:能被进程调度到CPU的代码
24、进程的状态
状态种类:运行态、就绪态、阻塞态、创建状态、结束状态
运行态:进程正在占用CPU
就绪态:进程已处于准备运行的状态,即进程获得了除处理机外的一切所需资源,一旦得到处理机即可运行
创建状态:进程正在被创建
结束状态:进程正在从系统消失
状态变化:就绪态–>运行态
运行态–>就绪态
运行态–>阻塞态:进程需要某一资源还没有准备好
阻塞态–>就绪态:进程等待的事件到来时
25、线程
引入线程的目的:为了更好的使用多道程序并发执行,提高资源利用率和系统吞吐量
特点:线程是程序执行的最小单位,基本不拥有如何系统资源(调度的基本单位)
2、处理机调度
26、处理机调度的概念:是对处理机进行分配,即从就绪队列中按照一定的算法(公平、高效)选择一个进程并将处理机分配给它运行,以实现进程并发执行
27、处理机调度的分类:
高级调度(作业调度)次数少
中级调度(内存对换)次数中等
低级调度(进程调度)次数多
28、调度方式:剥夺式、非剥夺式
29、调度准则:CPU利用率、系统吞吐量、周转时间、等待时间、响应时间
30、算法:先来先服务(FIFO)、短作业优先、优先级调度算法、高响应比优先调度算法、时间片轮转、多级反馈队列调度算法
高响应比=(运行时间+等待时间)/ 等待时间
3、进程同步
31、引入进程同步的目的:协调进程之间的相互制约关系
32、制约关系
- 同步:亦称直接制约关系,是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系
- 互斥:也称间接制约关系,当一个进程进入临界区使用临界资源时,另一个进程必须等待,当占用临界资源的进程退出临界区后,另一进程才允许去访问此临界资源
33、临界资源:一次仅允许一个进程使用的资源(如打印机、共享缓冲区、共享变量、公用队列)
34、临界区:在每个进程中访问临界资源的那段程序
35、临界区互斥
- 原则:
- 空闲让进:如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入
- 忙则等待:任何时候,处于临界区内的进程不可多于一个。如有进程进入自己的临界区,则其他所有试图进入临界区的进程必须等待
- 有限等待:进入临界区的进程要在有限的时间内退出,以便其他进程能及时进入自己的临界区
- 让权等待:如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象
- 基本方法:信号量 利用PV操作实现互斥
4、死锁
36、产生死锁的原因:非剥夺资源的竞争和进程的不恰当推进顺序
(进程饥饿,指当等待时间给进程推进和响应带来明显影响称为进程饥饿。)
37、死锁的定义:多个进程因竞争资源而造成的一种僵局,如果没有外力,这些进程将无法推进
38、死锁解决方法:
(死锁产生的四大必要条件:互斥条件、不剥夺条件、请求和保持条件、循环等待条件)当死锁产生时一定会有这四个条件,有一个条件不成立都不会造成死锁,其中互斥使用资源时是无法破坏的。
- 预防死锁
- 破坏互斥条件(共享)
- 破坏不剥夺条件
- 破坏请求和保持条件
- 破坏循环等待条件(采用顺序资源分配法)
- 避免死锁
- 安全状态
- 银行家算法(大题)
银行家算法是最著名的死锁避免算法
数据结构描述:可利用资源矢量Available(未分配)
最大需求矩阵Max(已分配+尚需资源,Max=Allocation+Need)
分配矩阵Allocation(已分配)
需求矩阵Need(尚需资源)
判断状态是否安全:能够找到一个安全序列
- 检测死锁:利用死锁定理
- 解除死锁
- 资源剥夺法
- 撤销进程法
- 进程回退法
三、题目知识点
周转时间=完成时间-提交时间
平均周转时间=周转时间/进程个数
平均周转时间=1/n(n1+n2+n3…+nn)
n:作业进程数,n1…nn:周转时间
作业调度:从外存到内存
进程调度:分配处理机(CPU)
抢占式、非抢占式
两道批作业处理系统:进程只允许在内存中存在2个
题目没强调说剥夺式就是默认非剥夺式
信号量(信号量机制是一种有效实现进程同步和互斥的工具)
信号量的物理意义:
- 信号量的值大于0:表示当前资源可用数量
- 信号量的值小于0:其绝对值表示等待使用该资源的进程个数
- 信号量初值为非负的整数变量,代表资源数
- 信号量值可变,但仅能由PV操作来改变
P/V操作原语
- P操作原语 P(S)
P(S)=S-1 消耗一个资源
①P操作一次,S值-1,即S=S-1(请求分配一资源)
②如果S>=0,则该进程继续执行;如果S<0表示无资源,则该进程的状态置为阻塞态,把相应的PCB连入该信号量队列的末尾,并放弃处理机,进行等待(直到另一个进程执行V(S)操作)
- V操作原语 V(S)
- V操作一次,S值+1,即S=S+1(释放一单位量资源)
- 如果S>0,表示有资源,则该进程继续执行;如果S<=0,则释放信号量队列上的第一个PCB所对应的进程(阻塞态改为就绪态),执行V操作的进程继续执行
例子:用PV操作实现简单同步
S1缓冲区是否为空(0表示不空,1表示空),初值S1=0;
S2缓冲区是否为满(0表示不满,1表示满),初值S2=0;
OS典型例子:生产者–消费者问题
mutex互斥信号量,初值为1;
full满缓冲区数,初值为0;
empty空缓冲区数,初值为N;
死锁一定是不安全状态,但不安全状态不一定是死锁
四、内存管理
39、引入内存管理的目的:更好的支持多道程序的并发执行,提高系统性能
40、主要功能
- 内存空间的分配与回收
- 存储的保护与共享:保证各道作业在各自的存储空间内运行,互不干扰
- 地址转换:在多道程序环境下,程序中的逻辑地址与内存中的物理地址不可能一致,因此存储管理必须提供地址变换功能,把逻辑地址转换成相应的物理地址
- 内存扩充:利用虚拟存储技术或自动覆盖技术,从逻辑上扩充内存
41、用户程序的主要处理阶段
- 编辑阶段:创建源文件
- 编译阶段:由编译程序将用户源代码编译成若干目标模块,生成目标文件
- 链接阶段:由链接程序将编译后形成的一组目标模块及所需的库函数链接在一起,形成一个完整的装入模块。生成可执行文件(形成逻辑地址)
- 装入阶段:由装入程序将装入模块装入内存运行
- 运行阶段:得到结果
42、相关概念
- 程序的装入
- 绝对装入(逻辑地址必须和实际的内存地址完全一样)
- 静态重定位(地址变换在装入时一次完成)
- 动态重定位(地址变换在执行程序的时候再完成)
- 程序的链接
- 静态链接
- 装入时链接
- 运行时链接
- 地址空间
- 逻辑地址空间(地址空间从0开始)
- 物理地址空间(内存中物理单元的集合)
43、管理方式
- 连续分配管理方式
-
单一连续分配:分配到内存固定的区域(有内部碎片)
-
固定分区分配:分配到内存不同的固定区域,分区可以相等可以不等(内部碎片:分配的内存空间有一部分没被用上)
-
动态分区分配:
① 可变分区存储管理:按照程序的需要进行动态的划分
② 动态分区的分配策略算法(四大算法)
首次适应(最好):空闲分区以地址递增的次序链接。分配内存时顺序查找,找到大小能满足要求的第一个空闲分区(缺点:增大查找开销)。
最佳适应:空闲分区按容量递增的方式形成分区链,找到第一个能满足要求的空闲分区(缺点:外部碎片过多:内存当中有某些空闲的分区,太小了难以利用)
最坏适应:空闲分区以容量递减的次序链接。找到第一个能满足要求的空闲分区,即挑选出最大的分区(缺点:对大进程不利)
邻近适应:由首次适应算法演变而成。不同的是,分配内存时从上次查找结束的位置开始继续查找
- 非连续分配管理方式(大题)
- 基本分页式存储管理
- 基本分段式存储管理
- 段页式
44、内存扩充
-
覆盖(同一程序或进程中)
-
交换(不同进程/作业之间进行)
-
虚拟内存:
-
引入原因:在逻辑上扩充内存
-
组成部分:页表机制
中断机制
地址变换机制
内存与外存
-
页面淘汰(置换)算法:
① 先进先出页面淘汰(置换)算法(FIFO)
② 最近最久未用页面淘汰(置换)算法(LRU)
③ 最近最少用页面淘汰(置换)算法(clock):总是把当前使用的最少的页面淘汰出去
④ 最优(最佳)页面淘汰(置换)算法(OPT):把以后不再使用的或最长时间内不会用到的页面淘汰出去(理论上,不会实现)将来最远才使用
注意:页面淘汰是由缺页中断引起的,但缺页中断不见得一定引起页面淘汰
-
抖动:页面频繁的换进换出
抖动的原因:分配给进程的进程块不足
-
页面分配的策略:
① 固定分区局部置换(物理块不变)
② 可变分配全局置换(动态增加物理块)
③ 可变分配局部置换(只允许从该进程的内存页面中挑选一页)
-
缺页率=缺页/总置换次数
五、文件系统
1、文件、文件系统
-
概念:文件是以计算机硬盘为载体的存储在计算机上的信息集合
文件系统:就是操作系统中复制操纵和管理文件的一整套设施,它实现文件的共享和保护,方便用户**“按名存取“(基本目标)**,提高文件的存取速度(最重要目标)
-
功能:文件管理、目录管理、文件空间管理、文件共享和保护、提供方便的接口
2、文件的逻辑结构
- 无结构文件(流式文件)
- 有结构文件(记录式文件):顺序文件(磁带上存储的一定是顺序文件)、索引文件、索引顺序文件
3、目录和目录结构
-
文件控制块:在文件系统内部给每个文件唯一的设置一个文件控制块,它用于描述和控制文件的数据结构,与文件一一对应
-
目录结构:单级目录(不允许重名)
二级目录(解决了重名问题):主目录文件、用户目录文件
树形目录(优:方便,缺:不便共享):绝对路径(从根目录出发)、相对路径(从当前目录出发)
图形目录(实现了共享)
4、文件实现
- 文件分配方式
- 连续分配(有外部碎片)
- 链接分配(解决了外部碎片,但是不支持直接访问,数据易丢失)
- 索引分配(加入FAT表可直接访问,减少了访问磁盘的次数)
- 文件存储空间管理(大题)
- 空闲表法
- 空闲链表法
- 位示图法
5、磁盘管理
- 磁盘地址结构:柱面号、盘面号、扇面号
- 磁盘调度算法(大题)
- 先到先服务算法(FCFS)
- 最短查找时间优先算法(SSTF)
- 扫描算法(SCAN、电梯调度)和LOOK算法
- 循环扫描算法和循环LOOK算法
六、设备管理
1、设备管理的目标
使用方便、与设备无关、效率高、管理统一
2、I/O设备
-
分类:
存储设备或输入输出设备
块设备或字符设备
低速中速高速设备
-
I/O控制方式:
- 程序直接控制方式:也称查询方式,CPU不断去查询设备控制器是否将数据放到了数据存储器中,或者从数据存储器存到设备中,当完成IO时CPU才去干别的事(字节单位)
- 中断方式:当CPU发出指令后就可以去干别的事,当设备控制器把数据存在数据存储器后,向CPU发出中断请求,然后CPU再来处理这部分数据(字节单位)
- DMA方式:虽然中断方式提高了CPU的利用率,但是数据寄存器有限,中断是以字节单位进行中断,也就是说读取或存储一个字节后就需要进行中断,那么其实CPU的利用率还是很低的,所以就诞生了DMA方式,由DMA控制器直接将设备中的数据以数据块为单位直接传输到内存中,当传输结束后才向CPU发起中断(介于IO设备与主存之间的一种方式,不经过CPU)
- IO通道控制方式:DMA虽然大大提升了CPU的利用率,但是DMA只能传输一个连续的数据块。所以引入了IO通道控制方式,IO通道控制方式可以传输不连续的数据块,减少了CPU干预。CPU通过对IO通道发出指令,然后让IO通道自己工作,等数据传输完才向CPU发起中断(不需要CPU直接干预)
1、2需要CPU直接干预,3、4不需要CPU直接干预,3、4降低了CPU介入率,提高了CPU的利用率
3、引入缓冲的目的和缓冲区的设置方式
-
引入缓冲区的目的:① 缓和CPU与外设间速度不匹配的矛盾;② 提高CPU与外设之间的并行性;③ 减少对CPU的中断次数
-
缓冲区的设置方式:
① 单缓冲:但数据到达率与离去率相差很大时,可采用单缓冲方式
② 双缓冲:当信息输入和输出率相同(或相差不大)时,可利用双缓冲区实现两者并行
③ 多缓冲:对于阵发性的输入、输出,为了解决速度不匹配问题,可以设立多个缓冲区
④ 缓冲池:空缓冲区(空缓冲区队列)、装满输入数据的缓冲区(缓冲队列)、装满输出数据的缓冲区(缓冲队列)
收容输入数据的工作缓冲区
提取输入数据的工作缓冲区
收容输出数据的工作缓冲区
提取输出数据的工作缓冲区
4、常用设备分配技术
-
根据设备的使用性质
- 独占设备:不能共享的设备,即在一段时间内,该设备只允许一个进程独占。如打印机
- 共享设备:可由若干个进程同时共享的设备。如磁盘机
- 虚拟设备:是利用某些技术把独占设备改造成可由多个进程共享的设备
-
针对三种设备采用三种分配技术
- 独占分配技术:是把独占设备固定的分配给一个进程,直至该进程完成I/O操作并释放它为止
- 共享分配技术:通常适用于高速、大容量的直接存取设备。由多个进程共享一台设备,每个进程只用其中的一部分
- 虚拟分配技术:利用共享设备去模拟独占设备,从而使独占设备成为可共享的、快速I/O的设备。实现虚拟分配的最有名的技术是SPOOLing技术,也称作假脱机操作
SPOOLING技术
输入井和输出井是在高速磁盘上开辟的两个存储区域。
分配考虑的四大因素:IO设备的固有性质、IO设备的分配算法、IO设备分配的安全性、IO设备的独立性
什么是设备的独立性?
设备的独立性是指应用程序独立于具体使用的物理设备。