操作系統第三單元思考題和練習題

1、什麼是多道程序設計
多道程序設計是指在計算機中同時存在兩個或者兩個以上的在操作系統管理下互相穿插運行的程序。

2、多道程序設計怎麼提高系統效率?多道程序設計一定能提高系統效率麼?
多道程序設計通過在極短時間內不斷切換程序執行,減少IO等待時間來提高系統效率。
多道程序設計可能會導致死鎖,所以不一定能提高系統效率。

3、操作系統爲什麼要引入“進程”?進程和程序有什麼區別?
進程是獨立佔有資源的一個單位。爲了能更好的描述程序的併發執行,實現操作系統的併發性和共享性,引入了進程這個概念。
進程的動態的,程序是靜態的,程序被裝入內存調用時就會變成進程。進程具有產生其他進程的能力。

4、可再入程序有什麼特徵。
能被多個用戶同時調用且不改變程序本身。

6、進程有哪些基本狀態,他們的變化關係是怎麼樣的?
進程三態模型:運行、等待、就緒
運行中的進程缺少需要的資源時進入等待態,當沒有運行進程時,根據調度算法選擇一個就緒態的進程進入運行態,當等待態的進程得到一個資源時,加入就緒態。

7、系統中有n(n>1)個進程,在任意時刻,處於運行、就緒、等待狀態的進程最多、最少有幾個。
運行態最多:1個,最少:0個
就緒態最多:n個,最少:0個
等待態最多:n個,最少:0個

8、進程控制塊的作用是什麼,其主要內容是什麼?
進程控制塊是描述一個進程存在的數據結構。其中保存了進程號、進程優先級、進程名、當前狀態、自願清單、程序狀態字等內容。
其作用就是便於操作系統控制和描述進程的活動過程。用來描述進程的基本情況和運行的變化過程。

9、進程能否修改訪問自己的進程控制塊的內容?
不能,進程控制塊是系統中較爲重要的一個部分,只能由操作系統進行修改。

10、當進程調度選中一個進程之後,怎樣才能讓他佔用處理器?
把CPU分配給該進程,把PCB中的有關的現場信息傳遞到相應的寄存器中。

11、爲什麼要引入線程?線程和進程之間的區別和聯繫是什麼?
爲了更好的實現進程之間的併發執行,更合理的利用進程資源,引入了線程這一概念。
線程是進程的一個組成部分,線程不能獨立的擁有資源,線程需要通過進程分配資源。
進程是可擁有資源的獨立單位。進程是獨立調度和分派的最小單位。

12、爲什麼說線程之間的狀態切換比進程之間的狀態切換開銷更低?同一個進程中的兩個線程切換的開銷是否也比不同進程中的兩個線程切換的開銷小?
因爲線程之間的狀態切換不需要CPU介入。
是的

13、進程調度的作用是什麼?引起進程調度的因素有哪些?
進程調度的作用是更好的實現程序的併發執行,提高操作系統資源的利用率。
因素:時間片用完。沒有資源被阻塞。

14、搶佔式調度和非搶佔式調度有什麼區別。
搶佔式調度會打斷當前正在運行的進程,使當前進程進入運行態
非搶佔式調度會在當前進程執行後,將自己插入到運行態。

15、對於進程調度,較小的優先級值是表示較小的優先級還是表示較高的優先級?
有的系統中,優先級值越小,優先級越高。

16、在一個單處理器的多道程序設計中,現有兩道程序同時運行,其中一道以計算爲主,另一個以輸入輸出爲主。將怎樣賦予進程佔有處理器的優先數,解釋爲什麼。
計算爲主的爲計算密集型,需要高優先級,讓CPU經常進行計算,減少計算等待時間。
輸入輸出爲主的爲IO密集型,設計低優先級,避免CPU等待IO,減少等待IO時間。

17、假定就緒隊列中的進程按優先數自大到小的順序排列,當有進程要加入就緒隊列時,應按他的優先數排入相應的位置,試就單向鏈接的方式寫出實現進程入隊的程序。
For(int I=0;i<count(program_list);i++){
If(program_list[i] < now){
For(int j = count(program_list)+1;j>i+1;j–){
Program_list[j+1] = program_list[j];
}
Program_list[i] = now;
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章