【讀書筆記+小練習(答案已經更新)】作業系統——程式及其實現

蘇亦晨發表於2015-04-11

程式及其實現

筆記                                                                                                              

程式的定義:

      具有獨立功能的程式在某個資料集合上的一次執行活動

        是作業系統經行資源分配和保護的基本單位

引進程式的原因:

      1.刻畫程式的併發行。

       2.解決資源的共享性。

程式的屬性:

      1.動態性。

         2.共享性。

       3.獨立性。

       4.制約性。

       5.併發性。(多個程式的執行在時間上是可以重疊的,在單處理器系統中可以併發執行,但是處理器中只能有一個程式,在多處理器環境中可併發執行)

程式的分類:

      1.使用者程式

         2.系統程式

程式與程式的區別:

       1.程式更能真實地描述併發,而程式不能

       2.程式是由程式、資料、控制塊、核心棧組成

       3.程式是靜態的,程式是動態的

       4.程式有生命後期,有誕生有消亡,是短暫;而程式是想對長久存在的

       5.一個程式可以有多個程式

       拿QQ來說,qq就是一個程式,執行之後就建立了程式了

程式的三種狀態:

         1.執行態:程式佔用處理器正在執行的狀態

        2.就緒態:程式具備執行條件,等待系統分配處理器以便執行的狀態。(萬事俱備,只差CUP)

        3.阻塞態(等待態或者睡眠態):程式不具備執行條件,正在等待某個時間完成的狀態

                 

 

        等待態轉換成就緒態,就緒態轉換為執行態,當正在執行的程式的時間片用完時,執行態也可以轉換為就緒態,就緒態是肯定補能轉換成等待態的,因為萬事俱備了,只是差cup,怎麼可以又倒回去等待呢。等待態也不可以轉換成執行態,你都還沒分配資源,怎麼能直接佔用cup呢。

程式的七種狀態:

           

 

      掛起:將程式從記憶體移到輔存中,釋放記憶體空間。

 

掛起程式的特徵:

         1.該程式不能立即被執行

         2.該程式可能會等待事件,但所等待的事件是獨立於掛起條件的,事件結束並不能導致程式具備執行條件

         3.該程式進入掛起狀態是由於作業系統、父程式或程式自身阻止它的執行

         4.結束掛起狀態的命令只能通過作業系統或父程式發出

 

程式映像:

        某時刻程式的內容及其狀態集合

 

程式要素:

        1.程式控制塊PCB(上下文切換時作業系統拍的照片就是儲存在PCB中)

          2.程式程式塊

          3.程式核心棧

              4.程式資料塊

 

程式控制塊:

 

                              系統為了管理程式設定的一個專門的資料結構,用它來記錄程式的外部特徵,描述程式的運動變化過程。系統利用PCB來控制和管理程式,所以PCB是系統感知程式存在的唯一標誌。程式與PCB是一一對應的

 

                              構成:標誌資訊、現場資訊、控制資訊。

 

                              組織:系統把所有PCB組織在一起,並把它們放在記憶體的固定區域,就構成了PCB表。PCB表的大小決定了 系統中最多可同時 存在的程式個數, 稱為系統的併發度

            使用權:其使用權和修改權均屬於作業系統

 

程式佇列組織方式:

          1.連結方式

          2.索引方式

    不同狀態的程式可以排成不同佇列,如執行佇列、就緒佇列、等待佇列。單處理器的話,執行佇列只有一個程式。等待佇列通常有多個,按照等待狀態:等待I/O裝置,等待訊號量等等

    在PCB池中空閒的PCB會連結成自由佇列

    空閒程式佇列指標就是指空閒的PCB

 

程式上下文切換:

       程式切換必定在核心態發生。

         步驟:

            1.儲存被中斷程式的處理器現場資訊(拍照)

            2.修改被中斷程式PCB的有關資訊:如程式狀態等

            3.把被中斷金程式的PCB加入相關佇列

            4.選擇佔用處理器執行的另一個程式

            5.修改被選中程式PCB的有關資訊:如改為就緒態

            6.設定被選中程式的地址空間,恢復儲存管理資訊

            7.根據被選中程式的上下文資訊來恢復處理器現場

 

                                  程式切換一定會引起模式切換

 

 

