1. 程式人生 > >2.5.5 作業和程序的關係

2.5.5 作業和程序的關係

程序是系統資源的使用者,系統的資源的大部分都是以程序為單位分配的。而使用者使用計算機是為了實現一串相關的任務,通常把使用者要求計算機完成的這一串任務成為作業。

(1)批處理系統中作業與程序的關係(程序組織)

批處理系統中的可以通過磁記錄裝置或卡片機向系統提交批作業,由於系統的spooling輸入程序將作業放在磁碟的輸入井中,作為後備作業。作業排程程式(一般也作為獨立的程序執行)每當選擇一道後備作業執行時,首先為該作業建立一個程序(稱為該作業的根程序)。該程序將執行   作業控制語言   解釋 該作業的 作業說明書。父程序在執行過程中可以動態地建立一個或多個子程序,執行說明書中的語句。例如,對一條編譯的語句,該程序可以建立一個子程序執行編譯程式對使用者源程式進行編譯。類似地,子程序也可以繼續建立子程序去完成指定的功能。因此,一個作業就動態地轉化成了一組執行實體---程序族

。當父程序遇到作業說明書中的“撤出作業”的語句時,該作業從執行狀態改變為完成狀態,將作業及相關結果送入磁碟上的輸出井時。作業終止程序撤除一道作業後,可向作業排程程序請求進行新的作業排程。至此,一道進入執行的作業全部結束。

(2)分時系統中作業與程序的關係

在分時系統中,作業的提交方法,組織形式均與批處理作業有很大差異。分時系統的使用者通過命令語言逐條與系統應答式地輸入命令,提交作業步。每輸入一條(或一組)命令,便直接在系統內部對應一個(或若干個)程序。在系統啟動時,系統為每個終端裝置建立一個程序(稱為終端程序),該程序執行命令解釋程式,命令解釋程式從終端裝置讀入命令,解釋執行使用者輸入的每一條命令。對於每一條終端命令,可以建立一個子程序去具體執行。若當前的終端命令是一條後臺命令,則可以和下一條終端命令並行處理。各子程序在執行過程中完全可以根據需要建立子孫程序。終端程式所對應的程序結束後,命令的功能也相應處理完畢。使用者本次上機完畢,使用者通過一條登出命令即結束上機過程

分時系統的作業就是使用者的一次上機互動過程,可以認為終端程序的建立是一個互動作業的開始,登出命令執行結束代表使用者互動作業的終止。

命令解釋程式流程扮演著批處理系統中作業控制語言的角色,只不過命令解釋程式是從使用者終端接收命令的。

(3)互動地提交批作業

在同時支援互動和批處理的作業系統中,人們可以用互動的方式準備好批作的有關程式,資料及作業控制說明書。比如,可用互動式系統提供的全屏編輯命令編輯好自編的一個天氣預報程式, 用編譯及裝配命令將程式變成可執行檔案,用除錯程式進行程式除錯。在除錯成功後,使用者每天都要做如下工作:準備原始天氣資料,執行天氣預報執行檔案處理原始資料,把結果打印出來等。這時,用互動系統提供的全屏編輯命令編輯好將要提交的作業控制說明書檔案,如windows系統BAT檔案和linux系統的sh檔案。然後用一條 作業提交命令將作業提交給系統作業佇列中。系統有專門的作業排程程序負責從作業佇列中選擇作業,為被選取的作業建立一個父程序進行命令解釋程式,解釋執行作業控制說明書檔案中的命令。