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


進程及其實現

筆記                                                                                                              

進程的定義:

      具有獨立功能的程序在某個數據集合上的一次運行活動

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

引進進程的原因:

      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)異步性:各進程都以不可預知的速度向前推進。

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM