操作系统知识点总结
参考用书:计算机操作系统(第四版)汤小丹等著
1、必考知识点
第一章 操作系统引论
- 操作系统的概念及特征
- 操作系统的运行环境
第二章 进程的描述与控制
- 进程状态与转换
- 同步与互斥的基本概念
- 信号量
- 信号量的基本应用
- 生产者消费者问题
- 哲学家进餐问题
- 读者写者问题
第三章 处理机调度与死锁
- 调度算法–先来先服务算法,短作业优先算法,优先级算法
- 高响应比优先算法
- 死锁的概念
- 死锁避免–银行家算法
第四章 存储器管理
- 分页存储管理方式
- 段页式管理方式
第五章 虚拟存储器
- 页面置换算法 重点FIFO,LRU
第六章 输入输出系统
- I/O控制方式
- SPOOLing技术
2、部分知识点详解
第一章 操作系统引论
1、操作系统的定义
操作系统是指控制和管理计算机系统软硬件资源,并且合理的分配和调度计算机的工作和资源的分配,提供给用户与其他软件比较方便的接口和环境,是计算机系统中的最基本的系统软件。
2、多道批处理
多道程序设计是指允许多个程序同时进入一个计算机系统的主存储器并启动进行计算的方法。
特点 : 多路性、共享性、自动型、封闭性、无序性、调度性;
好处 : 提高 的利用率,提高内存和 设备的利用率,增加系统吞吐量;
缺点 : 平均周转时间长,无交互能力。
3、并行和并发
并发是两个或多个事件在同一时间间隔执行,宏观上同时发生的,微观上交替发生的。
并行指在同一时刻完成两种或多种工作
4、常见操作系统的归类
- 单道批处理系统
- 多道批处理系统
- 分时系统
- 实时系统
第二章 进程的描述与控制
1、进程、进程控制块、进程状态图(每个边的触发条件要记忆)
进程
1)定义:从不同的角度,进程可以有不同的定义,比较典型的定义有:
1、进程是程序的一次执行。
2、进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
3、进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进
行资源分配和调度的一个独立单位。2)组成: 进程是由程序控制块(PCB)、程序段、数据段组成
3)组织方式
进程的组织形式分为:链接方式和索引方式。
**链接方式:**按照进程状态将 分为多个队列,操作系统持有指向各个队列的指针。
**索引方式:**根据进程的状态不同,建立几张索引表,操作系统持有指向各个索引表的指针。
4)进程的特征
动态性:进程的最基本的特征,进程是程序的一次执行过程,是动态的产生、 变化和消亡。
并发性:内存中有多个进程实体,各进程可并发执行。
独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位。
异步性:各个进程按各自独立的、不可预知的速度向前推进,操作系统要提供进程同步机制来解决异步问题。
结构性:每个进程都会配置一个 。结构上看,进程由程序段、数据段和组成。进程控制块(PCB)
操作系统是通过 P C B PCB PCB来管理进程,因此 P C B PCB PCB中应该包含操作系统对其进行管理所需的各种信息,如进程描述信息、进程控制和管理信息、资源分配清单和 处理机相关信息。
PCB是进程存在的唯一标志
PCB是一种数据结构
进程状态图
2、理解进程和程序
进程是动态的,程序是静态的,进程拥有动态性、并发性、独立性、异步性、结构性的特征,而程序没有。进程是竞争计算机资源的基本单位,程序不是。
3、wait/signal原语
wait(S)的操作
wait(semaphore *S){ S->value --; if(S->value < 0) block(S->list); }
signal(S)的操作
signal(semaphore *S){ S->value ++; if(S->value <= 0) wakeup(S->list); }
4、临界资源
是一次仅允许一个进程使用的共享资源
属于临界资源的硬件有:打印机,磁带机等;软件有:消息队列,变量,数组,缓冲区
5、经典的经程同步问题(橙子苹果,独木桥,共享缓冲等场景,要会写程序/伪代码)
1、苹果橙子问题
桌上有个能盛得下五个水果的空盘子。爸爸不停地向盘中放苹果或桔子, 儿子不停地从盘中取出桔子享用,女儿不停地从盘中取出苹果享用。规定三人不能同时从 盘子中取放水果。试用信号量实现爸爸、儿子和女儿这三个循环进程之间的同步。
2、独木桥问题
请用信号量解决以下的 “过独木桥” 问题: 同一方向的行人可连续过桥, 当某一方向有人过桥时, 另一方向的行人必须等待; 当某一方向无人过桥时, 另一方向的行人可以过桥。
3、共享缓冲问题
有三个进程PA、PB和PC协作解决文件打印问题。PA将文件记录从磁盘读入内存的缓冲区1,每执行一次读一个记录;PB将缓冲区1的内容复制到缓冲区2中,每执行一次复制一个记录;PC将缓冲区2的内容打印出来,每执行一次打印一个记录。缓冲区的大小与记录大小一样。请用信号量来保证文件的正确打印。
6、了解典型的进程间通信的方式
进程通信是指进程之间的信息交换
PV操作是最低级的通信,高级通信方式是指以较高的效率传输大量数据的
通信方式。
高级通信方法主要有三类:**1.共享存储。**分别有基于共享数据结构的通信方式,例如生产者和消费者、
基于共享存储区的通信方式。**2.消息传递。**是以格式化的消息为单位,利用原语传递消息,分为直接通信
和间接通信。**3.管道通信。**是消息传递的一种特殊方式,是指用于连接一个读进程和一个
写进程以实现它们之间的一个共享文件,又称 文件。
7、进程和线程的关系
线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位。线程自己不拥有系统资源,只拥有一点在运行中必不可少 的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
a.一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
b.资源分配给进程,同一进程的所有线程共享该进程的所有资源。
c.处理机是分配给线程的,即真正在处理机上运行的是线程。
d.线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的 办法实现同步。线程是指进程内的一个执行单元,也是进程内的可调度实体。
第三章 处理机调度与死锁
1、高中低级调度的概念
一个作业从提交开始直到完成,往往要经历以下三级调度:
1、作业调度,又称高级调度,其主要任务是按一定的原则从外存处于后备状态的作业中挑选一个(或多个)作业,给它(们)分配内存、输入/输出设备等必要 的资源,并建立相应的进程,以使它(们)获得竞争处理机的权利。 (调入内存)
2、内存调度,又称中级调度,其作用是提高内存利用率和系统吞吐量。为此, 应将那些暂时不能运行的进程调至外存等待,把此时的进程状态称为挂起态。当 它们已具备运行条件且内存又稍有空闲时,由中级调度来决定把外存上的那些 已具备运行条件的就绪进程再重新调入内存,并修改其状态为就绪态,挂在就绪 队列上等待。 (调回内存)
3、进程调度,又称低级调度,其主要任务是按照某种方法和策略从就绪队列 中选取一个进程,将处理机分配给它,进程调度是操作系统中最基本的一种调度, 在一般的操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒 一次。
2、死锁的四个必要条件
互斥条件 资源(互斥)
请求与保持条件 占有资源,又要获取新资源,请求进程阻塞,占有资源不放
循环等待 循环等待链
不剥夺条件 占有资源,主动释放,不能强行夺走
四个必要条件,缺一不可
3、哲学家就餐问题的改进,相关策略破坏了哪个必要条件要能理解
见书P70
4、银行家算法要会推演
见书P121
5、已知进程数量和各进程所需的资源数量,计算不发生死锁的最少资源数
某系统中有3个并发进程,都需要4个同类资源,试问该系统不会发生死锁的最少资源总数应该是(10个)
让三个进程每个进程先拥有3个资源,然后再提供一个资源给这三个进程,那么必然有一个资源可以获得4个资源,它运行完,释放自己的资源,因此不会发生死锁
第四章 存储器管理
1、理解程序的各种装入和链接方式
程序链接的方式
**静态链接:**在程序运行之前,先将各目标模块及他们所需的库函数链接成一个可 执行程序,此后不再拆开。
**装入时动态链接:**编译后所得的一组目标模块在装入时,边装入边链接。
**运行时动态链接:**对某些目标模块的链接,是在程序执行中需要该目标模块时才 进行的。便于修改和更新以及实现对目标模块的共享。
装入内存的方式
绝对装入:在编译时即知道程序将装入的内存具体地址,则编译程序将产生绝对 地址的目标代码。而后将程序和数据装入内存,只适用于单道程序环境。
可重定位装入:在多道程序环境中,多个目标模块的起始地址均为 开始。装入内存时,通过所分配的内存起始地址加上程序内的相对地址进行地址的动态变 换,一次完成,又称为静态重定位。(必须一次性全部装入,运行期间不能动态 扩充和移动)。
动态运行时装入:装入模块装入内存后并不立即进行地址转换,而是等到程序执 行时才进行。需要重定位寄存器的支持(可以将程序分到不连续的存储区中,程 序运行前只需要装入部分代码,运行期间根据需要动态分配内存,便于程序段的共享,可以向用户提供一个比存储空间大得多的地址空间)。
2、固定分区存储管理器的基本概念,了解不同分配算法对内存碎块的影响
固定分区分配
固定分区分配是最简单的一种多道程序存储管理方式,它将用户内存空间划分 为若干个固定大小的区域,每个分区只装入一道作业。
动态分区分配
动态分区分配又称可变分区分配,是一种动态划分内存的分区方法。这种分配方 式不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地建立 分区。系统分区的大小和数目是可变的。
下面介绍四种动态分区分配算法
**1) 首次适应(First Fit)算法。**空闲分区以地址递增的次序链接。分配内存时顺
序查找,找到大小能满足要求的第一个空闲分区。**2) 最佳适应(Best Fit)算法。**空闲分区按容量递增的方式形成分区链,找到第一
个能满足要求的空闲分区。
缺点:会产生很多的外部碎片。**3) 最坏适应(Worst Fit)算法。**又称最大适应(Largest Fit)算法,空闲分区以容
量递减的次序链接,找到第一个能满足要求的空闲分区,即挑选出最大的分区。 缺点:不利于后续大进程使用,会造成后续大进程到达时无内存分区可用的问题。**4) 邻近适应(Next Fit)算法。**又称循环首次适应算法,由首次适应算法演变而
成。不同之处是,分配内存时从上次查找结束的位置开始继续查找。
3、先来先服务和短作业优先调度时的周转时间和平均周转时间的计算
FCFS : 先来先服务,按照作业/进程到达的先后顺序来调度
SJF : 短作业优先调度,以作业的长短来计算优先级,作业越短,其优先级越高
周转时间 = 完成时间 - 到达时间
4、理解页式内存管理
基本分页存储管理方式
算法思想:把内存分为一个个相等的小分区,再按照分区大小把进程拆分成一个个小部分,分页管理不会产生外部碎片。
分页存储管理的基本概念:
①页面和页面大小
进程中的块称为页( P a g e Page Page),内存中的块称为页框( P a g e F r a m e Page \ Frame Page Frame,或页帧)。外存也以同样的单位进行划分,直接称为块( B l o c k Block Block)。进程在执行时需要申请主存空间,即要为每个页面分配主存中的可用页框,这就产生了页和页框的一一对应。页面大小应该适中,应为的整数幂。②地址结构
前一部分为页号 P P P,后一部分为页内偏移量 W W W。地址长度为 32 32 32位,其中位为 0 ∼ 11 0 \sim 11 0∼11页内地址,即每页大小为 4 K B 4KB 4KB; 12 ∼ 31 12 \sim 31 12∼31位为页号,地址空间最多允许 2 30 2^{30} 230页。
③页表
为了便于在内存中找到进程每个页面所对应的物理块,系统为每个进程建立一张页表,它记录页面在内存中对应的物理块号,页表一般存放在内存中。页表是由页表项组成的,页表项由页号和物理内存中的块号组成。
④地址变换机构
基本的地址变换结构
地址变换机构的任务是将逻辑地址转换为内存中的物理地址。地址变换是借助于页表实现的。变换过程计算:
设页面大小为 L L L,逻辑地址 A A A到物理地址 E E E的变换过程如下(逻辑地址、页号、每页的长度都是十进制数):
Ⅰ.计算页号 P ( P = A / L ) P(P = A/L) P(P=A/L)和页内偏移量 W ( W = A m o d L ) W(W = A\bmod L) W(W=AmodL)。
Ⅱ.比较页号 P P P和页表长度 M M M,若 P > M P > M P>M,则产生越界中断,否则继续执行。
Ⅲ.页表中页号 P P P对应的页表项地址 = 页表始址 F F F + 页号$P \times $ 页表项长度,取出该页表项内容 b b b,即为物理块号。要注意区分页表长度和页表项长度。页表长度的值是指一共有多少页,页表项长度是指页地址占多大的存储空间。
Ⅳ.计算 E = b × L + W E = b \times L + W E=b×L+W ,用得到的物理地地上去访问内存。
第五章 虚拟存储器
1、程序运行的局部性原理
局部性原理既适用于程序结构,又适用于数据结构。
局部性原理表现在两个方面:
①时间局部性:通过将近来使用的指令和数据保存到高速缓存存储器中,并使用
高速缓存的层次结构实现。②空间局部性:通常使用较大的高速缓存,并将预取机制集成到高速缓存控制逻
辑中实现。
2、理解虚拟存储的概念
在操作系统的管理下,在用户看来似乎由一个比实际内存大得多得内存,这就是虚拟内存。
虚拟存储器有以下三个主要特征:**①多次性。**多次性是指无须在作业运行时一次性地全部装入内存,而允许被分成多次调入内存运行。
**②对换性。**对换性是指无须在作业运行时一直常驻内存,而允许在作业的运行过程中,进行换进和换出。
**③虚拟性。**虚拟性是指从逻辑上扩充内存的容量,使用户所看到的内存容量远大于实际的内存容量。
3、会计算FIFO和LRU时的缺页中断和淘汰页
先进先出(FIFO)页面置换算法
算法思想:优先淘汰最早进入内存的页面,即在内存中驻留时间最久的页面。最近最久未使用(LRU)置换算法
算法思想:选择最近最久时间未访问过的页面予以淘汰。请求分页中的地址变换过程
第六章 输入输出系统
1、典型的IO控制方式,理解常见的鼠标、键盘、硬盘的控制方式
1)程序直接控制方式
计算机从外部设备读取数据到存储器,每次读一个字的数据。对读入的每个字, C P U CPU CPU需要对外设状态进行循环检查,直到确定该字已经在 I / O I/O I/O控制器的数据寄存器中。
2)中断驱动方式
中断驱动方式的思想是,允许 I / O I/O I/O设备主动打断 C P U CPU CPU的运行并请求服务,从而“解放” C P U CPU CPU,使得其向 I / O I/O I/O控制器发送读命令后可以继续做其他有用的工作。
3) D M A DMA DMA方式
在中断驱动方式中, I / O I/O I/O设备与内存之间的数据交换必须经过 C P U CPU CPU中的寄存器,所以速度还是受限,而 D M A DMA DMA(直接存储器存取)方式的基本思想是在 I / O I/O I/O设备和内存之间开辟直接的数据交换通路,彻底“解放” C P U CPU CPU
4)通道控制方式
I / O I/O I/O通道是指专门负责输入/输出的处理机。
I / O I/O I/O通道方式是 D M A DMA DMA方式的发展,它可以进一步减少 C P U CPU CPU的干预,即把对一个数据块的读或写)为单位的干预,减少为对一组数据块的读(或写)及有关控制和管理为单位的干预。同时又可以实现 C P U CPU CPU、通道和 I / O I/O I/O设备三者的并行操作,从而更有效地提高整个系统的资源利用率。硬盘是 D M A DMA DMA方式,键盘是中断驱动方式
2、设备驱动
与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动 I / O I/O I/O设备工作的驱动程序。
3、与设备无关的I/O软件
用户层 I / O I/O I/O软件
实现与用户交互的接口,用户可直接调用在用户层提供的、与 I / O I/O I/O操作有关的库函数,对设备进行操作。
设备独立性软件
用于实现用户程序与设备驱动器的统一接口、设备命令、
设备保护及设备分配与释放等,同时为设备管理和数据传送提供必要的存储空间。
设备独立性也称设备无关性,使得应用程序独立于具体使用的物理设备。
使用逻辑设备名的好处是:①增加设备分配的灵活性;②易于实现 I / O I/O I/O重定向。
3、常见概念辨析
1、并发与并行的区别
并发是两个或多个事件在同一时间间隔执行,宏观上同时发生的,微观上交替发生的。
并行指在同一时刻完成两种或多种工作
2、进程与程序的区别
进程是动态的,程序是静态的,进程拥有动态性、并发性、独立性、异步性、结构性的特征,而程序没有。进程是竞争计算机资源的基本单位,程序不是。
3、进程与线程的区别
线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位。线程自己不拥有系统资源,只拥有一点在运行中必不可少 的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
具体的说:
a.调度。线程是调度和分配的基本单位,进程是拥有资源的基本单位。
b.并发性。不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行。
c.拥有资源。进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。
d.系统开销。在创建或撤消进程时,由于系统都要为之分配和回收资源导致系统的开销明显大于创建或撤消线程时的开销。
4、进程与线程的联系
a.一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
b.资源分配给进程,同一进程的所有线程共享该进程的所有资源。
c.处理机是分配给线程的,即真正在处理机上运行的是线程。
d.线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的 办法实现同步。线程是指进程内的一个执行单元,也是进程内的可调度实体。
5、死锁的定义
各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象。
6、死锁和饥饿的区别
共同点:都是进程无法顺利向前推进导致的现象
区别:死锁一定是“循环等待对方手里的资源”导致的,因此 如果有死锁现象,那至少有两个或两个以上的进程 同时发生死锁。另外,发生死锁的进程一定处于阻塞。可能只有一个进程发生饥饿。发生饥饿的进程既可 能是阻塞态(长期得不到的设备),也可能是就绪态(长期得不到处理机)
7、死锁发生的必要条件
互斥条件 资源(互斥)
请求与保持条件 占有资源,又要获取新资源,请求进程阻塞,占有资源不放
循环等待 循环等待链
不剥夺条件 占有资源,主动释放,不能强行夺走
四个必要条件,缺一不可
8、进程同步和进程调度的区别
1、进程调度是为了最大程度的利用 资源,选用合适的算法调度就绪队列中的进程。
2、进程同步是为了协调一些进程以完成某个任务,比如读和写,肯定先写后
读,不能先读后写,这就是进程同步做的事情了,指定这些进程的先后执行次
序使得某个任务能够顺利完成。
9、为禁止两个进程同时进入临界区,同步机制应遵循以下准则
空闲让进:临界区空闲时,可以允许一个请求进临界区的进程立即进入临界区
忙则等待:当已有进程进入临界区时,其他试图进入临界区的进程必须等待。
有限等待:对请求访问的进程,应保证能在有限内时间内进入临界区。
让权等待:进程不能进入临界区,需立即释放处理器,防止忙等待
10、互斥与同步的区别
同步也叫直接相互制约关系,是由进程间相互合作引起的。
互斥也叫简介相互制约关系,是由进程间共享临界资源引起的。
11、覆盖技术与虚拟存储技术有何本质上的不同?交换技术与虚拟存储技术中使用的调入/调出技术有何相同与不同之处?
1)覆盖技术与虚拟存储技术最本质的不同在于,覆盖程序段的最大长度 要受内存容量大小的限制,而虚拟存储器中程序的最大长度不受内存容量的限制,只受计算机地址结构的限制。另外,覆盖技术中的覆盖段由程序员设计,且 要求覆盖段中的各个覆盖具有相对独立性,不存在直接联系或相互交叉访问;而 虚拟存储技术对用户的程序段没有这种要求。
2)交换技术就是把暂时不用的某个程序及数据从内存移到外存中,以便腾出必 要的内存空间,或把指定的程序或数据从外存读到内存中的一种内存扩充技术。 交换技术与虚存中使用的调入/调出技术的主要区别是:交换技术调入/调出整 个进程,因此一个进程的大小要受内存容量大小的限制;而虚存中使用的调入/ 调出技术在内存和外存之间来回传递的是页面或分段,而不是整个进程,从而使 得进程的地址映射具有更大的灵活性,且允许进程的大小比可用的内存空间大。