作業管理與用戶接口【操作系統筆記】

(一) 作業的基本概念

(1) 用戶的角度

首先,看一張流程圖,順着這個圖我們簡單理解一下

所以我們可以從用戶的角度這樣理解作業:作業就是用戶一次請求計算機系統爲用戶完成任務所做工業的綜合

進而,在一個作業的處理過程中,計算機所做的每個相對獨立的工作就是,一個作業步,作業由不同順序的作業步組成。

補充理解:編輯(cpp)-> 編譯(obj)-> 鏈接(exe)

(2) 系統的角度

接下來,從系統的角度,可以將作業視爲程序、數據和作業說明書構成的整體,即:

作業程序 + 數據(作業體)+ 作業說明書(作業控制語言編寫)

其中,書寫作業說明書的語言稱爲作業控制語言(JCL),是用戶用於描述批處理作業處理過程控制意圖的一種特殊程序,例如批處理文件。

批處理系統中,作業是搶佔內存的基本單位,即以作業爲單位將程序和數據調入內存

(3) 作業組織

作業:程序、數據、作業說明書

作業說明書:作業基本情況、作業控制、作業資源

  • 作業基本情況:用戶名、作業名、編程語言、最大處理時間等

  • 作業控制描述:作業控制方式、作業步的操作順序、作業執行出錯處理

  • 作業資源要求描述:處理時間、優先級、內存空間、外設類型和數量等

(二) 作業的建立

作業的建立指的是一個作業的全部程序和數據輸入到外存且在系統中建立了相應的作業控制塊(job control block——JCB),也就是說,作業的建立包括

  • 作業的輸入

  • 作業控制塊的建立

(1) 作業的輸入

作業的輸入是將作業的程序、數據和作業說明書從輸入設備輸入到外存,並形成有關初始信息

在作業輸入時,需要外部啓動信號通知系統調用相應的輸入管理程序——決定了作業的輸入方式

A:聯機輸入方式

定義:外圍設備和主機直接連接的輸入方式

特點

  • 採用這種輸入方式時,單臺設備和主機連接,I/O 與作業處理不能並行,降低了 CPU 效率

  • 如果採用多臺外設同時聯機輸入,就構成了我們後面要介紹的 SPOOLING 系統

B:脫機輸入方式

定義:利用低檔個人計算機作爲外圍處理機進行輸入處理

這種方式下,主機與輸入設備不是直接連接,實現了脫機。具體地:在個人機上,用戶通過聯機方式將作業輸入到後援存儲器,然後將裝有輸入數據的後援存儲器拿到主機的高速外設上與主機連接

特點

  • 解決了主機 CPU 的浪費,以犧牲個人機爲代價;靈活性差,需人工干預介質傳送

  • 脫機輸入方式的一個示例如下圖所示

C:直接耦合方式:

定義:將主機和外圍低檔機通過一個公用的大容量外存直接耦合,如下圖

特點

  • 保留了脫機方式快速的優點,克服了其人工干預的缺點

  • 需要大容量公用存儲器和多臺低檔機,成本高

D:SPOOLING 系統

定義:假脫機(Simultaneously Peripheral Operation OnLine-同時外圍設備聯機操作)

這種輸入方式下的工作方式是:

系統把作業處理的全過程劃分爲相對獨立的三個部分——輸入流、處理流、輸出流

spooling-in/spooling-out 進程:控制輸入/輸出,包括輸入程序模塊、輸出程序模塊、作業調度程序

工作原理:

  • 作業執行前用慢速設備將作業預先輸入到後援存儲器(如磁盤、磁鼓,稱爲輸入井)中,稱爲預輸入

  • 作業運行後,使用數據時,從輸入井中取出

  • 作業執行不必直接啓動外設輸出數據,只需將這些數據寫入輸出井中

  • 作業全部運行完畢,再由外設輸出全部數據和信息,稱爲緩輸出

可見,這一過程表明,實現了對作業輸入、組織調度和輸出的統一管理,使外設在 CPU 直接控制下,與 CPU 並行工作。雖然主機與輸入設備沒有分離,卻具有了脫機的性質——假脫機

E:網絡輸入方式

當用戶需要在計算機網絡中某一臺主機上輸入的信息傳送到同一網絡中的另一臺主機上進行操作或執行時,即構成網絡輸入方式

(2) 作業控制塊的建立

作業控制塊(JCB)是在作業建立時系統根據作業說明書建立的

在運行過程中,JCB 是系統對作業進行管理的必要信息,主要包括:

  • 作業名

  • 估計執行時間

  • 優先數(用於調度)

  • 作業說明書文件名

  • 程序類型(需調用的系統程序)

  • 資源要求(靜態,或中間可以隨作業步變化)

  • 作業狀態(提交、後備、執行、完成)

A:作業的四個狀態:

  • 提交:作業由輸入設備進入外存的過程
  • 後備:提交完成後,系統建立JCB,作爲調度作業的依據,並將JCB 加入到後備作業隊列
  • 執行:一個後備作業由作業調度程序選中並調入內存中,分配相應的資源後爲其建立了相應的進程
  • 完成:當作業正常結束或因發生錯誤而終止時,作業進入完成狀態

B:作業控制塊(JCB)

系統爲每個作業建立了 JCB,該表格登記該作業所要求的資源情況、預計執行時間和執行優先級
包括:

  • 作業名以及狀態
  • 資源要求
  • 作業控制方式

作用:

  • 作業的唯一標識

  • 通過 JCB 對作業進行控制和管理

JCB 的創建和撤銷:

  • 在作業進入後備狀態時,由作業註冊程序建立

  • 當作業執行完畢時,由作業終止程序撤銷

