天天看點

作業系統筆記【作業管理與使用者接口】(一) 作業的基本概念(二) 作業的建立(三) 作業的排程(四) 使用者接口(五) 系統調用

(一) 作業的基本概念

(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 由使用者态轉為系統态
  • 傳回問題
  • 一般調用過程在被調用過程執行完畢後,直接傳回調用過程;系統調用,在被調用過程執行完畢後,必須首先對系統中所有要求運作的程序進行優先級分析