操作系统复习第三章

操作系统复习第三章

标签(空格分隔): 操作系统


一、处理机调度

1.处理机调度的层次

  • 高级调度(长程调度,作业调度):对象是作业,从后备队列中按照一定的算法选出作业进入内存,并为其分配需要的资源,插入就绪队列。
  • 低级调度(短程调度,进程调度):对象是进程,从就绪队列中按照一定的算法选出进程分配CPU,进入执行状态。
  • 中级调度(内存调度):把内存中暂时不能运行的进程调出外存等待。也就是储存器中的对换功能。
周转时间:从作业被提交给系统开始,到作业完成为止的这段时间。
        周转时间=作业结束的时间-作业提交的时间
        
周转时间包括作业在后备队列中等待的时间、在就绪队列中等待的时间、进程运行的时间、i/o设备输入输出的时间。
平均周转时间:总的周转时间/作业数
带权周转时间:周转时间/服务时间(也就是预计这个作业运行的时间)
平均带权周转时间:总的带权周转时间/作业数

二、作业调度

1.作业:作业=进程加上作业说明书
2.作业控制块(JCB):和进程控制块差不多作用的东西。
3.作业调度算法:

  • 先来先服务作业调度算法(FCFS):哪个作业先到就先给它分配CPU进入执行状态。
  • 短进程优先作业调度算法(SJF):短进程优先被调度,这个调度算法的平均周转时间是最短的。
  • 优先级作业调度算法(PSA):对于紧迫的作业优先调度。
  • 高响应比优先调度算法:考虑了作业的等待时间和作业的运行时间的调度算法。
优先权=1+作业等待时间/作业运行时间
根据这个计算作业的优先权,优先权是动态的。

 - 当运行时间相同时,等待时间越长的进程优先权越高
 - 当等待时间相同时,作业越短优先权就越高
 - 对于长作业,随着等待时间的增长,优先权增高

三、进程调度

1.进程调度方式:

  • 抢占式
  • 非抢占式

2.进程调度算法:

  • 轮转调度算法(RP):设置一个时间片,一个时间片内运行一组进程,如果进程提前运行完,就进行下一组进程执行;如果时间片结束还没运行完,就把剩余的进程插入到就绪队列的尾部。
  • 优先级调度算法

四、死锁

1.死锁:如果一组进程里的每个进程都在等待该进程组里的其他进程才能发生的事件,则发生死锁。
2.死锁的条件:

  • 互斥条件
  • 请求和保持条件
  • 不可抢占条件
  • 循环等待条件

3.处理死锁的方法

  • 预防死锁:通过一定的方法,破坏死锁的四个条件中的一个或者多个条件来预防死锁。
  • 避免死锁:不提前预防,而是在进程运行过程中的动态分配资源的时候通过一定的办法,避免进程进入不安全状态。
  • 死锁检测:可以允许进程进入不安全状态,但会检测出死锁,并采取一定的措施处理死锁。
  • 死锁处理:通过结束进程等方法处理死锁

4.预防死锁:
(1)破坏请求和保持条件

  • 第一种协议:在给进程分资源的时候一次性把资源都分给他,如果不能够全部分,则进程继续等待,这样就不会在中途请求。
  • 第二种协议:在进程执行的过程中,逐渐释放已使用完的资源,之后再申请资源。

(2)破坏不可抢占条件
当一个进程占用不可抢占资源时候,在请求资源得不到满足的情况下,释放所占用的资源。

(3)破坏循环等待条件

5.避免死锁
(1)安全状态:系统按照某种顺序推进顺序为每个进程分配资源,直至满足每个进程所需资源的最大值,使每个进程可以顺利完成。
安全状态下肯定不会死锁,但是不安全状态下不一定会死锁
(2)银行家算法:
数据结构:

  • 可用资源向量Available:表示各种资源的现在还有的数量
  • 最大需求矩阵Max:表示每个进程对各个资源的最大需求量
  • 分配矩阵Allocation:表示已经分配给每个进程的各个资源的数量
  • 需求矩阵:表示每个进程还需要各个进程的资源的数量

银行家算法:
(3)安全性算法

提出一个资源申请request
1.把request和need做比较

 - 如果request<need表示正常,向下执行
 - 如果request>need表示申请的资源大于所需的资源,请求错误
 
2.request与available比较
 - 如果request<available,向下执行,反之错误

3.尝试分配资源:
available=available-request;
need=need-request;
allocation=allocation+request;

4.执行安全性算法,判断分配资源之后是否处于安全状态,如果安全则真正的分配资源;反之,这次资源分配作废,回到初始状态。
  • Work工作向量:表示系统能分配的各个资源的数目,初始值等于Available向量的值。
  • Finish:表示是否有足够的资源分配给进程,初始为Finish(false),如果有足够的资源则变成Finish(true)
按照顺序给进程分配资源:
1.找到一个进程满足下列条件
 - finish是false
 - need<=work(也就是有足够的资源分配给进程)
2.被分配资源的进程,能顺利执行,执行结束释放资源,则
 - work=work+Allocation
 - finish(true)
 再执行1
>>>>如果进程的finish都为true表示有一个安全序列,表示处于安全状态

eg:
操作系统复习第三章_第1张图片
解题过程:
操作系统复习第三章_第2张图片
操作系统复习第三章_第3张图片

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