【操作系统原理与实践】常见计算题整理:原理+例题

调度算法

知识点回顾

  1. 先来先服务算法FCFS:按照作业提交或进程变为就绪状态的先后次序,分派CPU;当前作业或进程占用CPU,直到执行完或阻塞,才主动地出让CPU。

  2. 短作业优先算法SJF:是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。

  3. 高响应比优先调度算法HRRN:赋予作业动态优先级,优先级随作业等待时间延长而增加,从而使长作业的优先级在等待期间不断增加。
    优先权 = 等待时间 + 要求服务时间 要求服务时间 = 响应时间 要求服务时间 = R p 优先权=\frac{等待时间+要求服务时间}{要求服务时间}=\frac{响应时间}{要求服务时间}=R_p 优先权=要求服务时间等待时间+要求服务时间=要求服务时间响应时间=Rp
    该算法既照顾了短作业,又考虑了作业到达的先后次序,不会使长作业长期得不到服务。

  4. 时间片轮转:一个时间片结束后,默认新到达的进程先进入就绪队列,然后时间片结束但还没有完成的进程再加入队列末尾。

  5. 多级反馈队列:统一为抢占式,高优先级队列中有进程进入时,会抢占低优先级队列中进程的CPU。被抢占的进程不降级,回到原级队列中,下次仍然执行该级队列的时间片。

  6. 周转时间=作业完成时间-作业到达时间

  1. 假设在单道批处理环境下有四个作业,已知它们进入系统的时间、估计运行时间。请分别应用FCFS、SJF和HRN调度算法,计算出作业的平均周转时间和带权的平均周转时间。

    作业 装入时间 估计运行时间(分钟) 开始运行时间 结束时间 周转时间(分钟) 带权周转时间
    Job1 8:00 100
    Job2 8:30 30
    Job3 9:00 20
    Job4 9:30 20
    作业平均周转时间 T= 作业带权平均周转时间 W=

    解答:(1)FCFS(先来先服务)

    【操作系统原理与实践】常见计算题整理:原理+例题_第1张图片
    【操作系统原理与实践】常见计算题整理:原理+例题_第2张图片
    【操作系统原理与实践】常见计算题整理:原理+例题_第3张图片

  2. 根据不同的调度算法,给出相应的调度过程,并计算相关的周转时间和带权周转时间。(先来先服务、最短作业优先、轮转法、高响应比优先算法)

    进程 就绪时间 服务时间
    P1 0 3
    P2 2 6
    P3 4 4
    P4 6 5
    P5 8 2

    FCFS:P1->P2->P3->P4->P5

    SJF:P1->P2->P5->P3->P4

    HRN:P1->P2->P3->P5->P4

    轮转法:一个时间片结束后,默认新到达的进程先进入就绪队列,然后时间片结束但还没有完成的进程再加入队列末尾。

    时间片为1时

    进程 完成时间 周转时间 带权周转时间
    P1 4 4 1.33
    P2 18 16 2.67
    P3 17 13 3.25
    P4 20 14 2.8
    P5 15 7 3.5

    时间片为4时

    进程 完成时间 周转时间 带权周转时间
    P1 3 3 1
    P2 17 15 2.5
    P3 11 7 1.75
    P4 20 14 2.8
    P5 19 11 5.5
  3. 各进程到达就绪队列的时间、需要的运行时间如下表所示。使用多级反馈队列调度算法,分析进程运行的过程。第1级队列时间片为1,第2级队列时间片为2,第3级队列时间片为4,以此类推。

    进程 到达时间 运行时间
    A 0 3
    B 2 6
    C 4 4
    D 6 5
    E 8 2

    【操作系统原理与实践】常见计算题整理:原理+例题_第4张图片

银行家算法

