第一章 选择题
第二章(25分)
一、进程同步
1、两个进程之间的关系:间接关系(两个进程共享一推数据)、直接关系(两个进程之间存在某种数据关系)
2、临界资源
一次只能分配给一个进程使用的资源(打印机、全局变量)
临界区:操作临界资源的那一部分代码
上述例子:临界资源:c
临界区:
临界资源控制机制:进入区、退出区
同步机制遵循规则:空闲让进、忙则等待、有限等待、让权等待(让出处理机的使用权)
3、信号量机制
整型信号量、记录型信号量、AND信号量、一般信号量、管程
记录型信号量(也称资源信号量)
信号量只能由两个原语操作:wait()也称P()原语、signal()也称V()原语
P()申请资源,value-1如果value<0,直接调用block原语阻塞
V()释放资源,value+1如果value<0,调用weak up()原语唤醒
semaphone mutex;
mutex.value = 1
mutex.list = null//严格来讲
实际类c语言描述:
semaphone mutex=1//但是1赋值还是给的是mutex.value
4、前趋图
用进程同步的方法来描述前趋关系
Semaphore a=b=c=d=e=f=g=0;
void P1(){S1;V(a);V(b);V(c); }
Void P2(){P(a);S2;V(d) ;}
Void P3(){P(b);S3;V(e);}
Void P4(){P(c);s4;V(f)}
Void P5(){P(d);P(e);S5;V(g); }
Void P6(){P(g);P(f);S6 }
Main()
{
Cobegin
P1();
P2();
P3();
P4();
P5();
P6();
coend
}
总结:
1)互斥信号量的初始值必须是1;
2)当信号量的值是负数时,其绝对值即为阻塞队列长度;
3)PV原语成对出现,可以分散在不同的进程中;
4)信号量的初始值>=0
**************讨论*******************
讨论:信号量的初始值,可以为负数吗?为什么?
信号量又称为资源信号量,资源初始时要么要么没有
不能是负的。
但是信号量的值是可以为负数的。
*********************************
5、生产者消费者问题
假设1)缓冲区的访问不受限制(不互斥)
信号量
Semaphore empty=n;
Semaphore full=0;
假设2)缓冲区的访问受限制(互斥)
6、银行家算法
7、调度算法
周转时间=完成时间-到达时间
带权周转时间=周转时间/要求服务时间
(1)FCFS(先来先服务算法)
(2)SJF(短作业优先算法)
8、页面置换算法
(1)最佳置换算法(置换前面最久不用的页面)
作用:是用来衡量现有置换算法优劣的一个标准,如果与最佳置换算法差别很大那说明此置换算法不好,如果差别很小说明此置换算法还行。而且没有别的算法比最佳置换算法计算的缺页率还低的算法
(2)FIFO(先进先出)置换:置换正好等于主存块数的页面
特例:增加主存块,缺页率不降反升的现象,belady现象
(3)LRU(看历史,置换最靠前的页面)
9、磁道调度算法求平均寻道长度
假设:当前磁头在100号磁道
磁盘请求序列:55,58,39,18,90,160,150,38,184
(1)FCFS(先来先服务)
优点:简单
缺点:没有考虑磁头移动距离,很伤磁头
(2)SSTF(最短寻道时间优先)
缺点:没有考虑用户的感受,会导致磁头的黏着现象,使得某些用户进程长时间得不到服务
(3)SCAN(电梯算法)
当前磁头仍在100号磁道,并向磁道号增加的方向移动
(4)CSCAN(单向电梯,只向上或只向下)