sdut 操作系统CATS s1-s6题解
s1- PV操作
题干注意点:
- 哪个进程优先级高
- 抢占式还是非抢占式
非抢占式中V操作无效
做题方法:
给一个新做法,如果理解后,就不需要记忆了,后面有原始方法
将信号量等价于进程锁
将信号量的值等价于进程锁的数量(信号量为负数时,表示有正在等待系统分配给他锁的进程)
则:
- P操作:申请锁
如果系统有锁,进行P操作,系统锁的数量会减少1
如果系统没锁,进行P操作,进程则会等待(为了展示有进程正在等待获取锁,信号量依旧会减一)。 - V操作:生产锁
如果有线程等待获得锁,则V操作,会优先将锁分配给等待进程,
如果没有等待进程,则V操作,将锁给操作系统
原始方法
流程图:
实现伪代码
//自我wait P(semaphore *S){ S->value--; if (S->value<0) block(S->list); } //signal他人 V(semaphore *S){ S->value++; if (S->value<=0) wakeup(S->list); }
s2 - 时间片轮转算法
rr=1时
做题方法:
重要的写出甘特图
(可以用甘特图的最后时间=所有服务时间之和, 验证甘特图是否正确)
甘特图的写法:
....略过吧,回来手写
周转时间(T) = 完成时间(F) - 到达时间(A)
周期(W) = 周转时间(T) / 服务时间(S)
rr=x(x>1)时
和rr=1不同的是:
每次使用x时间(如果该进程剩余的时间<x,则处理完该进程)。
注意:每次使用x时间时,甘特图的时间间隔也是x,不是1
做题方法:
注意点
- 表格中的Wr可以用分数表示,减少错误率。
- 最后的T和W一定保留2位小数
- 可以用甘特图的最后时间=所有服务时间之和, 验证甘特图是否正确
s3 - 银行家算法
注意点
循环扫描方法的方向时不是p0->p4
- 验证方法:如果计算正确最后一个Work+Allocation=全部资源总量
每个变量的含义:
上面的表:
Max:每个进程需要的的全部的资源
Allocation: 已经分配给每个进程的各种资源数
Need: 还需要分配给每个进程的资源数
Available: 系统还有的各种资源数目
下面的表:
Work=Available:表示系统还剩下的资源数
Work+Allocation:表示执行完该进程后,系统还剩下的进程数
做题方法:
对于每个进程Need = Max-Allocation
对手每种资源Available=Resource-sum(Allocation)
其余的就是按照名字提示写吧。
s4 - 页面置换算法
CATS 默认值:
最上面的块,是最低地址物理块
最下面的块,是最高地址物理块
附加一个概念:
clock
题目注意点:
- 是否采用clock算法
替换指针NF开始指向的物理块是什么
截图的题就比较坑,开始指向最高地址的物理块- 系统给进程分配多少个物理块,
是否有页面已经装入,如果有他们的访问位是什么
- 是不是低物理地址优先
最后一个空,是填依次被置换的页面,还是最后一次页面及其访问位
做题方法:- 无论如何指针
每次都只移动一个物理块
- 如果访问到了某页面x
-
- 如果物理块里面有,则
将该块访问位设置为1
(之前是1,也设置为1)
- 如果物理块里面有,则
-
- 如果物理块里面没有
如果指针指向的物理块访问位为1,则将访问位设置为0,指针下移
如果指针指向的物理块访问位为0,则将页面x放入物理块且将该块访问位设置为1,指针下移
如果指针指向的物理块为空,,则将页面x放入物理块且将该块访问位设置为1,指针下移
- 如果物理块里面没有
Optimal(最佳置换算法)
题目注意点:
- 是否采用Optimal算法
- 系统给进程分配多少个物理块,是否有页面已经装
- 是不是低物理地址优先
做题方法:
Optimal算法是指:每次淘汰未来最长时间内不访问的 / 以后永不使用的页面
- 如果有多个永不使用的页面,因为地物理地址优先,优先淘汰上面的块。
CATS 默认:最上面的块,是最低地址物理块
LRU(最近最久未使用置换算法)
题目注意点:
- 是否采用Optimal算法
- 系统给进程分配多少个物理块,是否有页面已经装
- 是不是低物理地址优先
做题方法:
给每个页面添加页面最后一次被访问的时间的字段T,因为优先淘汰最近最久没有使用的页面,也就是优先淘汰T最小的页面。
注意:
如果有页面没有被访问过,则优先淘汰没有被访问过的页面。
如果有多个页面没有被访问过,因为地物理地址优先,所以优先淘汰位于上面的页面。
s5 - 磁盘扫描算法
注意点:
ASL结果,一定小数点两位,四舍五入
CSCAN
做题方法:
CSCAN是指:一直按一个方向扫描。
就是说:如果是从大到小扫描,如果扫描完最小的磁道后,下一个是扫描队列中最大的磁道。
- 将队列建平衡二叉树。
- 按照题目给的顺序写入就行。
技巧:
建议查磁道号总数量的后,再检查一下自己写的序列的总数是否等于总数,在查自己序列总数时,顺便检查下自己队列是否是排好序的。
s6 - 文件索引
记住公式吧
本文作者:kingwzun
本文链接:https://www.cnblogs.com/kingwz/p/16274949.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步