程序管理中最基本功能是程序控制。程序控制任務:程序的建立、終止、程序狀態的轉變等。程序控制一般由os核心來實現。
程序圖(樹狀結構)描述的是程序家族之間的關係,任何乙個程序可以產生它的子程序。子孫程序可以繼承父程序的資源,比如父程序擁有的資料、緩衝區、檔案。當子孫程序結束的時候,將資源歸還的父程序。
引起建立程序的事件。(1)使用者登入(分時系統,使用者登入後,建立程序);(2)作業排程(批處理作業系統);(3)提供服務(作業系統為使用者提供服務);(4)應用請求(由程序自己建立自己的子程序)。其中(1)(2)(3)由系統核心建立
程序的建立:create()原語 (1)申請空白pcb。(2)為新程序分配資源(資源清單寫在pcb中)。(3)初始化程序控制塊(程序的標誌資訊、處理機的狀態資訊、資源資訊),剛產生的程序處於就緒狀態。(4)將新程序插入就緒佇列。
pcb初始化 ①初始化標識資訊(給系統看的內部標識、給使用者看的外部標識)。②初始化處理機狀態資訊(通用暫存器:暫放資料、指令、指令計數器、psw使用者棧指標)。③初始化處理機控制資訊(置於就緒狀態)
引起程序終止的事件:1)正常結束
異常結束:①越界(超出記憶體訪問範圍)錯誤;②保護(對唯讀的檔案進行寫的操作等)錯誤;③非法指令;④特權指令錯誤;⑤執行超時;⑥等待超時;⑦算術運算錯(例如除0);⑧i/o故障
外界干預:①操作員或os干預;②被父程序終止;③父程序終止。如果父程序終止,則它的所有子程序都終止。
程序終止過程:從pcb集合中檢索(根據內部標識)出該程序的pcb,從中讀出該程序的狀態。若程序處於執行狀態,終止該程序的執行,並且置排程標誌為真,重新排程(使cpu不處於空閒狀態)。若有子孫程序,將所有子孫程序終止。將程序全部資源歸還其父程序或系統。將其pcb從所在佇列(或鍊錶)中移除。
引起阻塞(自己阻塞自己,等待i/o)和喚醒的事件:請求系統服務、啟動某種操作、新資料尚未到,無新工作可作
程序阻塞過程:由阻塞原語block完成。入口->儲存當前程序的cpu現場->置該程序狀態(將執行狀態置於阻塞狀態)->進入等待佇列(阻塞佇列)->轉程序排程
程序喚醒過程:由喚醒原語wakeup完成。入口->從等待佇列中摘下被喚醒程序(的pcb)->置該程序為就緒狀態->進入就緒佇列->(還要看優先順序)轉程序排程或返回
如果在某程序中呼叫了阻塞原語,則必須在與之相合作(等待事件)的另一程序中或其它相關程序中,安排喚醒原語,以能喚醒阻塞程序;否則,被阻塞程序將會因不能被喚醒而長久地處於阻塞狀態,從而再無機會繼續執行。(有阻塞必然有喚醒。自己阻塞自己,與之相關的程序喚醒被阻塞的程序)
程序的掛起。引入原因:由於作業系統或使用者的需要,將處於就緒狀態、執行的程序或記憶體等待佇列的程序,暫時調出記憶體,調到外存,以便監督記憶體的執行或解決系統當中比較繁忙的狀態。
掛起原語:suspend() 掛起原語的執行過程:檢查(對不同狀態的程序採用不同的操作)被掛起程序的狀態,若處於活動就緒狀態,改為靜止就緒;若處於活動阻塞狀態,則改為靜止阻塞;若正在執行,改為靜止就緒,轉向排程程式重新排程(在活動就緒佇列中的程序選擇乙個) (掛起是把被掛起程序的資源從記憶體調到外存)
作業系統學習筆記 程序通訊
程序通訊是指程序之間的資訊交換。交換的資訊量包括乙個狀態或數值 訊號量,低階通訊 或上千個位元組 高階通訊 低階通訊 程序的互斥和同步 交換的資訊量 即訊號量 較少 高階通訊 指使用者可直接利用os提供的一組通訊命令 不需要自己編寫命令 高效地傳送大量資料的一種通訊方式。對使用者透明。使用者不需要考...
作業系統學習筆記(三) 程序
一 程序環境 c程式儲存空間布局 正文段 唯讀 存放cpu執行的機器指令,可共享 資料段 也叫初始化資料段。包含程式中需要明確賦值的變數,如 int max 99 bss段 也叫未初始化的資料段,在程式開始執行前,核心將此段中資料初始化為0或空指標,如long sum 100 棧 存放自動變數 即區...
作業系統學習筆記 程序控制
三 程序控制 1.兩種執行模式 l 系統模式 系統態,控制模式,核心模式 n 具有較高的特權。n 執行系統特定的指令,包括讀 寫控制暫存器的指令,基本i o指令以及與儲存器管理有關的指令,及一些特定的記憶體區。n 核心模式下的處理機及其指令 暫存器和記憶體收受到完全控制和保護 l 使用者模式 或使用...