[OS]1.4 multiprogramming batched systems

Spooling 提供一個重要的資料結構:job pool。Spooling 會導致被讀入並在硬碟等待的工作將準備執行。在硬碟中的"一池"工作將允許os在增加cpu的利用下去收集接下來的工作。當工作直接從卡片或磁帶進來,工作順序也不會被改變,除了硬碟這種由電腦直接存取的。

        工作排程最重要的方面是multiprogram的技能。Off-lime跟spooling有他們的極限。一個使用者是沒辦法讓cpu跟I/O一直保持忙碌。Multiprogramming藉由分配工作增加cpu利用,如此一來cpu總是可以有東西執行。

        點子是這樣來的:OS一次在記憶體保留許多工作。把記憶體的工作當作一個工作池的子集合。當作業系統開始執行其中一個工作,這個工作也許會執行到需要等待一個task完成,像是帶子的掛載、鍵盤上命令的輸入或I/O操作的完成。如果是nonmultiprogramming system,cpu這時候就閒置了;如果是multiprogramming system ,這時cpu會轉去執行其他工作。如果工作又需要等候其他task完成,就再轉到其他工作,如此繼續下去。最後最一開始沒有執行完的工作會拿回cpu控制權。只要一直有工作執行,cpu就不會閒置。

        這個點子很快在其他life situation變得廣泛。律師一次不會只有一個客戶。

        multiprogramming是第一個在例子中OS必須為了使用者做出判斷。

        工作池(Job Pool)是存放在輔助記憶體內並等待配置(Allocate)主記憶體的所有工作的集合。若有很多個工作存在輔助記憶體(硬碟)內,準備被放入主記憶體內,但因主記憶體的空間不夠,O.S.必須從中選擇一些來放入主記憶體,這種選擇工作由「長程排班程式」(job scheduling)來做。當主記憶體內有多個工作時,就需要有好的「記憶體的管理」,以提高電腦系統的效能。若在主記憶體內同時有多個工作準備要執行(取得CPU),就要從中選出一個工作來,此工作由「短程排班程式」或稱為「CPU排班程式」來做。   

留言

熱門文章