進程及其實現
筆記
進程的定義:
具有獨立功能的程序在某個數據集合上的一次運行活動
是操作系統經行資源分配和保護的基本單位
引進進程的原因:
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)異步性:各進程都以不可預知的速度向前推進。
-----------------以上為此次讀書筆記,若有錯誤,歡迎指出--------------