(三) 作業的調度

A:作業調度功能:

  • 建立 JCB
  • 按照調度算法從後備隊列中選擇作業運行
  • 爲選擇的作業分配資源並建立進程
  • 作業完成後,負責回收資源和該作業的 JCB

B:CPU利用率

  • CPU利用率=CPU有效工作時間/CPU總運行時間

  • 作業週轉時間Ti

    • = 作用i完成時間-作業i提交時間
    • = 作業運行時間Tri+作業等待時間Tdi
  • 作業平均週轉時間=(T1+T2+…+Ti+Tn) / n

  • 作業帶權週轉時間 Wi = Ti / Tri = 1 + Tdi / Tri

  • 作業平均帶權週轉時間 W = (W1 + W2 + … + Wn) / n

C:常用作業調度算法:

  • 先來先服務(FCFS)
  • 短作業優先(SJF)
  • 最高響應比優先(HRN)

R =(W + T)/ T= 1 + W / T

(四) 用戶接口

(1) 程序級接口

**程序級接口:**是系統爲用戶在程序一級提供有關服務而設置的,由一組系統調用命令組成

  • 負責管理和控制運行的程序

  • 在這些程序與系統控制的資源和提供的服務間實現交互作用

  • 用彙編語言:在程序中直接用系統調用命令

  • 用高級語言:可在編程時使用過程調用語句

例如:在 C 的編程中,使用到的一些系統調用函數(例如:fork() )就是程序級接口

注意:程序級接口只能在高級語言或彙編語言中作爲函數和過程被調用,而不能像一個命令那樣直接在系統提示符下輸入

這一部分會在 第五大點 再單獨介紹一下

(2) 命令級接口

用戶在 DOS 或 UNIX 文字界面的系統提示符下輸入命令,即使用了操作系統提供的命令級接口(操作級接口)

因此,操作級接口爲用戶提供了各種命令。
具體在使用時,用戶可以將一些命令通過 JCL 編寫作業控制程序提交給系
統,系統執行過程中用戶無法干預,這種方式可以視爲“批處理”。注意,這是
命令的批處理。

另一種更常見的方式是,用戶通過命令與系統對話,控制程序執
行和管理計算機系統(用戶直接參與控製作業執行)

  • 操作系統通過操作級接口提供的命令種類包括:
  • 環境設置:改變終端用戶所在位置、執行路徑等;
  • 執行權限管理:控制用戶訪問系統和操作文件的權限;
  • 系統管理:系統維護、開機關機、增加或減少終端用戶、計時收費等;
  • 文件管理:管理和控制終端用戶的文件;
  • 編輯、編譯、鏈接裝配和執行編輯命令;
  • 通信:主機 <–> 遠程終端、主機 <–> 主機;
  • 資源要求:用戶向系統申請資源。

此外,現在的 Windows、UNIX 圖形界面等操作系統爲用戶提供了圖形用戶接口,用戶通過鼠標點擊圖標、菜單、窗口等即可進行操作。但就其實質而言,點擊圖標實際上也是在執行一個命令。比如,點擊文件夾圖標,實際上相當於DOS 中的 cd 命令,點擊一個文件圖標,就是執行該文件的操作。因此,圖形用戶接口實質上也是操作級接口(命令接口)。

當然,在命令行方式下,用戶與操作系統的交互要求用戶記憶命令格式。在圖形用戶接口方式下,用戶可利用鼠標對屏幕上的圖標進行操作,完成與操作系統的交互,從而減少記憶內容,方便用戶使用。它的技術基礎是高分辯顯示器和鼠標

(3) 用戶接口總結

操作級接口(命令接口)提供給用戶直接在鍵盤終端上交互式地使用,程序級接口提供給用戶在編程時使用。

操作系統爲用戶提供兩個接口:

  • 一個接口是系統調用(程序級接口),編程人員使用系統調用來請求操作系統提供服務,例如申請和釋放外設等類資源、控制程序的執行速度等

  • 另一個是系統爲用戶提供的各種命令接口,用戶利用這些操作命令來組織和控製作業的執行或管理計算機系統

(五) 系統調用

(1) 基本概念

概念:提供了應用程序與操作系統之間的接口

作用:使用戶級程序方便獲得操作系統提供的服務,主要是與系統資源有關的服務都由操作系統提供

分類:進程控制、文件管理、設備管理、存儲管理、通信管理、線程管理

(2) 系統調用與普通過程調用的異同

A:相同點

  • 改變指令流程
  • 重複執行和公用
  • 改變指令流程後需要返回原處

B:不同點

  • 運行在不同的系統狀態
    • 一般過程調用,其調用程序和被調用程序都運行在相同狀態;而系統調用,調用程序在用戶態,被調用程序運行在系統態。
  • 通過軟中斷進入
    • 一般調用過程通過過程調用語句直接由調用過程轉向被調用過程,而系統調用必須通過系統調用指令,由軟中斷(陷入指令)轉向相應處理程序,CPU 由用戶態轉爲系統態
  • 返回問題
    • 一般調用過程在被調用過程執行完畢後,直接返回調用過程;系統調用,在被調用過程執行完畢後,必須首先對系統中所有要求運行的進程進行優先級分析

(六) 結尾

如果文章中有什麼不足,歡迎大家留言交流,感謝朋友們的支持!

如果能幫到你的話,那就來關注我吧!如果您更喜歡微信文章的閱讀方式,可以關注我的公衆號

在這裏的我們素不相識,卻都在爲了自己的夢而努力 ❤

一個堅持推送原創開發技術文章的公衆號:理想二旬不止

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章