計算機組成原理與作業系統 第二章 處理機組成與管理

写代码的大学生發表於2024-11-13

目錄
  • 1.CPU的功能和組成
    • 1.1CPU的四大功能
    • 1.2CPU的基本組成
    • 1.3 一條指令如何在CPU內執行
  • 2.指令系統
    • 2.1機器語言與指令
      • 2.1.1基本概念
      • 2.1.2一條指令一般應包含的資訊
      • 2.1.3指令的型別與功能
      • 2.1.4定址方式
    • 2.2指令格式的設計
      • 2.2.1基本概念
      • 2.2.2指令型別
      • 2.2.3操作碼型別
      • 2.2.4指令設計
    • 2.3指令系統
      • 2.3.1 指令系統基本概念
      • 2.3.2指令系統設計風格
      • 2.3.2RISC出現的原因
  • 3.程序的基本概念
    • 3.1程式的順序執行特徵
    • 3.2程式的併發執行特徵
    • 3.3程序的概念
    • 3.4程序與程式的區別
    • 3.5程序的特徵
    • 3.6程序的型別
    • 3.7作業與程序的關係
    • 3.8作業與程序的比較
  • 4 程序的狀態及其變遷
      • 4.1程序的三種基本狀態
    • 4.2程序狀態的轉換條件
    • 4.3建立狀態和終止狀態
    • 4.4掛起(Suspend)與啟用(Activate)
  • 5.程序控制塊
    • 5.1程序實體的構成
    • 5.2PCB的作用
    • 5.3 程序控制塊中的資訊
    • 5.4程序控制塊的組織方式
  • 6.程序控制
  • 6.1作業系統核心
    • 6.2原語
    • 6.3程序圖(Process Graph)
    • 6.4程序的建立
      • 6.4.1引起建立程序的事件
      • 6.4.2 程序的建立 (Creation of Progress)
    • 6.5程序的終止
      • 6.5.1引起程序終止的事件 (Termination)
      • 6.5.2程序的終止過程
    • 6.6程序的阻塞與喚醒
      • 6.6.1引起程序阻塞的事件
      • 6.6.2程序阻塞過程
    • 6.7程序的掛起與啟用
      • 6.7.1程序的掛起
      • 6.7.2程序的啟用

1.CPU的功能和組成

1.1CPU的四大功能

CPU的4大功能 描述
指令控制 即程式的順序控制。程式是一個指令序列,這些指令的相互順序不能任意顛倒,必須嚴格按程式規定的順序進行。保證機器按順序執行程式是CPU的首要任務。
操作控制 一條指令的功能往往是由若干個操作訊號的組合來實現的。CPU管理併產生由記憶體取出的每條指令的操作訊號,把各操作訊號送往相應的部件,從而控制各部件按指令要求進行動作。
時間控制 對各種操作實施時間上的定時稱為時間控制。在計算機中,各種指令的操作訊號均受到時間的嚴格定時。一條指令的整個執行過程也受到時間的嚴格定時,只有這樣,計算機才能有條不紊地自動工作。
資料加工 即對資料進行算術和邏輯運算處理。完成資料的加工處理是CPU的根本任務。

1.2CPU的基本組成

元件 功能描述
控制器 釋出命令的“決策機構”,協調和指揮整個計算機系統的操作。
- 從指令cache中取出一條指令,並指出下一條指令在指令cache中的位置。
- 對指令進行譯碼或測試,併產生相應的操作控制訊號。
- 指揮並控制CPU、資料cache和輸入/輸出裝置之間資料流動的方向。
運算器 資料加工處理部件,執行算術和邏輯運算。
- 執行所有算術運算,產生運算結果。
- 執行所有邏輯運算,並進行邏輯測試,如零值測試或兩個值的比較。
Cache 高速緩衝儲存器,解決CPU和主存之間速度不匹配問題。
暫存器組 暫存計算機字,包括資料緩衝暫存器(DR)、指令暫存器(IR)、程式計數器(PC)、地址暫存器(AR)、通用暫存器(Ro-R)。
- 資料緩衝暫存器(DR):暫存ALU運算結果,或資料儲存器讀出的資料字,或外部介面資料字。
- 指令暫存器(IR):儲存當前正在執行的一條指令。
- 程式計數器(PC):存放將要執行的下一條指令的地址。
- 地址暫存器(AR):儲存當前CPU所訪問的資料cache儲存器單元的地址。
- 通用暫存器(Ro-R):為ALU提供工作區,用於算術或邏輯運算。
狀態字暫存器(PSW) 儲存運算或測試結果建立的條件程式碼和系統工作狀態資訊。
- 儲存進位標誌(C)、溢位標誌(V)、零標誌(Z)、負標誌(N)等。

