第一章

【选择题】

1.操作系统的功能

存储器管理功能——内存分配、地址映射、内存保护、内存扩充。

处理机管理功能——作业和进程调度、进程通信。

设备管理功能——缓冲区管理、设备分配、设备驱动、设备无关性。

文件管理功能——文件存储空间的管理、目录管理、文件的读写管理和存取控制。

用户接口——命令界面、图形界面、程序界面。

2.各个操作系统都注重什么特征

①多道批处理操作系统——多道、成批。

②分时操作系统——交互。同时性(多个用户运行)、交互性、独占性、及时性。

③实时操作系统——严格要求响应时间、可靠性。

④嵌入式操作系统——小、精简、专用性。

【简答题】

==1.什么是操作系统==

①是最基本和最重要的系统软件

管理和控制了计算机系统资源

③为用户提供服务

==2.操作系统的目标==

方便性:用户操作只需要输入命令或者用鼠标点击就可以了。

有效性:计算机系统资源得到有效使用。

可扩展性:操作系统的功能会不断升级。

**==3.操作系统的特征==**(并发和共享导致了异步)

并发性:宏观上多道程序同时运行

(并发指的是宏观上并行、微观上交替;区别于并行)

异步性:各个程序不是一直在运行的,什么时候运行、运行多久是不可预知的。

资源共享性:资源可以被访问者共同使用。分为互斥共享方式和同步共享方式。

第三章

【选择题】

1.进程的概念

(1)一些很细碎的概念

多道程序设计是操作系统最重要的思想(本质是共享)。

现代操作系统的重要特点是程序的并发执行、系统所拥有的资源被共享、系统用户随机地使用

操作系统的重要任务之一是使用户充分、有效地利用系统资源。

进程:计算机程序的执行过程、共享资源的基本单位。

程序的顺序性和计算机的顺序性是一致的。

程序的顺序执行的特点:顺序性、封闭性(结果由初始条件决定)、可再现性。

程序的并发执行的特点:间断性、失去封闭性、不可再现性。(一个程序的开始在另一个程序的结束之前,就是并发)

多道程序系统中程序执行环境的特点:独立性、随机性、资源共享。

(2)进程的描述

进程:程序在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位。

进程的特征:动态、并行、独立、异步、结构性。

==2.进程状态及其转换==

==(1)状态转换图==

2820621e20b50021112272c76b66deb

(2)各状态的说明

①运行——进程已获得CPU,正在运行。(在单处理机系统只有一个进程能够处于运行状态)

②就绪——进程已经获得除了CPU以外的所有必要资源,只要CPU在就可以立即运行。

③阻塞/等待/睡眠——正在运行的进程由于某种突发事件(如IO请求、申请缓冲区失败)而暂时无法运行。

④新建——对应于进程被创建时的状态,尚未进入就绪队列。

⑤完成——进程正常或非正常终止。

==(3)状态转换(CPU空闲的三种情况:时间片到、等待事件发生、终止)==

①新建→就绪:为新进程分配资源。

②就绪→运行:进程得到了CPU。

③运行→就绪:时间片(系统限定的最长时间)到了、出现比当前进程优先级高的进程。

④运行→阻塞:等待使用资源/等待事件发生。

⑤阻塞→就绪:资源得到满足/事件发生。

⑥运行→完成:释放资源。

【简答题】

==1.进程的特征==

①异步性

②独立性

③并行性

④动态性

⑤结构性

==2.进程和程序的区别==

①进程具有动态性,强调执行过程;

程序具有静态性,是指令的有序集合。

②进程是并行的,程序不是。

进程是竞争计算机系统资源的基本单位,从而其并行性受到系统资源的制约。

