[操作系统] 考试计算/简答题思路整理汇总 个人笔记

注:本文仅针对必修课考试范围做笔记,不一定适用于考研准备

        参考教科书:《计算机操作系统第四版》西安电子科技大学出版社

        所有题目均可在选择填空简答题间转换

        题型考点尚不全面,待补充

        依个人所学理解状况记录笔记,若发现错误,请多批评指正

一二两章不考计算题

会考程序分析题(考点:信号量机制,并行对某临界区访问)

三.处理机调度与死锁

进程调度类

1.有一个两道批处理系统,作业调度采用“短作业优先”调度算法;进程调度采用“优先数抢占”式调度算法,且优先数越小而优先级越高。如系统拥有打印机一台,采用静态方法分配,忽略系统的调度开销。现有如下作业序列到达系统:

回答:

(1)按作业运行结束的次序排序,即哪一个作业第一个、第二个、…、最后一个运行结束?

(2)平均作业周转时间和平均作业带权周转时间多少?

思路:

作业调度有种4方式:先来先服务(FCFS),短作业优先(SJF),优先级调度(PSA),高响应比优先调度(HRRN)

分时操作系统中:时间片轮转优先级调度(RR)

依就绪队列的不同数量:多级反馈队列调度(MFQS)

实时操作系统中:最早截止时间优先(EDF),最低松弛度优先(LLF)

先来先服务(FCFS):适用于作业调度和进程调度,字面意思谁来的早我调度谁,即优先考虑在系统中等待时间最长的作业

短作业优先(SJF):优先调度作业运行时间最短的,其他耗时长的作业会出现饥饿现象

优先级调度(PSA):为每个作业分配一个优先级,调度程序会根据作业的优先级来决定下一个要执行的作业。可以是静态优先级或动态优先级。

高响应比优先调度(HRRN):结合FCFS和SJF,可以同时考虑作业的运行和等待时间。基于动态优先级(即响应比)调度。响应比R(下标P)=(等待时间+调度作业需要的运行时间)/调度作业需要的运行时间。所以,等待时间越长,优先级越高

时间片轮转优先级调度(RR):让所有就绪进程排成一就绪队列,每个进程分配相同长度的时间片(均分/绝对公平)

多级反馈队列调度(MFQS)

①设置多个就绪队列,每个队列不同优先级(队列1~队列n,优先级降低,时间片分配变大。因为低优先级可能要等很久,要避免出现饥饿现象。例:队列2时间片长度为队列1长度两倍)

②每个队列都采用先来先调度算法(FCFS)

③新进程进入内存,先放入队列1队尾,若时间片不够用,向低优先级队列移

④按队列优先级调度,即队列1进程全部运行完才到队列2

 最早截止时间优先(EDF):任务截止时间越早,优先级越高。

                                           总是选择就绪队列的第一个任务

最低松弛度优先(LLF):优先调度松弛度最小的

松弛度=必须完成的时间-其本身运行的时间-当时时间(数值越小越紧急)

主要确定何时到达即可,后续比较松弛度,放在最紧急/空闲时执行,确定何时开始计算

平均作业周转时间=(每个进程从抵达到执行完的时间)/进程总数

平均作业带权周转时间=(每个进程从抵达到执行完的时间/各自进程的估计运行时间)/进程总数

题干分析:I/O设备被使用时即使高优先级作业来了也无法抢占,此题作业调度采用短作业优先且根据优先级抢占

解:(1)14:00 运行J1   运行20min(∵J1最先抵达且无竞争)

           14:20 运行J2   运行10min(∵J2抵达,且优先级大于J1)

           14:30 运行J2   运行20min(∵J3抵达,但是打印机被占用无法运行)

           14:50 运行J1   运行10min(∵J2运行完,J4抵达,但J1未运行完且优先级大于J4)

           15:00 运行J1   运行10min(∵J5抵达,虽然优先级大于J1,但是打印机被占用无法运行)

           15:10 运行J5   运行10min(∵J1运行完,释放打印机资源,J5优先级大于其他所有进程)

           15:20 运行J3   运行50min(∵J5运行完,释放打印机资源,J3优先级大于其他所有进程)

           16:10 运行J4   运行20min(∵J3运行完,无其他竞争进程)

           16:30 (J4运行完)

(2)

平均作业周转时间=(每个进程从抵达到执行完的时间)/进程总数=(70+30+100+100+20)/5=64 min

