進程的切換
接下來需要了解兩個問題
- 誰觸發了進程切換
- 進程切換的動作
中斷技術
中斷源
中斷處理過程(陷阱機制)
特權指令和非特權指令
Privileged Instructions:特權指令
?The Instructions that can run only in Kernel Mode are called Privileged Instructions .【只能在內核模式下運?的指令稱為特權指令】
- I/O instructions and Halt instructions
- Turn off all Interrupts
- Set the Timer
- Process Switching
Non-Privileged Instructions:?特權指令
?The Instructions that can run only in User Mode are called Non-Privileged Instructions .【只能在??模式下運?的指令稱為?特權指令。】
模式切換
進程的切換
running進入等待狀態:主動
running進入就緒狀態:被動
進程調度
進程控制快
A Process Control Block(PCB)contains many pieces of information associated with a specificprocess.【進程控制塊(PCB)包含許多與特定過程相關的信息】
進程和PCB之間的關系為1:1
完整的進程上下文如下
進程的物理內存
那操作系統在管理進程用的是啥數據呢
用的是進程隊列
進程隊列
進程的調度
開啟一個子進程、中斷分別屬于主動還是被動呢
可以看下主動操作和被動操作的概念
主動發起:
在操作系統中,創建進程通常需要明確指令觸發,例如通過系統調用(如fork()、spawn()等)或編程語言提供的API(如Python的Process.start())。這些操作需要用戶或程序主動發起,系統不會自動創建進程
被動發起:
如進程因資源競爭(如I/O等待)或系統調度進入阻塞狀態,屬于系統自動行為,即被動
因此開啟子進程為主動操作
中斷為被動
參考
B站操作系統