④不同的进程可以对应不同程序,也可以为同一程序(只要所对应的数据集不同。

⑤作为被控制和管理的实体,除程序本身和所需数据集之外,应包括控制和管理信息。

==3.进程状态及其转换==

(看上面)

第四章

【选择题】

1.多道程序设计

多道程序设计引起资源共享,因此对共享的资源进行调度是必要的。

即使利用了中断,CPU仍有可能未得到充分的利用,因此需要允许多道用户程序同时处于活动状态。

多道程序设计的程度决定何时创建一个进程——创建的进程越多,每个进程可能执行的时间平均就越少。

2.高级、中级和低级调度

(1)高级调度——决定是否把进程添加到当前活跃的进程集合中(决定哪些进程进内存)。作业调度、宏观调度

(2)中级调度——①属于交换(Swapping)功能的一部分。②在内存和外存之间。③系统的并发度过高时,就将某些进程暂时交换到外存。缓解内存空间紧张。

并发度的提高会:提高系统资源利用率;增加系统开销,降低进程速度,激烈资源竞争,死锁。

(3)低级调度——真正决定下一次执行哪一个就绪进程。进程调度、处理机调度

低级调度的产生时机:一个进程执行结束、当前进程由于请求I/O进入阻塞、以及分时系统中时间片到。

3.实现实时调度的基本条件

①提供必要的信息——就绪时间、开始截止时间和完成截止时间、处理时间、资源要求、优先级

②系统处理能力

③采用抢占式调度机制

④具有快速切换机制

4.实时调度的算法分类

(1) 根据任务性质:硬实时、软实时

(2) 按调度方式:非抢占式、抢占式

(3) 按调度时间:静态、动态

(4) 多处理机环境:集中式、分布式

5.实时调度算法

最重要的参考依据是:截止时间。

①最早截止时间优先EDF

根据任务的开始截止时间确定优先级。截止时间越早优先级越高。

②最低松弛度优先LLF

根据任务紧急的程度确定优先级。

松弛度=必须完成的时间点-其本身需要的运行时间-当前时间

image-20241218013525528

image-20241218013544398

【简答题】

==各种调度算法的侧重点和优缺点==

①先来先服务FIFO——侧重于作业在系统的等待时间。

优点:有利于长作业和CPU繁忙型作业。

缺点:可能造成CPU和IO设备都没有充分发挥。

②短作业/进程优先SJF——侧重于作业自身的估计运行时间。

优点:提高整体性能,有利于短作业。

缺点:需要事先知道每个作业所需的处理机时间、长作业可能饿死、不利于分时系统(因为不可抢占)。

③最高响应比HRP——侧重于响应时间比。

优点:结合了先来先服务和短作业优先的特点,对待长短作业均衡,不会饿死

缺点:大量计算,消耗CPU时间。不适合作业调度。

④最短剩余时间SRT——侧重于预期剩余时间。抢占。

优点:好于前面的非抢占式算法。

缺点:存在饥饿现象,不利于长作业。

⑤轮转RR——基于先来先服务和时钟

优点:主要用于分时系统中的进程调度。公平对待长短作业。

缺点:如果时间片太小,吞吐量会降低。不适合作业调度。

⑥多级反馈队列MFQ

优点:有利于IO繁忙型作业。

缺点:可能导致饥饿

⑦多级队列

⑧优先级法

静态优先级、动态优先级(优先级应随着等待时间的增加而提高)

优点:资源利用率提高,公平性较好。

缺点:系统开销大,实现比较复杂,存在 “饥饿”现象

【计算题】

==进程调度算法==

1.公式

周转时间T=结束时间-到达时间

平均周转时间

带权周转时间W=周转时间 / 服务时间(也叫实际运行时间)

响应比R=(响应时间+运行时间)/运行时间

响应时间= 上个作业的结束时间-到达时间

系统响应时间=时间片*就绪队列中进程的数目

2.先来先服务FCFS(不考)

3.短作业/进程优先SJF

服务时间短的优先,同时需要考虑进程结束后下一个进程是否到达

4.最高响应比HRP

5.最短剩余时间SRT——抢占式版本的SJF

6.轮转RR

响应时间=时间片长度*进程数

image-20241218013232230

第五章

【选择题】

信号量的初值(初值应≥0,只能赋值一次)、进程释放后当前资源情况(比如几个进程在等待)

信号量的概念:信号量是一个记录型数据结构

除初始化外,仅能通过两个原子操作wait(S)和signal(S)来访问信号量,前者为P操作, 后者为V操作

信号量 S 的物理含义:

(1) S>0——表示有S个资源可用

(2) S=0——表示无资源可用

(3) S<0——则 |S| 表示等待队列中进程的个数

【简答题】

临界区和进程互斥

==临界区、临界资源、原则==

(1)临界资源:一次只允许一个进程使用的资源。

(2)临界区:访问临界资源的那段程序。

相关临界区:多个进程的临界区。

(3)原则:

空闲让进——当无进程在互斥区时,任何有权使用互斥区的进程都可进入。

忙则等待——禁止两个以上的进程同时进入互斥区。

有限等——任何进入互斥区的要求应在有限时间内得到满足。

让权等待——让出CPU使用权,处于等待状态的进程应放弃CPU。以免进程陷入“忙等”。

【大题】——PV操作

第六章

死锁中不可能只有一个进程。

【选择题】

1.死锁的预防、避免、处理

2.当前是否安全(安全→不死锁,不安全→可能死锁可能不死锁)——能找出安全序列说明安全。

3.资源分配图SRAG

分配边:资源→进程;申请边:进程→资源。

圆圈表示进程,方块表示资源。

(1)判定死锁

①如果资源分配图中未出现任何环,则此时系统内不存在死锁。

②如果资源分配图中出现了环,且处于此环中的每类资源均只有一个,则有环就出现了死锁。此时,环是系统存在死锁的必要充分条件

③如果资源分配图中出现了环,但处于此环中的每类资源的个数不全为1,则环的存在只是产生死锁的必要条件。(此时需要化简资源分配图)

(2)死锁状态的充分条件:资源分配图不可完全简化。

(3)简化资源分配图

①找一个只有分配边的非孤立进程结点(找非阻塞结点),去掉分配边,将其变为孤立结点。

②把相应资源分配给一个等待该资源的进程,即 将某进程的申请边变为分配边。

③若所有进程变为孤立结点,称该资源分配图是可完全简化的。

【例题】

img

fc96e16eeeffb7494e84bca94066763

【简答题】

==1.死锁的必要条件==

互斥条件:对必须互斥使用的资源的争抢才会导致死锁。

请求和保持条件:进程已经有资源了,但是又申请了新资源,这个时候请求被阻塞了,但对已有资源又保持不放。

非剥夺条件:进程得到的资源在没用完前,不能由其他进程抢走。

循环等待条件:链中每个进程已获得的资源同时被下一个进程请求。

==2.死锁的预防==

①互斥条件——不能破坏,必须保持

②请求和保持条件——采用预先分配策略,一次性给(缺点:资源利用率低、可能饥饿)

③非剥夺条件——收回已分给进程且尚未使用完的资源

④循环等待条件——采用有序分配策略

3.死锁的处理

(1) 避免策略(预防、避免) 死锁不会发生

(2) 解决策略(检测、解除) 死锁可能发生

4.死锁的避免

==【大题】——银行家算法==

Available可利用资源max最大需求allocation分配矩阵,need需求矩阵。

无论题目是否问到,都需要计算:need=max-allocation。

1.当前是否死锁

画出表格,进行安全性分析。

2.找出安全序列

3.可分配?

判断request和need、available的大小,假性分配资源和修改该进程的数据,进行安全性检查,若安全则说明可分配。

【例题】

表1

1)请给出 Need 矩阵。