1.3 一條指令如何在CPU內執行

  1. 取指:
    • 先根據程式計數器(PC)將指令從指令cache中取出,透過指令匯流排(IBUS)傳輸到指令暫存器(IR)中。
    • PC加1指向下一條指令。
  2. 指令譯碼
    • 指令暫存器(IR)中的操作碼(OP)傳輸到指令譯碼器,然後透過操作控制器、時序發生器轉換為控制訊號。
  3. 執行指令
    ①當前的指令是轉移指令
    • 指令暫存器IR中的下一條將要執行的指令的地址將PC中要加一的覆蓋,再進行取指操作。
      ②當前的指令是非轉移指令
    • 指令暫存器IR中的地址碼傳到地址暫存器AR,然後從資料cache中將資料取出,透過資料匯流排DBDS傳輸到資料緩衝暫存器DR,將資料儲存到通用暫存器中,計算的結果傳輸到資料緩衝暫存器DR,狀態傳輸到狀態字暫存器PSW中。

2.指令系統

2.1機器語言與指令

2.1.1基本概念

術語 定義
機器語言 用二進位制程式碼表示的計算機能直接識別和執行的一種機器指令的集合。
指令 由指令集架構定義的單個的CPU操作,是指示計算機執行某種操作的命令。
指令集 一臺計算機能執行的全部指令的集合;是計算機程式設計師接觸到的計算機的所有功能。

2.1.2一條指令一般應包含的資訊

資訊 描述
操作碼(Operation Code) 指定要完成的操作,如ADD、I/O等。這些二進位制程式碼常稱為操作碼。
運算元的地址(Source Operand Reference) 操作會涉及一個或多個源運算元,這是操作所需的輸入。
操作結果的地址(Result Operand Reference) 操作可能產生一個結果。
下一條指令地址(Next Instruction Reference) 告訴CPU這條指令執行完成後到哪兒去取下一條指令。

指令的基本格式:操作碼 | 地址碼

2.1.3指令的型別與功能

指令型別 功能描述
資料傳送指令 將資料從一個地方移到另一個地方(實際是“複製”)。
資料運算指令 包括算術運算指令和邏輯運算指令。
移位指令 實現對運算元的左、右移位,分為算術移位、邏輯移位和迴圈移位三種,可以實現對運算元左移或右移一位或幾位。
程式控制指令 控制程式流程的指令,包括:跳轉指令(條件或無條件)或分支指令、子程式呼叫和子程式返回指令、“軟中斷”指令、停機指令。

2.1.4定址方式

定址方式 描述
直接定址 直接定址 指令字中直接給出運算元的有效地址。
間接定址 間接定址 指令中指定的是含有運算元地址的記憶體單元的地址。
暫存器間接定址
立即值定址 指定的運算元不是一個地址,而是確實要用到的資料
隱含定址 並不明確地指出運算元,因為總是用到特定的暫存器
堆疊及堆疊操作 一種按“後進先出”存取順序進行存取的儲存結構
相對定址 將程式計數器 PC 的當前內容與指令中給出的形式地址相加形成運算元的有效地址
變址定址方式 與相對定址方式類似,但它是將指令提供的地址與變址暫存器中而不是程式計數器中的內容相加。
基址定址 運算元的有效地址等於指令中的形式地址與基址暫存器中的內容之和。

2.2指令格式的設計

2.2.1基本概念

