【MOOC】华中科技大学操作系统慕课答案-第4~6章+第7章单元测试
文章目錄
- 單選
- 填空
- 判斷
- 第七章答案
單選
1 ?關于進程錯誤的說法是 。
A. 進程的運行全過程不可重現。
√B. 一個程序只能生成一個進程。
C. 進程具有異步性。
D. 多個并發進程共享CPU。
B一定錯,一個程序可以生成多個進程。
A可對可錯,A因為現在的操作系統進程調度過程都非常復雜,所以全過程不可重現。C/D一般情況是正確的。
2 ?關于進程狀態說法錯誤的是 。
√A. 單CPU的系統中處于運行態的進程可以有多個。
B. 進程在整個生存期間會根據不同條件轉換狀態。
C. 阻塞態的進程即便給它CPU它也無法運行。
D. 處于就緒態的進程都在等待CPU。
A. 運行態它就是占用CPU的進程,像申請了I/O設備的就是阻塞態了。
3 ?關進程控制塊PCB說法錯誤的是 。
A. PCB是進程存在的標志
B. Linux中定義PCB的數據結構是task_struct。
√C. 進程生存期間PCB成員變量的值一直保持不變。
D. 創建進程的時候創建PCB數據結構。
4 ?進程創建后的狀態是 。
√A. 就緒態
B. 運行態
C. 阻塞態
D. 核態
5 ?關于進程控制說法錯誤的是 。?
A. 進程生存期間都受操作系統控制。
B. 進程控制采用原語實現。
C. 進程被喚醒的條件和被阻塞的原因一致。
√D. 進程被撤銷時操作系統收回其占用資源,但是不釋放相應的PCB。
D. 根據進程撤銷原語,撤銷的時候是要釋放相應的PCB的。
C選項可以理解成:解鈴還須系鈴人。
6 ?下列應用場景中不適合采用線程的是 。
A. 多個功能需要并發的地方
B. 需要改善窗口交互性的地方
C. 需要改善程序結構的地方
√D. 應用程序的初始化
C可以把一個任務分成多個子任務并行完成,改善程序結構,使用多線程。
D可能它就是主線程的任務吧。
7 ?關于臨界資源和臨界區的說法錯誤的是 。
A. 臨界資源是一個共享變量。
B. 臨界區是程序中的某個片段。
C. 臨界區中含有對臨界資源的存取操作。
√D. 線程內定義的變量可以是臨界資源。
D. 線程內定義的不是公共變量。
A中的變量應該是廣義的“變量”,而不僅僅指程序的標識符變量。
8 ?關于臨界資源和臨界區的說法錯誤的是 。
A. 臨界區不允許兩個或多個進程同時進入。
√B. 有限等待原則要求程序員盡量把臨界區設置大一些。
C. 讓權等待可以讓系統工作效率更高。
D. 同一個線程內可以設置多個不同的臨界區。
B. 有限等待。 對請求訪問的進程,應保證能在有限的時間內進入臨界區(保證不會饑餓)。
如果臨界區設置得過大,一個進程占用的時間就會過長,別的進程就會饑餓。
9 ?關于鎖進制的說法錯誤的是 。
A. 鎖機制設置一個標志表示臨界區是否可用。
B. 鎖機制只能解決進程互斥的問題。
C. 鎖機制滿足忙則等待和空閑讓進的原則
√D. 鎖機制滿足有限等待和讓權等待的原則
在這個課程里面鎖機制不滿足讓權等待原則,emm,明明能改進的說。B選項也有點絕對化。
10 ?關于P-V操作的說法錯誤的是 。?
A. P-V操作是比鎖機制更靈活的同步進制。
B. P-V操作可以用于控制進程間的同步和互斥。
C. P-V操作的核心是兩個函數,用來對信號燈和進程進行控制。
√D. P操作和V操作都會把信號量加1。
11 ?關于P-V操作的說法錯誤的是 。?
A. P操作可能會阻塞調用進程。
B. V操作會把信號量加1。
√C. P操作可以喚醒一個進程。
D. P操作和V操作在所有并發進程中成對出現。
C. P操作只能保證在還剩信號量的時候,能讓這個進程能夠繼續執行下去;V操作才能喚醒沉睡的進程。
D有點絕對。問了老師,解答是:我們用信號量及PV操作來實現進程的同步和互斥。PV操作屬于進程的低級通信。每個程序中用戶實現互斥的P、V操作必須成對出現,先做P操作,進臨界區,后做V操作,出臨界區。若有多個分支,要認真檢查其成對性。
12 ?關于P-V操作解決同步問題的說法正確的是 。
A. 一般在關鍵操作之前執行V操作。
B. 一般在關鍵操作之后執行P操作。
C. 信號量S的定義可以隨意定義。
√D. 信號量S的初值設置不對可能導致進程并發過程出錯。
13 ?關于Windwos的同步進制不正確的是 。
√A. 臨界區機制CRITICAL_SECTION可以用于進程間的同步。
B. WaitForMultipleObjects函數可能會使調用線程阻塞。
C. 信號量機制Semaphore允許指定個數的線程同時訪問臨界區。
D. ReleaseSemaphore函數具有P-V操作中的V操作的作用。
A. 臨界區在使用時以CRITICAL_SECTION結構對象保護共享資源,并分別用EnterCriticalSection()和LeaveCriticalSection()函數去標識和釋放一個臨界區。
它和鎖很像。
C選項,臨界資源一次最多只允許一個進程(線程)訪問,但一個臨界區對應的可能不止一個臨界資源,因此在信號量中可做到多個線程同時訪問臨界區。
14 ?關于Linux進程的不正確的說法是 。?
√A. fork函數具有兩個返回值。
B. wait函數會阻塞進程直到其一個子進程結束為止。
C. exit函數可以在結束進程的時候傳遞參數給父進程。
D. sleep函數會讓調用者進程掛起若干時間。
A. fork只有一個返回值,但在子進程和父進程都會分別返回一次,并且返回值不同。
補充:子進程除了進程標識、時間變量等不同,其余(包括系統棧)均繼承于父進程。本來,父子進程都會返回newproc(建立子進程映像的函數)的下一個單元。但父進程返回時,會使原返回地址加2,跳過匯編指令clr r0,所以返回子進程標識數。而子進程會把父進程標識數送入棧內r0保護單元,但不會跳過清零指令,因此返回0。
B. wait()函數用于使父進程(也就是調用wait()的進程)阻塞,直到一個子進程結束或者該進程接收到了一個指定的信號為止。
15 ?關于死鎖不正確的說法是 。?
A. 資源數量不夠不一定產生死鎖。
B. 每個死鎖的進程一定在等待某個資源。
C. 每個死鎖的進程一定持有某個資源。
√D. 五個哲學家并發就餐的過程一定會發生死鎖。
填空
16 ?Windows中創建進程的函數名是 CreateProcess 。
system,WinExec,ShellExecute,CreateProcess都錯了,不知道答案是什么。
17 ?Linux中創建進程的函數名是 fork 。
18 ?Windows中創建線程的函數名是 CreateThread 。
19 ?只考慮作業等候時間的進程調度算法叫 先來先服務算法 。
20 ?同時考慮作業等候時間和作業大小的進程調度算法叫 響應比高者優先調度算法 。
判斷
21 ?用于科學計算的進程一般都是偏CPU的進程。
√A. 對
B. 錯
22 ?進程是程序的一次具體運行過程。
√A. 對
B. 錯
23 ?在Winodws7中,進程是CPU的調度單位。
A. 對
√B. 錯
線程。
24 ?異步性會使得每個進程都按自己的邏輯和速度向前運行。
√A. 對
B. 錯
25 ?阻塞的進程獲得相應服務或信號后會立即開始運行。
A. 對
√B. 錯
先轉為就緒態。
26 ?進程控制是非常重要的過程,所以采用原語實現。
√A. 對
B. 錯
27 ?線程的并發粒度比進程更細,有利于提升系統并發效率。
√A. 對
B. 錯
28 ?利用VS等主流IDE開發的Windows程序缺省都是多線程程序。
A. 對
√B. 錯
這題我憑直覺在選。但后來去看了一下VS的默認設置……
如下兩圖:
不知道用了多線程DLL庫的算不算多線程程序。我去問問。
問了說是不算。
可能缺省只有main主線程。
29 ?線程函數都具有特定的函數原型。
√A. 對
B. 錯
30 ?同步機制的實質是當進程運行條件不滿足時,能讓進程暫停。
√A. 對
B. 錯
第七章答案
第七章答案。
總結
以上是生活随笔為你收集整理的【MOOC】华中科技大学操作系统慕课答案-第4~6章+第7章单元测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#线程池核心技术:从原理到高效调优的实
- 下一篇: 【HUST】网安|计算机网络安全实验|实