哎,应试的产物,博主只是只大二的期末狗,以下所有内容不保证逻辑严密性,相关内容参考操作系统大黑书、学校试题答案、网上各类博客论坛,仅为了复习所用
相关参考来源:
csdn上一位大佬关于操作系统知识点的总结,解决了我不少疑惑,写的很好
博客园的一篇选择题总结
上课听老师讲课过了一遍知识点,但开始复习的时候真的很无语,根本不理解各个点之间的关联,然后我在b站这个视频:是一个考研上岸的学长做的操作系统讲解视频
我个人觉得这个比王道考研好,重理解,讲逻辑,哈哈哈每次的举例都是qq和LOL,很亲民了我感觉。当然内容很多,不适合速成,安利一波,大师兄讲的真的很好!
剩下的文件系统和I/O设备管理感觉背的东西多,就没写笔记了。
不保证正确嗷,我自己的答案
用户级线程 | 系统级线程 | |
---|---|---|
区别 | ①仅存在于用户空间,内核看不到用户线程(所以只要有一个线程阻塞将使得整个进程阻塞);②内核资源的分配按照进程分配,而用户线程只能在进程内进行资源竞争 | 1)线程的创建、撤销和切换等,都需要内核直接实现,内核了解每一个作为可调度实体的线程。(2)这些线程可以在全系统内进行资源的竞争;(3)内核空间内为每一个内核支持线程设置了一个线程控制块(TCB),内核根据该控制块,感知线程的存在,并进行控制。 |
优点 | ①实现简单,可以在不支持线程的操作系统中使用;②线程管理代价小;③允许每个进程有自己的线程调度算法,线程管理灵活;④线程能够利用的表空间和堆栈空间更大 | 当有多个处理机时,一个进程的多个线程可以同时执行 |
缺点 | 资源调度按照进程进行,多个处理机下,同一个进程中的线程只能在同一个处理机下分时复用 | 由内核进行调度 |
使用临界区的四个必要条件
①空闲让进:临界区空闲时应该允许一个进程访问;
②忙则等待:临界区被访问时,其余想访问他的进程必须等待;
③有限等待:等待的进程在外等待的时间必须是有限的;
④让权等待:若等待进程一直等待,迟迟进不到临界区时,应该让出cpu,防止忙等待。
什么是信号量以及与信号量相关的两个操作的执行流程
信号量是进程间通信处理同步互斥的机制。是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。
信号量相关的两个操作为:P操作和V操作。
P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下:
P(S):
①将信号量S的值减1,即S=S-1;
②如果S>=0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。
V(S):
①将信号量S的值加1,即S=S+1;
②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。
存储管理中分页与分段的区别和相应优缺点
分页 | 分段 | |
---|---|---|
目的 | 分页是为了消减内存碎片,提高内存利用率 | 分段管理的目的除了可以提高内存空间的利用率(相对分区管理而言)外,主要是为了更好的实现程序的共享和动态链接,方便用户编程。 |
长度 | 页的大小固定由系统决定 | 长度不固定,根据信息的性质划分 |
地址空间 | 是一维的线性地址空间 | 是二维的,程序员需要给出段名+段内地址 |
绝对地址 | 由页号和偏移量计算绝对地址 | 由段号和偏移量计算绝对地址 |
管理方式 | 对于分页,操作系统必须为每个进程维护一个页表,以说明每个页对应的的页框。当进程运行时,它的所有页都必须在内存中,除非使用覆盖技术或虚拟技术,另外操作系统需要维护一个空闲页框列表 | 对于分段,操作系统必须为每个进程维护一个段表,以说明每个段的加载地址和长度。当进程运行时,它的所有段都必须在内存中,除非使用覆盖技术或虚拟技术,另外操作系统需要维护一个内存中的空闲的空洞列表。 |
实现 | 分页不容易实现 | 分段容易实现 |
操作系统保存中断现场信息的数据结构有哪些?何种情况下使用这些数据结构保存信息?
保存中断现场,对于嵌套中断,被中断程序的现场信息依次压入系统栈,中断返回时逆序弹出;
何谓多道程序?
多道程序设计技术是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制下,相互穿插运行,两个或两个以上程序在计算机系统中同处于开始到结束之间的状态, 这些程序共享计算机系统资源。
在一个操作系统中系统调用的目的是什么?
请求系统服务。
操作系统不允许用户直接操作各种硬件资源,因此用户程序只能通过系统调用的方式来请求内核为其服务,间接地使用各种资源。
动态分区的内存分配算法有哪些?
四种:
①首次适应算法(First Fit):将空闲分区链以地址递增的顺序连接;在进行内存分配时,从链首开始顺序查找,直到找到一块分区的大小可以满足需求时,按照该作业的大小,从该分区中分配出内存,将剩下的空闲分区仍然链在空闲分区链中。
②循环首次适应算法(Next Fit):分配内存时不是从链首进行查找可以分配内存的空闲分区,而是从上一次分配内存的空闲分区的下一个分区开始查找,直到找到可以为该进程分配内存的空闲分区;
③最佳适应算法(Best Fit):将空闲分区链中的空闲分区按照空闲分区由小到大的顺序排序,从而形成空闲分区链。每次从链首进行查找合适的空闲分区为作业分配内存,这样每次找到的空闲分区是和作业大小最接近的,所谓“最佳”。
④最坏适应算法(Worst Fit):与最佳适应算法刚好相反,将空闲分区链的分区按照从大到小的顺序排序形成空闲分区链,每次查找时只要看第一个空闲分区是否满足即可。
When an interrupt or a system call transfers control to the operating system, a kernel stack area separate from the stack of the interrupted process is generally used. Why?(当中断或系统调用将控制转移到操作系统时,通常使用与被中断进程的堆栈分离的内核堆栈区域。为什么?)
首先,不希望操作系统崩溃,由于某些用户程序不允许足够的堆栈空间。
第二,如果内核将数据保留在用户空间,然后从系统调用返回,那么恶意的用户可能使用这些数据找出某些关于其它进程的信息。
for each of the following decimal virtual address,compute the virtual page number and offset for a 4KB page and for an 8KB page:20000,32768,60000(对于以下每一个十进制虚拟地址,计算4KB页面和8KB页面的虚拟页码和偏移量:20000、32768、60000)
20000 | 页码 | 偏移量 | |
---|---|---|---|
4KB | 20000÷212=4……3616 | 4 | 3616 |
8KB | 20000÷213=2……3616 | 2 | 3616 |
1. 输入井和输出井
输入井和输出井是在磁盘上开辟出来的两个存储区域。
2. 一个作业从进入系统到运行结束,一般要经历4个状态:
3. 静态地址重定位与动态地址重定位
4. 造成死锁的必要条件之一是因为资源具有不可剥夺的性质。 会因为竞争引起死锁的为不可剥夺资源,可剥夺资源不会因为竞争而引起死锁。
所以举例子——
会引起死锁的资源有:打印机、磁带机、扫描仪
不会引起死锁的资源有:CPU、磁盘
这里解释一下CPU不会引起死锁的原因——
因为CPU是可以剥夺的资源,当多个进程竞争CPU时,要么成功获得CPU的使用权,要么无法取得CPU的使用权。所以不会因为多个进程请求CPU而造成死锁。
而打印机、磁带机、扫描仪资源都是外部设备,在某个进程使用的时候其他的进程无法进行剥夺,需要互斥访问。所以就有可能造成死锁。
5. 在进程运行时发生的如下事件中:
①时钟中断
②调用访管输入
③执行非法指令
④I/O中断
一定进行进程切换的事件是(②③)
首先要明晰任务调度的时机:当系统发生硬件中断、系统调用或者时钟中断时,就有可能发生进程的切换。
而其中中断的分类为
(1)外中断(又称为中断或异步中断)
①泛指来自处理器之外的中断信号,包括外部设备中断、时钟中断、键盘中断和它机中断等;
②分为可屏蔽中断和不可屏蔽中断;
③高优先级中断可以部分或全部屏蔽低级中断。
(2)内中断(又称为异常或同步中断)
①泛指来自处理器内部的中断信号,往往由于在程序执行过程中,发现与当前指令关联的、不正常的或错误的事件;
②细分为访管中断、硬件故障中断、程序性异常;
③内中断不能屏蔽,一旦出现应立即响应并处理。
所以上述中一定发生进程切换的要选择内中断也就是②③
6.关于死锁的计算规则:
某类资源m个,n个进程都需要此种资源a个,如何不死锁:n*(a-1)+1≤m
7.关于线程
线程是CPU使用的一个基本单元,它包括线程ID、程序计数器、寄存器组和堆栈。它与同一进程的其他线程共享代码段、数据段和其他操作系统资源,如打开文件和信号。引入线程后,进程作为系统分配和保护的独立单位,无须频繁地切换;线程作为系统调用和分派的基本单位,会被频繁地调度和切换。单线程(Single-threaded)进程又被为重量级(Heavyweight)进程,多线程(Multithreaded)进程又被称为轻量级(Lightweight)进程。
线程和进程的区别与联系 | 线程 | 进程 |
---|---|---|
根本区别 | 任务调度和执行的基本单位 | 操作系统资源分配的基本单位 |
开销 | 同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小 | 每个进程都有独立的代码和数据空间(进程上下文),进程之间的切换会有较大的开销 |
所处环境 | 同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行) | 操作系统中能同时运行多个进程(程序) |
内存分配 | 除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源 | 系统在运行的时候会为每个进程分配不同的内存空间 |
联系 | 线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程 | 没有线程的进程可以看做是单线程 |
如果是用户级线程, 线程是由进程进行管理的, 那么对于OS而言就不存在线程这个概念, 那么就是进程可以并发执行, 一个进程内的线程串行执行; 而内核级线程则一个进程内的线程也可以并发执行.
8. 页式存储管理中,快表命中率为80%,快表访问时间为20ns,内存访问时间为80ns,则内存的有效访问时间为:116ns
首先明晰请求分页式储存系统的访问方式:
此题说了是内存有效访问,所以不考虑第三种外存重录的情况。那么:
快表命中t1=20+80=100
快表不命中t2=20+80+80=180ns
内存有效访问时间为:0.8t1+0.2t2=80+36=116ns
在请求分页式存储管理中,假设一次内存访问时间为 100ns ,一次快表( TLB )访问时间为 20ns ,地址转换计算时的快表命中率为 80% ,请计算平均有效内存访问时间为多少 140ns ?若缺页率为 1% ,且每次缺页中断处理时间为 20ms ,请计算平均有效内存访问时间为多少 20140ns ?
解题过程:
如果快表命中(即页号在快表中),则内存访问时间A1=20+100=120ns 如果快表未命中,则内存访问时间
A2=20+100+100=220ns【含一次访问内存中页表】
则平均有效内存访问时间
A=A1×80%+A2×20%=120×0.8+220×0.2=140ns
缺页率p=1‰的含义是,每1000次内存访问中有1次需要调页处理! 因此,请求分页式存储管理过程中,平均有效内存访问时间:
T = (1-p)×A+p×20(ms)
=(1-0.001)×140 + 0.001×20000000(ns)
=139.86+20000
≈20140ns
【注】1s=103ms=106us=109ns
9. 某分布式系统通过Ada语言的会合解决同步问题,该会合被调任务入口的select
语句伪代码如下:
select
when B1=>accept entry1 do s1 end entry1;or
when B2=>accept entry2 do s2 end entry2;or
accept failure_pro do s end failure_proc;
end select;
下面一定正确的叙述为:accept failure_proc是开放的。
首先从代码形象直观看是因为前面两个语句要执行需要when的条件满足,最后一个accept_failure就不用,所以它开放。
其次是我自己的理解:
如果类比书上屏障的概念的话,我想的是为了实现分布式系统各节点交接的同步问题,所以在每一个进程准备执行下一阶段时(也就是题上每一个语句以分号结束)进行阻拦,也就是执行failure_pro中的s任务(我推测其中详细内容就是wait加判断count跟总节点的数目是否相等),如果开放accept entry1的话就破坏了when B1这个前置条件(因为正常逻辑下,B1满足才打开accept entry1)。
总之就是始终打开failure_pro以保证在这一步拦下所有节点不让他们进行下一步操作,最后系统就可以体现同步性。
11. 在多级中断系统中,多层(≥2)嵌套中断的最内层中断处理结束后,以下论述中正确的论述是:D
A.如果该中断是强迫性中断,则需要进程切换
B.如果该中断是自愿性中断,则需要进程切换
C.无论该中断是强迫性中断还是自愿性中断,都需要进程切换
D.无论该中断是强迫性中断还是自愿性中断,都不需要进程切换
内中断才发生进程切换
12.文件系统中,关于FCB分为次部和主部有如下的叙述:其中①②错误
①提高文件的I/O速度
②减少FCB所占空间
③减少文件目录所占空间
④可以实现文件连接
需要明晰将文件的FCB划分为次部和主部两部分的意义何在:
13.1实现虚拟设备采用的技术是:Spooling
13.2在采用 spooling 技术的系统中,用户的打印数据首先被送到(B)。
A、磁盘固定区域
B、内存固定区域
C、中断
D、打印机
spooling就是联机技术,缓冲的一种,放在内存中。
SPOOLing系统
14. 下面不属于实现文件共享的技术是:A
A 存取控制矩阵
B 共享说明
C 文件连接
D 公共目录
**存取控制矩阵:**存取控制矩阵. 理论上存取控制方法可用存取控制矩阵,它是一个二维矩阵,一维列出计算机的全部用户(进程),另一维列出系统中的全部文件,矩阵中每个元素Aij是表示第i个用户对第j个文件的存取权限
15.为保证磁盘文件安全,需要对磁盘文件进行转储。假设系统对磁盘文件进行了3次转储之后,发生了磁盘数据丢失。下述对磁盘数据丢失进行恢复的正确论述是(C)
A 完全转储策略只需要2份转储磁带数据恢复磁盘数据
B 增量转储策略只需要2份转储磁带数据恢复磁盘数据
C 差分转储策略只需要2份转储磁带数据恢复磁盘数据
D 都不对
解析:
① 完全转储:对数据库中所有数据进行转储。占据较多时间和空间,但恢复时间短
② 增量转储:只复制上次转储后发生变化的文件和数据块。所需时间及空间短,但只能和完全转储配合才能对数据库进行恢复
③ 差量转储:对最近一次数据库完全转储以来发生的数据变化进行转储。差量转储比增量转储占用空间多,但恢复速度快
16.假设操作系统利用缓冲技术在进程与打印机之间通过缓冲区实现向打印机的输出,则该缓冲区的结构是:B
A 内存连续空间队列
B 内存链式队列
C 外存连续空间队列
D 外存链式队列
17. 在<用户打开文件表中>,有关文件读写指针的正确叙述如下:
①读写指针的值是文件的记录或字节的逻辑顺序号;
②多个进程打开同一个文件f,各进程有关f的表项中的读写指针可能不同。
18.在RAID数据存储标准中,Level4(块级异或校验)和level5(块级分布式异或校验)的不同点是:Level5能有条件并行写,而Level4不能
**19. (中断装置)不属于操作系统提供给用户的可使用资源 **
20. 微内核操作系统
优点
①提高了可扩展性
②增强了安全性和可靠性:是因为微内核一定是精心设计和严格测试的,并且提供了规范的程序接口(API),而且所有服务器都运行在用户态,若出错,不会影响内核,也不会影响其他服务器
③提供了对分布式系统的支持
缺点
①难以整体优化
②进程间互相通信的开销变大
21. 关于用户态和内核态
一般的操作系统对执行权限进行分级,分别为用保护态和内核态。
用户态相较于内核态有较低的执行权限,很多操作是不被操作系统允许的,原因简单来说就是用户态出现问题(自己写的bug),也不能让操作系统崩溃呀。
内核态相当于一个介于硬件与应用之间的层,内核有ring 0的权限,可以执行任何cpu指令,也可以引用任何内存地址,包括外围设备, 例如硬盘, 网卡,权限等级最高。
22.下列选项中,不可能在用户态发生的事件是(C)。
A 系统调用
B 外部中断
C 进程切换
D 缺页
1.系统调用可能在用户态和内核态发生,系统调用把应用程序的请求(用户态的请求)传入内核,由内核(内核态)处理请求并将结果返回给应用程序(用户态) 用户态->核心态
2.中断的发生与CPU当前的状态无关,既可以发生在用户态,又可以发生在内核态,因为无论系统处于何种状态都需要处理外部设备发来的中断请求。
3.进程切换在核心态下完成,不能发生在用户态。原因:需要调度处理器和系统资源,为保证系统安全
4.缺页(异常)也是用户态->内核态
ABD(系统调用中断异常)都是用户态转向内核态,而进程切换只能发生在内核态
23.以下关于管程的叙述错误的是( C)。
A.管程是进程同步工具,解决信号量机制大量同步操作分散的问题
B.管程每次只允许一个进程进入管程
C.管程中的signal操作的作用和信号量机制中的V操作相同
D.管程是被进程调用的,管程是语法范围,无法创建和撤销
答案解析
管程的signal操作与信号量机制中的V操作不同,前者必须在wait操作之后。
24. 下列选项中,降低进程优先级的合理时机是___A__。
A. 进程的时间片用完
B. 进程刚完成 I/ O,进入就绪列队
C. 进程长期处于就绪列队中
D. 进程从就绪态转为运行态
解析:
进程时间片用完降低其优先级,因为这个进程刚用完cpu,该分给别人用了
完成I/O的进程应该提升其优先级,因为相当于说明它现在其他资源准备好了想用cpu了
处于就绪队列等待调度的进程一般不会改变其优先级。
25.在分页虚拟存储管理中,二次机会置换算法和时钟置换算法在决定淘汰的那一页时,都用到了(引用位)
26 电梯算法、Scan算法、Cscan算法
电梯算法=SCAN算法: 当磁头沿着当前方向移动,所选择的下一个访问对象应是其欲访问的磁道——既在当前磁道之外,又是距离最近的。如果在磁头移动方向上没有别的请求,就可以立即改变磁头移动方向。
Cscan算法:循环扫描算法,与上面算法的不同在于他会一直访问到磁盘的边缘才转向。
27. 下列关于文件操作open()和关闭文件close操作的叙述中,只有(A)是错误的
Aclose()操作告诉系统不再需要指定文件,可以丢弃文件了
Bopen()操作告诉系统开始使用指定文件
C文件必须先打开,后使用
D目录必须先打开,后使用
A不对,close的作用时:
出于效率的考虑,会先将数据临时存储到缓冲区中,只有使用 close() 函数关闭文件时,才会将缓冲区中的数据真正写入文件中。
**28. 在操作系统中,文件系统的主要目的是“实现对文件的按名存取”。 **
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;文件系统实现了“按名存取”,只要知道文件名就可以存取文件,而不必考虑文件存储在磁盘上什么地方。 在操作系统中,文件系统的主要目的是“实现对文件的按名存取”。
29. 允许多个用户以交互方式使用计算机的操作系统是“分时操作系统”。
30. 系统调用是操作系统提供给编程人员的唯一接口。–《计算机操作系统教程》
31. 若系统中有五个并发进程涉及某个相同的变量A,则变量A的相关临界区是由(5 )临界区构成。
(因为临界区的概念是:对于某一共享内存区域进行访问的程序片段,所以每个进程都需要有相关的临界区)
**32.分区分配内存管理方式的主要保护措施是___A___。 **
A.界地址保护
B.程序代码保护
C.数据保护
D.栈保护
在分区分配内存管理方式中,主要用上、下界寄存器保护分区,也称为界地址保护。本题答案为A。
33.如果 I/O 设备与存储设备间的数据交换不经过 CPU 来完成,则这种数据交换方式是(C)。
A、程序查询方式
B、中断方式
C、 DMA 方式
D、提供主、辅存接口
解析:在DMA(直接内存存储)控制器控制下,外设直接与内存交换成批数据而不用CPU干预。故选C。
34.下列文件物理结构中,适合随机访问且易于文件扩展的是__B____。
A.连续结构 B.索引结构
C.链式结构且磁盘块定长 D.链式结构且磁盘块变长
解析:索引结构适合随机访问且易于文件扩展。
35.程序员利用系统调用打开 I/O 设备时,通常使用的设备标识是 A。
A.逻辑设备名 B.物理设备名 C.主设备号 D.从设备号
程序员所看到的是设备的逻辑设备名
36.在段页式分配中,CPU 每次从内存中取一次数据需要______次访问内存。
37.一个进程被唤醒意味着__A__。
A 该进程可以重新占有 CPU
B 优先级变为更大
C PCB 移到就绪队列之首
D 进程变为运行态
38.操作系统采用分页存储管理方式,要求__B____。
A 每个进程拥有一张页表,且进程的页表驻留在内存中
B 每个进程拥有一张页表,但只要执行进程的页表驻留在内存中
C 所有进程共享一张页表,以节约有限的内存空间,但页表必须驻留在内存中
D 所有进程共享一张页表,只有页表中当前使用的页面必须驻留在内存中