[OS]1-3-1.resident monitor

      但這仍然有些問題。舉例來說,當一個工作停止了,操作者必須觀察命令列,測知程式為何停止,如果有需要還必須作一個轉儲的動作,接者載入下一個工作所需要的裝置然後重新啟動電腦。當工作從這到下一個的轉換時,cpu是閒置的。
       為了克服這個閒置時間,人們發展automatic job sequencting。利用這個技術,第一個rudimentary (早期;初步)操作系統被創造出來了,這個程序被要求自動轉換控制權從一個工作到下一個工作。這個小程式,被叫作resident monitor (常駐監督程式),這個程式總是常駐在記憶體裡。
      當電腦被開啟,這個resident monitor會被invoke(喚起),接著轉換控制權到某程式。當這程式終止了,這程式會將主控權歸還給resident monitor,接著重複一樣的動作給下一個程式。此時這個resident monitor將自動把工作一個接著一個排序。
     但是resident monitor是怎麼知道要執行哪一個程式呢?早在這之前,operator早得到一個簡短的指示,告知什麼資料要被什麼程式執行。如此一來,這些資訊可以直接提供到我們螢幕跟我們介紹過的控制卡片。In addition to 工作需要的程式、資料,程式設計者包入因含有常駐監控程式指令故可以引導程式執行的特別卡片。舉例來說,一個正常的使用者程式也許需要fortran編譯器、組譯器或使用者程式其中之一的執行。我們分別使用一張控制卡片:
$FTN-執行frotran編譯器
$ASM-執行組譯器
$RUN-執行使用者程式
這些卡片告訴resident monitor該執行哪一個程式。
        我們可以使用兩個額外的控制卡片來定義每個工作的上下限:
$JOB-一個工作的第一張卡
$END-一個工作的最後一張卡
這兩張卡在指派要提供給試用者的機器資源時,將會很有用處的。參數可以被用來定義工作名稱。其他控制卡片可以被其他函數給定義,像是詢問operator要載入或卸載一個tape。
     這裡提出一個關於控制卡片的問題:要如何辨識資料跟程式卡片呢?比較一般的解決方式是經由卡片上的特殊字元或字符辨識出來。許多系統使用第一個欄位的dollar-sign character($)來辨識一張控制卡片;IBM's Job Control Language(JCL)使用前兩個欄位的(//)
     一個resident monitor此時有許多可以被辨識的部份。其中之一像是control-card interpreter是負責讀取和按照卡片中執行點的指示實行(carry out)。control-card interpreter在間隔間喚起載入器來載入系統程式和應用程式到記憶體中。此時載入器會成為resident monitor的一部分。control-card interpreter和載入器都需要執行I/O,所以resident monitor會有一套系統I/O裝置的裝置驅動。通常來說,系統跟應用程式會被連結到一些相同的裝置驅動,在執行中不斷被提供,而且節省記憶體空間和程式執行時間。
     這樣的batch OS執行的很好且公平。resident monitor經由控制卡片提供automatic job sqeuencing來指示。當控制卡片指示一個程式執行,monitor載入程式到記憶體中,且轉移控制權給此程式。當程式完成,它歸還控制權給monitor,接者monitor讀取下一個控制卡片並重複動作。這個循環將重複直到該工作所有的控制卡片都被使用過了。
   一個batch OS,通常讀取不同工作群的串流。
  batch OS的明確特色是當工作執行時不太需要使用者跟工作的互動。工作本身往往是被準備的而且被提交的。於是經過一段時間,輸出會自然出現。job submission(工作提交)和job completion的延遲也許會因為大量的運算需求或os延遲開始執行工作而發生。

留言

熱門文章