知识点回顾:

  1. 需求矩阵是尚需的各类资源数,最大需求矩阵是对资源的最大需求数。
  2. 工作向量WORK表示系统可提供给进程继续运行所需的各类资源数目
  3. 当进程i获得资源后,应执行:work[j] = work[i] + allocation[i, j]
  4. 要必须会填安全性检查表!
  1. 在银行家算法中,若出现下述的资源分配情况:

    (1)该状态是否安全?
    (2)若进程P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它?

    Process Allocation Need Available
    P0 0032 0012 1622
    P1 1000 1750
    P2 1354 2356
    P3 0332 0652
    P4 0014 0656

    答:(1)对该状态进行安全性检查:

    Process Work Need Allocation Work+Allocation Finish
    P0 1 6 2 2 0 0 1 2 0 0 3 2 1 6 5 4 true
    P3 1 6 5 4 0 6 5 2 0 3 3 2 1 9 8 6 true
    P1 1 9 8 6 1 7 5 0 1 0 0 0 2 9 8 6 true
    P2 2 9 8 6 2 3 5 6 1 3 5 4 3 12 13 10 true
    P4 3 12 13 10 0 6 5 6 0 0 1 4 3 12 14 14 true

    由安全性检查得知,可以找到一个安全序列{P0、P3、P1、P2、P4},因此系统是安全的。
    (2)P2提出Request(1,2,2,2),系统按银行家算法进行检查:Request(1,2,2,2) ≤ Need(2,3,5,6),P2请求是合理的;
    Request(1,2,2,2)≤Available(1,6,2,2),P2请求是可以满足的;
    系统暂时先为进程P2试行分配资源,并修改有关的确数据,如下图所示:

    Process Allocation Need Available
    P0 0 0 3 2 0 0 1 2 0 4 0 0
    P1 1 0 0 0 1 7 5 0
    P2 2 5 7 6 1 1 3 4
    P3 0 3 3 2 0 6 5 2
    P4 0 0 1 4 0 6 5 6

    再利用安全性算法检查系统是否安全,可利用资源Available(0,4,0,0)已不能满足任何进程的需要,故系统进入不安全状态,此时系统不能将资源分配给P2。

动态分区分配算法

知识回顾:

  1. 最佳适应算法(Best fit: BF) :就是为一作业选择分区时总是寻找其大小最接近作业所要求的存储区域。即:把作业放入这样的分区后剩下的零头最小。
  2. 最坏适应算法(Worst fit: WF):空闲分区按其容量从大到小排成空闲分区表,总是挑选一个最大的空闲分区分割给作业使用
  3. 首次适应算法(First Fit: FF):要求空闲分区链以地址递增的次序链接。在分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止。
  4. 循环首次适应算法(下次适应算法) (Next fit: NF) :将所有的空闲分区构成一个循环链表。每次查找时不是从头开始,而是从上次结束位置开始。
  1. 在可变分区存储管理下,按地址排列的内存空闲区为:10KB、4KB、20KB、18KB、7KB、9KB、12KB 和 15KB。
    对于下列连续存储区的请求:12KB、10KB、15KB、18KB。
    试问:使用首次适应算法、最佳适应算法、最差适应算法和下次适应算法,哪个空闲区将被使用?

    分区号 分区长
    1 10KB
    2 4KB
    3 20KB
    4 18KB
    5 7KB
    6 9KB
    7 12KB
    8 15KB

    解:

    首次适应算法:3-1-4-没有分区长度满足要求

    最佳适应算法:7-1-8-4

    最差适应算法:3-4-8-没有分区长度满足要求

    下次适应算法:3-4-8-没有分区长度满足要求

  2. 某系统主存空间为1024KB,采用伙伴(Buddy system)系统分配器内存,对于下列请求序列:

    作业1请求240KB

    作业2请求120KB

    作业3请求60KB

    作业2释放120KB

    作业4请求130KB

    作业3释放60KB

    请画出进行上述分配和回收后,内存实际使用的情况。
    【操作系统原理与实践】常见计算题整理:原理+例题_第5张图片

分页存储管理

