2.1 程式的定義、組成、組織、特徵:
2.1.1 程式的定義:
- 程式:一個指令序列
- 定義:程式是程式實體的執行過程,是系統進行資源分配和排程的一個獨立單位
- 單道程式:
- 一次只能處理一個程式,當該程式執行時,cpu、記憶體、I/O裝置都要為它一個程式服務
- 程式的程式碼放在程式段內,程式執行過程處理的資料放在資料段
- 多道程式:
- 一次可以處理多個程式
- 問題?作業系統怎麼找到各程式存在記憶體的位置
- 解決問題:系統為每個程式配置一個資料結構,叫做程式控制塊PCB,來掃描程式的各個資訊
- 程式實體:
- 程式段、資料段、PCB組成程式實體(程式映像)
- 程式實體,也可以叫做程式
2.1.2 程式的組成:
- 程式的組成說的是:程式內部由哪些部分構成(和程式的組織要區分開)
- PCB:
- PCB是程式存在的唯一標識
- 程式描述、資源分配等
- 記住:PCB程式的管理者,所需的資料全在PCB中
- 如:分配程式優先順序、程式標識的PID、UID,I/O裝置的分配
- 程式段:
- 存放要執行的程式碼
- 資料段:
- 存放程式執行過程中處理的各種資料
2.1.3 程式的組織:
- 程式的組織說的是:多個程式之間組織的方式
- 說的目的是:一個作業系統有非常多個PCB,它們是怎麼有效的管理起來這麼多個PCB
- 連結方式:
- 把當前執行的程式分為不同的執行狀態
- 這些執行狀態會透過指標指向不同的PCB
- 指向不同的PCB,優先順序高的會在前面
- 索引方式:
- 和連結方式一樣,它是透過索引表來指向
2.1.4 程式特徵:
2.1.5 總結:
- 什麼程式是:程式是程式實體的執行過程,是系統進行資源分配和排程的一個獨立單位
- 程式的組成:PCB、程式段、資料段
- PCB是基礎存在的唯一標識、基礎的管理者
- 程式段:放程式執行程式碼
- 資料段:放執行時使用的資料
- 組織方式:連結、索引
2.2 程式的狀態與轉換:
2.2.1 程式的狀態:
- 三種基本狀態:
- 執行態、就緒態、阻塞態
- 其它兩種狀態:
- 建立態、終止態
2.2.2 程式的轉換:
2.2.3 總結
- 執行態:有cpu有資源
- 阻塞態:什麼都沒有,可能是在等某個IO操作
- 就緒態:有處了CPU之外的所有資源
- 建立態:程式的建立
- 終止態:程式的終止
2.3 程式的控制:
- 程式的控制用原語進行控制
- 原語是要麼全執行,要麼全不執行
- 用關/開中斷來實現
- 原語的不同操作共性:
- 跟新PCB中的資訊
- 將PCB插入合適的佇列
- 分配或回收資源
- 想關原語:
- 建立原語
- 終止原語
- 阻塞原語 -阻塞和喚醒要成對出現
- 喚醒原語 -阻塞和喚醒要成對出現
- 切換原語
- 各原語的功能:
2.9 FCFS、SJF、HRRN呼叫演算法:
2.9.1 先來先服務FCFS:
- FCFS的排程演算法,跟排隊買奶茶一樣,誰先,誰執行
- FCFS概念
2.9.2 短作業優先(不搶佔、搶佔)JSF:
- JSF的排程演算法,就是執行時間短的優先(搶佔)
- SRTN短作業搶佔呼叫演算法,根據執行的時間來互相搶佔
- 短作業的演算法概念
2.9.3 高響應優先HRRN:
- 根據響應比來決定優先執行順序,得出響應比,就可以算週轉時間了
- HRRN的概念
2.9.4 三種演算法的對比:
2.9.5 總結、細節:
- 記住週轉時間、帶權週轉時間、等待時間、和平均時間的公式
- 記住HEER的響應比的公式
- 細節:帶權週轉時間,指的是週轉時比執行時間大多少倍
- 細節:等待時間公式是:等待時間=週轉時間-執行時間-(IO裝置操作時間-IO時間的減和不減要根據具體來分析)
- 大細節-考試會考:JSF演算法是平均等待時間,平均週轉時間最少(宏觀上理解這句話)