指令格式的設計包含兩個方面:

  • 確定指令的長度;
  • 劃分指令的欄位,定義各欄位的位數、含義
    指令長度
  • 指令字長度:一個指令字所包含的二進位制資訊位數。
    • 定長指令:指令系統中所有指令的長度都是一樣的。
    • 可變長指令:各指令的長度可以不同。
  • 機器字長:計算機能直接處理的二進位制資料的位數

2.2.2指令型別

指令型別 格式 意義 適用機型 說明
零地址指令 無需任何運算元 空操作,停機等指令 通用 運算元隱含指定
一地址指令 A  OP (A) 或 AC  (AC) OP (A) 運算元A與操作碼OP的運算結果存回A或AC 通用 運算元隱含指定
二地址指令 A1  (A1) OP (A2) 最常用的指令格式 中、小、微型機 有幾種形式:S-S型、R-R型、R-S型
三地址指令 A3  (A1) OP (A2) 常用於複雜操作 大、中型機 格式示例
多地址指令

2.2.3操作碼型別

操作碼型別 描述 優點 適用機型 示例
固定長度操作碼 操作碼長度固定,集中放在指令字的一個欄位中 簡化硬體設計,減少指令譯碼時間 大、中型及超級小型機
可變長度操作碼 操作碼長度有幾種不同的選擇,根據地址數調整 靈活,適用於不同指令需求
擴充套件操作碼 在滿足需要的前提下,有效地縮短指令字長 減少指令字長,提高效率 某機指令字長16位,固定OP為4位,三個地址碼,每個4位

2.2.4指令設計

2.3指令系統

2.3.1 指令系統基本概念

指令系統定義

  • 一臺計算機中所有機器指令的集合。

指令系統的重要性

  • 直接影響硬體結構和系統軟體。
  • 影響機器的適用範圍。

完善的指令系統要求

  • 完備性:足夠指令直接使用,無需軟體實現。
  • 有效性:程式高效率執行。
  • 相容性:系列機間基本結構和指令集相同,軟體通用。
  • 規整性:指令格式和資料格式一致,對稱性和勻齊性。

2.3.2指令系統設計風格

CISC(複雜指令系統計算機)

  • 增強指令功能,增加複雜度。
  • 指令系統龐大,多達200-300條指令。
  • 多種指令格式和定址方式。
  • 執行時間和使用頻率差異大。
  • 採用微程式控制器。

RISC(精簡指令系統計算機)

  • 精簡指令系統,簡化功能。
  • 使用頻率高的簡單指令組成。
  • 指令數少,長度一致,格式和定址方式少。
  • 指令流水線排程,大部分指令一個週期內完成。

2.3.2RISC出現的原因

2/8規則

  • 20%指令佔80%處理機時間,80%不常用指令佔20%時間。

3.程序的基本概念

3.1程式的順序執行特徵

特徵 描述
順序性 操作嚴格按照程式規定的順序執行。
封閉性 程式在封閉環境下執行,獨佔全機資源,狀態只有本程式能改變。
可再現性 環境和初始條件相同,多次執行結果相同,與執行速度無關。

3.2程式的併發執行特徵

特徵 描述
間斷性 程式共享資源或合作完成任務,導致“執行-暫停執行-執行”的間斷性活動規律。

3.3程序的概念

定義
程序是可併發執行的程式在某個資料集合上的一次計算活動,也是作業系統進行資源分配和保護的基本單位。

3.4程序與程式的區別

區別項 程序 程式
靜態/動態 動態 靜態
併發描述 能真實描述併發 不能
生命週期 有誕生和消亡,短暫 相對長久
儲存性 一次執行過程,暫時的 可長期儲存
排程單位 系統分配排程的獨立單位 非排程單位
組成 由程式和資料兩部分組成 無資料部分
建立程序 具有建立其他程序的功能 沒有

3.5程序的特徵

特徵 描述
動態性 具有動態的地址空間,包括程式碼、資料和系統控制資訊。
獨立性 各程序的地址空間相互獨立。
併發性 多個程序實體同存於記憶體中,且能在一段時間內同時執行。
非同步性 各程序按各自獨立的、不可預知的速度向前推進。
結構性 包括程式段、資料段和PCB。

