- 本系列博客爲觀看哈工大李治軍老師的操作系統視頻而做的整理總結。
- 本文爲第三篇,主要CPU管理
關鍵詞索引:
併發(執行多道程序)、進程、多進程圖像、PCB(Process Control Block)、進程狀態圖、調度(getNext() )、 進程同步
見後續系列文章
一、直觀設想
程序載入內存,設好PC指針初值後,
CPU從該指針指向的內存地越取指執行,
然後PC指針自動增加,自動執行指令
二、存在的問題與實際管理思想
IO 指令執行非常慢
如果不作額外處理 ,只讓PC自己增加
碰到IO指令時,cpu會等在那裏。 CPU的利用率非常低
類比 燒水 洗衣等同步幹活的事情。
當需要等待的時候,切換過去執行別的事情。
多道程序交替執行
CPU上交替執行多個程序: 併發
在來回切換的過程中,需要有一個記錄,保留場景
(運行的程序和靜態的程序是不一樣的)
描述這個區別, 引出 "進程” 的概念。 (運行中的程序)
進程有開始、結束, 需要有記錄。 (程序是靜態的)
三、多進程圖像
有一個cpu , 所以只有一個進程在運行 。 ( 聯繫多核)
多進程如何切換?
隊列操作+調度+切換
schedule() 。 依託於PCB
getNext() 調度 , 有很多種算法 。例: FIFO ,優先級
保存 ,取值 . 此處需要用匯編進行精確控制
要解決該問題,需要限制對100的讀寫。
多進程的地址空間分離。 映射表
多進程涉及到內存管理
如果處理不合理,兩個進程要同時放入一塊內存,衝突,
推進順序不合理會導致執行錯誤
爲了合理推進, 要加鎖