2)当前系统是否处于安全状态?

3)如果从进程 P1发来一个请求(0,4,2,0),这个请求能否立刻满足?

f5a9e955c76268a992b2a68ccb68797

ff2bd6575cf68007082d2a042b14fc5

第七章

【选择题】

程序转换过程:编译-链接-加载-运行。

一般来说,加载形成物理地址,编译、链接形成逻辑地址。

1.程序的链接

链接编辑程序:产生可重定位模块的链接器

动态链接器:把某些外部模块的链接推迟到创建加载模块之后

2.程序的加载(加载后不一定是物理地址)

加载器,又称装入程序:给程序的指令和数据分配物理地址

image-20241217192721740

加载方式:

(1) 绝对装入:逻辑地址与物理地址完全相同

(2) 可重定位方式,又称静态重定位:不允许程序运行时在内存中移动

(3) 动态运行时装入:允许程序运行时在内存位置发生变化

3.连续分配方式

(1)单一连续分配:出现在单道程序系统。

(2)固定分区分配:简单,会产生很多内碎片(不可被其他进程利用)、内存利用率低。

(3)动态分区分配:按需分配。

分配策略的好坏排序:首次>下次>最坏>最佳

①首次适应算法——从链表的开头开始查找,优先低址

②最佳适应算法——查找时间最长,产生最多外碎片

③下次适应算法——对首次适应算法的改动,从上次查找停止的位置开始查找

④最坏适应算法——总是使用当前可用的最大分区

(4)可重定位分区分配:重定位就是把逻辑地址转换为物理地址,静态重定位在程序加载到内存后就转换,动态重定位在指令执行时才开始转换。

【简答题】

1.基本分页分配方式(逻辑分页、物理分块,物理块之间可不连续)

内存划分大小相同连续部分——块或页框

作业逻辑地址划分成一系列相同大小部分——页

为作业分配内存时,一块存放一页

大部分情况下,用户作业不可能是页的整数倍, 因而在最后的页中,可能产生“页内碎片 ”

分页存储管理所造成的资源消耗 (1) 内存资源:页表需要保存在内存中,占用内存资源

(2) 运行性能:获取指令的过程中需要多次访问内存(至少2次!)

==2.分页、分段的区别==

①页是信息的物理单位,段是信息的逻辑单位。

②分页是系统管理的需求,分段是用户的需求。

③分页的主要目的是减少内存的外碎片,提高内存利用率;分段是为了程序完整性

④页大小是固定的,取决于系统;段的长度不固定

⑤分页的地址空间是一维的,分段的地址空间是二维的。

⑥页会产生内碎片,段会产生外碎片。

3.可变分区分配的4个算法

(概念部分见上文)

image-20241218001142046

image-20241218002429440

③最佳适应算法会无法分配,说明最佳适应算法并不是最佳,会产生很多无法利用的内碎片;

首次适应算法会在高址有较高的空闲空间。

image-20241218002619774

【大题】——和第八章一起考

逻辑地址(0,0)代表的意思:括号内第一个数是页号,第二个数是页内地址。

image-20241218011003972

页数=文件大小/页面大小

页表文件大小=页数*块号大小

页表文件页数=页表文件大小/页面大小

1.逻辑地址转换为物理地址——十进制、十六进制

注意:给多少进制回答就要答多少进制!

①若逻辑地址为十进制数,则用页号p=INT(A/页大小L), 页内偏移量w=AmodL,找页表块号,块号大小+偏移量=物理地址

②若为八进制/十六进制,则转为二进制,然后根据页大小L从右往左取位数,取页内偏移量(右边)和页号(左边),找页表块号,块号大小+偏移量=物理地址

image-20241218005103721

image-20241218005649929

2.缺页率

image-20241218005848978

3.一个在内存不用调入,一个不在内存要调入(用到页面置换算法,LRU,CLOCK,FIFO)

image-20241218010335260

image-20241218010405348

第八章

【选择题】

置换算法利用硬件寄存器实现

1.最优页面置换——不具有实用性

2.先进先出置换——belady异常,分配给进程的物理块越多,缺页率反而增加

3.最近最少使用置换——介于OPT和FIFO之 间

4.时钟算法

【简答题】

==伙伴算法==

(1)特点:

①允许内碎片存在,外碎片很少

②搜索空闲块的速度很快

image-20241218011050826

image-20241218011144878

第九章

【简答题】

1.IO设备数据传输控制方式(程序直接、中断、DMA、通道)

2.磁盘访问时间的组成

3.SPOOLING系统

【大题】

磁盘调度算法

第十章

【简答题】

FAT

位示图

UNIX成组链接(只适用磁盘管理)

【大题】

索引结构+文件占用大小