1. 程式人生 > >作業系統的作業管理和使用者系統

作業系統的作業管理和使用者系統

2.1 作業的組織和管理

2.1.1 作業和作業處理過程

作業是使用者在一次算題過程中或一個事務處理過程中要求計算機系統所做工作的總和,它是使用者項計算機系統提交一項工作的基本單位

根據作業處理方式的不同,作業分離線作業和聯機作業兩大類

作業的組成: 包括程式,資料,作業控制資訊三部分

作業的處理過程:

  • 輸入: 使用者將自己的程式和資料提交給系統的後援儲存器
  • 後備: 建立作業控制塊,加入後備作業佇列,等待排程
  • 執行: 被成功排程,分配資源,建立一組相應的程序
  • 完成: 當作業正常執行結束或因發生錯誤而終止時,作業進入完成狀態,退出系統

2.1.2 作業的輸入/輸出方式

聯機輸入/輸出: 由主機直接控制,由於主機和外設的速度相差懸殊,從而降低了CPU的利用率

離線輸入/輸出方式: 由外圍處理機控制,人工干預,但手工操作效率低

SPOOLing系統: 利用儲存裝置來模擬獨佔裝置的操作,使得一臺獨佔裝置程式設計多臺可並行使用的虛擬裝置. 他由主機和相應的通道共同承擔作業的輸入輸出工作,利用磁碟做後援儲存器,實現外圍裝置同時聯機操作

2.1.3 作業控制塊

作業控制塊是作業存在的唯一標誌,是系統為管理作業所設定的一個數據結構. 也包括該作業的表示資訊,狀態資訊,排程引數,資源需求和其他控制資訊.

作業後備佇列就是按照某種原則將後備作業的JCB排成的一個或多個序列,以便作業排程

2.1.4 作業排程

在一些作業系統中,一個迆從提交到完成需要經過高階,中級和低階三級排程

  • 高階排程: 即作業排程,選擇後備作業,為其建立程序,並使其進入主機
  • 中級排程: 即對換排程,決定程序在記憶體和輔存檔交換區間的對換
  • 低階排程: 即程序級排程,決定哪個程序可以佔用CPU,進入執行狀態

常見作業排程演算法

對於單道批處理系統常用以下三種演算法

  1. FCFS(先來先服務排程演算法): 每次從後備作業佇列中選擇隊首的一個作業,將它調入記憶體,為它分配資源,建立程序開始執行
  2. SJF(最短作業時間排程演算法): 時間短的作業優先被執行,優先降低作業的平均等待時間
  3. HRP(最高相應比優先排程演算法): 優先排程響應比高的作業

響應比RP=作業響應時間/作業估計執行時間=(作業估計執行時間+作業等待時間)/作業估計執行時間=1+作業等待時間/作業估計執行時間

對於多道批處理系統常用以下兩種演算法

  1. 優先順序排程演算法: 時間要求緊迫的作業獲得高優先順序
  2. 均衡排程演算法: 根據系統的執行情況和作業本身的特性對作業進行分類. 作業排程程式輪流地從這些不同類別的作業中挑選作業執行. 這種演算法力求均衡地使用系統的各種資源

作業排程演算法的效能分析

1) 單道批處理系統下作業排程系統

設有四個作業,其提交時刻、執行時間如下表所示

我們定義:

週轉時間=完成時間-提交時間
週轉係數=週轉時間/執行時間

那麼對於FCFS,順序為1,2,3,4

對於SJF,順序為1,3,4,2

對於HRP,順序為1,3,2,4

這裡對這個例子進行解釋,當1執行完時時間為10,那麼此時對剩下提交時間在10之前的作業2,3,4計算RP.

RP = 1 + (完成時間-提交時間)/執行時間

所以RP2 = 4, RP3 = 11, RP4 = 3.5

取最大的RP=3,所以接下來就應該選擇3. 剩下的2,4依此類推

2) 多道批處理系統下作業排程系統

假設我們有一個具有兩道作業的批處理系統,作業排程採用短作業優先排程演算法, 作業進入記憶體後,採用搶佔式排程演算法, 即作業執行時間越短, 其對應產生的優先數越大.

我們來對其進行分析

  1. 10.00,作業1進入記憶體,只有這一個作業,所以它投入執行
  2. 10.05,作業2進入記憶體,兩個作業中,作業1剩下了25分鐘,作業2剩下了20分鐘,所以作業2開始執行
  3. 10.10,作業3提交,但是由於雙道系統已經被佔滿,所以作業3等待
  4. 10.20,作業4提交,但是由於雙道系統已經被佔滿,所以作業4等待
  5. 10.25,作業2結束,作業4時間短於作業3,所以優先進入記憶體. 又由於作業4時間短於作業1,所以作業4開始執行
  6. 10.35,作業4結束,作業3進入記憶體. 由於作業3時間短於作業1,所以作業3開始執行
  7. 10.55,作業3結束,作業1開始執行
  8. 11.20,作業1結束

2.3 系統功能呼叫

系統呼叫是作業系統提供給軟體開發人員的介面,開發人員可利用它使用系統功能,使用者在編寫程式時使用作業系統提供的系統功能呼叫。

計算機系統中的程式大體上分為系統程式和使用者程式,前者是後者的管理者。為了便於管理,引入了管態(作業系統程式執行的狀態)和算態(使用者程式執行的狀態)

特權指令: 只能在管態下執行的執行的特殊的指令

常見的特權指令有如下幾類:

  • 傳送程式狀態字的指令
  • 啟動、測試和控制外設的指令
  • 存取特殊暫存器的指令

訪管指令: 能夠使計算機從算態進入管態,並向作業系統提出要代為完成的工作. 作業系統完成工作後應返回到原來的算態

系統功能呼叫就是使用者在程式中用訪管指令呼叫由作業系統提供的子功能集合。有時把其中的每一個子功能稱為一條廣義指令。

系統呼叫與一般過程呼叫的區別

  1. 執行在不同的系統狀態:一般的過程呼叫,其呼叫和被呼叫的過程都執行在同一狀態下,即管態或目態;而系統呼叫的呼叫過程是使用者程式,執行在使用者態,其被呼叫過程是系統過程,執行在系統態。
  2. 進入方式不同:一般的過程呼叫可直接由呼叫過程轉向被呼叫過程;而執行系統呼叫時只能通過軟中斷機制,先進入作業系統核心,才能轉向相應的處理程式。
  3. 返回問題:一般的過程呼叫,當被呼叫過程執行完後,將返回到呼叫過程繼續執行。然而在採用搶先式排程的系統,在系統呼叫返回時,要進行重新排程的檢查―是否有更高優先順序的任務就緒。
  4. 巢狀或遞迴呼叫:對系統呼叫,一般不允許在同一個程序中發生巢狀或遞迴(不同程序可以重入同一個系統呼叫)。

系統呼叫的功能

  • 裝置管理:裝置的讀寫與控制
  • 檔案管理:檔案讀寫、檔案控制和檔案保護
  • 程序控制:建立、終止、暫停等控制
  • 程序通訊:訊息佇列、共享儲存區、socket等通訊渠道的建立、使用和刪除
  • 儲存管理:記憶體的申請和釋放
  • 系統管理:設定和讀取時間、讀取使用者和主機標識等