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