自考(2017年版)《操作系統》——第三章思考題與練習題參考答案(自做)

1.什麼是多道程序設計
答:允許多道程序同時進入內存並運行。P79


2.多道程序設計怎樣提高系統效率?多道程序設計一定能提高系統效率嗎?
答:多道程序設計利用了系統與外圍設備的並行工作能力,從而提高工作效率。具體表現爲: 提高了處理器的利用率;充分利用外圍設備資源:計算機系統配置多種外圍設備,採用多道程序設計並行工作時,可以將使用不同設備的程序搭配在一起同時裝入主存儲器,使得系統中各外圍設備經常處於忙碌狀態,系統資源被充分利用;發揮了處理器與外圍設備以及外圍設備之間的並行工作能力。
採用多道程序設計能改變系統資源的使用情況,提高系統效率。但是也存在一些問題:

  • 可能延長程序的執行時間:多道程序設計能提高系統整體的吞吐量和效率,但是具體到某個程序,則可能會延長其執行時間。
  • 系統效率的提高有一定限度:隨着並行工作的程序道數的增加,內存大小和外圍設備數量都是有限的,而多個程序要求使用同一資源的情況也會經常發生,此外還有程序執行速度的不確定性和用戶提交程序的隨機性,使得多道程序設計對系統效率的提高有一定限度。P80

3.操作系統中爲什麼要引入“進程”?進程和程序有什麼區別?
答:爲了更好的描述程序的併發執行,實現操作系統的併發性和共享性,引入進程的概念來從技術上較爲準確的描述正在運行、將要運行或者剛剛退出的各個程序的執行代碼、數據以及所需要的資源信息等。
與程序的區別:進程是指一個程序在一個數據集合上的一次執行過程。程序是靜止的,進程是動態的(執行),進程包括程序和程序處理的對象,進程能夠得到程序處理的結果。P81


4.程序的併發執行有什麼特點?併發和並行有什麼區別?
答:特點:

  1. 在執行期間併發程序相互制約
  2. 程序與計算不再一一對應
  3. 併發程序的執行結果不再可現

程序的並行執行與併發執行區別:併發執行指的是在宏觀上,即某一段時間週期內是同時進行的,這個時間週期要比處理區的指令處理週期長得多。在單處理器系統上,宏觀上的併發執行程序在微觀上仍然是順序執行的。而並行執行則是不論愛宏觀的時間週期上,還是微觀上看,若干程序確實在同時運行。P78


5.可再入程序有什麼特性?
答:可再入程序是指一個能夠被多個用戶同時調用的程序。它的特性有兩點:

  1. 程序必須是純代碼,在執行時自身不改變;
  2. 可再入程序的操作對象,即數據與程序是分離的,要求調用者提供專用工作區。

6.進程有哪些基本狀態?它們的變化關係是怎樣的?
答: 通常,根據進程執行過程中不同時刻的狀態,可歸納爲三種基本狀態: ·

  • 等待態:等待某個事件的完成;
  • ·就緒態:等待系統分配處理器以便運行; ·
  • 運行態:佔有處理器正在運行。

進程在執行中狀態會不斷地改變,每個進程在任何時刻總是處於上述三種基本狀態的某一種基本狀態.

  • 運行態→等待態: 往往是由於等待外設,等待主存等資源分配或等待人工干預而引起的。
  • 運行態→就緒態: 不是由於自身原因,而是由外界原因使運行狀態的進程讓出處理器,這時候就變成就緒態。例如時間片用完,或有更高優先級的進程來搶佔處理器等。
  • 就緒態→運行態: 系統按某種策略選中就緒隊列中的一個進程佔用處理器,此時就變成了運行態。

7.系統有n(n>1)個進程,在任一時刻,處於運行、就緒和等待狀態的進程最多、最少各有幾個?
答:在單處理器系統中,任一時刻,處於運行狀態的進程最多隻有一個,最少爲0個;處於就緒狀態的進程最多有n-1個,最少爲0個;處於等待狀態的進程最多有n個,最少有0個。


8.進程控制塊的作用是什麼?其主要內容有哪些?
答:進程控制塊的作用:

  • 記錄進程的有關信息,以便操作系統的進程調度程序對進程進行調度。 這些信息包括標誌信息、說明信息、現場信息和管理信息等;
  • 標誌進程的存在,進程控制塊是進程存在的唯一標誌。

