对这几天操作系统的复习做一下总结,有些他们不知道是太简单还是的,网上都是只有答案没有解析,至少对我来说是不太友好的,这些题目刚接触的时候是不太有思路的。所以我把最近的题目整理了一下,希望对大家有所帮助。
有甲、乙两道算题,每道需执行1小时(其中处理器的工作时间为12分钟) 。若它们在多道系统中执行,甲、乙两道题总共需执行80分钟,则处理器的利用率为(30% )。
题目信息:多道系统,处理器利用率
分析:处理机的利用率=处理机工作时间/总执行时间
处理器的工作时间为12分钟,又因为有两个,故处理机工作时间为2*12.
总执行时间,为两道题总共需要执行的80分钟。
即 12*2/80=30%
现有3个同时到达的作业J1、J2、J3,它们的执行时间分别为T1、T2和T3,且T1<T2<T3。系统按单道方式运行且采用短作业优先算法,则平均周转时间为((3T1+2T2+T1)/3 )。
题目信息:单道方式,短作业优先算法,作业的执行时间大小,平均周转时间。
分析:平均周转时间=作业周转总时间/作业个数、周转时间=完成时间-到达时间。
三个作业同时到达,根据作业长短先后依次执行。
T1 | T2 | T3 |
作业周转总时间:T1+(T1+T2)+(T1+T2+T3)=3T1+2T2+T1
平均周转时间=(3T1+2T2+T1)/3
一个多道批处理系统中仅有P1和P2两个作业,P2比P1晚5ms到达,它们的计算和I/O操作顺序如下:
P1:计算 60ms, I/O80ms,计算 20ms
P2:计算 120ms, I/O40ms,计算 40ms
若不考虑调度和切换时间,则完成两个作业需要的时间最少是(260ms )。
分析:计算要占CPU,I/O不占CPU,先出发先执行,CPU可以与I/O一起执行。
画一个图就清晰了。
参考链接:
设系统中有n个并发进程,竞争资源R,且每个进程都需要m个R类资源,为使该系统不会因竞争该类资源而死锁,资源R至少要有(n*m+1-n )个。
分析:要使进程不产生死锁,他得到的资源就需要少于m个,最大就是刚好m-1个,一共有n个并发进程,最极端的情况就是每个进程都持有m-1个资源,就全部推进不了,这种情况下也就意味着只要再多一个R类资源他就能够执行了。故而结果就是
n*(m-1)+1=n*m+1-n
系统中有4个并发进程,都需要某类资源3个。试问该类资源最少为( 9)个时,不会因竞争该资源而发生死锁。
分析:这个就不多说了,和上面那个题目一样,4*(3-1)+1=9个
设有五个进程P0、P1、P2、P3、P4 共享三类资源R1、R2、R3,这些资源总数分别为18、6、22,T0 时刻的资源分配情况如下表所示,此时存在的一个安全序列是( P3,P4,P2,P1,P0)。
进程 | 已分配资源 | 资源最大需求 | ||||
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都无法满足要求,故而不存在安全序列。
设有12 个同类资源可供4 个进程共享,资源分配情况如下表所示。当进程P1,P2,P3,P4 又都相继提出申请要求,为使系统不致死锁,应满足( P1)的要求。
进程 | 已占用资源数 | 最大需求数 |
P1 | 2 | 4 |
P2 | 3 | 6 |
P3 | 4 | 7 |
P4 | 1 | 4 |
这个没什么说的,前面会了这个也就会了,其他进程的都刚好少一个资源。
6月20日:
这个的话由一共有12个资源,以及有(2+3+4+1=10)个资源被占用可以知道,还有2个资源是可以分配的。
P1:2+2<4; P2:2+3<6; P3:2+4<7; P4:1+2<4
综上所述只有P1是满足要求的,其他进出都是刚好缺少一个资源。
有两个并发进程P1 和P2,共享初值为1 的变量x。P1 对x 加1,P2 对x 减1。加1 和减1 操作的指令序列分别如下所示。两个操作完成后, x 的值(可能为0、1或2 )。
分析:首先就可以确定1是符合要求的,变量x初值为1,加一减一操作之后又变回本身了,但是并发进程就可以不按常理执行,我可以先取出数之后计算但是我不还不放回去,另一个操作把初值1取出来也进行计算,这两个计算结构一个加一一个减一,谁后放进去,最终的结果就是谁,但是加一还是加一,不可能变成减一,故而可能值就是0,1,2.
假设某计算机系统的内存大小为2560KB,采用可变分区管理内存,在某一时刻内存的使用情况如下表所示。此时若进程顺序请求 200K、100K和50K的存储空间,系统采用某种内存分配算法为进程依次分配内存,分配后的内存使用情况如下表所示。则该系统采用的内存分配算法是( 最坏)适应算法。
始址 | 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
这个结果就显而易见了,顺序不对是因为我们人为进行了排序,自己再还原成原来的顺序即可。
某动态分区分配存储管理系统,系统刚把开始地址为230K的一小块内存分配出去后,内存中的空闲分区情况如下表所示:有一个作业申请50KB内存,系统把第2个空闲区分配给了该作业50KB,则该系统采用的分区分配算法是( 循环首次)适应算法。
序号 | 分区大小(KB) | 分区始址 |
1 | 80 | 50 |
2 | 75 | 250 |
3 | 55 | 450 |
4 | 90 | 550 |
这个要注意的信息就是“刚把开始地址为230k的分配出去”,这就是首次和循环首次的区别。
如果按照首次会分配序号1,循环首次是序号2,最佳是序号3,最坏是序号4.
某基于动态分区存储管理的计算机,其主存容量为55MB(初始为空闲),采用最佳适配(Best Fit) 算法,分配和释放的顺序为:分配15MB、分配 30MB、释放15MB、分配8MB、分配 6MB,此时主存中最大空闲分区的大小是( 9MB)
15MB | 30MB | 10MB |
因为有分配有释放,这个至少是要分成3块区域,最大空闲就是max(15-6,10-8)。
这个不知道是不是动态分区的原因,如果人为分配的话,把15MB换成17MB貌似可以得到更加大的空闲分区
某系统采用页式存储管理,页的大小为512B,设内存容量为16MB,内存的分配使用情况采用“位示图”表示,则位示图需要( 4K)字节。
分析:首先可以求出位示图的页数:2的24次方/2的9次方=2的15次方。(2的24次方和9次方相信大家都知道是怎么来的,我这就不赘述了)
然后位示图的每一位对应一页是否被使用,所以一共需要2的15次方的位,就是2的12次方的字节。最终换算就是4k字节。
某计算机采用二级页表的分页存储管理方式,按字节编址,页大小为1024字节,页表项大小为2字节,逻辑地址结构如下图所示, 逻辑地址空间大小为 64K页,则表示整个逻辑地址空间的页目录表中包含表项的个数至少是( 128)。
页目录号 | 页号 | 页内偏移量 |
分析:每一个页表项对应内存中的一个页64k=2的16次方个页。
一个页的大小是1024,页表项的大小为2,所以一个页中有2的9次方个页表项。
最终 求得个数就是2的16次方/2的9次方=2的7次方
Windows 2000 采用二级页表,其逻辑地址结构如下:则其页目录的表项数和页的大小分别是(1024和4096 )。
页目录索引dir(10位) | 页表页索引page(10位) | 页内偏移offset(12位) |
分析:这个根据页目录索引和页内偏移就可以得到答案。
页内偏移表示每一页内可以寻址多个个字节。
2的10次方和2的12次方
某进程页面访问序列为4,3,2,1,4,3,5,4,3,2,1,5,且开始执行时,内存中没有页面,分配给该进程的物理块数是3,则采用FIFO页面置换算法和LRU页面置换算法时缺页率分别是( 75%和83%)
这个就根据的规则进行判断是否需要置换,这个要注意的就是最开始内存中没有页面,为空的时候也算缺页。
FIFO页面置换算法(First-In-First-Out Page Replacement Algorithm)是一种最简单的页面置换算法。在该算法中,操作系统会按照页面进入内存的顺序来替换页面。即在发生页面置换时,操作系统将最早的进入内存的页面替换出去,以将新页面调入内存。
LRU页面置换算法(Least Recently Used Page Replacement Algorithm)是一种常用的页面置换算法,可以通过记录页面最近一次被使用的时间戳来实现。该算法将最早未被使用的页面替换出去,并将新页面调入内存。
某操作系统中,采用中断驱动I/O控制方式,设中断时,CPU用1ms来处理I/O中断请求,其他CPU时间全部用来计算。若系统时钟中断频率为100Hz,则CPU的利用率为%( 90)。
分析:求出T总=1/100=0.01s=10ms,其中1ms用来处理I/O中断请求,所以用来计算的时间就是10ms-1ms=9ms.
利用率就是9ms/10ms=90%
在一个分页虚存系统中,设页长2KB,某用户程序有30页。若该程序的虚页0、1、2、3、4、5、6、7已分别装入内存块4、17、18、20、25、26、30、32中,则该程序中的虚地址0AC5H和3AC5H对应的物理地址分别是(8AC5H和102C5H )
这个我是没有思路的,但是突然不知道突然一下子就好像知道怎么写了,网上都只看到答案没有解析,我这里也不知道对不对,我说一下我自己的思路。
由题目可以知道页长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,这种就是刚好有对应的,如果没有对于的那应该就是属于是缺页的情况。
假设磁头当前位于105道,正在向磁道号增加的方向移动。现有一个磁道访问请求序列为35,45,12,68,110,180,170,195,采用SCAN调度(电梯调度)算法得到的磁道访问序列是( 110,170,180,195,68,45,35,12)
电梯调度算法听起来是好高级的样子,通俗一点就是如何把人一起带下去。首先用磁道表示楼层。
195 |
180 |
170 |
110 |
68 |
45 |
35 |
12 |
“电梯”是停留在105楼,这个题目也说明了是向磁道号增加的方向移动,最接近的就是110,然后一直到楼顶195之后一起把剩余楼层的人载下去。
也就是:
110-->170-->180-->195(上楼)
195-->68-->45-->35-->12(下楼)已经被调度的就没必要再次调度了。
某文件占10个磁盘块,现要把该文件磁盘块逐个读入主存缓冲区,并送用户区进行分析。假设一个缓冲区与一个磁盘块大小形同,把一个磁盘块读入缓冲区的时间为100μs,将缓冲区的数据传送到用户区的时间是50μs,CPU对一块数据进行分析的时间为50μs。在单缓冲区和双缓冲区结构下,读入并分析万该文件的时间分别是(1550us,1100us )。
这个就是要知道哪些是串行操作,哪些可以并行操作。
对单缓冲器:磁盘写入和读出到用户区的操作必须串行执行。
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.
某系统中,一个FCB占用32B,盘块大小为1KB,文件目录中共有3200个FCB,查找该目录中的一个文件,平均启动磁盘次数为(50 )
分析:平均需要调入盘块N/2次,N位目录文件所占用的磁盘块数。
一个FCB占32B,文件目录中有32000个FCB,也就是占32*3200,盘块大小为1kB,所以所占的磁盘块数就是3200*32/1024=100个,平均调入就是50次
如果利用200行,30列的位示图来标志盘块的使用情况,在进行盘块分配时,当第一次找到的空闲盘块(即该位为0)处于11行,18列,则相应的盘块号为( 348)。(假设行号、列号、盘块号皆从0开始编号。)
这个我感觉就是上学期数据结构里面的地址的计算,只说按顺序扫描,应该是行优先存储的,那这个就好办了,根据题目的要求可以知道,(11,8)对应的行的元素就是(11-0)*30,列上面还有(18-0)个,总共就是0+(11-0)*30+18=348;(因为行号、列号、盘块号都是从0开始的),盘块号就类似基址,从0开始存储元素的。
若采用位示图(100行,32列)表示磁盘块的使用状态。当分配一个盘块号133号时,其在位示图中的行、列数为( 4和5)。(注:行号0~99,列为0~31,首盘块号为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.
某操作系统的文件系统中,采用3个字节表示磁盘块号,每个磁盘块大小为512字节。该系统中每个(逻辑)磁盘允许的最大容量是( 8G)字节。
最开始看到的时候发现这个几G也太大了吧,用2的3次方乘以512都没这么大,里面也没有其他数字了,后面仔细看发现人家说的是3个字节,不是3位,所以应该是3的24次方个盘块乘以512字节,也就是2的33次方个字节就等于8G.
这个还不太完整,然后有错误希望大家能够指正,可能是太简单了,网上都没有相关解析。-_-
对了,今天是六一儿童节。
祝大家儿童节快乐。