3.6程序的型別

型別 描述
系統程序 起著資源管理和控制的作用的程序。
使用者程序 為使用者算題任務而建立的程序。

3.7作業與程序的關係

階段/狀態 描述
提交狀態 使用者程式和資料等待輸入。
後備狀態 作業輸入到後援儲存器上,等待排程。
執行狀態 作業進入記憶體開始執行,到計算完成為止。
完成狀態 作業計算完成,到善後處理完畢並退出系統為止。

3.8作業與程序的比較

比較項 作業 程序
任務實體 使用者向計算機提交任務的任務實體。 完成使用者任務的執行實體。
儲存 系統將它放入外存中的作業等待佇列中等待執行。 總有相應的部分存在於記憶體中。
組成 一個作業可由多個程序組成,至少由一個程序組成。 單個執行實體。
系統應用 主要用在批處理系統中。 用在幾乎所有多道程式系統中。

4 程序的狀態及其變遷

4.1程序的三種基本狀態

狀態型別 描述 備註
就緒(Ready)狀態 可執行,已獲得除CPU外的所需資源,等待分配CPU 多個處於就緒狀態的程序排成就緒佇列
執行(Running)狀態 佔用CPU執行;處於此狀態的程序的數目小於或等於CPU的數目 沒有其他程序可以執行時,自動執行系統的idle程序
阻塞(Blocked)狀態 等待某種條件(如I/O操作或程序同步),在條件滿足之前無法繼續執行 通常阻塞程序也排成一個阻塞佇列

4.2程序狀態的轉換條件

狀態轉換 條件
就緒->執行 排程程式選擇一個新的程序執行
執行->就緒 - 執行程序用完了時間片
- 執行程序被中斷,因為一高優先順序程序處於就緒狀態
執行->等待 - OS尚未完成服務
- 初始化I/O且必須等待結果
- 等待某一程序提供輸入(IPC)
等待->就緒 當所等待的事件發生時
![[PCC2_12.png]]

4.3建立狀態和終止狀態

狀態 描述 備註
建立狀態 程序剛建立,還未進入就緒佇列 -
終止狀態 程序已(正常或異常)結束,已從就緒佇列中移出,但尚未撤銷 暫留,以便其他程序收集該程序的有關資訊

4.4掛起(Suspend)與啟用(Activate)

操作 描述 原因 目的 狀態轉換
掛起(Suspend) 作業系統程序管理程式將前臺的程序暫停並轉入後臺的動作,即將程序從記憶體轉出到外存 由於引入程序優先順序,一些低優先順序程序可能等待較長時間,從而被對換至外存 - 提高處理機效率
- 為執行程序提供足夠記憶體
- 用於除錯
-就緒掛起:活動就緒到靜止就緒
-阻塞掛起:活動阻塞到靜止阻塞
-行到就緒掛起:對搶佔式分時系統
啟用(Activate) 將被掛起的程序從後臺轉入前臺,並從暫停處開始繼續執行,即將程序從外存轉入記憶體 -就緒啟用:靜止就緒到活動就緒
-阻塞啟用:靜止阻塞到活動阻塞

5.程序控制塊

5.1程序實體的構成

構成程序實體的部分 作用
程式段 程序執行的程式程式碼
資料段 程序執行過程所處理的資料
程序控制塊(PCB) 作業系統為了描述和管理程序而定義的資料結構,記錄OS所需的、用於描述程序情況及控制程序執行所需的全部資訊。

5.2PCB的作用

  1. OS根據PCB來對併發執行的程序進行控制和管理的。
  2. 是程序存在的唯一標誌。在程序的整個生命週期中,系統總是透過其PCB對程序進行控制,即系統是根據程序的PCB而感知到該程序的存在的。
  3. 當OS要排程某程序時,從其PCB中查出該程序的現行狀態及優先順序;
  4. 排程到某程序後,要根據其PCB中所儲存的處理機狀態資訊去設臵該程序恢復執行的現場,並根據其PCB中的程式和資料的記憶體始址找到其程式和資料;
  5. 程序在執行過程中,當需要和與之合作的程序實現同步、通訊或訪問檔案時也需要訪問PCB;
  6. 當程序因某種原因而暫停執行時,就需要將其斷點的處理機環境儲存在PCB中。