主要內容:

  • 調度信息:進程名,進程號,地址空間信息,優先級,當前狀態,資源清單,“家族”關係,消息隊列指針,進程隊列指針和當前打開文件等。
  • 現場信息:記錄可能會被其他進程改變的寄存器,如程序狀態字、時鐘、界地址寄存器等。P86

9.進程能否修改訪問自己的進程控制塊內容
答:進程控制塊是系統爲程序建立的用於標誌進程,記錄各進程執行情況的。進程本身不能訪問或者修改自己的進程控制塊的內容,但父進程可以訪問或修改其子孫進程的進程控制塊內容,以便對它的子孫進程進行必要的管理和控制。


10.當進程調度選中一個進程後,怎樣才能讓它佔用處理器?
答:當進程調度選中一個進程後,把選中進程的進程控制塊中有關的現場信息,如通用寄存器、控制寄存器和程序狀態字寄存器的內容送入處理器相應的寄存器中,處理器就按該進程的要求工作,達到了進程佔用處理器的目的。P101


11.爲什麼要引入線程?線程和進程之間的區別和聯繫是什麼?
答:線程引入是爲了減少程序併發執行時所付出的時間和空間開銷,使操作系統具有更好的併發性。
與進程的區別和聯繫:
聯繫:

  • 進程和線程都是操作系統所運行的程序運行的基本單元。線程具有許多傳統進程的特徵,又稱爲輕量級進程。

區別:

  • 線程是CPU獨立運行和獨立調度的基本單位,不擁有自己的系統資源,而是與同一進程的其他線程共享該進程的資源;進程則是資源分配的基本單位,擁有自己的獨立地址空間。P96

12.爲什麼說線程間的狀態切換比進程間的狀態切換開銷更低?同一進程中的兩個線程切換的開銷是否也比不同進程中兩個線程切換的開銷少?
答:線程不擁有自己的系統資源,切換狀態時只需要保存少量的急促器內容,不涉及存儲器管理方面的操作;而進程擁有自己的系統資源,創建和撤銷時都需要進行資源分配或回收,切換狀態時需要對整個當前進程的處理器環境進行保存,並對新的被調度的進程的處理器環境進行設置,這些操作都需要佔用消耗系統資源。
同一進程間的線程具有相同的地址空間,共享相同的系統資源,切換方便,而不同進程之前線程切換時則需要進行進程切換,所以同一進程間的線程切換時開銷也要小於不同進程中兩個線程切換的開銷。P97


13.進程調度的作用是什麼?引起進程調度的因素有哪些?
答:在多道程序設計環境中,進程數往往多於處理機數,這將導致多個進程互相爭奪處理機。進程調度的作用是記錄系統中所有進程的執行狀況,根據一定的調度算法,從就緒隊列中選出一個進程來,把CPU分配給它。
引起進程調度的因素主要有:正在執行的進程運行完畢、正在執行的進程發送錯誤而中止、正在執行的進程進入等待(阻塞)狀態、正在執行的進程的時間片用完、就緒隊列中某個進程優先級高於正在運行進程的優先級。總之,當一個進程讓出處理器或在搶佔式調度中出現高優先級的就緒進程,就會引發進程調度,使另一個進程佔用處理器運行。P101


14.搶佔式調度和非搶佔式調度有何區別?
答:搶佔式調度中,當出現優先級較高的 就緒進程時,會立刻進行調度,轉讓處理器給優先級高的進程。非搶佔式調度中,一旦把處理器分配給某個進程,它就會一直佔有處理器,直到該進程進入阻塞狀態或者時間片耗盡。P101


15.對於進程調度,較小的優先級值是表示較低的優先級還是較高的優先級?
答:不同的操作系統中設定不同。 在UNIX和許多其他系統中,大的優先級值表示低優先級進程。許多系統,比如WINDOWS,剛好相反,大數值表示高優先級。P107


21.在分級調度算法中,爲什麼對不同就緒隊列中的進程規定使用不同長度的時間片?
答:因爲各個就緒隊列的優先級不一樣,優先級越高的隊列時間片長度越小,優先級越低的隊列時間片越長.這樣做的目的是讓那些短而高優先級的作業迅速完成,而又讓大的作業又能夠處理完成。


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