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

black_kyatu發表於2018-02-18

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.在分級排程演算法中,為什麼對不同就緒佇列中的程式規定使用不同長度的時間片?
答:因為各個就緒佇列的優先順序不一樣,優先順序越高的佇列時間片長度越小,優先順序越低的佇列時間片越長.這樣做的目的是讓那些短而高優先順序的作業迅速完成,而又讓大的作業又能夠處理完成。


相關文章