-
在操作系統中,引入進程的目的是什麼?
a.程序的執行具有順序性、封閉性和可再現性特徵
b.併發環境中,存在多個程序同時訪問同一個資源的狀況,因而失去了程序對資源操作的封閉性。
c.併發環境中,各程序執行的異步性導致無法預測共享資源狀態的變化情況,是程序執行的結果不再具有“可再現性” -
進程控制包括哪些操作?
(說一點,以下表格中,原語和引發事件並不是一一對應關係,可以看完相關原語再來看相應事件)
a.進程創建
創建原語 | 引發事件 |
---|---|
1.向系統申請空閒的PCB | 用戶登錄 |
2.爲新進程分配資源,例如分配內存空間存放程序和數據 | 作業調度 |
3.初始化新進程的PCB,在PCB中填寫進程標識符、進程狀態、程序和數據的地址、資源清單等 | 提供系統服務(爲響應應用程序請求創建新的服務進程) |
4.將新建進程的PCB排入就緒隊列 | 應用程序請求(使用系統調用創建進程) |
b.進程終止
撤銷原語 | 引發事件 |
---|---|
1.查找撤銷進程的PCB | 進程正常結束,即進程執行完需要做的工作 |
2.若進程處於運行狀態,予以終止,並進行進程調度,以重新挑選其他進程運行 | 進程異常結束,即運行期間由於程序出現某些錯誤和故障而迫使進程終止 |
3.若進程有子孫,予以終止 | 外界干預,即並非本進程在運行期間出現故障,而是由進程以外的事件引起進程終止 |
4.歸還資源 | |
5.從所在隊列移出 |
c.進程阻塞
阻塞原語 | 引發事件 |
---|---|
1.停止進程的執行 | 請求系統服務 |
2.將進程插入阻塞隊列 | 啓動某種操作 |
3.重新調度 | 新數據尚未到達 |
無 | 無新工作可做 |
d.進程喚醒
喚醒原語 | 引發事件 |
---|---|
1.將進程從阻塞隊列解下 | 請求系統服務 |
2.將進程插入就緒隊列 | 啓動某種操作 |
3.改變進程在PCB中的狀態 | 新數據尚未到達 |
無 | 無新工作可做 |
e,進程切換
切換原語 | 引發事件 |
---|---|
1.保存當前執行進程的CPU現場 | 時鐘中斷 |
2.修改當前運行態進程的PCB信息 | I/O設備中斷 |
3.將當前進程的PCB移入相應狀態等待隊列 | 異常 |
4.恢復系統調度進程的CPU現場 | 陷入 |
5.選擇另一個將要進行的進程 | 當前時間片到 |
6.保存系統調度進程的CPU現場 | 有更高優先級的進程到達 |
7.修改系統調度進程的PCB信息(修改爲運行態) | 當前進程主動阻塞 |
8.恢復新調入進程的從從CPU現場 | 當前進程終止 |
-
在操作系統中,進程實體是如何實現的?
a.進程實體是指放在操作系統實現進程時,把進程結構組織分爲三個部分:程序段、數據段和PCB
b.程序段存放進程執行的程序代碼,數據段存放程序執行過程中的使用大抵數據
c.PCB是操作系統中標識進程的唯一數據結構。PCB中記錄了與進程執行相關的所有數據信息,包括進程標識符、進程當前狀態、進程隊列指針、程序和數據段地址、CPU現場(上下文)、通信信息、家族關係、佔用資源清單。 -
操作系統如何實現進程狀態轉換?
a.進程狀態的轉換主要是由進程控制原語實現。
b.對三種基本狀態的表述。
阻塞態,指因等待某種時間的發生而不能運行(即使CPU空閒,也無法運行的進程)
就緒態,已經具備運行,但由於沒有空閒CPU而暫時不能運行(擁有除處理機之外的所有需要的資源,只欠CPU)
運行態,佔有CPU,並CPU上運行(單核處理機系統,每一個時刻最多隻有一個進程處於運行態)
c.在三狀態模型中,引起狀態轉換的事件和實施狀態轉換的操作,例如:
就緒態 → 運行態:進程被調度(一個進程被調度進程選中)
運行態 → 就緒態:時間片到,或CPU被優先級高的進程搶佔(時間片用完或者優先級搶佔)
運行態 → 阻塞態:等待系統分配資源,或等待某事件發生(主動行爲)或等待某個事件發生
阻塞態 → 就緒態:資源分配到位,或等待事件發生(被動行爲)或等待的事件已發生而被喚醒 -
操作系統提供了哪些進程通信機制?
a.共享存儲器系統:分爲共享數據結構和共享存儲區。共享數據結構由於傳遞的數據較少,所以主要用於傳遞資源狀態或控制信息,如信號和信號量;共享存儲區則是提供可共享的內存空間,因而可以傳遞任意數量的數據。
b.管道:一種半雙工的通信機制,允許在兩個進程間創建數據流。可以藉助文件系統調用實現。
c.消息傳遞系統:進程交換以消息爲單位,用戶通過系統調用實現信息的傳遞,例如消息隊列。消息傳遞機制不要求通信的進程間擁有共享的設備資源,因而可用於網絡通信。