操作系统(复习)

第一章  选择题

第二章(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(单向电梯,只向上或只向下)

你可能感兴趣的:(操作系统(复习))