第二章習題解析
1. 什么是前趨圖?為什么要引入前趨圖?
答:前趨圖 (Precedence Graph) 是一個有向無循環圖,記為DAG(DirectedAcyclic Graph) ,用於描述進程之間執行的前后關系。
2. 畫出下面四條語句的前趨圖:
S1=a: =x+y;
S2=b:=z+1;
S3=c:=a–b ;
S4=w:=c+1;
答:其前趨圖為:
3. 什么程序並發執行會產生間斷性特征?
答:程序在並發執行時,由於它們共享系統資源,為完成同一項任務需要相互合作,致使這些並發執行的進程之間,形成了相互制約關系,從而使得進程在執行期間出現間斷性。
4.程序並發執行時為什么會失去封閉性和可再現性?
答:程序並發執行時,多個程序共享系統中的各種資源,因而這些資源的狀態由多個程序改變,致使程序運行失去了封閉性,也會導致其失去可再現性。
5.在操作系統中為什么要引入進程概念?它會產生什么樣的影響?
答:為了使程序在多道程序環境下能並發執行,並對並發執行的程序加以控制和描述,在操作系統中引入了進程概念。
影響 : 使程序的並發執行得以實行。
6.試從動態性,並發性和獨立性上比較進程和程序。
答: (1) 動態性是進程最基本的特性,表現為由創建而產生,由調度而執行,因得不到資源而暫停執行,由撤銷而消亡。進程有一定的生命期,而程序只是一組有序的指令集合,是靜態實體。
(2) 並發性是進程的重要特征,同時也是OS 的重要特征。引入進程的目的正是為了使其程序能和其它進程的程序並發執行,而程序是不能並發執行的。
(3) 獨立性是指進程實體是一個能獨立運行的基本單位,也是系統中獨立獲得資源和獨立調度的基本單位。對於未建立任何進程的程序,不能作為獨立單位參加運行。
7.試說明PCB的作用,為什么說PCB是進程存在的唯一標志?
答: PCB 是進程實體的一部分,是操作系統中最重要的記錄型數據結構 。作用是使一個在多道程序環境下不能獨立運行的程序,成為一個能獨立運行的基本單位,
成為能與其它進程並發執行的進程。OS是根據PCB對並發執行的進程進行控制和管理的。
8.PCB提供了進程管理和進程調度所需要的哪些信息?
答: 進程管理:通用寄存器、指令計數器、程序狀態字、用戶棧指針
進程調度:進程狀態、進程優先級、事件、其他信息
9.進程控制塊的組織方式有哪幾種?
答:線性方式、鏈接方式、索引方式
10.何謂操作系統內核?內核的主要功能是什么?
答:現在操作系統一般將0S划分為若干層次,再將0s的不同功能分別設置在不同的層次中。通常將一些與硬件緊密相關的模塊(如中斷處理程序等)、各種常用設備的驅動程序以及運行頻率較髙的模塊(如時鍾管理、
進程調度和許多模塊所公用的一些基本操作),都安排在緊靠硬件的軟件層次中,將它們常駐內存,即通常被稱為的0S內核。
支撐功能:中斷處理、時鍾管理、原語操作
資源管理功能:進程管理、存儲器管理、設備管理
11.試說明進程在三個基本狀態之間轉換的典型原因。
答:(1)就緒狀態一執行狀態:進程分配到CPU資源
(2)執行狀態一就緒狀態:時間片用完
(3)執行狀態一阻塞狀態:I/0請求
(4)阻塞狀態一就緒狀態:I/0完成
12 .為什么要引入掛起狀態?該狀態有哪些性質?
答:引入掛起狀態處於五種不同的需要:終端用戶需要,父進程需要,操作系統需要,對換需要和負荷調節需要。處於掛起狀態的進程不能接收處理機調度。
13 .在進行進程切換時,所要保存的處理機狀態信息有哪些?
答:進行進程切換時,所要保存的處理機狀態信息有:
(1)進程當前暫存信息
(2)下一指令地址信息
(3)進程狀態信息
(4)過程和系統調用參數及調用地址信息。
14 .試說明引起進程創建的主要事件。
答:引起進程創建的主要事件有:用戶登錄、作業調度、提供服務、應用請求。
15 .試說明引起進程被撤銷的主要事件。
答:引起進程被撤銷的主要事件有:正常結束、異常結束(越界錯誤、保護錯、非法指令、特權指令錯、運行超時、等待超時、算術運算錯、I/0故障)、外界干預(操作員或操作系統干預、父進程請求、父進程終止)。
16 .在創建一個進程時所要完成的主要工作是什么?
答:(1)0S發現請求創建新進程事件后,調用進程創建原語Creat();
(2)申請空白PCB;
(3)為新進程分配資源;
(4)初始化進程控制塊;
(5)將新進程插入就緒隊列。
17. 在撤銷一個進程時所要完成的主要工作是什么?
答:(1)根據被終止進程標識符,從PCB集中檢索出進程PCB,讀出該進程狀態。
(2)若被終止進程處於執行狀態,立即終止該進程的執行,置調度標志真,指示該進程被終止后重新調度。
(3)若該進程還有子進程,應將所有子孫進程終止,以防它們成為不可控進程。
(4)將被終止進程擁有的全部資源,歸還給父進程,或歸還給系統。
(5)將被終止進程PCB從所在隊列或列表中移出,等待其它程序搜集信息。
18.試說明引起進程阻塞戒被喚醒的主要事件是什么?
答:a.請求系統服務;b.啟動某種操作;c.新數據尚未到達;d.無新工作可做。
19.為什么要在0S中引入線程?
答:在操作系統中引入線程,則是為了減少程序在並發執行時所付出的時空開銷,使0S具有更好的並發性,提高CPU的利用率。進程是分配資源的基本單位,而線程則是系統調度的基本單位。
20.試說明線程具有哪些屬性?
答:(1)輕型實體(2) 獨立調度和分派的基本單位(3)可並發執行(4)共享進程資源。
21.試從調度性,並取性,擁有資源及系統開銷方面對進程和線程進行比較。
答:(1)調度性。線程在0S中作為調度和分派的基本單位,進程只作為資源擁有的基本單位。
(2)並發性。進程可以並發執行,一個進程的多個線程也可並發執行。
(3)擁有資源。進程始終是擁有資源的基本單位,線程只擁有運行時必不可少的資源,本身基本不擁有系統資源,但可以訪問隸屬進程的資源。
(4)系統開銷。操作系統在創建、撤消和切換進程時付出的開銷顯著大於線程。
22.何謂用戶級線程和內核支持線程?
答:(1)用戶級線程:僅存在於用戶空間中的線程,無須內核支持。這種線程的創建、撤銷、線程間的同步與通信等功能,都無需利用系統調用實現。用戶級線程的切換通常發生在一個應用進程的諸多線程之間,同樣無需內核支持。
(2)內核支持線程:在內核支持下運行的線程。無論是用戶進程中的線程,還是系統線程中的線程,其創建、撤銷和切換等都是依靠內核,在內核空間中實現的。
在內核空間里還為每個內核支持線程設置了線程控制塊,內核根據該控制塊感知某線程的存在並實施控制。
23.試說明用戶級線程的實現方法。
答:用戶級線程是在用戶空間中的實現的,運行在“運行時系統”與“內核控制線程”的中間系統上。運行時系統用於管理和控制線程的函數的集合。內核控制線程或輕型進程LWP可通過系統調用獲得內核提供服務,利用LWP進程作為中間系統。
24.試說明內核支持線程的實現方法。
答:系統在創建新進程時,分配一個任務數據區PTDA,其中包括若干個線程控制塊TCB空間。創建一個線程分配一個TCB,有關信息寫入TCB,為之分配必要的資源。
當PTDA中的TCB用完,而進程又有新線程時,只要所創建的線程數目未超過系統允許值,系統可在為之分配新的TCB;在撤銷一個線程時,也應回收線程的所有資源和TCB。
25.多線程模型有哪幾種類型?多對一模型有何優缺點?
答:多對一模型、一對一模型和多對多模型。
多對一模型的主要缺點在於,如果一個線程在訪問內核時發生阻塞,則整個進程都會被阻塞;此外,在任一時刻,只有一個線程能夠訪問內核,多個線程不能同時在多個處理機上運行。