1. 程式人生 > >第三章 處理機排程與死鎖(一)

第三章 處理機排程與死鎖(一)

3.1 處理機排程的層次和排程演算法的目標

1.系統執行並不一定存在高階排程

批處理系統有作業排程,分時系統和實時系統不需要作業排程。

2.引入中級排程的主要目的是,提高記憶體利用率和系統吞吐量,根據條件將一些程序調出或再調入記憶體。

3.排程程式也是程式。

4.排程原則:

  • 面向使用者的準則;
  • 面向系統的準則。
4.1 面向使用者的準則
  • 平均週轉時間短
  • 響應時間快
  • 均衡性
  • 截止時間的保證
4.2 面向系統的準則
  • 系統吞吐量高
  • 處理機利用率高

5.CPU處理時間Ts

週轉時間T=Ts+Tw
帶權週轉時間W=T/Ts
平均帶權週轉時間和平均週轉時間為n個作業求平均。

3.2 作業與作業排程

1.排程佇列模型

  • 僅有程序排程的排程佇列
  • 具有高階和低階排程的排程佇列模型
  • 同時具有三級排程的排程佇列模型
1.1 僅有程序排程的排程佇列模型
  • 分時系統
  • 排程處於就緒狀態的程序
  • 棧、樹、無序連結串列
  • 分時系統中把就緒程序組織成FIFO佇列形式:按時間片輪轉方式執行
1.2 具有高階和低階排程的排程佇列模型

批處理系統中,還需要作業排程。

1.3 引入中級排程後,資料在內外存間互換。

就緒狀態:分為記憶體就緒和外存就緒
阻塞狀態:分為記憶體阻塞和外存阻塞

2.先來先服務排程演算法

  • 新作業只有當程序執行完或被阻塞才會執行。
  • 有利於CPU繁忙型(利用CPU時間長)的作業,而不利於I/O繁忙(利用CPU時間短)的。
  • 帶權週轉時間越高,則越不佔優勢。

3.高響應比優先排程演算法

  • 優先權=(等待時間+要求服務時間)/要求服務時間
    =響應時間/要求服務時間
  • 等待時間越長,優先順序越高。
  • 同時到達的作業優先權相同,為1。

3.3 程序排程

1.排程程式的任務職能:排程和分派

  • 記錄系統中所有程序的有關情況(記錄在PCB中)
  • 確定分配處理機的原則(演算法)
  • 分配處理機給程序
  • 從程序收回處理機
    3和4為儲存、更新CPU現場(PCB中程序佇列處理)。

2.程序排程描述工具:Gantt(甘特)圖

3.排程程序

  • 上下文切換程式
  • 分配程式(分派器)
  • 佇列管理程式(排隊器)

4.非搶佔方式的程序排程時機:程式完成、發生某事件阻塞

5.搶佔方式搶佔時間點:作業完成時、作業阻塞時、新作業來時、時間片結束時(根據演算法細節而定)

6.輪轉法程序阻塞時,未用完時間片也要讓出CPU。

7.搶佔方式、優先權原則

問題描述:現有三個程序P1、P2、P3,優先順序由高到低分別為P1、P2、P3,三個程序所需佔用資源如下,請按資源角度為程序排序
P1:I/O2 30ms,CPU 10ms,I/O1 30ms,CPU 10ms,I/O2 10ms
P2:I/O1 20ms,CPU 20ms,I/O2 40ms
P3: CPU 30ms,I/O1 20ms
在這裡插入圖片描述
CPU就緒佇列中按優先順序排序。
I/O裝置無資源搶佔,無優先順序。

3.4 實時排程

1.實時系統指系統能夠在限定響應時間內提供所需水平的服務。

2.硬實時任務能滿足實時任務對截止時間的要求。

3.軟實時任務:聯絡著一個截止時間,但不嚴格,可偶爾錯過,不會對系統造成大的影響。

4.最低鬆弛度優先LLF演算法

  • 搶佔時間點:程序執行完、程序I/O阻塞、新程序出現時可能搶佔、某程序鬆弛度為0時發生搶佔(根據題意有時候如此,不同事件不同)
  • 鬆弛度=必須完成時間-其本身的執行時間-當前時間
    =截止完成時間-還需執行時間-當前時間(時間實為時刻)
  • 搶佔與否與演算法基本實現有關。

3.5 死鎖概述

1.當程序處於死鎖狀態時,若無外力作用,它們都無法再向前推進。

2.資源分類

  • 可剝奪性資源和非可剝奪性資源
  • 永久性資源和臨時資源

3.產生死鎖的必要條件:

  • 競爭資源
  • 程序間推進順序非法