知识点回顾

  1. 页、块、页表的概念及关系:

    • 将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页

    • 相应地,也把内存空间分成与页面相同大小的若干个存储块,称为**(物理)块或页框**。

    • 在为进程分配内存时,以块为单位将进程中的若干个分别装入到多个可以不相邻接的物理块中。

    • 重要:物理块和页面都是从零开始

    • 在分页系统中,进程可能有多个页,允许将进程的每一页离散地存储在内存的任一物理块中。系统应能保证进程的正确运行,即能在内存中找到每个页面所对应的物理块。为此,系统又为每个进程建立了一张页面映像表,简称页表

  2. 地址结构:在分页存储管理方式中,任何一个逻辑地址都可转变为:页号+页内位移量。页号、位移量的划分是由系统自动完成的,对用户是透明的。【操作系统原理与实践】常见计算题整理:原理+例题_第6张图片

  3. 有效访问时间的计算公式:【操作系统原理与实践】常见计算题整理:原理+例题_第7张图片

  4. 画地址变换图:有快表和无快表

    【操作系统原理与实践】常见计算题整理:原理+例题_第8张图片

  1. 某采用分页存储管理的系统中,物理地址占20位,逻辑地址中页号占6位,页面大小为1KB,问:

    • 该系统的内存空间大小为多少?每个存储块的大小为多少?逻辑地址共几位?每个作业的最大长度为多少?

    • 若第0、1、2页分别放在第3、7、9存储块中,则逻辑地址0420H对应的物理地址是多少?

    答案:【操作系统原理与实践】常见计算题整理:原理+例题_第9张图片
    【操作系统原理与实践】常见计算题整理:原理+例题_第10张图片

  2. 在分页存储系统中地址结构的长度为20位,页面大小为2K,作业地址空间为8K,该作业各页依次存放在1,3,6,7号物理块中,相对地址4000处有一条指令 Store l,2500,请给出该作业的页表,并分别指出该指令所在页号和对应的物理单元及数据存放所在的页号和物理单元。

    答案:【操作系统原理与实践】常见计算题整理:原理+例题_第11张图片

  3. 在一分页存储管理系统中,逻辑地址长度为16位,页面大小为2048字节,部分页表如下表,则逻辑地址0A5CH所对应的物理地址为______。

    页号 块号
    0 5
    1 10
    2 4
    3 7

    21084或525CH

  4. 已知某分页系统,用户空间有64个页面,主存容量为32KB,页面大小为1KB,对一个4页大的作业,其0、1、2、3页分别被分配到主存的2、4、6、7块中。

    • 将十进制的逻辑地址1023、2500、3500、4500转换成物理地址?
    • 以十进制的逻辑地址1023为例画出地址变换过程图?

    答:

    ①逻辑地址1023:1023/1K,得页号为0,页内地址为1023,查页表找到对应的物理块号为2,故物理地址为2×1K+1023=3071

    ②逻辑地址2500:2500/1K,得页号为2,页内地址为452,查页表找到对应的物理块号为6,故物理地址为6×1K+452=6596

    ③逻辑地址3500:3500/1K,得页号为3,页内地址为428,查页表找到对应的物理块号为7,故物理地址为7×1K+428=7596

    ④逻辑地址4500:4500/1K,得页号为4,页内地址为404,因页号大于页表长度,故产生越界中断。

    【操作系统原理与实践】常见计算题整理:原理+例题_第12张图片

分段存储管理

知识点回顾:

  1. 在分段系统中的地址结构有如下形式:【操作系统原理与实践】常见计算题整理:原理+例题_第13张图片

  2. 段表:像分页系统那样,在系统中为每个进程建立一张段映射表,简称“段表”。每个段在表中占有一个表项,其中记录了该段在内存中的起始地址(又称为“基址”)和段的长度。通常将段表放在内存中,执行中的进程可通过查找段表找到每个段所对应的内存区。

  3. 地址变换过程,分段系统和段页式系统

    【操作系统原理与实践】常见计算题整理:原理+例题_第14张图片
    【操作系统原理与实践】常见计算题整理:原理+例题_第15张图片
    【操作系统原理与实践】常见计算题整理:原理+例题_第16张图片

  1. 某段表内容如下:

    段号 段首地址 段长
    0 120K 40K
    1 760K 30K
    2 480K 20K
    3 370K 20K

    假如一逻辑地址为(2,154),则其对应的实际物理地址为多少?

    答:从逻辑地址(2,154)可知,段号为2;段内地址为154。根据段号查段表可得“段首地址”为“480K”,根据物理地址=段首地址+段内偏移量可得,物理地址为:480K+154

页面置换算法

