849大綱 第三章 程式
程式的概念:
程式是程式實體的執行過程,是系統進行分配和排程的獨立單位.
程式的組織:
程式是一個獨立執行的單位,也是作業系統進行資源分配和排程的基本單位,由以下三個部分組成
1.程式控制塊(PCB)
(1)程式描述資訊
程式識別符號:標識程式
使用者識別符號:程式歸屬的使用者,主要為共享和保護服務
(2)程式控制和管理資訊
程式當前狀態:描述程式的狀態資訊
程式優先順序:描述程式搶佔處理機優先順序
程式碼執行入口地址
程式的外存地址
進入記憶體時間
處理機佔用時間
訊號量使用
(3)資源分配清單
用以說明有關記憶體地址空間或者虛擬地址空間狀況,所開啟的檔案的列表和所使用的的輸入/輸出裝置資訊等
(4)處理及相關資訊
處理機各暫存器的值
2.程式段:
能被程式排程程式排程到CPU執行的程式程式碼段
3.資料段
程式賭贏的程式處理的原始資料或者程式執行時產生的最終結果
程式的組織方式
連結方式:
按照程式狀態將PCB分為多個佇列,作業系統持有指向各個佇列的指標
索引方式
根據程式狀態的不同建立幾張索引表,作業系統持有指向各個索引表的指標
程式的控制和狀態轉換
程式控制
程式的建立
1.分配程式標識號,申請PCB
2.為程式分配資源,微程式和資料以及使用者棧分配必要的記憶體空間
3.初始化PCB,包括初始化標誌資訊,初始化、初始化處理機狀態資訊、初始化處理機控制資訊、設定程式優先順序
4.若程式就緒佇列可以接納新錦成,程式進入就緒態
程式的終止
結束的分類:
1.正常結束:程式的任務已經完成並且準備推出執行
2.異常結束:程式正在執行,出現了某些一長時間導致程式無法繼續執行(儲存區越界,保護錯,非法指令,特權指令錯,I/O故障等)
3.外界干預:程式應外界請求終止執行
結束過程
1.根據被終止程式的識別符號,檢索PCB,讀取程式狀態,
2.若程式處於執行態,終止執行,剝奪處理機,
3.終止程式之下的子程式
4.該程式擁有的全部資源還給父程式或者作業系統
5.將程式PCB從佇列中刪除(PCB是程式存在的唯一標誌)
程式的阻塞和喚醒
1.程式阻塞原語執行過程(阻塞是一種自主行為,自我阻塞)
1)找到被阻塞程式標識號對應的PCB
2)若進城處於執行態、保護其現場、將其狀態轉換為阻塞態
3)將PCB插入相應的等待佇列
2.喚醒原語的執行過程(程式喚醒是被有相互聯絡的其他程式喚醒 )
1)找到等待佇列中程式對應的PCB
2)將程式從等待佇列中移出,置其狀態為就緒態
3)將PCB插入就緒佇列,等待排程程式排程
程式切換
程式切換是在核心態狀態下完成的
程式排程的基本概念
概念:
合理的對程式進行處理機分配
排程的層次
作業排程(高階排程):從輔存中選擇作業送入記憶體,每個作業調入一次,調出一次
記憶體排程(中級排程):提高記憶體的利用率和系統吞吐量,將暫時不能雲修改的程式調出至外存,使其進入掛起態,或者將已經具備執行條件的程式調入記憶體,修改其狀態為就緒態
程式排程(低階排程):按照某種方法或者策略從就緒佇列中選取一個程式,將處理機分配給他(排程頻率最高)
程式排程方式
剝奪排程方式:如果有更高優先順序的程式請求處理機,暫停正在執行的程式將處理機分配給更高階的程式,可以提高系統吞吐率和響應效率
非剝奪排程方式:如果系統想給處理機分配一個更高優先順序的程式,必須等待當前佔用處理機的程式釋放處理機。(實現簡單,開銷小適合大多數批處理作業系統。不適用於分時系統和大多數實時作業系統)
排程的基本準則
1.CPU利用率
儘可能保持CPU處於忙碌狀態
2.系統吞吐量
單位時間內CPU完成作業的數量,排程演算法和方式會對吞吐量造成較大的影響
3.週轉時間:
週轉時間 = 作業完成時間 - 作業提交時間
平均週轉時間 = 總週轉時間 / N個作業
帶權週轉時間 = 作業週轉時間 / 作業執行時間
平均帶權週轉時間 = 總代全週轉時間 / N個作業
4.等待時間
作業等待處理機的時間,衡量一個演算法優劣,只需要簡單的考察等待時間
5.響應時間:從作業提交請求到系統首次產生響應所用的時間
程式的通訊
1.共享儲存
通訊程式之間存在一塊可以被直接訪問的共享空間
低階方式:基於資料結構共享
高階方式:基於儲存區共享
2.訊息傳遞
程式之間的資料交換事宜格式化的訊息為單位的,程式通過系統提供的傳送訊息和接受訊息兩個原語進行資料的交換
3.管道通訊
只用管道空時才能寫資料,只有管道滿時才能讀資料(緩衝區)
相關文章
- 第三章―Windows程式Windows
- 新程式設計師煥新大綱程式設計師
- 程式碼規範技術交流提綱
- 《VB PCODE程式破解綱要》 (987字)
- 第三章 BootLoader載入程式boot
- spark大綱Spark
- C/C++程式設計師面試必看大綱C++程式設計師面試
- 初級程式設計師考試大綱 (轉)程式設計師
- 高階程式設計師考試大綱 (轉)程式設計師
- 第三章 函式與程式結構函式
- javascript高階程式設計第三章JavaScript程式設計
- Java面試大綱Java面試
- 教學大綱
- OpenCV官方提綱OpenCV
- Java程式設計複習提綱(上:入門語法)Java程式設計
- go 基礎大綱Go
- 設計模式-大綱設計模式
- 設計模式--總綱設計模式
- iOS逆向之旅 — 總綱iOS
- Android面試大綱Android面試
- 前端 CSS 面試大綱前端CSS面試
- 設計模式大綱設計模式
- 第三章
- React原始碼精度大綱React原始碼
- 學習LaTeX之總綱
- 軟體測試大綱
- Pandas大綱學習-0
- c#複習提綱C#
- 網站內容綱要網站
- Oracle AWR報告大綱Oracle
- SVN技術交流提綱
- http技術交流提綱HTTP
- 資料結構總綱資料結構
- Open3D 大綱3D
- I/O程式設計技術(檔案IO)筆記綱要梳理程式設計筆記
- 第三章 PromisesPromise
- Python通用程式設計 - 第三章:資料型別Python程式設計資料型別
- 靜態程式分析(一)—— 大綱思維導圖與內容介紹