缺页问题
先进先出 - FIFO
- 如果不存在,替换掉最长的
最佳置换算法 - OPT
- 被淘汰的页面将是在未来最长时间内不再被访问的页面
最近最少使用 - LRU
- 在左边离他最远的
例题
- 例1:
计算物理地址
- 求出页号
- 对照页表
- 计算地址
例题:
- 例1:
- 例2:
银行家算法
- 判断系统是否死锁
- 提供安全序列
判断在T0时刻的安全性
- 因为这5个进程都是可以执行的,所以这个系统是安全的
- 如果让给安全序列,就是
P1 P3 P4 P2 P0
- 只要最后算出来的是10 5 7,和题目中给的是一样的,就证明你没有算错
一个英文例题:计算安全序列
XX请求资源
- 如果P1请求资源成功了,以后再请求资源,就不能用最上面那张表做了,得用更改后的表来做
磁盘调度
先来先服务 - FCFS
- 将到达时间顺序抄下来
- 磁头移动顺序就是:读写磁头最初位于柱面值 + 到达时间
最短寻道时间优先 - SSTF
- 看跟谁近就移动到谁
扫描算法 - SCAN
循环扫描算法 - C-SCAN
例题:
- 例1:
- 例2:
进程调度
- 等待时间 = 开始时间 – 到达时间
- 周转时间 = 结束时间 – 到达时间
- 带权周转时间 = 周转时间 / 执行时间
先来先服务 - FCFS
短作业优先 - SJF
- 非抢占:
- 抢占:
高相应比优先 - HRRN
例题:
- 先来先服务
- 优先级调度算法:
- 时间片轮转算法:
到某一个任务执行结束的时候停
- 短进程优先调度算法:
有效访问时间EAT
吃水果问题
- 例1:
struct semaphore s, sp, so = 1, 0, 0; begin void father(void){ while(TRUE){ have an apple; P(s); put an apple; V(sp); } } void mother(void){ while(TRUE){ have an orange; P(s); put an orange; V(so); } } void son(void){ while(TRUE){ P(so); get an orange; V(s); eat an orange; } } void daught(void){ while(TRUE){ P(sp); get an apple; V(s); eat an apple; } }
- 例2:
int S=1; int Sa=0; int So=0; main( ) { cobegin father(); son(); daughter(); coend } father() { while(1) { P(S ); 将水果放入盘中; if (放入的是桔子) V(So); else V(Sa); } } son( ) { while(1) { P(So); 从盘中取出桔子; V(S); 吃桔子; } } daughter( ) { while(1) { P(Sa); 从盘中取出苹果; V(S); 吃苹果; } }
文件相关
例题:
- 例1:
- D中没有A,故可以
- 不可以
- 例2:
- 例3:
进程
例题:
- 例1:
- 例2:
- 例3: