分析minix3之中CPU是怎樣在各程序之間切換

2021-06-21 22:02:05 字數 1855 閱讀 4482

現在有必要解釋一下一些概念:

程序上下文:作業系統中把程序物理實體和支援程序執行的環境合稱為程序上下文。

它包含三個部分:

(1)使用者級上下文:由使用者程序的程式塊、使用者資料塊和使用者堆疊組成的程序位址空間

(2)系統級上下文:包括程序控制塊(pcb)、記憶體管理資訊、程序環境塊、系統堆疊等組成的程序位址空間

(3)暫存器上下文:由程式狀態暫存器、各類控制暫存器、位址暫存器、通用暫存器等組成。

程序控制塊(pcb): 它是程序實體的一部分,是作業系統中最重要的記錄性資料結構。pcb中主要包括四個方面用於描述和控制程序執行的資訊。

(1).程序識別符號資訊

程序識別符號用於唯一的標識乙個程序。乙個程序通常有以下兩種識別符號。

外部識別符號。由建立者提供,通常是由字母、數字組成,往往是使用者(程序)訪問該程序使用。外部識別符號便於記憶,如:計算程序、列印程序、傳送程序、接收程序等。

內部識別符號:為了方便系統使用而設定的。在所有的os中,都為每乙個程序賦予乙個唯一的整數,作為內部識別符號。它通常就是乙個程序的符號,為了描述程序的家族關係,還應該設定父程序識別符號以及子程序識別符號。還可以設定使用者識別符號,來指示該程序由哪個使用者擁有。

(2)、處理機狀態資訊

處理機狀態資訊主要是由處理機各種暫存器中的內容所組成。

通用暫存器。又稱為使用者可視暫存器,可被使用者程 序訪問,用於暫存資訊。

程式狀態字psw。其中含有狀態資訊。(條件碼、 執行方式、中斷遮蔽標誌等)

使用者棧指標。每個使用者程序有乙個或若干個與之相 關的系統棧,用於存放過程和系統呼叫引數及呼叫位址。棧指標指向該棧的棧頂。

(3).程序排程資訊

在pcb中還存放了一些與程序排程和程序對換有關的資訊。

(1)程序狀態。指明程序當前的狀態,作為程序排程和對換時的依據。

(2)程序優先順序。用於描述程序使用處理機的優先順序別的乙個整數,優先順序高的程序優先獲得處理機。

(3)程序排程所需要的其他資訊。(程序已等待cpu的時間總和、程序已執行的時間總和)

(4)事件。這是程序由執行狀態轉變為阻塞狀態所等待發生的事件。(阻塞原因)

1.程序切換的條件:

當作業系統獲得了處理區的控制權,它才可以實現程序切換。而要讓作業系統要獲得控制權,程序則要切入核心態。

2.模式切換:

講程序切換之前,先講一下模式切換。模式切換是指程序從使用者態切入核心態。然後,我們就有乙個疑問就是程序什麼條件下會進行模式切換?答案是當程序要系統呼叫或者中斷發生時,程序就要進行模式切換。接下來,我們有個疑問就是為什麼程序要進行模式切換?答案是只有進入核心態,作業系統才能獲得處理區的控制權,幫助該程序進行系統呼叫或者處理中斷。

模式切換步驟:(1)儲存被中斷程序的處理器現場資訊(核心保留足夠資訊以便恢復被中斷的執行)

(2)根據中斷號設定程式計數器

(3)把使用者態切換到核心態,處理系統呼叫或者中斷

3.程序上下文切換:個人認為,程序切換實質上是程序上下文切換(多工系統中,上下文切換是指cpu的控制權由執行任務轉移到另外乙個就緒任務時所發生的事件)。那麼什麼條件下會發生條件切換:

(1)當程序進入核心態,作業系統處理系統呼叫和中斷過程可能會導致被阻塞了的高優先順序程序變為就緒

(2)當程序進入核心態,作業系統處理時鐘中斷時,正在執行的程序時間片耗盡

這些情況下,正在執行的程序就會發生程序上下文切換,進入等待狀態。

那麼我們就有乙個疑問,那這個程序的資訊怎麼辦?答案是程序上下文切換時,其使用者級上下文和暫存器上下文將被儲存到系統級上下文的相應的現場資訊位置,這時核心就把這些資訊壓入系統棧的上下文層。

然後有一些東西要強調:(1)模式切換是發生在該程序上下文,程序上下文切換不等於模式切換

(2)程序切換要先進入模式切換,只有在核心態,程序才能進行切換。程序切換伴隨著程序上下文切換。

Minix3程序概述

介紹minix3中的系統組織結構及程序實現。kernel call 與system call的區別 多數用 c 寫,彙編負責核心直接與硬體互動的最底層部分。主要功能是為上層驅動程式和服務提供一組特權核心呼叫。daemon 守護程序 只有第乙個分割槽可以引導 引導塊,boot block 由它裝入引導...

MINIX 3核心程序表

在minix 3中,程序表被分成核心 程序管理 檔案系統三個部分,各部分維護它們各自所需要的那些域,三個部分的程序表中相同程序的位置是相同的。minix 3核心程序表資料結構定義在src kernel proc.h中,主要用途是程序排程和程序間通訊。proc結構體就是程序表項的資料結構,先來看看pr...

MINIX3 程序結構體1

剛開始學習minix3,把學到的一些東西寫下來,留作筆記。minix3的核心檔案中的 kernel proc.h中定義了proc結構體 程序結構體 struct proc 其中,值得注意的是 1 程序優先順序 p priority。它反映的是該程序當前的優先順序,但是隨著程序不斷的排程,優先順序是會...