程式建立:

            1.在程式列表中增加一項,從PCB池中申請一個空閒PCB,為新程式分配唯一程式識別符號

         2.為新程式的程式映像分配地址空間,以便容納程式實體,由程式管理程式確定載入至程式地址空間中的程式

         3.為新程式分配各種資源

         4.初始化PCB,如程式識別符號、處理器初始狀態、程式優先順序

         5.把新程式的狀態設定為就緒態,並將其移入就緒佇列

         6.通知作業系統某些模組,如記賬程式,效能監控程式等

 

程式撤銷:

       程式完成特定工作或出現嚴重錯誤後必須被撤銷。

         分類:

            正常撤銷和非正常撤銷。

         原因:

            1.程式執行結束

            2.程式執行非法指令

            3.程式在使用者態執行特權指令

            4.程式執行時間超過所分配的最大時間配額

            5.程式等待時間超過所設定的最長等待時間

            6.越界錯誤

            7.對共享記憶體區的非法使用

            8.出現程式性故障

            9.I/O操作故障

              10.操作員干預等。

          一旦發生以上事件,系統或程式將呼叫撤銷原語來終止自己或者子程式。

          步驟:

             1.根據撤銷程式的標識號從相應佇列中查詢並移除它

             2.將此程式所擁有的資源歸還給父程式或作業系統

             3.若此程式擁有子程式,先撤銷其所有子程式以防止它們脫離控制

             4.回收PCB並將其歸還至PCB池

             5.轉向程式排程程式工作

 

程式阻塞和喚醒:

        程式阻塞是指程式讓出處理器轉而等待一個事件,如等待資源、等待I/O操作完成、等待事件發生等

          程式通常呼叫阻塞原語來阻塞自己,所以阻塞是程式的自主行為,是一個同步事件   

          程式阻塞步驟:

                  1.停止程式執行,將現場資訊儲存到PCB

                  2.修改程式PCB的有關內容,如程式狀態由執行態改為等待態等,並把狀態已修改的程式移入相應事件的等待佇列

                  3.轉向程式排程程式,排程其他程式執行

          程式喚醒步驟:

                  1.從相應的等待佇列移除程式

                  2.修改PCB的有關內容,如程式狀態改為就緒態,並將程式移入就緒佇列

                  3.若被喚醒的程式比當前執行的程式的優先順序高,則重新設定排程標誌

           阻塞原語和喚醒原語的作用剛好相反。

           呼叫了阻塞原語來阻塞自己,必須由與相關的另一程式呼叫喚醒原語來喚醒被阻塞程式,否則被阻塞程式會因未被喚醒而處於永遠阻塞狀態

 

 

 

              掛起原語既可由程式自己也可由其他程式呼叫,但是啟用原語只能由其他程式呼叫

     

小練習                                                                                                                                 

一、填空題

1.程式的靜態描述由三部分組成: ①PCB、②程式部分、③相關的資料結構集  

2.程式存在的標誌是:程式控制塊PCB

3.給出用於程式控制的四種常見的原語:建立原語、撤消原語、阻塞原語、喚醒原語

4程式被建立後,最初處於   ①   狀態,然後經  ②   選中後進入  ③   狀態

    ①就緒,②程式排程程式,③執行

5. ①   是現代作業系統的基本特徵之一,為了更好地描述這一特徵而引入了 ②   這一概念。

    ①程式的併發執行,②程式

 

二、單項選擇題

1.程式排程是從 (     )選擇一個程式投入執行。

    (A)就緒佇列                      (B)等待佇列

    (C)作業後備佇列                 (D)提交佇列

2.一個程式被喚醒,意味著  (  )

    (A)該程式重新佔有了CPU      (B)程式狀態變為就緒

    (C)它的優先權變為最大         (D)其PCB移至就緒佇列的隊首

