模式切換 不等同於 程序上下文切換
當程序呼叫系統呼叫或者發生中斷時,cpu從使用者模式(使用者態)切換成核心模式(核心態),此時,無論是系統呼叫程式還是中斷服務程式,都處於當前程序的上下文中,並沒有發生程序上下文切換。
當系統呼叫或中斷處理程式返回時,cpu要從核心模式切換回使用者模式,此時會執行作業系統的呼叫程式。如果發現就需佇列中有比當前程序更高的優先順序的程序,則會發生程序切換:當前程序資訊被儲存,切換到就緒佇列中的那個高優先順序程序;否則,直接返回當前程序的使用者模式,不會發生上下文切換。
每個程序都擁有兩個堆疊:使用者空間的堆疊和核心空間堆疊
使用者程序:執行使用者空間的**的程式,使用使用者堆疊
系統程序:執行核心空間**(系統呼叫或中斷)的程式,使用核心堆疊(系統堆疊)
這裡的使用者程序和系統程序使用同乙個pcb,他們並不是兩個實體程序,而是同乙個程序的兩個側面。當呼叫系統呼叫或發生中斷時,cpu切換到核心態,使用者程序「變身」系統程序,此時的暫存器上下文儲存在系統程序的堆疊上,以便系統呼叫返回後的恢復。
搶占式核心一定要使用可重入函式。
作業系統之程序切換
最近複習作業系統關於程序切換的一些記錄。程序切換指從正在執行的程序中收回處理器,讓待執行程序來占有處理器執行。實質上就是被中斷執行程序與待執行程序的上下文切換。二 模式切換 程序切換必須在作業系統核心模式下完成,這就需要模式切換。模式切換又稱處理器切換,即使用者模式和核心模式的互相切換。1 中斷 異...
Linux系統程序呼叫列表
fork 建立乙個新程序 clone 按指定條件建立子程序 execve 執行可執行檔案 exit 中止程序 exit 立即中止當前程序 getdtablesize 程序所能開啟的最大檔案數 getpgid 獲取指定程序組標識號 setpgid 設定指定程序組標誌號 getpgrp 獲取當前程序組標...
程序切換和執行緒切換
為了控制程序的執行,核心必須有能力掛起正在cpu上執行的程序,並恢復以前掛起的某個程序的執行。這種行為被稱為程序切換 process switch 任務切換 task switch 或上下文切換 content switch 原文 程序切換分兩步 1.切換頁目錄以使用新的位址空間 2.切換核心棧和硬...