計算機(jī)操作系統(tǒng)(第四版)西安電子科技大學(xué)出版社 第二章課后習(xí)題
1.?什么是前趨圖?為什么要引入前趨圖?
前趨圖(Precedence?Graph) 是一個有向無循環(huán)圖,記為DAG(DirectedAcyclic Graph),用于描述進(jìn)程之間執(zhí)行的前后關(guān)系。
2.試畫出下面四條語句的前趨圖
S1:a=x+y
S2:b=z+1
S3:c=a-b
S4:w=c+1
?

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