5.3 程序控制塊中的資訊

PCB經常被系統訪問,尤其是被執行頻率很高的程序排程及分派程式訪問,故應常駐記憶體。系統
將所有的PCB組成若干個連結串列(或佇列),存放在OS中專門開闢的PCB區內。

程序控制塊中的資訊:四個用於描述和控制程序執行的資訊,分別是程序標識資訊、處理機狀態
資訊、程序排程資訊和程序控制資訊

程序控制塊中的資訊 作用 型別
程序識別符號(name)
唯一地標識一個程序 內部識別符號。作業系統為每個程序賦予一個惟一的數字識別符號,通常是一個程序的序號。 主要是為方便系統使用。
外部識別符號。由建立者提供,通常由字母、數字組成,往往
是由使用者(程序)在訪問該程序時使用。
處理機狀態資訊 由處理機的各種暫存器中的內容組成。處理機在執行時,許多資訊都放在暫存器中。當處理機被中斷時,這些資訊都必須儲存在被中斷程序的PCB中,以便該程序重新執行時,能從斷點繼續執行
程序排程資訊 與程序排程和程序對換有關的資訊 程序狀態:指明程序的當前狀態, 作為程序排程和對換時的
依據;
程序優先順序:用於描述程序使用處理機的優先順序別的一個整數, 優先順序高的程序應優先獲得處理機;
程序排程所需的其它資訊:與所採用的程序排程演算法有關,如程序已等待CPU的時間總和、 程序已執行的時間總和等。
事件:指程序由執行狀態轉變為阻塞狀態所等待發生的事件,
即阻塞原因
程序控制資訊 程式和資料的地址:程序的程式和資料所在的記憶體或外存地(
首)址,以便再排程到該程序執行時,能從PCB中找到其程式
和資料;
程序同步和通訊機制:實現程序同步和程序通訊時必需的機制
, 如訊息佇列指標、訊號量等,它們可能全部或部分地放在
PCB中;
資源清單:一張列出了除CPU外程序所需全部及已分配到該進
程的資源清單;
連結指標:給出了本程序(PCB)所在佇列中的下一個程序的
PCB的首地址。

5.4程序控制塊的組織方式

程序控制塊的組織方式 描述
連結方式 把具有相同狀態的PCB,用其中的連結字
組成一個佇列,從而形成就緒佇列、若干個阻塞佇列
和空閒佇列等
索引方式 系統根據所有程序的狀態,建立幾張索引表。

6.程序控制

職責是對系統中全部程序實施有效管理,包括

  • 建立新程序
  • 終止已結束程序
  • 終止由於某事件而無法執行下去的程序
  • 負責程序的狀態轉換

6.1作業系統核心

把與硬體緊密相關的模組、執行頻率較高的模組及一些公用的基本操作安排在靠近硬體的軟體層次中,並常駐記憶體,以提高系統執行效率。

作業系統核心的功能 作用
支撐功能 提供給OS其它許多模組所需要的一些基本
功能,以支援這些模組工作
資源管理功能 程序管理、儲存器管理、裝置管理

6.2原語

  • 由若干條機器指令構成的、用以執行一定“原子操作(atomic operation)”功能的一個過程。
  • 原語具有不可分割性,其執行期間不允許被中斷,要麼從頭到尾執行一遍,要麼全不執行。
  • 原語常見的實現方法是以系統呼叫的方式提供原語介面,原語在執行過程中採用遮蔽中斷的方式來保證其不能被中斷。

6.3程序圖(Process Graph)

是用於描述一個程序的家族關係的有向樹,樹中的結點表示程序

6.4程序的建立

6.4.1引起建立程序的事件