3.程式和程式的本質區別是   (  )

    (A)儲存在記憶體和外存                  (B)順序和非順序執行機器指令

    (C)分時使用和獨佔使用計算機資源 (D)動態和靜態特徵

4.某程式所要求的一次列印輸出結束,該程式被  ①  C,程式的狀態將從  ②F

    (A)阻塞                             (B)執行

    (C)喚醒                             (D)執行狀態到阻塞狀態

    (E)就緒到執行                     (F)阻塞到就緒

5.一程式在某一時刻具有(  )

    (A)一種狀態                       (B)兩種狀態

    (C)三種狀態                       (D)四種狀態

6.程式從執行狀態變為等待的原因可能是(  )

    (A)輸入/輸出事件發生          (B)時間片到

    (C)輸入/輸出事件完成          (D)某個程式被喚醒

 

【解析】正在執行的程式如果要申請輸入或輸出,這時程式的狀態將從執行變為等待,將CPU讓出,等待輸入或

 

輸出完成。

 

 

7.程式建立原語的任務是(  )

    (A)為程式編制程式               (B)為程式建立PCB表

    (C)為程式分配CPU               (D)為程式分配所需的各種資源

8.程式被建立後即進入 (    )排隊

    (A)阻塞佇列                       (B)就緒佇列

    (C)緩衝佇列                       (D)執行佇列

【解析】程式建立後,按就緒佇列的排列順序插入其中,等待程式排程程式的排程。

 

9.多道系統環境下,作業系統分配資源是以(     )為基本單位。

    (A)作業                             (B)指令

    (C)程式                             (D)程式

10.一個程式獲得了除CPU以外的所需資源,則該程式可能處於(   )狀態

    (A)執行                              (B)就緒  

    (C)等待                              (D)  (B)和(C)

11.保護現場是指將現場資訊儲存至(   )

  (A)磁碟                                 (B)各相應的暫存器

  (C)程式的PCB中                      (D)記憶體系統區

 

三、多項選擇題:

1.程式所具有的基本狀態包括_________。

(A)後備狀態                (B)執行狀態    

(C)完成狀態                (D)就緒狀態     

(E)等待狀態

2.程式所具有的基本特徵包括_________。

(A)動態性                       (B)順序性   

(C)併發性                       (D)封閉性       

(E)非同步性

3.一個程式通常包括_________。

(A)程式                         (B)作業說明書

(C)資料                         (D)執行日誌     

(E)程式控制塊(PCB)

4.執行狀態的程式由於某種原因可能變為_________。

(A)就緒狀態                     (B)等待狀態

(C)後備狀態                     (D)完成狀態     

(E)活躍狀態

5. 程式排程演算法中,可以設計成“可搶佔式”的演算法有_________。

(A)先來先服務排程演算法          (B)優先數排程演算法     (C)最高響應比優先             

(D)時間片輪轉排程演算法          (E)最短作業優先

 

【解析】常用的程式排程演算法有先來先服務、優先數、時間片輪轉及多級排程等演算法。而先來先服務排程演算法是“非

 

搶佔式”的;“優先數排程演算法”可以是“非搶佔式”的,也可以是“搶佔式”的;“時間片輪轉排程演算法”是一種“搶

 

佔式”的。演算法“最高響應比優先”、“最短作業優先”適用於作業排程,而不適於程式排程。所以選擇(B)、(D)。

 

 

6.從中斷事件的性質來說,一般中斷包括_________。

(A)硬體故障中斷           (B)程式中斷

(C)外部中斷               (D)輸入輸出中斷     

(E)訪管中斷

7.在下列敘述中,正確的是_________。

(A)程式之間的狀態變化,一定在PCB中反映出來

(B)當程式完成I/O後,程式的狀態由等待變為執行

(C)中斷遮蔽是不允許發生中斷

(D)O.S的特徵之一為並行性,所謂並行性是指多個程式同時處於執行狀態

(E)中斷遮蔽是暫時不響應中斷

8.可以做為程式排程演算法的有_________。

(A)先來先服務排程演算法           (B)時間片輪轉排程演算法

