对这几天操作系统的复习做一下总结,有些他们不知道是太简单还是的,网上都是只有答案没有解析,至少对我来说是不太友好的,这些题目刚接触的时候是不太有思路的。所以我把最近的题目整理了一下,希望对大家有所帮助。
题目信息:多道系统,处理器利用率
分析:处理机的利用率=处理机工作时间/总执行时间
处理器的工作时间为12分钟,又因为有两个,故处理机工作时间为2*12.
总执行时间,为两道题总共需要执行的80分钟。
即 12*2/80=30%
题目信息:单道方式,短作业优先算法,作业的执行时间大小,平均周转时间。
分析:平均周转时间=作业周转总时间/作业个数、周转时间=完成时间-到达时间。
三个作业同时到达,根据作业长短先后依次执行。
T1 | T2 | T3 |
作业周转总时间:T1+(T1+T2)+(T1+T2+T3)=3T1+2T2+T1
平均周转时间=(3T1+2T2+T1)/3
分析:计算要占CPU,I/O不占CPU,先出发先执行,CPU可以与I/O一起执行。
画一个图就清晰了。
参考链接:
一个多道批处理系统中仅有 P1 和 P2 两个作业_一个多道批处理系统中仅有p1和p2_川川菜鸟的博客-CSDN博客https://blog.csdn.net/weixin_46211269/article/details/120394915
分析:要使进程不产生死锁,他得到的资源就需要少于m个,最大就是刚好m-1个,一共有n个并发进程,最极端的情况就是每个进程都持有m-1个资源,就全部推进不了,这种情况下也就意味着只要再多一个R类资源他就能够执行了。故而结果就是
n*(m-1)+1=n*m+1-n
分析:这个就不多说了,和上面那个题目一样,4*(3-1)+1=9个
进程 | 已分配资源 | 资源最大需求 | ||||
R1 | R2 | R3 | R1 | R2 | R3 | |
P0 | 3 | 2 | 3 | 5 | 5 | 10 |
P1 | 4 | 0 | 3 | 5 | 3 | 6 |
P2 | 4 | 0 | 5 | 4 | 0 | 11 |
P3 | 2 | 0 | 4 | 4 | 2 | 5 |
P4 | 3 | 1 | 4 | 4 | 2 | 4 |
A.P0,P2,P4,P1,P3
B.P1,P0,P3,P4,P2
C.P2,P3,P4,P1,P0
D.P3,P4,P2,P1,P0
分析:这个是一个选择题,所以判断直接带人选项就行了,直接找了话可能会找到多个符合要求的安全序列。
通过计算可以知道他剩下的资源个数分别是2,3,3。(资源总数-总的已分配的资源)
A选项 P0带入发现R3他满足不了,排除。
B选项 P1带入可以满足,资源变成6,3,6,但是下一个序列P0还是满足不了。
C,D选项同理判断,得出D选项可以满足要求。
进程 | 已分配资源 | 尚需资源 | 可用资源 | ||||||
R1 | R2 | R3 | R1 | R2 | R3 | R1 | R2 | R3 | |
P1 | 2 | 0 | 0 | 0 | 0 | 1 | 0 | 2 | 1 |
P2 | 1 | 2 | 0 | 1 | 3 | 2 | |||
P3 | 0 | 1 | 1 | 1 | 3 | 1 | |||
P4 | 0 | 0 | 1 | 2 | 0 | 0 |
分析:这个我之前还判断错误了,这个和前面还是有点区别,这里用的是尚需资源,不是资源最大需求,其他的就是一样的了。
最开始可用资源为0,2,1,只有P1可以满足要求,之后可用资源变成2,2,1,只有P4可以满足,然后资源变成2,2,2,P2和P3都无法满足要求,故而不存在安全序列。
进程 | 已占用资源数 | 最大需求数 |
P1 | 2 | 4 |
P2 | 3 | 6 |
P3 | 4 | 7 |
P4 | 1 | 4 |
这个没什么说的,前面会了这个也就会了,其他进程的都刚好少一个资源。
分析:首先就可以确定1是符合要求的,变量x初值为1,加一减一操作之后又变回本身了,但是并发进程就可以不按常理执行,我可以先取出数之后计算但是我不还不放回去,另一个操作把初值1取出来也进行计算,这两个计算结构一个加一一个减一,谁后放进去,最终的结果就是谁,但是加一还是加一,不可能变成减一,故而可能值就是0,1,2.
始址 | 0K | 200K | 500K | 1000K | 1050K | 1350K | 1600K | 1750K | 1950K | 2350K |
状态 | 已用 | 未用 | 已用 | 未用 | 已用 | 未用 | 已用 | 未用 | 已用 | 未用 |
容量 | 200K | 300K | 500K | 50K | 300K | 250K | 150K | 200K | 400K | 210K |
始址 | 0K | 400K | 500K | 1000K | 1050K | 1450K | 1600K | 1750K | 1950K | 2400K |
状态 | 已用 | 未用 | 已用 | 未用 | 已用 | 未用 | 已用 | 未用 | 已用 | 未用 |
容量 | 400K | 100K | 500K | 50K | 400K | 150K | 150K | 200K | 450K | 160K |
分析:把空闲的存储空间找出来,按照各自的要求进行排序。
首次适应算法(First Fit Algorithm)是一种内存分配算法,主要用于解决连续分配存储管理问题。在该算法中,进程申请内存时,操作系统会按照内存的地址顺序查找第一个能够满足请求的空闲分区,然后将该空闲分区分割成所需大小的分区,分配给进程,并记录下其剩余部分的空闲分区信息。低地址----->高地址
循环首次适应算法(Circular First Fit Algorithm)是一种改进版的首次适应算法。循环首次适应算法的主要区别在于,在查找空闲分区时不仅从上一次找到的空闲分区开始,而是从空闲分区链表的头部开始,直到找到第一个满足条件的空闲分区,然后将该分区分割并分配给进程。低地址----->高地址
最优适应算法(Best Fit Algorithm)是一种内存分配算法,主要用于解决连续分配存储管理问题。该算法在查找空闲分区时,会从整个空闲分区列表中选择一个与请求分区大小最接近的空闲分区,并将该分区分割为所需大小的分区,分配给进程。尺寸小----->尺寸大
最坏适应算法(Worst Fit Algorithm)是一种内存分配算法,主要用于解决连续分配存储管理问题。该算法在查找空闲分区时,会从整个空闲分区列表中选择一个大小最大的空闲分区,将该分区分割为所需大小的分区,分配给进程,并将剩余的空闲分区插入空闲分区列表合适的位置。尺寸大----->尺寸小
初始空闲容量:300k,50k,250k,200k,210k
首次:
300k,50k,250k,200k,210k
100k,50k,250k,200k,210k
0k,50k,250k,200k,210k
0k,0k,250k,200k,210k
循环首次:
300k,50k,250k,200k,210k
100k,50k,250k,200k,210k
100k,50k,150k,200k,210k
100k,50k,150k,150k,210k
最佳:
50k,200k,210k,250k,300k
0k,50k,210k,250k,300k
0k,50k,110k,250k,300k
0k,0k,110k,250k,300k
最坏:
300k,250k,210k,200k,50k
250k,210k,200k,100k,50k
210k,200k,150k,100k,50k
200k,160k,150k,100k,50k
这个结果就显而易见了,顺序不对是因为我们人为进行了排序,自己再还原成原来的顺序即可。
序号 | 分区大小(KB) | 分区始址 |
1 | 80 | 50 |
2 | 75 | 250 |
3 | 55 | 450 |
4 | 90 | 550 |
这个要注意的信息就是“刚把开始地址为230k的分配出去”,这就是首次和循环首次的区别。
如果按照首次会分配序号1,循环首次是序号2,最佳是序号3,最坏是序号4.
15MB | 30MB | 10MB |
因为有分配有释放,这个至少是要分成3块区域,最大空闲就是max(15-6,10-8)。
这个不知道是不是动态分区的原因,如果人为分配的话,把15MB换成17MB貌似可以得到更加大的空闲分区
分析:首先可以求出位示图的页数:2的24次方/2的9次方=2的15次方。(2的24次方和9次方相信大家都知道是怎么来的,我这就不赘述了)
然后位示图的每一位对应一页是否被使用,所以一共需要2的15次方的位,就是2的12次方的字节。最终换算就是4k字节。
页目录号 | 页号 | 页内偏移量 |
分析:每一个页表项对应内存中的一个页64k=2的16次方个页。
一个页的大小是1024,页表项的大小为2,所以一个页中有2的9次方个页表项。
最终 求得个数就是2的16次方/2的9次方=2的7次方
【操作系统/计组】页面大小 与 页表项 ( 二级页表 、多级页表 )_页面和页表项的关系_okmqazt的博客-CSDN博客https://blog.csdn.net/Isaac_Miria/article/details/122118245
页目录索引dir(10位) | 页表页索引page(10位) | 页内偏移offset(12位) |
分析:这个根据页目录索引和页内偏移就可以得到答案。
页内偏移表示每一页内可以寻址多个个字节。
2的10次方和2的12次方
这个就根据的规则进行判断是否需要置换,这个要注意的就是最开始内存中没有页面,为空的时候也算缺页。
FIFO页面置换算法(First-In-First-Out Page Replacement Algorithm)是一种最简单的页面置换算法。在该算法中,操作系统会按照页面进入内存的顺序来替换页面。即在发生页面置换时,操作系统将最早的进入内存的页面替换出去,以将新页面调入内存。
LRU页面置换算法(Least Recently Used Page Replacement Algorithm)是一种常用的页面置换算法,可以通过记录页面最近一次被使用的时间戳来实现。该算法将最早未被使用的页面替换出去,并将新页面调入内存。
分析:求出T总=1/100=0.01s=10ms,其中1ms用来处理I/O中断请求,所以用来计算的时间就是10ms-1ms=9ms.
利用率就是9ms/10ms=90%
这个我是没有思路的,但是突然不知道突然一下子就好像知道怎么写了,网上都只看到答案没有解析,我这里也不知道对不对,我说一下我自己的思路。
由题目可以知道页长2kB,求得页内地址有11位,那前面的就是页号了,再把虚地址给写成二进制。
0AC5H=0000 1010 1100 0101;写成这样还是不好看,直接把他分成页号+页内地址的形式
00001,010 1100 0101。根据前面的页号00001,就是1,1对于的内存块是17,也就是10001,替换之后得到二进制为1000 1010 1100 0101=8AC5H.
同理可以求出3AC5H对于的物理地址为102C5H。就是用7去替换32,这种就是刚好有对应的,如果没有对于的那应该就是属于是缺页的情况。
电梯调度算法听起来是好高级的样子,通俗一点就是如何把人一起带下去。首先用磁道表示楼层。
195 |
180 |
170 |
110 |
68 |
45 |
35 |
12 |
“电梯”是停留在105楼,这个题目也说明了是向磁道号增加的方向移动,最接近的就是110,然后一直到楼顶195之后一起把剩余楼层的人载下去。
也就是:
110-->170-->180-->195(上楼)
195-->68-->45-->35-->12(下楼)已经被调度的就没必要再次调度了。
这个就是要知道哪些是串行操作,哪些可以并行操作。
对单缓冲器:磁盘写入和读出到用户区的操作必须串行执行。
CPU对数据的分析与从用户区读数据需要串行执行。
CPU分析与从磁盘写入缓冲区可以并行执行。
因为CPU分析时间50us < 磁盘块写入缓冲区100us。
当CPU分析的时候磁盘也可以写入缓冲区,当CPU分析结束了之后磁盘块还在写入,整个操作要等磁盘写入完成之后才能继续推进。
要注意的就是最后一次操作第10次CPU还需要分析,但是没有第11次的磁盘写入了,那整个的计算就是。
单缓冲区的总时间=(磁盘写入缓冲区时间+缓冲区读出时间)*10+CPU处理最后一块数据的时间=(100+50)*10+50=1550us.
双缓冲区就是两个缓冲区可以并行,当我这边有数据的时候我可以写到另一个缓冲区里面。
因为写入缓冲区100us > 读出缓冲区50us。
同之前一样,最后一次的操作要单独讨论,没有第11次写入了,所以最后一次的读出缓冲区的时间要单独加上。
双缓冲器的总时间=(磁盘写入缓冲区时间)*10+读出最后一块数据的时间+CPU分析最后一块数据的时间=(100)*10+50+50=1100us.
分析:平均需要调入盘块N/2次,N位目录文件所占用的磁盘块数。
一个FCB占32B,文件目录中有32000个FCB,也就是占32*3200,盘块大小为1kB,所以所占的磁盘块数就是3200*32/1024=100个,平均调入就是50次
这个我感觉就是上学期数据结构里面的地址的计算,只说按顺序扫描,应该是行优先存储的,那这个就好办了,根据题目的要求可以知道,(11,8)对应的行的元素就是(11-0)*30,列上面还有(18-0)个,总共就是0+(11-0)*30+18=348;(因为行号、列号、盘块号都是从0开始的),盘块号就类似基址,从0开始存储元素的。
A.4和5
B.5和3
C.4和3
D.5和4
这题目就和上面的一样,得到公式0+32*i+j=133.(i是行号,j是列号0<=i<=99,0<=j<31).
带入选项求解,A=133,B=163,C=131,D=164.
最开始看到的时候发现这个几G也太大了吧,用2的3次方乘以512都没这么大,里面也没有其他数字了,后面仔细看发现人家说的是3个字节,不是3位,所以应该是3的24次方个盘块乘以512字节,也就是2的33次方个字节就等于8G.
这个还不太完整,然后有错误希望大家能够指正,可能是太简单了,网上都没有相关解析。-_-
对了,今天是六一儿童节。
祝大家儿童节快乐。