事件 描述
使用者登入
分時系統中合法使用者在終端鍵入登入命令後,系統將為該終端使用者建立一程序,並把它插入就緒佇列
作業排程 批處理系統中,作業排程程式按演算法排程某個作業時,就將該作業裝入記憶體,為它分配必要的資源,並立即為它建立程序,插入就緒佇列
提供服務 當執行中的使用者程式提出某種請求後,系統將專門建立一個程序來提供使用者所需要的服務,如要求列印時建立一列印程序
應用請求 以上三種都是由系統核心建立程序,應用程序也可以自己建立程序

6.4.2 程序的建立 (Creation of Progress)

程序建立可以透過呼叫程序建立原語 create() 按照以下步驟完成:

  1. 申請空閒 PCB

    • 為新程序分配唯一的識別符號,並從 PCB 集合中索取一空閒 PCB。
  2. 為新程序分配資源

    • 為新程序的程式、資料及使用者棧分配必要的記憶體空間。
  3. 初始化程序控制塊

    • 初始化識別符號資訊
    • 初始化處理機狀態資訊
    • 初始化處理機控制資訊

程序控制塊初始化內容

專案 說明
識別符號資訊 將系統分配的識別符號、父程序的識別符號填入新 PCB 中
處理機狀態資訊 程式計數器指向程式的入口地址,棧指標指向棧頂
處理機控制資訊 將程序的狀態設為就緒狀態,預設優先順序為最低優先順序
  1. 將新程序插入就緒佇列
    • 如果程序就緒佇列能夠接納新程序,便將新程序插入就緒佇列。

6.5程序的終止

6.5.1引起程序終止的事件 (Termination)

  1. 正常結束

    • 在任何計算機系統中,都應有一個表示程序已執行完成的指示。如在批處理系統中,使用 Halt 指令;在分時系統中,使用者利用 Logs off。
  2. 異常結束:

    • 由於出現錯誤和故障而迫使程序終止的情況,包括但不限於:

異常結束型別

型別 原因
越界錯誤 程式訪問的儲存區已越出該程序的區域
保護錯 程序試圖訪問不允許的資源或檔案
非法指令 程式執行一條不存在的指令
特權指令錯 使用者程序執行只允許 OS 執行的指令
執行超時 程序執行時間超過指定的最大值
等待超時 等待某事件的時間超過規定的最大值
算術運算錯 執行禁止的運算,如被 0 除
I/O 故障 在 I/O 過程中發生錯誤
  1. 外界干預
    • 操作員或作業系統、父程序請求、父程序終止等導致的程序終止。

6.5.2程序的終止過程

  • OS 呼叫程序終止原語 terminate() 來終止程序,過程如下:
    1. 根據被終止程序的識別符號,從 PCB 集合中檢索該程序的 PCB。
    2. 判斷被終止程序的狀態:
      • 若處於執行狀態,應立即終止執行。
      • 若有子孫程序,終止其所有子孫程序

6.6程序的阻塞與喚醒

6.6.1引起程序阻塞的事件

  1. 請求系統服務

    • 程序請求服務,但 OS 不立即滿足。
  2. 啟動某種操作

    • 程序必須在操作完成後才能繼續執行。
  3. 新資料尚未到達

    • 合作程序之間的資料等待。
  4. 無新工作可做

    • 系統程序完成任務後,進入阻塞狀態。

6.6.2程序阻塞過程

  • 程序透過呼叫阻塞原語 block() 將自己阻塞。阻塞是程序自身的一種主動行為。

6.7程序的掛起與啟用

6.7.1程序的掛起

  • 當使用者請求將程序掛起時,系統使用掛起原語 suspend()

suspend() 原語的執行過程

  1. 得到掛起程序的識別符號。
  2. 檢查被掛起程序狀態。
  3. 複製 PCB 至指定記憶體區域。
  4. 若正在執行,轉向排程程式。

6.7.2程序的啟用

  • 當發生啟用事件時,系統使用啟用原語 active() 進行啟用。

active() 原語的執行過程

  1. 將程序從外存調入記憶體,檢查當前狀態。
  2. 根據狀態決定如何處理啟用。
  3. 進行排程比較,必要時進行重新排程。

相關文章