(C)最高優先順序排程演算法           (D)響應比高者優先排程演算法

(E)均衡排程演算法

11.________可能會引起處理機從一個程式轉到另一個程式。

(A)一個程式從執行狀態變為等待狀態

(B)一個程式從執行狀態變為就緒狀態

(C)一個就緒狀態程式的優先順序降低     

(D)一個程式執行完成而撤離系統

(E)一個就緒狀態程式的優先順序升高

 

【解析】當一個就緒狀態程式的優先順序降低時,不會引起處理機從一個程式轉到另一個程式。因此,不能選擇C,其

 

它情況都可能引起處理機在不同程式之間的轉換。所以,本題應該選擇(A)、(B)、(D)、(E)。

 

 

四、是非判斷題

1.程式之間的狀態變化,一定在PCB中反映出來。(正確)

2.當程式完成I/O後,程式的狀態由等待變為執行。(錯誤)

3.中斷遮蔽是不允許發生中斷。 (錯誤 )

【解析】中斷遮蔽期間允許發生中斷,但暫時不響應。

4.O.S的特徵之一為並行性,所謂並行性是指多個程式同時處於執行狀態  ( 錯誤)

 

 

五、簡答題

 1.設有三個程式A,B,C,程式A和程式B各需要執行3毫秒的處理器時間,而程式C卻要24毫秒的處理器時間,分別考慮當三個程式到達順序為A,B,C時及C,B,A時,用先來先服務進行排程時各自的平均等待時間。

 

【解析】當三個程式到達順序為A,B,C時,按照先來先服務的順序,程式A先佔用處理器,程式B需等待3毫秒後才能去佔用處理器,程式C在等待6毫秒的時間後可以佔用處理器。於是,它們的平均等待時間為(0+3+6)/3=3毫秒。如果程式是按 C,B,A的次序排入佇列,則程式C先佔用處理器執行24毫秒後才能讓程式B佔用,即程式B需等待24毫秒,而程式A在等了27毫秒後才可佔用處理器,現在這三個程式的平均等待時間為(27+24+0)/3=17毫秒。 7可見當執行時間長的程式先就緒的話,先來先服務演算法使系統效率受到影響。

 

 

2.引起“程式切換”的時機有哪些?

 

【解析】我們把處理機從一個程式轉到另一個程式稱為“程式切換”。引起“程式切換”的時機有以下幾種情況:

 

(1)一個程式從執行狀態變為等待狀態。

 

(2)一個程式從執行狀態變為就緒狀態。

 

(3)一個程式從等待狀態變為就緒狀態。

 

(4)一個程式執行完成而撤離系統。

 

 

3.程式控制塊(PCB)中應該包括哪些內容,其作用是什麼?

 

【解析】程式控制塊是用以記錄程式有關資訊的一塊主存,其中登記著諸如:程式標識、程式狀態、優先順序、中斷現場保

 

護區、所佔資源等資訊。它是由系統為每個程式分別建立的,並且在程式結束其生命期時由系統將相應的PCB撤消,

 

PCB是程式存在的標識。

 

 

4.程式在系統中有哪幾種基本狀態,狀態如何發生變化?

 

【解析】通常一個程式至少有三種不同的狀態:執行狀態、就緒狀態、等待狀態。

 

(1)執行狀態(Running):當一個程式正在處理機上執行時,稱其處於執行狀態。

 

(2)就緒狀態(Ready):當一個程式具備了執行條件,一旦獲得處理機即可執行,稱此程式處於就緒狀態。

 

(3)等待狀態(Blocked):當一個程式由於等待某事件的發生(如I/O完成)而不能執行時,稱此程式處於等待狀態。

 

5.程式具有哪些基本特徵?

【解析】

(1)動態性:程式包含了程式及相應的資料集合,執行過程中其狀態處於不斷地變化。

 

(2)併發性:系統中各程式交替佔用CPU,它們是併發執行的。

 

3)非同步性:各程式都以不可預知的速度向前推進。

 

  -----------------以上為此次讀書筆記,若有錯誤,歡迎指出--------------

相關文章