先引入問題:
OS如何感知進(jìn)程,控制進(jìn)程及其所用的系統(tǒng)資源?
OS內(nèi)核如何提供這些功能,操作系統(tǒng)也是進(jìn)程嗎?
進(jìn)程創(chuàng)建過程要做些什么?
進(jìn)程激活從外存回到內(nèi)存后,是原來的位置還是不同位置?
進(jìn)程所用資源的管理
操作系統(tǒng)就像公司的財(cái)務(wù)一樣,需要管理許多表;這些表記錄著資源和進(jìn)程;那么OS中就有常用的表:
內(nèi)存表 .I/O表. 進(jìn)程表(鏈表結(jié)構(gòu)).文件表,而且 還互相關(guān)聯(lián)。
存儲表:內(nèi)存分配情況,外存分配情況,共享內(nèi)存區(qū)權(quán)限,虛擬內(nèi)存;
I/O表:設(shè)備狀態(tài),I/O狀態(tài),I/O傳輸位置;
文件表:外存位置,狀態(tài),屬性,管理系統(tǒng);
進(jìn)程表:進(jìn)程位置,進(jìn)程屬性:id,狀態(tài),進(jìn)程位置;一組程序;
進(jìn)程映像
包含:程序,數(shù)據(jù),用戶程序,堆棧.PCB
操作內(nèi)核功能
Process Management :進(jìn)程創(chuàng)建終止.調(diào)度.狀態(tài)轉(zhuǎn)換.同步與通信.管理PCB
Memory Management:為進(jìn)程分配地址空間.對換.段/頁管理
I/O Management :緩存,為進(jìn)程分配I/O 通道和設(shè)備
支撐功能:中斷管理,時(shí)鐘管理,原子操作管理,統(tǒng)計(jì)管理,堅(jiān)持管理
進(jìn)程原語
進(jìn)程切換/ 創(chuàng)建與終止 /阻塞與喚醒 / 掛起與激活
進(jìn)程切換
時(shí)鐘中斷,io中斷,存儲訪問失效,陷阱,管理程序進(jìn)入
切換操作過程:保存現(xiàn)場,更新PCB,移入隊(duì)列,內(nèi)存空間修改,恢復(fù)現(xiàn)場
進(jìn)程切換與模式切換
模式切換:用戶態(tài)-系統(tǒng)態(tài)-用戶態(tài),不一定有進(jìn)程切換;
進(jìn)程切換一定有模式切換;
進(jìn)程創(chuàng)建與終止
為進(jìn)程分配id
分配空間,共享空間
初始化PCB
建立鏈接
正常結(jié)束
超時(shí)終止
內(nèi)存不足
找不到文件
死鎖
進(jìn)程阻塞喚醒
請求系統(tǒng)服務(wù)
啟動某種服務(wù):IO
新數(shù)據(jù)未達(dá)到
無新工作
當(dāng)阻塞發(fā)生,進(jìn)程調(diào)用原語將自己阻塞,狀態(tài)變?yōu)椤白枞麪顟B(tài)”,并進(jìn)入阻塞隊(duì)列
當(dāng)阻塞期待的事件發(fā)生,有關(guān)進(jìn)行調(diào)用原語,將進(jìn)程喚醒,狀態(tài)為read,插入就緒隊(duì)列