os 程序的控制

2021-08-08 11:48:30 字數 1709 閱讀 6253

《計算機作業系統》(第四版) 湯小丹等編著

程序控制
程序控制是最基本的功能,負責建立程序、結束程序等功能,一般由 os 核心中的原語來實現

原語
所謂原語,就是由若干條指令組成的,用於完成一定功能的乙個過程,算是不可分割的、最基本的操作

note

1. 接下來原語基本用於所有的操作

作業系統核心

作業系統將一些常用或者執行頻率較高的模組(如時鐘管理、程序排程等)常駐記憶體,這些就被稱為 os 核心

兩大功能

支撐功能

資源管理功能

程序的層次

程序可以建立另乙個程序,形成父程序和子程序的關係

note

1. 程序不能拒絕子程序的繼承權

2. 父程序撤銷時,子程序也得隨之 over

3. 根據父子程序的關係,可以構成一棵程序樹

4. window 中,乙個程序建立另乙個程序時,獲得乙個控制代碼,形成控制與被控制的關係

引起建立程序的事件

使用者登入

作業排程

提供服務

應用請求

程序的建立

呼叫程序建立原語 creat

申請空白 pcb(程序控制塊),獲取唯一的數字識別符號

分配程序所需的資源

初始化 pcb

允許的情況下,插入就緒佇列

引起程序終止的事件

正常結束

異常終止

外界干預

note:最典型的算是 ctrl + c 吧

程序的終止過程

呼叫進終止原語

根據程序的識別符號, 從 pcb 集合中檢索該程序的 pcb,讀出程序狀態

若程序還在執行,則立即終止該程序的執行,並置排程標誌為真,用於指示該程序被終止後應重新進行排程

若該程序還有子孫程序,則先終止其子孫程序,防止失控程序的產生

將終止程序的所有資源歸還父程序或系統

pcb 從所在集合中移除

引起程序阻塞和喚醒的事件

請求共享資源失敗

等待某種操作的完成

新資料尚未到達

等待新任務的到達

程序阻塞程序

呼叫阻塞原語 block

將程序停止執行

修改 pcb 現行狀態為「阻塞」

插入阻塞佇列等待喚醒

程序喚醒過程

呼叫喚醒原語 wakeup

將程序從阻塞佇列移出

修改 pcb 線性狀態為「執行」

插入到就緒佇列

程序的掛起

掛起原語 suspend

檢查被掛起程序的狀態

將該程序的 pcb 複製到指定的記憶體區域,方便考察其運**況

若程序正在執行,則轉向排程程式重新排程

程序的啟用過程

啟用原語 active

狀態轉換與掛起相反

原語和作業系統核心

程序的建立和終止

程序的阻塞和喚醒

程序的掛起和啟用

OS筆記 7 程序控制塊PCB詳解

pcb是用以記錄與程序相關資訊的主存區,是程序存在的唯一標誌。1.程序識別符號 作用 用於唯一地標識乙個程序 程序本身 外標識 內部標識 家族資訊 父程序 子程序資訊 2.處理機狀態 處理機狀態資訊也稱為處理機的上下文 context 主要是由處理機的各種暫存器中的內容組成的。也就是中斷現場的保留區...

OS之程序排程

處理機排程 在多道程式程式的環境中,記憶體中存在著多個程序,程序往往大於處理機數目,這就要系統按照某種演算法,動態的將處理機分配給處於就緒狀態的程序。是之執行,分配處理機的任務就是由處理機排程完成的。排程實質上是一種資源分配。處理機排程演算法的目標 處理價排程演算法的共同目標 1 資源利用率,為了提...

OS 程序排程演算法

最近學習自考學到程序排程,其中的排程演算法看著很複雜,細想又很簡單,接下來簡單介紹一下 先來先服務演算法 理論定義 我的理解 排程演算法 從就緒佇列的隊首選擇最先到達就緒佇列的程序,為該程序分配cpu 排隊,先到先得 效能分析 適合長程序,不利於短程序,短程序等待時間相對於執行時間而言太長 排隊要做...