平均作业带权周转时间=(每个进程从抵达到执行完的时间/各自进程的估计运行时间)/进程总数=

(70/40+30/30+100/50+100/20+20/10)/5=2.35 min

避免死锁类(银行家算法类 )(重要

Process

Allocation

Need

Avaiable

P0

0032

0012

1622

P1

1000

1750

P2

1354

2356

P3

0332

0652

P4

0014

0656

1.在银行家算法中,若出现上述资源分配情况,试问:

(1)该状态是否安全?要求给出理由。

(2)若进行P2提出请求Request(1222)后,系统能否将资源分配给它?为什么?

思路:

此类题型实质就是单线性的比较大小问题

分析银行家算法:

可利用资源向量 Available:     系统中总共有多少

最大需求矩阵 Max:                 进程(最大/最多)要几个

分配矩阵 Allocation:              进程已经有几个

需求矩阵 Need :                   进程还缺少几个

请求向量 Request :                进程向系统索要多少个

Need = Max - Allocation

TIP:此处均为矩阵,即一个(框/面积/范围)的大小,而非一段数字。如需求矩阵[ 0 1  1 0 ],而非0110 错误的理解成还需要110个

 判断系统状态是否安全:寻找一个安全序列

分析安全性算法:

工作向量 Work:系统中还剩下几个可供进程使用的

结束向量 Finish:分析系统剩下的够不够进程使用,够用则分配给进程并赋值True

将 Need 与 Work 比较大小 来得出 Finish

TIP: 每个进程用完资源后就会还给系统

若所有进程 Finish 都为 True 则系统处于安全状态

 解:

(1) 利用安全性算法分析可得,存在一安全序列<P0,P3,P4,P1,P2>

其安全性检查过程如下:

Process

Allocation

Need

WorkWork + AlloctionFinish

P0

0 0 3 2

0 0 1 2

1 6 2 21 6 5 4true

P3

0 3 3 2

0 6 5 21 6 5 41 9 8 6true

P4

0 0 1 40 6 5 61 9 8 61 9 9 10true

P1

1 0 0 01 7 5 01 9 9 102 9 9 10true

P2

1 3 5 42 3 5 62 9 9 103 12 14 14true

由该表可得证:该状态是安全的。

(2) P2提出请求后,系统进行检查:

① Request ( 1 2 2 2 ) <= Need ( 2 3 5 6 ) 成立;

② Request ( 1 2 2 2 ) <= Avaiable ( 1 6 2 2 ) 成立;

③ 系统尝试把资源分配给P2,并修改数值:

Avaiable = ( 0 4 0 0 )

Allocation = ( 2 5 7 6 )

Need = ( 1 1 3 4 )

④ 执行安全性算法,进行安全性检查:

初始化 Work = ( 0 4 0 0 ),Finish = False

此时对于任何进程,Need <= Work ( 0 4 0 0 ) 都不成立,

所以系统处于不安全状态,系统不能将资源分配给它

四.存储器管理

区间分配类

1.某基于动态分区存储管理的计算机,其主存容量为55Mb(初始为空),采用最佳适配(Best Fit)算法,分配和释放的顺序为:分配15Mb,分配30Mb,释放15Mb,分配8Mb,分配6Mb,此时主存中最大空闲分区的大小是多少?写出计算过程

思路:

动态分区分配:顺序式搜索算法,基于索引搜索的动态分区分配算法

顺序式搜索算法:首次适应算法(FF),循环首次适应算法(NF),最佳适应算法(BF),最坏适应算法(WF)

基于索引搜索的动态分区分配算法:快速适应算法(QF),伙伴系统(BS),哈希算法

TIP:区间用完会释放回去,即该区间又变成待分配状态

分配方式查找方式缺点
首次适应算法

空闲分区从小到大按地址排序成链

分配后将碎片在原位置

每次从链首开始会产生大量碎片
循环首次适应

空闲分区从小到大按地址排序成链

分配后将碎片在原位置

从上次找到的空闲分区的下一个开始缺乏大的空闲分区
最佳适应算法

空闲分区从小到大按大小排序成链

分配后将碎片重新排序

每次从链首开始会产生大量碎片
最坏适应算法

空闲分区从大到小按大小排序成链

分配后将碎片重新排序

每次从链首开始缺乏大的空闲分区

快速适应算法(QF)(分类搜索法)

①:依据容量大小分类区块,每类相同容量的所有空闲分区,创建一个链表,和对应索引表

②:分配时,以进程为单位,依据进程长度,在索引表找能容纳它的最小空闲分区链表

③:从链表中取下一个分配(不会对任何分区产生分割

伙伴系统(BS):分区的大小均为2^n,例如:2,4,8,16,32……,若在分配时缺少8,则将一个16切割成2个8,一个分配,一个存储到8的链表

解:分配15Mb,总容量55mb被分为:15Mb,40Mb(空闲)

        分配30Mb,总容量55mb被分为:10Mb(空闲),15Mb,30Mb

        释放15Mb,总容量55Mb被分为:10Mb(空闲),15Mb(空闲),30Mb

        分配8Mb,总容量55Mb被分为:  2Mb(空闲),8Mb,15Mb(空闲),30Mb

        分配6Mb,总容量55Mb被分为:  2Mb(空闲),6Mb,8Mb,9Mb(空闲),30Mb

综上所述:最终主存最大空闲分区为9Mb

 页表结构类

1.某计算机主存按字节编址,逻辑地址和物理地址都是32位,页表项大小为4字节。请回答下列问题(要求有计算过程或计算说明):

(1)若使用一级页表存储管理方式,逻辑地址结构为:

则页的大小是多少字节?页表最大占用多少字节?

(2)若使用二级页表存储管理方式,逻辑地址结构为:

设逻辑地址为LA,请分别给出其对应的页目录号和页表索引的表达式。

思路:

页面:将逻辑地址空间分成若干页,并加以编号-页号

页表:将虚拟地址转换成物理地址的索引表,从页号到物理块号的映射

页号:页号位数反应页面数量,例:页号有20位,则页表项数为2^20个

一级分页地址结构:由高地址→低地址

页号P位移量W

位移量(页内地址) W :长度表示页的大小

                                      例0~11位为页内地址,即每页大小为2^12 B=4*2^10B=4 KB

关系:若逻辑空间地址为A,页面大小为L,页号P,页内地址d

        有 P = INT [ A / L ]   (整除)   ,  d = [ A ] MOD L  (取余)  

                                     

二级分页地址结构:由高地址→低地址

外层页号外层页内地址页内地址

二级页表:即因为一级页表数量很多,就给一级表再来个页表

解:

(1)因为页内偏移量为12位所以页面大小为2^12字节,即4KB,页表项数为2^20个,即一级页表最大为2^20 * 4 B =4MB

(2)页目录号即最左侧10位,即 

(((unsigned int)(LA))>>22)&ox3FF

页表索引即中间12位,即

(((unsigned int)(LA))>>12)&ox3FF

五.虚拟存储器

局部性页面置换类

1.某请求分页系统的局部页面置换策略如下:

       系统从0时刻开始扫描,每隔5个时间单位扫描一轮驻留集(扫描时间忽略不计,驻留集可理解为是进程驻留在内存的页面的集合),本轮没有被访问过的页框(页框可理解为内存的物理块)将被系统回收,并放入空闲页框链尾,其中内容在下一次被分配之前不被清空。当发生缺页时,如果该页曾被使用过且还在空闲页框链表中,则重新放回进程的驻留集中;否则,从空闲页框链表头部取出一个页框。

       假设不考虑其他进程的影响和系统开销,初始时进程驻留集为空。目前系统空闲页框链表中页框号依次为32、15、21、41,进程P依次访问的<虚拟页号, 访问时刻>是:<1, 1>、<3, 2>、<0, 4>、<0, 6>、<1, 11>、<0, 13>、<2, 14>。请回答下列问题:

(1)访问<0, 4>时,对应的页框号是什么?

(2)访问<1, 11>时,对应的页框号是什么?说明理由。

(3)访问<2, 14>时,对应的页框号是什么?说明理由。

(4)该策略是否合适于时间局部性好的程序?说明理由。

思路:

基于此题逐步分析:

此题说明初始驻留集为空

第一轮(第几轮由访问时刻和扫描间隔决定)

        第一步:进程P访问<1,1>(访问哪个由访问时刻确定),虚拟页号1对应实际页号32(对应哪个由链表的固定顺序确定)

        第二步:进程P访问<3,2>,虚拟页号3对应实际页号15

        第三步:进程P访问<0,4>,虚拟页号0对应实际页号21

第一轮总结:访问过即放入驻留集的页框号:32,15,21;空闲页框链表:41

第二轮(∵每隔5时间单位扫描一次)

        第四步:进程P访问<0,6>,虚拟页号0对应21(此页框还在驻留集)

 第二轮总结:驻留集链:21;空闲页框链:41,32,15

第三轮

        第五步:进程P访问<1,11>,虚拟页号1对应32(∵此页框数据还在,∴从空闲链取出放回驻留集)

        第六步:进程P访问<0,13>,虚拟页号0对应21

        第七步:进程P访问<2,14>,虚拟页号2对应41(∵2未被访问过,不在驻留集,从空闲链表取一个)

第三轮总结:驻留集链:32,21,41;空闲页框链:15

是否合适于时间局部性好的程序?

答:合适,因为如果程序的时间局部性好,从空闲页框链表中重新取回的机会就越大,该策略的优势更明显。

页表分页存储管理的地址计算

1.若采用一级页表分页存储管理方式(逻辑地址和物理地址都是32位,页号20位,页内偏移量12位,页表项大小为4字节),一个代码段起始逻辑地址为0000 8000H,其长度为8KB,被装载到从物理地址0090 0000H开始的连续主存空间中。页表从主存0020 0000H开始的物理地址处连续存放,如下图所示(地址大小自下向上递增)。

请计算出该代码段对应的两个页表项的物理地址1、物理地址2、这两个页表项中页框号1、页框号2、以及代码页面2的起始物理地址3

 思路:

①页号=逻辑地址    

②页表项物理地址=页表起始地址+页号*页表项大小(字节数)   

③页框号=物理地址(即被装载到主存的物理地址) +偏移量(右移多少位)   

④代码页面起始物理地址=代码页面的页框号

解:

代码段起始地址为0000 8000H,说明其在第8页

∵页表项物理地址=页表起始地址+页号*页表项大小(字节数)

∴物理地址1=0020 0000H + 8*4=0020 0020H(注:此处是16进制

   物理地址2=0020 0000H + 9*4=0020 0024H

在表示页框号时:将被装载到主存的物理地址 “右移”偏移量即可

此处偏移量为12位,页框大小=4kb=2^12,所以从数据上看右移3位

每个页框的起始物理地址相差一个页面的大小,例:0x0000 0000 +4kb=0x0000 1000 表示第二页(4kb即2^12表现为16进制0x1000,相邻两页偏移量为0故不考虑)

页框号1=0090 0000H +12位偏移量=00900H

页框号2=0090 1000H + 12位偏移量=00901H

代码页面2的起始物理地址3=0090 1000H

页面置换算法类(重要

要记住英文缩写

最佳置换算法(Optimal):选择被淘汰的页面在将来时间不会再被访问,有最低的缺页率(需要提前知晓进程的推进顺序,概念化/理想化/不实际,用于比较其他算法)

先进先出页面置换算法(FIFO):总是淘汰最先进入内存的页面

最近最久未使用算法(LRU):依据栈的先进后出原理,每次淘汰栈底页面,淘汰最久未被使用的(判断依据:距离上次使用的时间)

最少使用置换算法(LFU):依据访问频率来淘汰使用最少的页面(判断依据:被使用的频率高低)(因为短时间可能会对某页面访问成千上万次,概念化/不实际)

改进版Clock置换算法:所有页面链接成一个循环队列,为每页设置一个访问位A(页面被访问则置1),一个修改位M(页面被修改则置1)

1类(A=0,M=0),该页近期未被访问,未被修改 (最佳淘汰页)

2类(A=0,M=1),该页近期未被访问,   被修改  (次选淘汰页)

3类(A=1,M=0),该页近期    被访问,未被修改 (可能被再次访问)  

4类(A=1,M=1),该页近期    被访问,    被修改 (可能被再次访问)

每轮循环扫描队列,

第一轮扫描:找1类为淘汰页,若无则进入第二轮

第二轮扫描:找2类为淘汰页,并将所有扫描过的页面访问位A该为0,若无进入第三轮

第三轮扫描:将所有页面访问位A改为0(即将3类变为1类,4类变为2类),找1类为淘汰页,若无则进入第四轮

第四轮扫描:找2类为淘汰页,此时一定能找到,并且第一个就是的

1.请求分页管理系统中,假设某进程的页表内容如下表所示。

 页面大小为4KB,一次内存的访问时间是100ns,一次快表(TLB)的访问时间是10ns,处理一次缺页的平均时间为10^8ns(已含更新TLB和页表的时间),进程的驻留集大小固定为2,采用最近最少使用置换算法(LRU)和局部淘汰策略。假设①TLB初始为空;②地址转换时先访问TLB,若TLB 未命中,再访问页表(忽略访问页表之后的TLB更新时间);③有效位为0表示页面不在内存,产生缺页中断,缺页中断处理后,返回到产生缺页中断的指令处重新执行。设有虚地址访问序列 2362H、1565H、25A5H,请问:

(1)依次访问上述三个虚地址,各需多少时间?给出计算过程。

(2)基于上述访问序列,虚地址1565H的物理地址是多少?请说明理由。 

思路:

依据页面大小,地址序列得到页号。

例:4kb,2^12,页内位移占虚地址的低12位,页号为剩余高位

十六进制的一位数字转换为4位二进制,所以十六进制的第三位就是页内位移,高位为页号。

例:访问序列:5566H,页号为5;A876H页号为10)

访问时间(即访问TLB):

①命中,则就是访问TLB时间+合成物理地址后访问主存时间

②未命中,访问TLB时间+访问页表时间+合成物理地址后访问主存时间

③若访问页表也落空,访问TLB时间+访问页表时间+缺页中断处理时间(此时间远大于其余两个),即时间≈缺页中断处理时间

是否命中:

TLB中是否有对应的页号-页框号映射(即TLB里有没有要的页表,此题初始为空,即第一步一定未命中)

有效位:该页是否需要进行页面表查找,0表示需要,即缺页

每访问一次,就把对应的页号放入块表TLB,越往后命中率会上升(若TLB初始为空,则第一次访问一定找不到,要去内存)

驻留集数目:能有数据的物理页框的最大数量

最少使用置换法:若无多余页框容量,则按使用时间排序,最久未使用的分配给新需要的

(1):页面大小为4KB

虚地址1:即访问序列2362H,页号P=2

因为TLB初始为空,则表示未命中

时间T1=10ns+100ns+100ns=210ns

虚地址2:即访问序列1565H,页号P=1

因为无页框号(有效位为0),则产生缺页中断

时间T2=10ns+100ns+10^8ns≈10^8ns

虚地址3:即访问序列25A5H,页号P=2

因为第一次访问页号也为2,到这步时已被放入到TLB,所以命中

T3=10ns+100ns=110ns

(2)

访问虚地址1565H时,产生缺页中断,进程驻留集大小为2。

第0页占用101H,第2页占用254H

访问1565H,所需地址在第1页,第1页不在内存中,且两个物理页框都被占用,则根据LRU算法换出一个

0,2号页面相比,0号页面最久未被访问,则置换第0页,第1页写入页框号101H

则虚地址1565H放到101H,最终物理地址应为101565H

2.设某计算机的逻辑地址空间和物理地址空间均为64KB,按字节编址。某进程最多需要6页数据存储空间,页的大小为1KB,操作系统采用固定分配局部置换策略为此进程分配4个页框。在时刻260前的该进程访问情况如下表所示(访问位即使用位)

页号页框号装入时刻访问位
071301
142301
222001
391601

当该进程执行到时刻260时,要访问逻辑地址为17CAH的数据。请回答下列问题:

(1) 该逻辑地址对应的页号是多少?

(2) 若采用先进先出(FIFO)置换算法,求该逻辑地址对应的物理地址?要求给出计算过程。

(3) 采用时钟(Clock)置换算法,该逻辑地址对应的物理地址是多少?要求给出计算过程。(设搜索下一页的指针按顺时针方向移动,且指向当前2号页框,示意图如题目所示)

解:

(1):逻辑地址空间=物理地址空间=64KB=2^6*2^10

            每页大小1KB=2^10

            则其地址共16位,其中6位为页号,10位为页内偏移量

            已知逻辑地址:17CA H 即 0001 0111 1100 1010B

            则其页号为0001 01 B =5

(2):先进先出置换算法:即每次替换最早进入的数据,此题为0号页

            即5号页数据装入7号页框位置

            则其物理地址=0001 1111 11000 1010B=1FCA H (注:即更改前6位)

(3):时钟置换算法:指针指到的页框,若其访问位为1,则改为0并按顺序前往下一个,若为0,将数据装入

            此题页框号访问顺序为2-9-7-4-2-9-7-4-……

            第一轮访问将所有访问位改为0,第二轮第一次 访问到页框2,其访问位为0,将数据放入

            则其物理地址改为=0000 1011 1100 1010B=0BCA H

3.在一个采用页式虚似存储管理的系统中,某进程依次要访问的字地址序列是:115, 228,128, 88, 446,102,321,432, 260,167,若作业的第0页已经装入主存,现分配给该作业的主存共300字,页的大小为100字,回答下列问题(写出计算过程) :

(1)按FIFO调度算法将产生多少次缺页中断,依次淘汰页号是什么?

(2)按LRU调度算法将产生多少次缺页中断,依次淘汰页号是什么?

提示:因为页的大小为100字,因此现分配给该作业的主存共3页,即为第0、1、2页,例如第0页(0-99个字),进程依次要访问的页还包括第3页、第4页。。。

解:由字地址序列-对应页号

已知页大小100字,则低地址为业内地址,其余为页号

分配主存共300字,则300/100=3帧 (可理解为等待序列共有几个位置,满了就要调度)

则进程一次访问的页号为1,2,1,0,4,1,3,4,2,1
(1):

FIFO调度算法:即先来先调度,无优先级,替换时把滞留最久的数据换掉

是否缺页:队列里面有没有我需要的,没有就缺页并且把对应数据装入

已知已经装入的为第0页

1(此处为访问顺序):0,空,空。访问:1,缺页,并装入

2:0,1,空。访问:2,缺页,并装入

3:0,1,2。 访问:1

4:0,1,2。 访问:0

5:0,1,2。 访问:4,缺页,替换0并装入

6:4,1,2。 访问:1

7:4,1,2。 访问:3,缺页,替换1并装入

8:4,3,2。 访问:4

9:4,3,2。 访问:2

10:4,3,2。访问:1,缺页,替换2并装入

11:4,3,1

共缺页5次,产生5次缺页中断,依次淘汰的页号:0,1,2

(2)

LRU调度算法:每次替换最少访问的页

1(此处为访问顺序):0,空,空。访问:1,缺页,并装入

2:0,1,空。访问:2,缺页,并装入

3:0,1,2。 访问:1

4:0,1,2。 访问:0

5:0,1,2。 访问:4,缺页,替换2并装入

6:0,1,4。 访问:1

7:0,1,4。 访问:3,缺页,替换0并装入

8:3,1,4。 访问:4

9:3,1,4。 访问:2,缺页,替换1并装入

10:3,2,4。访问:1,缺页,替换3并装入

11:1,2,4

共缺页6次,产生6次缺页中断,依次淘汰的页号为:2,0,1,3

六.输入输出系统

单/双缓冲区时间计算类

1.某文件占10个磁盘块,现要把该文件磁盘块逐个读入主存缓冲区,并送用户区进行分析。假设一个缓冲区与一个磁盘块大小相同,把一个磁盘块读入缓冲区的时间为100μs,将缓冲区的数据传送到用户区的时间是50μs,CPU对一块数据进行分析的时间是50μs,在单缓冲与双缓冲的结构下,读入并分析完该文件的时间分别是多少?

提示:特别注意最后一个磁盘块的处理:(1)单缓冲的数据块分析时间;(2)双缓冲的数据传送时间+数据块分析时间。

思路:

T:磁盘把一个数据块输入到缓冲区的时间

M:OS将缓冲区数据传输到用户区时间

C:CPU对数据的处理时间

执行顺序为T-M-C

(T和C可并行)

单缓冲:每块数据的处理时间=Max(C,T)+M

TC关系不会影响M

若T>C,特殊考虑最后一个,到最后一块的第二步共用时T*n+M*n,再加上最后一步C,即n*T+n*M+C

若T<C,特殊考虑第一个,第一块第一步用时T,再加上其他时间n*M+n*C,即n*C+n*M+T

双缓冲区:~时间=Max(C,T)

若T>C,则从第一块到最后一块的第一步,总用时T*n,还需要执行最后一块的后两步M+C,即n*T+M+C(特殊考虑最后一块)

若T<C,则第一块需要额外执行T+M,再到最后n*C,即n*C+T+M(特殊考虑第一块)

解:共10个磁盘块,n=10

T=100us,M=50us,C=50us

T>C

单缓冲区数据块分析时间=T*n+M*n+C=100*10+50*10+50 us=1550 us

双缓冲区数据块分析时间=T*n+M+C=100*10+50+50 us = 1100 us

 磁盘调度算法类

先来先服务(FCFS):依据进程请求访问磁盘的先后顺序进行调度

最短寻道时间优先(SSTF):调度要求访问的磁道与当前磁头所在的磁道距离最近的

扫描算法(SCAN):基于最短寻道,每次运动方向固定,从链表头到表尾/表尾到表头。即电梯,双向载客

循环扫描算法(CSCAN):基于扫描算法,但是单向电梯,从链表头到表尾/表尾到表头,方向二选一,逆向不会载客

NStepSCAN算法:基于扫描算法,把请求队列分成N组,每组先来的先用,就是把电梯楼层由100层,以某种组合 合并一些楼层,变成例20层

FSCAN算法:基于NStepSCAN算法把请求队列仅分成2组

七.文件管理 八.磁盘存储器的管理

文件索引组织方式类

1.假设一个文件系统使用索引结构(索引仅包含磁盘块号)组织文件内容块,每块的大小为16 KB,磁盘空间为1 GB。现假设一个目录中包含3个文件,其大小分别为11 KB、1 111 KB、131 MB,请问这些文件总共在磁盘中占用了多大的空间?(不计其目录项占用的空间。)

提示:假设系统使用如下图所示的索引结构:

 思路:

文件分配表(FAT):系统存放指针的索引表,每个文件有一个

索引块:存放指向文件每个物理块号的物理块,其中第 i 项即存放第 i 个逻辑块对应的物理块块号

文件控制块(FCB):用于存储文件的属性,位置,大小等。FCB指向索引块

逻辑地址LA:文件内相对地址(一维)

物理地址(B,D):存在物理块中的地址

当文件大小大于最小数据块时,需要使用多级索引索引,调度多个数据块以存储

不同级别索引和文件大小的关系

若物理块大小S为4KB,索引项(块号)大小为:4B

单级索引:(1K)^1 * 4KB = 4MB

二级索引:(1K)^2 * 4KB = 4GB

三级索引:(1K)^3 * 4KB = 4GB

四级索引:(1K)^4 * 4KB = 4PB

N级索引:(1K)^n * 4KB

每级索引的值对应该级别能容纳的最大文件大小

解:先确定磁盘被分成多少个物理块

1GB/16KB= 2^20 / 2^4 块=2^16 块 =65536块

设索引块中每个索引项要16位,每个块号16字节,则每个索引块最多有1K(1024)个索引项

单个索引块最大容量为:16MB

单级索引最大容量=(1K)*16KB=16MB

二级索引最大容量=(1K)^2 * 16KB=16GB

11KB大小文件占用 【1个数据块】,占用磁盘空间为16KB

1111KB大小文件即1024KB+87KB,其需要使用单级索引,1111KB/16KB=69,则其占用【一个一级索引块+69个数据块】,占用空间为69*16KB=1104KB

131MB大小文件,需要使用二级索引,131MB/16KB=8384,则其占用【1个一级索引块,9个二级索引块+8384个数据块】,占用空间为8384*16KB=134144KB

未完待续,笔者还在复习

  • 35
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 什么是操作系统操作系统计算机系统中的一个重要组成部分,它负责管理计算机的硬件和软件资源,为用户和应用程序提供一个简单、安全、高效的工作环境。 2. 操作系统的主要功能有哪些? 操作系统的主要功能包括进程管理、内存管理、文件系统管理、设备管理和用户接口。 3. 进程是什么?进程管理的主要任务是什么? 进程是指正在运行的程序,进程管理的主要任务是控制进程的创建、撤销、调度和通信等操作,以保证系统的稳定性和高效性。 4. 什么是内存管理?内存管理的主要任务是什么? 内存管理是指对计算机内存资源的分配、回收和保护等操作,其主要任务是管理进程的内存空间,为进程提供必要的内存资源。 5. 什么是文件系统?文件系统管理的主要任务是什么? 文件系统是指管理计算机文件和文件夹的一组规则和程序,文件系统管理的主要任务是对文件和文件夹进行管理、存储、访问和保护等操作。 6. 什么是设备管理?设备管理的主要任务是什么? 设备管理是指对计算机硬件设备的管理和控制,包括设备的分配、调度、控制和保护等操作,其主要任务是为应用程序提供必要的设备资源。 7. 什么是用户接口?用户接口的主要作用是什么? 用户接口是指计算操作系统与用户之间的交互方式,包括命令行界面和图形用户界面等。用户接口的主要作用是为用户提供一个友好、便捷的操作环境,使用户能够更加方便地使用计算机。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值