知识点回顾

  1. 最佳置换算法Optimal:从主存中移出永远不再需要的页面
  2. 先进先出页面置换算法FIFO:选择作业中驻留时间最长(即最老)的一页淘汰
  3. 最近最久未使用算法LRU(least recently used):选择在最近一段时间内最久不用的页面予以淘汰
  4. 最少使用置换算法LFU(least frequently used):选择到当前时间为止被访问次数最少的页面被置换
  5. Clock置换算法,又叫最近未用算法NRU(not recently used)
    • 为每页设置一位访问位,再将内存中的所有页面都通过链接指针链接成一个循环队列。当某页被访问时,其访问位被置1。置换程序从上次停止位置开始检查页面的访问位。如果是0,就选择该页换出;若为1,则重新将它置0,暂不换出,而给该页第二次驻留内存的机会。
    • 指针只有在缺页置换时才移动下一页
    • 改进型Clock置换算法,考虑置换的代价
      • 由访问位A和修改位M可以组合成下面四种类型的页面:
        • 1类(A=0,M=0:表示该页最近既未彼访问,又未被修改,是最佳淘汰页。
        • 2类(A=0,M=1):表示该页最近未被访问,但已被修改,并不是很好的淘汰页。
        • 3类(A=1,M=0):最近已被访问,但未被修改:该页有可能再被访问。
        • 4类(A=1,M=1):最近已被访问且被修改,该页可能再被访问。
      • 执行过程可分成以下三步:
        • 从指针所指示的当前位置开始,扫描循环队列,寻找A=0且M=0的第一类页面,将所遇到的第一个页面作为所选中的淘汰页。在第一次扫描期间不改变访问位A。
        • 如果第一步失败,即查找一周后未遇到第一类页面,则开始第二轮扫描,寻找A=0且M=1的第二类页面,将所遇到的第一个这类页面作为淘汰页。在第二轮扫描期间,将所有扫描过的页面的访问位A都置0。
        • 如果第二步也失败,亦即未找到第二类页面,则将指针返回到开始的位置,并将所有的访问位复0。然后重复第一步,如果仍失败,必要时再重复第二步,此时就一定能找到被淘汰的页
  1. 设页面请求次序:7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1存储块为3(驻留集为3),假定最初存储块为空,分别采用OPT,FIFO,LRU,计算缺页中断次数和缺页率。

    答:

    OPT:6次页面置换,9次缺页中断,缺页率0.45

    FIFO:12次页面置换,15次缺页中断,缺页率0.75

    LRU:9次页面置换,12次缺页中断,缺页率0.60

  2. 对访问串1,2,3,4,1,2,5,1,2,3,4,5,指出在驻留集大小分别为3、4时,使用FIFO替换算法的缺页次数和缺页率。结果说明了什么?

    前者9次缺页中断,后者10次缺页中断。

    FIFO算法时,使用4个页框时的缺页次数比3个页框时的缺页多,这种奇怪的情况称为Belady异常。

  3. 一台计算机有四个页框,装入时间、上次引用时间、它们的R(读)与M(修改)位如下表所示(时间单位:嘀嗒),请问NRU、FIFO、LRU算法将替换哪一页?

    装入时间 上次引用时间 R M
    0 126 279 0 0
    1 230 260 1 0
    2 120 272 1 1
    3 160 280 1 1
    • FIFO算法在需要淘汰某一页时,淘汰最先进入内存的页。在题述条件下,第2页是最先进入内存的页。故FIFO算法将淘汰第2页。
    • LRU算法在需要淘汰某一页时,淘汰最近最久未使用的页面。在题述条件下,第1页是最近最久未使用的页面。故LRU算法将淘汰第1页。
    • NRU算法在需要淘汰某一页时,从那些最近一个时期内未被访问的页中任选一页淘汰。在题述条件下,只有第0页是最近一个时期内未被访问的页。故NRU算法将淘汰第0页。

磁盘访问时间与调度算法

知识回顾

  1. 访问时间的计算,Ts是寻道时间,第二项为选择延迟时间,第三项为传输时间,r为磁盘每秒钟的转数,b是每次读/写的字节数,N是一条磁道上的字节数。
    T a = T s + 1 2 r + b r N T_a=T_s+\frac{1}{2r}+\frac{b}{rN} Ta=Ts+2r1+rNb
    理解一下,第二项其实就是:
    1 2 r \frac{\frac{1}{2}}{r} r21
    分子是圈数,平均下来是半圈,第三项可以理解为:
    b N r \frac{\frac{b}N}r rNb
    其中每次读/写的字节数除以一条磁道上总的字节数也就是圈数

  2. 磁盘调度算法:

    • 先来先服务FCFS(Fisrt Come First Served):根据进程请求访问磁盘的先后次序进行调度。
    • 最短寻道时间优先SSTF(Shortest Seek Time First) :该算法选择这样的进程,其要求访问的磁道,与当前磁头所在的磁道距离最近,以使每次的寻道时间最短
    • 扫描算法SCAN:优先考虑的是磁头当前的移动方向。例如,磁头自里向外移动, 并同时自里向外地访问,直至再无更外的磁道需要访问时,才将磁臂换向自外向里移动。
    • 循环扫描算法CSCAN:CSCAN算法规定磁头单向移动例如,只是自里向外移动,当磁头移到最外的磁道并访问后,磁头立即返回到最里的欲访问磁道,亦即将最小磁道号紧接着最大磁道号构成循环,进行循环扫描。(2T减为T+Smax)
  1. 一个磁盘系统,平均寻道时间为12ms,转速为10000转/分,每个磁道有18个扇区,每个扇区512个字节。请问要读取一个扇区所花的时间是多少?

    解:

    TS = 12ms

    TR = 1/2r = 60÷10000×0.5 = 3ms

    TA=b/rN = 512÷[(10000/60) ×(18×512)]= 0.33ms

    TT = TS + TR + TA =12 + 3 + 0.33 = 15.33ms

    答:读取一个扇区所花的时间是15.33ms。

  2. 假设一个活动头磁盘有200道, 编号从0-199。当前磁头正在143道上服务, 并且刚刚完成了125道的请求,现有如下访盘请求序列(磁道号):86、147、91、177、94、150、102、175、130,试给出采用下列算法后磁头移动的顺序和移动总量(总磁道数)。

    • 先来先服务(FCFS)磁盘调度算法。
    • 最短寻道时间优先(SSTF)磁盘调度算法。
    • 电梯磁盘调度算法。

    答:

    先来先服务:529

    最短寻道时间优先( 86、147、91、177、94、150、102、175、130):162

    电梯算法( 86、147、91、177、94、150、102、175、130):125

外存的组织方式(链接、索引)

  1. 假定盘块的大小为1KB,硬盘的大小为500MB,采用显示链接分配方式时,其FAT需占用多少存储空间(FAT表项占2.5个字节)?如果文件A占用硬盘的11, 12 , 16, 14四个盘块,试画出文件A中各盘块在FAT表中的链接情况。

    答:此时硬盘共有500M/1K=500K个盘块,FAT表项共有500K* 2.5B=1250KB

    图左边是FCB,右边是FAT【操作系统原理与实践】常见计算题整理:原理+例题_第17张图片

  2. 存放在某个磁盘上的文件系统,对于采用混合索引分配方式,其FCB中共有13项地址项,第0~9个地址项为直接地址,第10个地址项为一次间接地址,第11个地址项为二次间接地址,第12个地址项为三次间接地址。如果每个盘块的大小为512字节,盘块号需要3个字节来描述,则每个盘块最多存放170个盘块地址:

    (1) 该文件系统允许的最大长度是多少?

    (2) 将文件的字节偏移量5000、15000、150000转换为物理块号和块内偏移量。

    (3) 假设某文件的索引结点已在内存中,但其他信息均在外存,为了访问该文件中某个位置的内容,最多需要几次访问磁盘?

    答:

    文件的最大长度为:10+170+1702+1703=4942080块=2471040KB

    5000/512得商9,余数为392。即逻辑块号为9,块内偏移为392。故可直接从该文件的FCB的第9个地址处得到物理盘块号,块内偏移为392。

    15000/512得商为29,余数为152。即逻辑块号为29,块内偏移为152。由于10≤29<10+170,而29-10=19,故可从FCB的第10个地址项,即一次间址项中得到一次间址块;并从一次间址块的19项中获得对应的物理盘块号,块内偏移为152。

    150000/512得商为292,余数为496。即逻辑块号为292,块内偏移为496。由于10+170≤292,故可从FCB的第11个地址项,即二次间址项中获得第1个一次间址块;并从该一次间址块的112项中获得对应的物理盘块号,块内偏移为496。

    由于文件的索引结点已在内存,为了访问文件中的某个位置的内容,最少需要1次访问磁盘(即通过直接地址直接读文件盘块),最多需要4次访问磁盘(第一次是读三次间址块,第二次读二次间址块,第三次读一次间址块,第四次是读文件盘块)

文件的管理(位示图)

  1. 有一个计算机系统利用下图所示的位示图(行号、列号都从0开始编号)来管理空闲盘块。如果盘块从1开始编号,每个盘块的大小为1KB。

    (1)现要从文件分配两盘块,试具体说明分配过程。

    (2)若要释放磁盘的第300块,应如何处理?

    【操作系统原理与实践】常见计算题整理:原理+例题_第18张图片

    答:

    (1)分配过程:线形检索得:i1=2,j1=2; i2=3,j2=6。计算空闲盘块号: b1=i1×16+j1+1=2×16+2+1=35,b2=i2×16+j2+1=3×16+6+1=55修改位示图: 令map[2,2]=map[3,6]=1,并将对应块35,55分配出去。

    (2)释放过程:计算出第300块所对应的二进制行号i和j,i=(300-1)/16=18,j= (300-1)% 16=11修改位示图: 令map[18,11]=0。

你可能感兴趣的:(操作系统原理与实践,网络,嵌入式硬件,硬件架构)