admin管理员组文章数量:1290266
第一章 操作系统绪论
也可看视频看几个重点大题:https://www.bilibili/video/BV18X4y1u7aU
单道、多道非抢占式和多道抢占式
有三个程序ABC,它们使用同一个设备进行I/O操作,按ABC的优先次序执行。请分别画出单道程序环境、多道非抢占式和多道抢占式程序环境下,它们运行的时间关系图,并比较它们的总运行时间。
并发程序运行结果
2.
第二章 进程的描述与控制
进程的三种基本状态
(1) 就绪(Ready)状态
(2) 执行(Running)状态
(3) 阻塞(Block)状态。
进程的五种基本状态和转换
具有创建、终止和挂起状态的进程状态图
例:下列选项中,会导致进程从执行态变为就绪态的事件是( D )
A. 执行P操作 B. 申请内存失败 C. 启动I/O设备 D. 被高优先级进程抢占
解析:启动I/O操作会让进程从执行状态转为阻塞状态;当一个进程被高优先级的进程抢占时,该进程直接由执行态转为就绪态。
例:下列选项中,可能导致当前进程P阻塞的事件是( A,B )
A. 进程P申请临界资源 B. 进程P从磁盘读数据 C. 系统将CPU分配给高优先权的进程 D. 上述答案都对
解析:答案A,B,A和B都是申请资源的,容易发生阻塞,C只会让进程进入就绪队列,等高优先级的进程退出CPU时P仍可获得CPU
进程同步
例1:有三个进程PA、PB和PC协作解决文件打印问题。PA将文件记录从磁盘读入内存的缓冲区1,每执行一次读一个记录;:PB将缓冲区1的内容复制到缓冲区2中,每执行一次复制一个记录;PC将缓冲区2的内容打印出来,每执行一次打印一个记录。缓冲区的大小与记录大小一样。请用信号量来保证文件的正确打印。
例2:桌上有个能盛得下五个水果的空盘子。爸爸不停地向盘中放苹果或桔子,儿子不停地从盘中取出桔子吃,女儿不停地从盘中取出苹果吃。规定三人不能同时从盘子中取放水果。试用信号量实现爸爸、儿子和女儿这三个循环进程之间的同步。
例3:请用信号量机制解决以下的“过独木桥”问题:同一方向的行人可连续过桥,当某一方向有人过桥时,另一方向的行人必须等待;当某一方向无人过桥时,另一方向的行人可以过桥。
解:同一方向的行人可以同时过桥,这相当于读者可以同时读。因此,可将两个方向的行人看作两类不同的读者,同类读者(行人)可以同时读(过桥),但不同类读者(行人)之间必须互斥地读(过桥)。信号量定义如下:
int countA=0, countB=0; //countA、countB分别表示A、B两个方向过桥的行人数量
Semaphore bridge=1; //用来实现不同方向行人过桥的互斥共享
Semaphore mutexA=1, mutexB=1; //分别用来实现对countA、countB的互斥共享
A方向的所有行人对应相同的算法,他们的动作可描述为:
PA(){
Wait(mutexA);
If(countA==0) wait(bridge);
countA++;
signal(mutexA);
过桥;
Wait(mutexA);
countA–;
if(countA==0) signal(bridge);
signal(mutexA);}
B方向行人的算法与上述算法类似,只需将其中的mutexA、countA换成mutexB和countB即可。
例4:设有两个生产者进程A、B和一个销售者进程C,他们共享一个无限大的仓库,生产者每次循环生产一个产品,然后入库供销售者销售;销售者每次循环从仓库中取出一个产品进行销售。不允许同时入库,也不允许边入库边出库;而且要求生产A产品和B产品的件数满足以下关系:-n<=A的件数-B的件数<=m,其中n、m是正整数,但对仓库中A产品和B产品的件数无上述要求。请用信号量机制写出A、B、C三个进程的工作流程。
解:题中存在着以下的同步和互斥关系:
(1)生产者A、B和消费者C之间,不能同时将产品入库和出库,仓库是一个临界资源。
(2)两个生产者之间必须进行同步,当生产A、B产品的件数之差>=m时,生产者A必须等待;当生产A、B产品的件数之差<=-n时,生产者B必须等待。可想象成有两种令牌,分别跟允许A和B生产的产品数量相关,A和B必须取得对应的令牌后才能生产产品,故这两类令牌也就是两种临界资源。
(3)生产者和销售者之间也必须取得同步,只有当生产者生产出产品并入库后,销售者才能进行销售。
根据上述分析,信号量定义如下:
为了互斥地入库和出库,为仓库设置互斥信息量,mutex=1;为了使生产的产品件数满足:-n<=A的件数-B的件数<=m,需设置两个信号量,其中SAB表示当前允许A生产的产品数量,其初值为,SAB=m;SBA表示当前允许B生产的产品数量,其初值为, SBA =n; 设置一个初值为0的资源信号量S,对应于仓库中的产品数量,S=0。 Semaphore SAB=m, SBA=n, S=0,mutex=1;
Signal(SAB)是为了让B产品的件数达到m+n。这样才会满足==-n<=A的件数-B的件数<=m==
例5:某寺庙有小和尚,老和尚若干,有一水缸,由小和尚提水入缸供老和尚饮用。水缸可容10桶水,水取自同一井中。水井径窄,每次只能容一个桶取水。水桶总数为3个,每次入缸取水仅为1桶水,且不可同时进行。试给出有关从缸取水、入水的算法描述。
第三章 处理机调度与死锁
FCFS(先来先服务)进程调度
SJF(短作业优先)进程调度
SRT–抢占式版的SJF
高响应比优先(HRRN)
周转时间=作业完成时刻—作业到达时刻;
带权周转时间=周转时间/服务时间;
平均周转时间=作业周转时间之和/作业个数;
平均带权周转时间=带权周转时间之和/作业个数;
先从8点开始,然后寻求运行时间最短10分钟、20分钟、50分钟
第二个进程8点50进入-第一个进程却要10点才结束,需要等待70分钟,要求服务时间则为运行时间50分钟
作业、进程调度
例:有一个内存中只能装入两道作业的批处理系统,作业调度采用短作业优先的调度算法,进程调度采用以优先数为基础的抢占式调度算法。有如下表所示的作业序列,表中所列的优先数是指进程调度的优先数,且优先数越小优先级越高。求:
(1)列出所有作业进入内存的时刻以及结束的时刻。
(2)计算作业的平均周转时间。
作业名 | 到达时间 | 估计运行时间 | 优先数 |
---|---|---|---|
A | 10:00 | 40分 | 5 |
B | 10:20 | 30分 | 3 |
C | 10:30 | 50分 | 4 |
D | 10:50 | 20分 | 6 |
例:假设一个系统中有5个进程,它们的到达时间和服务时间如下表所示,忽略I/O以及其他开销时间,若分别按FCFS、非抢占及抢占的短作业优先(SIF)、高响应比优先(HRRN)、时间片轮转(RR,时间片=1)、多级反馈队列调度算法(FB, 第i级队列的时间片=2i-1)以及立即抢占的多级反馈队列调度算法(FB, 第i级队列的时间片=2i-1)进行CPU调度,请给出各进程的完成时间、周转时间、带权周转时间、平均周转时间和平均带权周转时间。
进程 | 到达时间 | 服务时间 |
---|---|---|
A | 0 | 3 |
B | 2 | 6 |
C | 4 | 4 |
D | 6 | 5 |
E | 8 | 2 |
最低松弛度优先LLF
例:若有3个周期性任务,任务A要求每20ms执行一次,执行时间为10ms;任务B要求每50ms执行一次,执行时间为10ms;任务C要求每50ms执行一次,执行时间为15ms。应如何按最低松弛度优先算法对它们进行CPU调度?
松弛度=完成时间-当前时间-执行时间
银行家算法
例. 假定系统中有五个进程{P0, P1, P2, P3, P4}和三类资源{A, B, C},各种资源的数量分别为10、5、7,在T0时刻的资源分配情况如图3-15所示。
(1) T0时刻的安全性:利用安全性算法对T0时刻的资源分配情况进行分析(如图3-16所示)可知,在T0时刻存在着一个安全序列{P1, P3, P4, P2, P0},故系统是安全的。
图3-16 T0时刻的安全序列
(2) P1请求资源:P1发出请求向量Request1(1, 0, 2),系统按银行家算法进行检查:① Request1(1, 0, 2)≤Need1(1, 2, 2);② Request1(1, 0, 2)≤Available1(3, 3, 2);③ 系统先假定可为P1分配资源,并修改Available,Allocation1和Need1向量,由此形成的资源变化情况如图3-15中的圆括号所示;④ 再利用安全性算法检查此时系统是否安全,如图3-17所示。
图3-17 P1申请资源时的安全性检查
(3) P4请求资源:P4发出请求向量Request4(3,3,0),系统按银行家算法进行检查:① Request4(3,3,0)≤Need4(4,3,1);② Request4(3,3,0)>Available(2,3,0),让P4等待。(4) P0请求资源:P0发出请求向量Request0(0,2,0),系统按银行家算法进行检查:① Request0(0,2,0)≤Need0(7,4,3);② Request0(0,2,0)≤Available(2,3,0);③ 系统暂时先假定可为P0分配资源,并修改有关数据,如图3-18所示。
图3-18 为P0分配资源后的有关资源数据
(5) 进行安全性检查:可用资源Available(2,1,0)已不能满足任何进程的需要,故系统进入不安全状态,此时系统不分配资源。
第四章 存储器管理
伙伴地址
例1:假设系统中某一内存块的地址为011011110000,块的大小为4和16的伙伴地址分别为多少?
解:块为2k=4时,011011110000=1776可以被8整除,所以伙伴地址位于下半区,运用公式x+4 再转为2进制 是011011110100;
块为16时,011011110000不能被32整除,所以伙伴地址位于上半区,减16得011011100000。
例2:某系统主存空间为1024KB,采用伙伴(Buddy system)系统分配其内存,对于下列请求序列:作业1请求240KB、 作业2请求120KB、作业3请求60KB、作业2释放120KB、作业4请求130KB、作业3释放60KB。请画出进行上述分配和回收后,内存实际使用的情况。
将主内存空间进行持续对半划分,将最接近240k的较大空闲块划分为两个大小相等的块,则得到图(a)
同理能得到图(b)、图©
图(d)进行了两次操作,一个是作业4请求130KB和作业2释放120KB
图(e)进行了相邻的空闲块可以和为一对伙伴,能合成一个更大的空闲块也就是128KB+60KB+64KB+内部碎片=0
分页存储管理方式
例3:某系统采用页式存储管理策略,拥有逻辑空间32页,每页2KB,拥有物理空间1MB。请回答以下问题:(1)画出逻辑地址的格式。 (2)若不考虑访问权限等,进程的页表有多少项?每项至少有多少位?
解: (1) 该系统拥有逻辑空间32页,故逻辑地址中页号必须用5位来描述;而每页为2KB,因此,
页内地址必须用 2KB=211 ,所以是11位来描述,
页号是32个页面—》25=32,所以页号是5位来描述,
拥有的物理空间(内存)为1MB=210KB=220B,所以有20位,不足的往位数的前面补零。
(2) 每个进程最多有32个页面。因此,进程的页表项最多为32项;若不考虑访问权限等,则页表项中只需给出页所对应的物理块块号,1MB的物理空间可分为29个内存块(1MB/2kB==用物理空间除以页的大小所得内存块的数量),故每个页表项至少有9位。
例4:在某一分页系统中,假设内存大小为2GB,页面大小为4KB,页表项长度为4B,试求: (1)整个内存可以被划分成多少个页面?(2)页表的长度为多少?
解: (1) 2GB/4KB=512K个页面 因为单位变成了个,所以有1K=1024个,所以有512k个
(2) 4B*512K=2M
例5:对一个将页表放在内存中的分页系统。试求:(1)如果访问内存需要0.2ns,有效访问时间为多少?(2)如果加一快表,且假定在快表中找到页表项的机率高达90%,则有效访问时间又是多少?(假定查快表需花费的时间为0)
解:(1) 有效访问时间为:2X0.2ns=0.4ns
(2) 有效访问时间为:0.9X0.2+(1-0.9)X2X0.2=0.22ns
例6:已知某系统页面长4KB,每个页表项4B,采用多层分页策略映射64位的用户地址空间。若限定最高层页表只占1页,问它可采用几层分页策略?
解:该系统的用户地址空间为264B,而页的大小为4KB,故一作业最多可有264/212(即252)个页,其页表的大小则为252*4(即254)B。因此,又可将页表分成242个页表项,并为它建立两级页表,两级页表的大小为244B。
依次类推,可知道它的3、4、5、6级页表的大小(长度)分别为234B、224B、214B、24B,故可采取6层分页策略。
例7:已知某分页系统,主存容量为64K字节,页面大小为1K,对一个4页大的作业,其0、1、2、3页分别被分配到主存的2、4、6、7块中,试求:(1)将十进制的逻辑地址1023、2500、4500转换成物理地址。(2)以十进制的逻辑地址1023为例画出地址变换过程图。
解:在分页系统中进行地址转换时,地址变换机构将自动把逻辑地址转化为页号和页内地址,如果页号不小于页表长度,则产生越界中断;否则便以页号为索引去检索页表,从中得到对应的块号,并把块号和页内地址分别送入物理地址寄存器的块号和块内地址字段中,形成物理地址。
分段存储管理方式
例8:对于如下所示的段表,请将逻辑地址(0, 137),(1, 4000),(2, 3600),(5, 230)转换成物理地址。
段号 | 内存始址 | 段长 |
---|---|---|
0 | 50K | 10K |
1 | 60K | 3K |
2 | 70K | 5K |
3 | 120K | 8K |
4 | 150K | 4K |
段页式存储管理方式
第五章 虚拟存储器
请求分段系统
例1:某虚拟存储器的用户空间共有32个页面,每页1KB,主存16KB。假定某时刻系统为用户的第0、1、2、3页分配的物理块号为5、10、4、7,而该用户作业的长度为6页,试将十六进制的虚拟地址0A5C、103C、1A5C转换成物理地址。
第一步进制转换:
16进制转二进制:
0A5C=0000 10 10 0101 1100
103C=0001 00 00 0011 1100
1A5C=0001 10 10 0101 1100第二步确定页号和页内地址:
页内地址为:1kb=210B,所以取后十位:10 0101 1100、00 0011 1100、10 0101 1100页号为:32=25,所以取前五位:00010、00100、00110
第四步页号变块号页内地址不变
00010=2页==》块号为4=0100
00100=4页==》没有对应的物理块号,越界中断。
00110=6页=》没有对应的物理块号,越界中断。
第五步确定物理地址的位数
16KB=214B,所以总位数为14位
前4位0100 后十位1001011100 ==》01 0010 0101 1100
先进先出(FIFO)页面置换算法
最近最久未使用(LRU)页面置换算法
例2:在一采取局部置换策略的请求分页系统中,分配给某个作业的内存块数为4,其中存放的四个页面的情况如下表所示:
物理块 | 页号 | 装入时间 | 最后一次访问时间 | 访问位 | 修改位 |
---|---|---|---|---|---|
0 | 2 | 60 | 157 | 0 | 1 |
1 | 1 | 160 | 161 | 1 | 0 |
2 | 0 | 26 | 158 | 0 | 0 |
3 | 3 | 20 | 163 | 1 | 1 |
表中的所有数字均为十进制数,所有时间都是从进程开始运行时,从0开始计数的时钟数。请问,如果系统采用下列置换算法,将选择哪一页进行换出?(1)FIFO算法;(2)LRU算法;(3)改进的Clock算法。
分析:FIFO算法即先进先出算法,它选择最先装入内存的页面进行换出;LRU算法即最近最久未用置换算法,它选择最近最长时间没被使用的页面进行换出;改进的Clock算法是一种常用的LRU近似算法,它优先选择访问位和修改位均为0的页面进行换出。
答:(1)FIFO算法选择的换出页是物理块3中的第3页。
(2)LRU算法选择的换出页是物理块0中的第2页。
(3)改进的Clock算法选择的换出页是物理块2中的第0页。
例3:这里有点算错了
地址变换机构
例7 假如一个程序的段表如下表所示,其中存在位为1表示段在内存,存取控制字段中W表示可写,R表示可读,E表示可执行。对下面的指令,在执行时会产生什么样的结果?
(1)STORE R1,[0,70] R1寄存器 ,0是段号,70是地址
(2)STORE R1,[1,20] STORE 写(存储)
(3)LOAD R1,[3,20] LOAD读(加载)
(4)LOAD R1,[3,100]
(5)JMP [2,100] JMP执行
段号 | 存在位 | 内存始址 | 段长 | 存取控制 | 其他信息 |
---|---|---|---|---|---|
0 | 0 | 500 | 100 | W | |
1 | 1 | 1000 | 30 | R | |
2 | 1 | 3000 | 200 | E | |
3 | 1 | 8000 | 80 | R | |
4 | 0 | 5000 | 40 | R |
答:(1)该指令从段表的第0项可读出第0段的存在位为0,表示相应段未装入内存,因此,地址变换机构将产生缺段中断,以请求OS将其调入内存。
(2)该指令从段表的第1项可以看出,虽然指令中的逻辑地址合法、段也在内存,但该指令对内存的访问方式(写)与存取控制字段(只读)不符,因此,硬件将产生保护性中断信号。
(3)该指令从段表的第3项可以看出,逻辑地址合法,访问方式合法,形成物理地址8020(8000+20)后,指令将把该单元的内容读到寄存器R1中。
(4)该指令从段表的第3项可读出第3段的存在位为1,内存始址为8000,段长为80,存取控制为R,因此,指令的逻辑地址中段内地址超过了段长,地址变换机构将产生越界中断信号。
(5)该指令从段表的第2项可读出第2段的存在位为1,内存始址为3000,段长为200,访问权限为E,因此逻辑地址与访问方式合法,形成物理地址3100(3000+100) ,指令执行后,将跳转到内存单元3100处继续执行。
第六章 输入输出系统
单、双缓冲区
例1:假设 T 是从磁盘输入一块数据的时间,C 是CPU对一块数据进行处理的时间, M 是将一块数据从缓冲区传送到用户去的时间。当一用户进程要按顺序访问的方式处理大量数据时,请问在单缓冲和双缓冲的情况下,系统对一块数据的处理时间分别是多少?
单缓冲:Max(C,T)+M
双缓存:Max(T,C)或者Max(C+M,T)
磁盘容量
例2:一个拥有6个磁头(3个圆盘),7个柱面的磁盘,每条磁道有12个扇区,则磁盘的容量是多少?
磁盘容量=磁头数 X 磁道(柱面)数 X 每道扇区数 X 每扇区字节数
磁盘容量=6x7x12x
校验码
例子:假设选择的CRC生成多项式为G(X) = X4 + X3 + 1,求出二进制序列10110011的CRC校验码。
解:(1)首先把生成多项式转换成二进制数,由G(X) = X4 + X3 + 1可以知道,它一共是5位(总位数等于最高位的幂次加1,即4+1=5),然后根据多项式各项的含义(多项式只列出二进制值为1的位,也就是这个二进制的第4位、第3位、第0位的二进制均为1,其它位均为0)很快就可得到它的二进制比特串为11001。
(2)因为生成多项式的位数为5,可知CRC校验码的位数为4(校验码的位数比生成多项式的位数少1)。因为原数据帧10110011,在它后面再加4个0,得到101100110000,然后把这个数以“模2除法”方式除以生成多项式(异或运算),得到的余数,即CRC校验码为0100,如下图所示。
磁盘调度
例4:假设磁盘有200个磁道,磁盘请求队列中是一些随机请求,它们按照到达的次序分别处于190、10、160、80、90、125、30、20、140、25号磁道上,当前磁头在100号磁道上,并正由外向里移动。请给出按FCFS(先来先服务)、SSTF(最短寻道时间优先)、SCAN(扫描算法(电梯算法))及CSCAN(循环扫描算法(以100为界限从小到大))算法进行磁盘调度时满足请求的次序,并计算出它们的平均寻道长度。
FCFS | SSTF | SCAN | CSCAN | ||||
---|---|---|---|---|---|---|---|
被访问的下一个磁道号 | 移动的磁道数 | 被访问的下一个磁道号 | 移动的磁道数 | 被访问的下一个磁道号 | 移动的磁道数 | 被访问的下一个磁道号 | 移动的磁道数 |
190 | 90 | 90 | 10 | 125 | 25 | 125 | 25 |
10 | 180 | 80 | 10 | 140 | 15 | 140 | 15 |
160 | 150 | 125 | 45 | 160 | 20 | 160 | 20 |
80 | 80 | 140 | 15 | 190 | 30 | 190 | 30 |
90 | 10 | 160 | 20 | 90 | 100 | 10 | 180 |
125 | 35 | 190 | 30 | 80 | 10 | 20 | 10 |
30 | 95 | 30 | 160 | 30 | 50 | 25 | 5 |
20 | 10 | 25 | 5 | 25 | 5 | 30 | 5 |
140 | 120 | 20 | 5 | 20 | 5 | 80 | 50 |
25 | 115 | 10 | 10 | 10 | 10 | 90 | 10 |
平均寻道长度88.5 | 平均寻道长度31 | 平均寻道长度27 | 平均寻道长度35 |
版权声明:本文标题:操作系统复习(第四版)--命中期末考试所有大题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1737990882a2045537.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论