1.1進(jìn)程的定義(操作系統(tǒng)71頁(yè))
- 一個(gè)正在執(zhí)行的程序
- 一個(gè)正在計(jì)算機(jī)執(zhí)行的程序?qū)嵗?/li>
- 能分配給處理器并由處理器執(zhí)行的實(shí)體
- 由一組執(zhí)行指令娃兽、一個(gè)當(dāng)前狀態(tài)和一組相關(guān)的系統(tǒng)資源表征的活動(dòng)單元
1.2進(jìn)程的元素
- 標(biāo)識(shí)符
- 狀態(tài)
- 優(yōu)先級(jí)
- 程序計(jì)數(shù)器
- 內(nèi)存指針
- 上下文數(shù)據(jù)
- I/o狀態(tài)信息
1.3兩狀態(tài)進(jìn)程模型(操作系統(tǒng)74頁(yè))
操作系統(tǒng)時(shí)刻跟蹤記錄進(jìn)程在內(nèi)存空間運(yùn)行軌跡,新的進(jìn)程狀態(tài)是未運(yùn)行狀態(tài)泡垃,當(dāng)進(jìn)程狀態(tài)被中斷盹沈,分派器會(huì)選擇一個(gè)新進(jìn)程運(yùn)行崎弃,前進(jìn)程由運(yùn)行態(tài)轉(zhuǎn)為未運(yùn)行態(tài)乘客。等待執(zhí)行的進(jìn)程會(huì)放在等待隊(duì)列中。
1.4進(jìn)程創(chuàng)建和終止(操作系統(tǒng)74頁(yè))
進(jìn)程創(chuàng)建時(shí)撮弧,操作系統(tǒng)需要?jiǎng)?chuàng)建管理進(jìn)程數(shù)據(jù)結(jié)構(gòu)潘懊,并且分配給它對(duì)應(yīng)的內(nèi)存地址空間姚糊。
進(jìn)程引發(fā)創(chuàng)建另一個(gè)進(jìn)程叫派生進(jìn)程。父進(jìn)程派生子進(jìn)程授舟。
進(jìn)程中止:多種終止原因救恨。
1.5五狀態(tài)模型(操作系統(tǒng)75頁(yè))
- 運(yùn)行態(tài):當(dāng)只有一個(gè)處理器,最多只有一個(gè)進(jìn)程處于當(dāng)前狀態(tài)
- 就緒態(tài):已在內(nèi)存中并可以執(zhí)行
- 阻塞:已在內(nèi)存中等待一個(gè)事件
- 新建態(tài):新創(chuàng)建進(jìn)程释树,操作系統(tǒng)未把它加入可執(zhí)行進(jìn)程組肠槽,通常已經(jīng)創(chuàng)建未加載到內(nèi)存中
- 退出態(tài):操作系統(tǒng)從可執(zhí)行進(jìn)程組中釋放的進(jìn)程、自身停止奢啥、某種原因被取消
- 阻塞\掛起態(tài):進(jìn)程已在外存中等待一個(gè)事件
- 就緒\掛起態(tài):進(jìn)程已在外存秸仙,只要載入內(nèi)存可執(zhí)行
新建態(tài)的進(jìn)程操作系統(tǒng)只會(huì)把進(jìn)程的信息保存到進(jìn)程表,進(jìn)程的執(zhí)行代碼不在內(nèi)存中桩盲,程序保留在外存寂纪。
狀態(tài)轉(zhuǎn)換事件(操作系統(tǒng)76頁(yè))
1.6操作系統(tǒng)控制結(jié)構(gòu)(操作系統(tǒng)82頁(yè))
內(nèi)存表:跟蹤內(nèi)存和外存,包含:
- 分配給進(jìn)程的內(nèi)存
- 分配進(jìn)程外存
- 內(nèi)存塊虛存塊任何保護(hù)屬性赌结、如那些進(jìn)程可以訪問(wèn)某些共享內(nèi)存區(qū)域
- 管理虛存需要信息
IO表: - IO設(shè)備和通道
- IO狀態(tài)(可用捞蛋、已分配進(jìn)程)
- IO傳送源和目標(biāo)內(nèi)存單元
文件表 - 文件是否存在
- 文件外存位置
- 狀態(tài)和屬性信息
- 進(jìn)程表
- 進(jìn)程位置
- 進(jìn)程映像:程序、數(shù)據(jù)柬姚、棧拟杉、屬性的集合。
進(jìn)程控制塊信息分三類(操作系統(tǒng)83頁(yè))
- 進(jìn)程標(biāo)識(shí)信息
- 進(jìn)程狀態(tài)信息
- 進(jìn)程控制信息
1.7進(jìn)程執(zhí)行模式(操作系統(tǒng)87頁(yè))
- 用戶模式
用戶進(jìn)程一般在該模式下運(yùn)行 - 內(nèi)核模式
完全控制操作系統(tǒng)重要功能: - 進(jìn)程管理:進(jìn)程創(chuàng)建或終止
- 內(nèi)存管理:進(jìn)程分配內(nèi)存空間
- IO管理:緩沖區(qū)管理
- 支持功能:中斷管理
1.8進(jìn)程切換(操作系統(tǒng)88頁(yè))
什么時(shí)候切換進(jìn)程:
- 系統(tǒng)中斷
- 時(shí)鐘中斷
- IO中斷
- 內(nèi)存失效
出現(xiàn)中斷量承,處理器會(huì)做如下工作
將程序計(jì)數(shù)器置為中斷處理程序的開始地址
從用戶模式切換到內(nèi)核模式搬设,以便處理代碼包含特權(quán)指令
處理器繼續(xù)取指階段,并取中斷處理進(jìn)程的第一條指令來(lái)服務(wù)該中斷撕捍,將已中斷進(jìn)程上下文保存到中斷進(jìn)程的進(jìn)程控制塊拿穴。
上下文:中斷處理程序所有可能改變的信息,以及恢復(fù)被中斷程序需要所有信息卦洽,必須保存進(jìn)程控制塊部分。
完整進(jìn)程切換步驟:
- 保存處理器上下文
- 更新當(dāng)前處于運(yùn)行態(tài)進(jìn)程的進(jìn)程控制塊
- 把該進(jìn)程的進(jìn)程控制塊移到相應(yīng)隊(duì)列
- 選擇另外一個(gè)進(jìn)程執(zhí)行
- 更新所選進(jìn)程的進(jìn)程控制塊斜棚,把進(jìn)程狀態(tài)改為運(yùn)行態(tài)
- 更新內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)
- 載入程序計(jì)數(shù)器和其他寄存器阀蒂,將處理的上下文恢復(fù)為所選進(jìn)程上次退出運(yùn)行的上下文
2.1UNIX進(jìn)程管理(操作系統(tǒng)91頁(yè))
UNIX有9種進(jìn)程狀態(tài):
- 用戶運(yùn)行
- 內(nèi)核運(yùn)行
- 就緒,并駐留在內(nèi)存中
- 休眠弟蚀,并駐留在內(nèi)存中
- 就緒蚤霞,被交換
- 休眠,被交換
- 被搶占
- 創(chuàng)建
- 僵死
UNIX進(jìn)程映像 - 用戶級(jí)上下文
- 寄存器上下文
- 系統(tǒng)級(jí)上下文
2.2進(jìn)程控制(操作系統(tǒng)94頁(yè))
UNIX創(chuàng)建進(jìn)程由內(nèi)核系統(tǒng)使用fork實(shí)現(xiàn)
- 在進(jìn)程表為新進(jìn)程分配一個(gè)空項(xiàng)
- 為子進(jìn)程分配一個(gè)唯一進(jìn)程標(biāo)識(shí)符
- 復(fù)制父進(jìn)程的進(jìn)程映像义钉,共享內(nèi)存外
- 增加父進(jìn)程擁有文件的計(jì)數(shù)器
- 將子進(jìn)程處就緒態(tài)
- 將子進(jìn)程ID返回給父進(jìn)程昧绣,將0返回給子進(jìn)程
所有這些工作在父進(jìn)程內(nèi)核模式執(zhí)行,完成后繼續(xù)分派器例程工作一部分如下三種之一
- 停留在父進(jìn)程中捶闸,控制權(quán)返回用戶模式下父進(jìn)程調(diào)用fork位置
- 處理器控制權(quán)交給子進(jìn)程夜畴,子進(jìn)程執(zhí)行代碼拖刃,執(zhí)行點(diǎn)與父進(jìn)程相同
- 控制權(quán)交給另外一個(gè)進(jìn)程,父進(jìn)程和子進(jìn)程就緒態(tài)