【MOOC】华中科技大学操作系统慕课答案-单元作业+第1~2章开放性思考题
單元作業答案如果沒大問題的話,多半是直接摘抄自PPT。
文章目錄
- 第一章 操作系統概述
- 單元作業(1)
- 開放性思考題
- 第二章 操作系統邏輯結構
- 單元作業
- 開放性思考題
- 第三章 操作系統用戶界面
- 單元作業(1)
- 單元作業(2)
- 單元作業(3)
- 第四章 操作系統進程管理
- 單元作業(1)
- 單元作業(2)
- 單元作業(3)
- 單元作業(4)
- 第五章 死鎖
- 單元作業(1)
- 單元作業(2)-開放性思考題
- 第六章 進程調度
- 單元作業(1)
- 第七章
- 單元作業(1)
- 單元作業(2)
- 單元作業(3)
- 單元作業(4)
- 單元作業(5)(待補)(看起來不太需要寫)
- 第八章
- 單元作業(1)
- 單元作業(2)
- 第九章
- 單元作業(1)
第一章 操作系統概述
單元作業(1)
- 站在普通用戶的角度,總結操作系統有哪些基本功能?
- 提供操作界面;
- 控制程序運行;
- 管理系統資源;
- 配置系統參數。
?2. ?操作系統有哪4大核心功能?
- 進程管理:包括進程控制、進程調度、進程通信等。
- 內存管理:包括內存分配、內存共享、內存保護、虛擬內存等。
- 設備管理:包括設備的分配和調度、設備無關性、設備傳輸控制、設備驅動等。
- 文件管理:包括存儲空間管理、文件的操作、目錄的操作、文件和目錄的存取權限管理等。
?3. 操作系統有哪4個典型的發展階段,各有什么特點?
- 手工操作(沒有操作系統):
結構特點:硬件用電子管、接線面板(按鈕/開關);程序用二進制程序,使用紙帶和卡片打孔控制程序。
使用特點:程序的準備、啟動和結束均由手工處理,繁瑣耗時。
缺點:CPU有效運行時間極低;用戶獨占;缺少交互。- 單通道批處理系統:
工作特點?:批量(可處理作業隊列);自動(自動識別、裝入和撤出);串行。- 多通道批處理系統:
?工作特點:內存中同時存放多道程序;宏觀上并行;微觀上串行;作業處理時間長、交互能力差、運行過程不確定。- 分時系統:
?工作特點:多路調制性(多用戶聯機使用同一臺計算機);用戶感覺獨占計算機;及時響應用戶的請求。
?4. 多道批處理系統為什么工作效率比單道的高?
因為多通道處理系統在內存中存放了多道程序,當某道程序因為某種原因(例如執行I/O操作時)不能運行而放棄CPU時,操作系統便調度另一次程序投入執行。這樣可以使CPU盡量忙碌,提高系統效率。
而單道批處理系統只能讓CPU空閑等待。
- 分時技術與多道批處理都能完成多個程序的切換。這兩種切換情形有什么差別?
- 分時技術輪流為每個程序提供超短時使用CPU的機會,每個程序都感覺到是“獨占”CPU。
- 而多道程序系統是在內存中同時存放多道程序,它們都處于開始和結束之間,切換只在上一個程序暫時放棄占用或使用完畢CPU的時候發生。
開放性思考題
- 盡可能思考沒有安裝操作系統的計算機啟動過程和結果?
計算機啟動的過程應該是先檢測硬件再檢測硬件中的操作系統,如果沒有BIOS,啟動的結果可能是顯示“Reboot and Select proper Boot device or Insert Boot Media in slected Boot device and press a key.”之類的未找到操作系統的提示。
如果有BIOS,應該會先進入BIOS,可以進行一些機器指令的操作,普通用戶無法使用。
參考:https://www.chinafix.com/article-26996-1.html
https://www.cnblogs.com/quaint/articles/12535029.html
- ?常見的虛擬機軟件(例如VMware,VirtualPC等)能不能理解為操作系統?
虛擬機本身是一個軟件,不是操作系統。
虛擬機指通過軟件模擬的具有完整硬件系統功能的、運行在一個完全隔離環境中的完整計算機系統。
而操作系統是管理計算機硬件與軟件資源的計算機程序。
- 思考運行應用程序(例如記事本程序)需要操作系統提供哪些支持?
- 進程管理:比如記事本程序也是個進程,它被操作系統管理,操作系統會分配資源讓它能夠順利運行。
- 內存管理:比如記事本程序需要內存資源,需要操作系統進行分配調度。
- 文件管理:比如記事本程序需要打開和讀寫文件,需要操作系統的文件管理功能。
- 設備管理:比如記事本程序需要與I/O設備交互。
- 網絡管理:有些應用程序需要操作系統提供網絡支持,如聊天軟件。
?4. Windows-7-64位操作系統的分時時間片是多少呢?Linux不同版本的時間片又是多少?請網上了解。
Windows-7-64:15 to 30 milliseconds。
參考:https://social.msdn.microsoft.com/Forums/vstudio/en-us/7b403121-f48b-40cd-9155-920a579c7b6b/timeslice-and-timer-precission
Linux:在傳統的Linux上,時間SCHED_RR間隔為0.1秒。從Linux 3.9開始,該限制可通過/proc/sys/kernel/sched_rr_timeslice_ms文件進行調整,該文件的量子表示為毫秒值,默認值為100。
實時進程的默認Linux時間片在Linux內核中定義為RR_TIMESLICE位于include/linux/sched/rt.h中 。
/*
* default timeslice is 100 msecs (used only for SCHED_RR tasks).
* Timeslices get refilled after they expire. */
#define RR_TIMESLICE (100 * HZ / 1000)
請注意,為特定進程分配的實際量程可能與此值不同 :
[注:在v3或以上版本的linux的include/linux/sched/rt.h中可找到,均是100ms。但是v2或以下的沒有這個頭文件。]
參考:《如何知道Linux Scheduler時間片?》https://www.imooc.com/wenda/detail/595680
《如何知道Linux調度程序時間片?》https://zgserver.com/linux-5.html
《Linux源碼/include/linux/sched/rt.h》
https://elixir.bootlin.com/linux/v5.4/source/include/linux/sched/rt.h
- ?網上盡可能了解Unix的演化歷史,各個主流版本的名字和特點。
(1) Unix1~10:第一版UNIX是用PDP-7匯編語言編寫的,一些應用是由叫做B語言的解釋型語言和匯編語言混合編寫的。在進行系統編程時不夠強大,所以湯普遜和里奇對其進行了改造,并于1971年共同發明了C語言。1973年湯普遜和里奇用C語言重寫了Unix,形成第三版UNIX。在當時,為了實現最高效率,系統程序都是由匯編語言編寫,所以湯普遜和里奇此舉是極具大膽創新和革命意義的。用C語言編寫的Unix代碼簡潔緊湊、易移植、易讀、易修改,為此后Unix的發展奠定了堅實基礎。
1975年,UNIX發布了4、5、6三個版本。
1978年,已經有大約600臺計算機在運行UNIX。
1979年,版本7發布,這是最后一個廣泛發布的研究型UNIX版本。
20世紀80年代相繼發布的8、9、10版本只授權給了少數大學。
此后這個方向上的研究導致了九號項目的出現,這是一個新的分布式操作系統。
(2) Unix System Ⅲ分支:
1982年,AT&T基于版本7開發了UNIX System Ⅲ的第一個版本,這是一個商業版本僅供出售。為了解決混亂的UNIX版本情況,AT&T綜合了其他大學和公司開發的各種UNIX,開發了UNIX System V Release 1。
這個新的UNIX商業發布版本不再包含源代碼,所以加州大學柏克萊分校繼續開發BSD UNIX,作為UNIX System III和V的替代選擇。BSD對UNIX最重要的貢獻之一是TCP/IP。BSD有8個主要的發行版中包含了TCP/IP:4.1c、4.2、4.3、4.3-Tahoe、4.3-Reno、Net2、4.4以及4.4-lite。這些發布版中的TCP/IP代碼幾乎是現在所有系統中TCP/IP實現的前輩,包括AT&T System V UNIX和MicrosoftWindows。
(3) Unix BSD分支(含Linux):
其他一些公司也開始為其自己的小型機或工作站提供商業版本的UNIX系統,有些選擇System V作為基礎版本,有些則選擇了BSD。BSD的一名主要開發者,比爾·喬伊,在BSD基礎上開發了SunOS,并最終創辦了太陽計算機系統公司。
1991年,一群BSD開發者(Donn Seeley、Mike Karels、Bill Jolitz和Trent Hein)離開了加州大學,創辦了Berkeley Software Design, Inc (BSDI)。BSDI是第一家在便宜常見的Intel平臺上提供全功能商業BSD UNIX的廠商。后來Bill Jolitz離開了BSDI,開始了386BSD的工作。386BSD被認為是FreeBSD、OpenBSD和NetBSD、DragonFlyBSD的先輩。
AT&T繼續為UNIX System V增加了文件鎖定,系統管理,作業控制,流和遠程文件系統。1987到1989年,AT&T決定將Xenix(微軟開發的一個x86-pc上的UNIX版本),BSD,SunOS和System V融合為System V Release 4(SVR4)。這個新發布版將多種特性融為一體,結束了混亂的競爭局面。
1993年以后,大多數商業UNIX發行商都基于SVR4開發自己的UNIX變體了。
UNIX System V Release 4發布后不久,AT&T就將其所有UNIX權利出售給了Novell。Novell期望以此來對抗微軟的Windows NT,但其核心市場受到了嚴重傷害,最終Novell將SVR4的權利出售給了X/OPEN Consortium,后者是定義UNIX標準的產業團體。最后X/OPEN和OSF/1合并,創建了國際開放標準組織。由它定義的多個標準定義著什么是以及什么不是UNIX。
實際的UNIX代碼則輾轉到了圣克魯茲作業,這家公司后來出售給了Caldera Systems。Caldera原來也出售Linux系統,交易完成后,新公司又被重命名為SCO Group。
參考:https://www.iteye.com/blog/wx1569009609-2472018
?6. ?網上盡可能了解多終端計算機的結構,工作過程?
結構:高性能主機(運算,CPU+內存)+多個終端(輸入和顯示)。
工作過程:主機采用分時技術輪流為每個終端服務。每個終端都感覺到是“獨占”主機。
第二章 操作系統邏輯結構
單元作業
- 何為操作系統的邏輯結構?有哪幾種典型邏輯結構?
?操作系統的邏輯結構即 OS 的設計和實現思路。
典型的有整體式結構、分層式結構、微內核結構。
- 分層結構的分層原則是什么?
?原則:?1. 層次之間的模塊的依賴關系。層次之間只能單向依賴調用。
2. 單個層次的功能要盡可能獨立。同一層的組件處于同一個抽象層次。
3. 分層架構中的層次越往下,其抽象層次就變得越通用,面向設備。
這些原則具體化如下:
硬件相關——最底層
外部特性——最外層
中間層——調用次序或消息傳遞順序
共性的服務——較低層
活躍功能——較低層
- 微內核結構的特點是什么?
微內核結構的特點是由微內核+核外服務器構成,微內核只提供最基本的功能,核外服務器提供用戶功能,面向服務。
1)有較高的靈活性和可擴充性
2)提高了操作系統的可靠性
3)更適合于分布式系統
- 何為CPU的態?定義態的作用什么?有哪些態?
CPU的態:CPU的工作狀態。就是對資源和指令權限的描述。
定義態可以避免用戶程序錯誤地使用特權指令,維護運行秩序,保證底層和重要的系統資源不被用戶輕易破壞。具體規定為,當CPU處于用戶態時,不允許執行特權指令;當CPU處于系統態時,可執行包括特權指令在內的一切機器指令。
不同的操作系統定義了不同的態,大體上可以分為核態、管態和用戶態。核態有所有權限,用戶態受限較多,管態介于之間。?
?5. 中斷的概念是什么?中斷的響應過程是怎樣的?
中斷的概念是CPU對突發的外部事件的響應機制或過程。
響應的過程:
① 識別中斷源;
② 保護斷點和現場;
③ 裝入中斷服務程序的入口地址(CS:IP);
④ 進入中斷服務程序;
⑤ 恢復現場和斷點;
⑥ 中斷返回LRET。
開放性思考題
- 操作系統分層結構有何作用?在應用編程中,我們如何使用分層的編程思想提升程序的可移植性和可維護性?
作用:
1)只要層次之間的接口定義完整,開發人員可以專注于某一層,便于分工,降低了業務之間的依賴;
2)問題局部化,有助于系統的移植和局部重新實現;
3)有利于復用,可以復用他人成熟的層次實現。
實際應用:
可以將功能提前分層,然后逐一選擇合適的實現方式,盡量減少層次之間的依賴。然后分工完成。比如前后端相互只要定義接口,即可分工完成各自的工作。
2.? 操作系統微內核架構有何作用?在應用編程中,我們如何使用“客戶-服務器”的編程思想提升程序的功能可擴展性?
1)作用:
① 提高了系統的可擴展性;
② 增強了系統的可靠性;
③ 可移植性強;
④ 提供了對分布式系統的支持;
⑤ 融入了面向對象技術。
2)應用:
① 客戶只能通過以公有的方式定義的接口使用服務器,這意味著客戶(客戶程序員)唯一的責任是了解接口。
② 服務器(服務器程序設計人員)的責任是確保服務器根據該接口可靠并準確的執行。
③ 服務器設計任務只修改設計的實現細節,而不能修改接口。
這樣程序員就能夠獨立的對客戶和服務器進行改進,對服務器的修改不會對客戶的行為造成意外的影響。
- ?網上搜索“Intel CPU的保護模式”,“特權級”兩個關鍵詞,了解“CPU的態”與“保護模式”、“特權級”等概念。
CPU的態:CPU的工作狀態,是對資源和指令權限的描述。
保護模式:是一種80286系列和之后的x86兼容 CPU 操作模式。 保護模式有一些新的特色,設計用來增強 多工 和系統穩定度,像是 內存保護, 分頁 系統,以及硬件支援的 虛擬內存。
?特權級:Privilege Level,是存在于 Descriptor 及 Segment Selector 中一個數值,當這些 Descriptor 或 Segment Selector 要進行某些操作,或者被別的對象訪問時,該數值用于控制它們能夠進行的操作或者限制它們的可訪問性。 Intel Processor 具有 4 個特特權級別(0-3)。
比方說Ring 0~3是CPU的態,具體的就是當前特權級別。保護模式需要切換CPU的態。
第三章 操作系統用戶界面
單元作業(1)
- 系統BIOS的功能有哪些?
系統啟動配置;
基本的設備I/O服務;
系統的加電自檢和啟動。
- 計算機加電后執行的第一條指令存放在哪里,有什么特點?
根據本慕課的 PPT,存放在EPROM中(剛剛開機內存中什么都沒有),在FFFF0處。
特點:這條指令是一條跳轉指令,跳到系統bios中真正的啟動代碼處。
但是根據https://blog.csdn.net/y4786924/article/details/12575063博客,在物理地址空間中,它的地址是0xFFFFFFF0。
- 初始引導的目的和主要過程是什么?
目的:把OS核心裝入內存,并使之開始工作接管計算機系統
主要過程:
1. 加電,JUMP POST
2. BIOS中的啟動程序運行
3. 啟動程序
讀取0面0道第一扇區內容(1MB)
加載MBR中的引導程序
4. 引導程序
根據相關參數,讀取硬盤指定位置的文件到內存
加載硬盤上OS內核,并初始化基本參數
5. OS內核:逐步加載OS剩余部分,直至最后完全控制計算機
- 何為操作系統的生成?簡述Linux內核的生成過程。
操作系統生成的定義:滿足特定硬件環境和用戶的需要,組裝和構建操作系統的過程。
Linux內核的生成過程:
1. 獲取Linux內核的源代碼
2. 選擇和啟動內核配置程序
3. 根據需要配置內核模塊和參數
4. 重新編譯新的內核
5. 編譯和安裝模塊
6. 啟動新內核
單元作業(2)
- 何為用戶界面?有哪些類別?各有什么特點?
用戶界面:OS提供給用戶控制計算機的機制,又稱用戶接口。
類別:
(1)操作界面:有圖形用戶接口,可以接收鍵盤命令。
(2)系統調用(system call,系統功能調用,程序界面):一般就是一些命令行。
- 何為shell?有哪4類典型的shell?
shell是操作系統與用戶交互的界面,表現為通過控制臺執行用戶命令的方式,shell本身不執行命令,僅僅是組織和管理命令;
4類典型的shell:
Bourne Again Shell (簡稱bash)
Bourne Shell(簡稱sh)
C-Shelll(簡稱csh)
Korn Shell(簡稱ksh)
- 何為輸出重定向?舉一個Linux或Windows中的重定向的應用命令或例子。
輸出重定向:指不使用操作系統默認的標準輸出設備顯示信息,而是指定某個文件做為標準輸出設備來存儲文件信息。簡單來說,重定向輸出就是把要輸出的文件信息寫入到一個文件中去,而不是將要輸出的文件信息輸出到控制臺(顯示屏)。
linux輸出重定向例子:
將標準輸出重定向到文件
$ ls /etc/ >etcdir.log
- 試述運行shell腳本程序的三種方式?
1. 直接運行(用缺省版本的shell運行腳本程序)
2. 使用特定版本的shell執行腳本
3. 在腳本文件首行指定shell
單元作業(3)
- 系統調用與普通用戶態函數比較,有何異同點?
系統調用:
1.使用INT和IRET指令,內核和應用程序使用的是不同的堆棧,因此存在堆棧的切換,從用戶態切換到內核態,從而可以使用特權指令操控設備;
2.依賴于內核,不保證移植性;
3.在用戶空間和內核上下文環境間切換,開銷較大;
4.是操作系統的一個入口點;
5.系統調用由操作系統核心提供,運行于核心態;
函數調用:
1.使用CALL和RET指令,調用時沒有堆棧切換;
2.平臺移植性好;
3.屬于過程調用,調用開銷較小;
4.普通的函數調用由函數庫或用戶自己提供,運行于用戶態;
- 試述為Linux增加新的系統調用的過程?
1.編寫系統調用實現部分;
2.聲明系統調用函數和編號;
3.編譯Linux內核;
4.編譯和安裝模塊;
5.啟動新的Linux內核;
6.編寫應用程序測試新的系統調用。
第四章 操作系統進程管理
單元作業(1)
- 進程有哪4個特征?
1.動態性:進程是程序的一次執行過程,動態產生/消亡。
2.并發性:進程同其他進程一起向前推進。
3.異步性:進程按各自的速度向前推進。
4.獨立性:進程是系統分配資源和調度CPU單位。
- 進程有哪3個基本狀態,它們之間如何遷移?
就緒、運行、阻塞。
就緒→運行:進程調度。
運行→就緒:時間片到;被搶占。
運行→阻塞:請求服務;等待信號。
阻塞→就緒:服務完成;信號到來。
- 什么是進程控制,有哪4個典型的進程控制行為?
進程控制:在進程生存全期間,對其全部行為的控制。
4個典型的進程控制行為:創建進程、阻塞進程、撤銷進程、喚醒進程。
- 什么是原語,有何特點?
原語:由若干指令構成的具有特定功能的函數。
特點:具有原子性,其操作不可分割。
- 列舉WINDOWS通過編程啟動exe程序的方法?
設需要啟動的exe的路徑是A。
system(A);
WinExec(A,SW_SWHOWMAXIMIZED);
ShellExecute(NULL,open,A,NULL,NULL,SW_SHOWNORMAL);
CreateProcess(NULL,A,NULL,NULL,FALSE,NULL,NULL,NULL,&si,&pi);
單元作業(2)
- 試述fork()函數的作用和特點?
作用:用戶創建一個新進程。
特點:新進程是當前作用的子進程。子進程是父進程的復制。父進程和子進程并發執行。
- 試述線程的概念(Thread)或特點?
概念:是進程中的一個執行路徑;
特點:
1.線程是可由CPU直接運行的實體;
2.一個進程可以創建多個線程;
3.多個線程共享CPU可以實現并發運行。
4.是任務調度的單位,但不是系統資源的分配單位。
5.它完全繼承父進程占用的資源,當它活動時,具有自己的運行現場。
- 試述線程有哪些典型應用場合?
1.多個功能需要并發的地方;
2.需要改善窗口交互性的地方;
3.需要改善程序結構的地方;
4.多核CPU上的應用,充分發揮多核性能。
- 何為臨界資源,何為臨界區?
臨界資源:一次只允許一個進程獨占訪問(使用)的資源。
臨界區:進程中訪問臨界資源的程序段。
- 試述設計臨界資源或臨界區訪問機制的四個原則是什么?
1.空閑讓進:當無進程在臨界區時,任何有權使用互斥區的進程可進入。
2.忙則等待:當臨界區忙時,其他進程必須在臨界區外等待。
3.有限等待:任何進入臨界區的要求應在有限時間內得到滿足。
4.讓權等待:處于等待狀態的進程應放棄占用CPU,以使其他進程有機會得到CPU的使用權。
單元作業(3)
- 臨界區設計太大或太小有何缺點?
在保證功能的前提下,臨界區盡可能小一點好。
如果臨界區過大,可能導致等待程序餓死或者中斷調度執行其他事件;
如果臨界區過小,可能導致臨界資源不在臨界區內,程序并發執行產生混亂。
- 臨界區訪問機制為什么要實現讓權等待原則?鎖機制為什么沒有滿足該原則?
如果不實現讓權等待原則,等待進程會不必要地一直占用CPU,造成“忙等待”現象。
鎖機制改良之后是可以滿足該原則的。PPT中沒有滿足該原則,是因為等待進程的lock(S)一直在測試S的值,沒有停下來,一直需要占用CPU。
- 什么是進程的互斥,什么是進程的同步?各舉一個例子說明。
進程的互斥例子:進程1需要把文件刪除,進程2需要修改文件,它們對文件的修改是互斥的。
進程的同步例子:進程1需要等待進程2修改文件之后再刪除文件,它們需要有一定的同步機制。
- P-V操作的作用是什么?P操作和V操作各自的原理是什么?
P-V操作的作用:改變信號燈的狀態。
P操作的原理:
1.S值減1;
2.若差大于等于0,則該進程繼續;
3.若差小于等于0,則該進程阻塞并加入到該信號燈的等待隊列中,并轉入進程調度程序。
V操作的原理:
1.S值加1;
2.若和大于0,則該進程繼續;
3.若和小于等于0,則從該信號燈的等待隊列中喚醒一個進程,然后返回本進程繼續執行。
- 試述P-V操作解決互斥問題的思路是什么?
思路的實質:允許最多1個進程處于臨界區。
思路:
1.進入臨界區之前先執行P操作;
2.離開臨界區之后再執行V操作;
3.S的初值設置要合理。
- 試述P-V操作解決同步問題的思路是什么?
1.暫停當前進程:在關鍵操作之前執行P操作;
2.繼續進程:在關鍵操作之后執行V操作;
3.定義有意義的信號量S,并設置合適的初值。
單元作業(4)
- 試分析“司機vs售票員”同步問題中,哪些操作是關鍵操作,哪些不是?為什么?
司機起步、停車,售票員人關門、開門是關鍵操作,行駛、售票不是。
因為前面的需要司機和售票員相互協作,要同步才行,后面的操作不會相互影響。
- 試分析“生產者與消費者”問題中,P-V操作是如何阻止生產者生產速度過快的,又是如何阻止消費者消費速度過快的?又是如何及時喚醒生產者去盡快生產的,又是如何及時喚醒消費者去盡快消費的?
通過設置空緩沖區數量的信號量阻止生產者生產過快,如果生產到一定數量,還沒被取走,那這個信號量就會為負,接下來的生產過程會被阻塞。
通過設置滿緩沖區數量的信號量阻止消費者消費過快,如果消費到一定數量,還沒被生產出來,那這個信號量就會為負,接下來的消費過程會被阻塞。
喚醒就是分別用另一個信號量。
- 試述Windows的信號量(Semaphore)機制的工作原理(或如何應用該機制)?
工作原理:信號量的值可以通過相應函數增或減。
大于0時為有信號;小于等于0時為無信號。
應用:WaitForSingleObject將信號量減1;
ReleaseSemaphore將信號量增1。
- 試述Linux中wait函數和exit函數的作用和它們之間的聯系?
注:這個答案純粹是按書上的理解自己答的,如有問題,希望指正。
① exit(status);
exit函數的作用是把終止進程自 fork 以來所占用的系統資源退還給系統(除了proc留給父進程去釋放)。
② pid=wait(stat_addr);
wait函數的作用是在子進程沒有退出時先置父進程為睡眠狀態,并通過stat_addr接收子進程的exit退出狀態碼。
③ 聯系:wait是父進程調用的,用于接收exit的退出狀態碼,并返回子進程的pid。
exit是子進程調用的,會向父進程返回退出狀態碼供wait接收。
- 試述Windows管道通信或Linux信號機制的原理(或如何應用該機制)?
1.管道像文件一樣,可讀可寫,有讀/寫兩個句柄。
2.通過寫句柄向管道中寫入數據,或通過輸出重定向向寫句柄寫入;
3.通過讀句柄從管道中讀數據,或通過輸入重定向從讀句柄讀出。
?
第五章 死鎖
部分參考自:操作系統課程學習筆記五-死鎖。
單元作業(1)
- 什么是死鎖或死鎖的定義是什么?
定義:在兩個或多個并發進程中,如果每個進程持有某種資源,而又都等待著別的進程釋放它或它們現在保持著的資源,在未改變這種狀態之前都不能向前推進,稱這一組進程產生了死鎖。
- 如何理解“參與死鎖的進程至少有2個已經占有資源”?
兩個或以上進程才會出現死鎖,而且出現死鎖的進程都至少持有一個資源。因此參與死鎖的進程至少有2個已經占有資源。
- 如何理解“參與死鎖的所有進程都在等待資源”?
每一個參與死鎖的進程都有無法申請到的資源,等待著其他進程釋放這些資源。因此參與死鎖的所有進程都在等待資源。
- 死鎖的四個必要條件是哪些?
①互斥條件:進程互斥使用資源,資源具有獨占性。
②不剝奪條件(非搶占):進程在訪問完資源前不能被其他進程強行剝奪。
③占有并等待(部分分配):進程在運行時申請資源,不是一開始申請全部資源。并且在等待資源分配的同時繼續占用已有資源。
④環路條件(循環等待):存在一個環,環中每一個進程已獲得的資源都被環中下一個進程申請,而自己申請的資源被上一個進程占用。(這里的“下一個”指的是課本《操作系統原理》(第四版)的資源分配圖中的,與ppt中的箭頭指向含義不同)
- 如何證明“按有序資源分配法分配資源并發進程不會死鎖”?
該方法的資源申請按線性方式排序,破壞了產生死鎖的環路條件。
在任何時刻,總有一個進程占用較高序號的資源,該進程繼續申請的資源必然是空閑的,故該進程可以一直向前推進。換言之,系統中總有進程可以運行完畢,這個進程執行結束后會釋放它所占有的全部資源,這將喚醒等待資源進程或滿足其他申請者,系統不會發生死鎖。
單元作業(2)-開放性思考題
- 在Linux或Windows的實際應用中,用戶常說的“死機”或“宕機”或“程序卡住”或“系統卡住,鍵鼠沒有任何響應”與本章的“死鎖”是同一問題嗎?
不是。
“死機”或“宕機”或“系統卡住,鍵鼠沒有任何響應”可能由于多種原因引起,比如由于進程死鎖、程序運行錯誤導致進程長期陷入阻塞、操作系統無法滿足進程申請的資源等因素引起。
死鎖受影響的僅僅是死鎖的進程以及所涉及的部分資源,未必會引起“死機”或“宕機”。
- ?在Linux或Windows是如何處理死鎖的?
鴕鳥策略,忽略不處理。
- 了解“避免死鎖”策略,并(baidu搜索)了解“銀行家算法”的概念和原理?
避免死鎖是在動態分配資源的策略下采用某種算法來預防可能發生的死鎖,從而拒絕可能引起死鎖的某個資源請求。常見方法有有序資源分配法和銀行家算法。
銀行家算法:當新進程進入系統時,它必須說明對各類資源類型的實例的最大需求量,僅當申請者可以在一定時間內無條件地歸還它所申請的全部資源時,才能把資源分配給它。
之所以稱為銀行家算法,是因為該算法也可以應用于銀行系統。
在銀行中,客戶申請貸款的數量是有限的,每個客戶在第一次申請貸款時要聲明完成該項目所需的最大資金量,在滿足所有貸款要求時,客戶應及時歸還。銀行家在客戶申請的貸款數量不超過自己擁有的最大值時,都應盡量滿足客戶的需要。在這樣的描述中,銀行家就好比操作系統,資金就是資源,客戶就相當于要申請資源的進程。
第六章 進程調度
單元作業(1)
- 進程調度的目標有哪些?
①響應速度盡可能快;
②進程處理的時間盡可能短;
③系統吞吐量盡可能大;
④資源利用率盡可能高;
⑤對所有進程要公平;
⑥避免饑餓;
⑦避免死鎖。
?
- 什么是周轉時間,什么是帶權周轉時間?
①周轉時間:進程提交給計算機到最終完成所花費的時間。計算方法為t=進程的完成時間-進程的提交時間。
②帶權周轉時間:進程在系統相對停留時間。計算方法為w=周轉時間/進程的運行時間。
- 什么是響應比?響應比高者優先調度算法有什么特點?
①響應比:作業的響應時間和運行時間的比值。其中響應時間=等待時間+運行時間,所以響應比也等于(1+等待時間/運行時間)。
②特點:1) 如果作業等待時間相同,則運行時間越短的作業,其響應比越高,因此越容易被調度。因而有利于短作業。
2) 如果作業運行時間相同,則等待時間越長的作業,其響應比越高,因此越容易被調度。因此有利于等候長的作業。
3) 對于運行時間長的作業,其優先級可以隨等待時間的增加而提高,當其等待足夠久的時候,也有可能獲得CPU。
?4. 試述優先數調度的算法概念?何為靜態優先數,何為動態優先數?
①算法:根據進程優先數,把CPU分配給最高的進程。
②靜態優先數:進程創建時確定,在整個進程運行期間不再改變。
③動態優先數:在進程運行期間可以改變,比如在進程使用CPU、等待超過一定時長,或進行I/O操作時,可以重新確定進程優先數。
? 5. 試述循環輪轉調度的概念和其優點。
①概念:把所有就緒進程按先進先出的原則排成隊列。新來進程加到隊列末尾。進程以時間片q為單位輪流使用CPU。剛剛運行一個時間片的進程排到隊列末尾,等候下一輪運行。隊列邏輯上是環形的。
②優點:1) 公平性:每個就緒進程有平等機會獲得CPU。2) 交互性:每個進程等待(N-1)*q的時間就可以重新獲得CPU。
第七章
單元作業(1)
- 簡述實際的三級存儲器體系的結構(組成)和基本原理?
組成:CPU、CACHE、內存、輔存。
基本原理:1.當內存太小不夠用時,用輔存來支援內存。2.暫時不運行的模塊換出到輔存上,必要時再換入內存。
- 存儲管理有哪四大功能?
地址映射、內存分配、存儲保護、虛擬存儲。
- 什么是地址映射?有哪三種地址映射方式?
定義:將程序地址空間中使用的邏輯地址變換成主存中的物理地址的過程。
方式:1.固定地址映射;2.靜態地址映射;3.動態地址映射。
- 何為動態地址映射?有什么特點?
定義:在程序執行過程中把邏輯地址轉換為物理地址。
特點:1.程序占用的內存空間可動態變化。2.程序不需要占用連續的內存空間。3.便于多個進程共享代碼。
- 虛擬內存管理的目標是什么?
1.使大的程序能在較小的內存中運行。
2.使多個程序能在較小的內存中運行。
3.使多個程序并發運行時地址不沖突。
4.使內存利用率高,無碎片,共享方便。
單元作業(2)
- 什么是分區存儲管理?有哪些類型?
定義:把用戶區內存劃分為若干大小不等的分區,供不同程序使用。
類型:固定分區、動態分區。
- 何為內存動態分區?有什么特點?
定義:在程序裝入時創建分區,使分區的大小和程序的大小相等。
特點:
1.分區動態建立;
2.分區的個數和大小均可變。
3.存在內存碎片。
- 何為放置策略?有哪些放置策略?各種放置策略的特點或有點是什么?
定義:空閑區表如何排序的策略。
種類及其特點:
1) 首次適應算法:
1.盡可能地先使用低地址空間。
2.在需要較大分區時在高地址空間有較大的可滿足性。
2) 最佳適應算法:
1.盡可能地先使用較小的空閑區,保留較大的空閑區。
2.當需要較大分區使有較大的可滿足性。
3) 最壞適應算法:
1.大空閑區分割后剩下的部分還很大,還能裝下較大的程序。
2.僅作一次查找就可以找到所要分區。
- 何為內存覆蓋(Overlay)?有何缺點?
定義:由于程序運行時并非任何時候都要訪問程序及數據的各個部分(尤其是大程序),因此可以把用戶空間分成一個固定區和若干個覆蓋區。將經常活躍的部分放在固定區,其余部分按調用關系分段。首先將那些即將要訪問的段放入覆蓋區,其他段放在外存中,在需要調用前,系統再將其調入覆蓋區,替換覆蓋區中原有的段。
缺點:
1.編程復雜:程序員劃分程序模塊并確定覆蓋關系。
2.程序執行時間長:從外存裝入內存耗時。
- 何為內存交換(Swapping)?有何優點/缺點?
定義:當內存不夠時將進程寫入磁盤,當進程要運行時重新寫回內存。
優點:1. 增加進程并發數。2. 不考慮程序結構。
缺點:1. 換入換出增大CPU開銷。2. 交換單位太大。
單元作業(3)
- 何為內存碎片?有哪些解決碎片的方法?
定義:在已分配區之間存在著的一些沒有被充分利用的空閑區。
解決辦法:1. 內存拼接技術。2. 規定門限值。3. 解除程序占用連續內存才能運行的限制。
- 何為程序運行的局部性?
由于大多數程序執行時,在一段時間內僅使用它的程序編碼的一部分,即并不需要在全部時間內將程序的全部指令和數據都放在主存中,所以,程序的地址空間部分裝入主存時,它還能正確地執行,此即為程序的局部性特征。
- 試述頁式內存管理方案的概念,進程裝入和使用內存的原則?
在分頁存儲管理方法中,主存被等分成一系列的塊,程序的地址空間被等分成一系列的頁面,然后將頁面存放到主存塊中。
進程裝入的原則:1. 進程以頁為單位裝入。2. 只把程序的部分頁裝入內存便可運行。3. 需要新頁時,按需從磁盤中調入內存。
內存使用的原則:1. 內存以頁框為單位分配使用。2. 頁在內存中占用的頁框不必相鄰。3. 不再運行的頁及時刪除,騰出空間。
- 何為頁表?描述利用頁表完成頁式地址映射的過程。
頁表就是在頁式系統中,實現程序指令的邏輯地址向實際的物理地址變換的機制。記錄程序虛頁與其在主存中塊(實頁)的對應關系的數據結構。
當程序按頁劃分裝入存儲器時,操作系統為該程序建立一個頁表。對地址變換而言,頁表有兩個信息,一為頁號,二為頁框號。
程序的虛擬地址分離得到頁號和頁內偏移,用頁號查找頁表得到頁框號。計算物理地址等于頁框號乘以頁大小+頁內偏移。
- 何為快表?描述有快表的情況下頁式地址映射的過程。
放在cache中的頁表。
用頁號找頁框號,如果在快表中找到了這個頁號,就輸出頁框號,如果沒找到,就再訪問慢表。其他的映射過程與尋常頁表一樣。
單元作業(4)
- 試述頁式存儲管理系統的頁面共享原理。
在不同的進程的頁表中填入相同的頁框號,多個進程訪問相同的內存空間,從而實現頁面共享。
- 試述缺頁中斷的概念和缺頁中斷響應的過程。
要訪問的頁不在主存中,就發生缺頁中斷。
發生缺頁中斷時,先將頁面從磁盤中調入主存某塊,然后將這個頁框中的中斷位改成0,并填入實際塊號。
- 何為頁面淘汰?頁面淘汰的主要算法有哪些?
該作業分得的主存塊已全部用完,必須淘汰該作業已在主存中的一個頁,就出現了頁面淘汰。
算法:OPT、LRU、FIFO、LFU。
- 影響缺頁的因素有哪些?
淘汰算法、頁框數、頁本身的大小、程序的編制方法。
- 試述段頁式存儲管理的主要概念和地址映射過程。
在段式存儲管理中結合分頁存儲管理技術,在段中劃分出若干大小相同的頁。邏輯地址包括3個部分:段號S、頁號P和頁內位移W,地址映射同時采用段表和頁表。
首先根據段號S查詢段表找到該段對應的頁表,其次根據頁表P查詢頁表,找到對應的頁框號,最后根據頁框號和頁內偏移W計算物理地址。
單元作業(5)(待補)(看起來不太需要寫)
第八章
單元作業(1)
- 什么是設備映射?
設備映射就是將邏輯設備映射到物理設備的功能。
從應用軟件的角度看,邏輯設備是一類物理設備的抽象。從設備管理程序的角度來看,物理設備是邏輯設備的實例。
- 什么是設備的獨立性?
物理設備對用戶透明,用戶使用統一規范的方式使用設備。用戶編程時使用設備邏輯名,由系統實現邏輯設備到物理設備的轉換。
- 什么是虛擬分配?什么是Spooling技術?
虛擬分配:當進程需要與獨占設備交換信息時,就采用虛擬技術將與該獨占設備所對應的虛擬設備(部分輔存)分配給它。
spooling:虛擬技術和虛擬分配的實現。外部設備同時聯機操作。
- Spooling系統的工作原理是什么?
任務執行前:預先將程序和數據輸入到輸入井中
任務運行時:使用數據時,從輸入井中取出
任務運行時:輸出數據時,把數據寫入輸出井
任務運行完:外設空閑時輸出全部數據和信息
- Linux設備主要有哪三類,各有何特點?
字符設備:以字節為單位逐個進行I/O操作
塊設備:塊設備的存取是通過buffer、cache來進行,可以進行隨機訪問,支持可安裝文件系統。
網絡設備:通過BSD套接口訪問(SOCKET)
單元作業(2)
- 什么叫設備文件,如何讀寫,有何作用?
設備文件:把硬件設備作為文件來看待。
讀寫:用文件接口來完成設備的操作。
- 與單元作業(1)的第五題重復。
- Linux中如何把驅動程序中自定義的接口與文件操作的標準接口關聯起來?
定義一個file_operations變量,用自定義的驅動程序接口函數初始化這個變量,映射成文件系統的接口函數。
- Windows中如何把驅動程序中自定義的接口與文件操作的標準接口關聯起來?
Windows聲明設備的文件操作函數是pDriverObject->MajorFuntion[xxx]=my_xxx。
- 給出Windows中應用程序訪問設備對象的一種方法?
驅動程序中創建設備對象并命名(用IoCreateDevice),應用程序通過符號鏈接訪問設備對象(用IoCreateSymbolicLink)。
第九章
單元作業(1)
- 什么是文件,什么是文件系統?
文件是計算機信息存取的一種重要組織形式。由若干信息項有序構成,能夠讓文件通過文件名被獲取。
文件系統負責管理文件的機構成為文件系統。功能是負責文件的創立、撤銷、讀寫、修改、復制和存取控制等,并管理存放文件的存儲設備。
文件系統的目標是讓用戶以文件名來存取文件。
- 什么是文件的邏輯結構?有哪二種典型的邏輯結構?
文件的邏輯結構是站在用戶的觀點的:為用戶提供邏輯結構清晰、使用方便的文件,強調文件信息項的構成方式和用戶的存取方式。
典型的邏輯結構:記錄式文件和流式文件。記錄式文件的信息項是記錄,結構化數據。流式文件的信息項是字節,文件長度就是字節的數量。
- 什么是文件的物理結構?有哪三種典型的物理結構?
物理結構是指文件在存儲設備上(例硬盤)的存儲方式,強調合理利用儲存空間,并縮短I/O存取時間。
類型:連續文件、索引結構、串聯文件。
- 什么是索引文件,有什么特點?
索引文件概念:文件存放在不連續的存儲塊中。建立索引表記錄文件邏輯塊和物理存儲塊的對應關系。索引表單獨放在存儲塊中。
索引文件的特點:文件=索引區+數據區。先訪問索引,再訪問數據。支持順序存取和隨機存取。支持文件動態增長、插入、刪除。
- 何為空閑文件,何為空閑文件目錄?
空閑文件:把連續空閑區看成一個特殊文件,由多個連續空閑塊組成。
空閑文件目錄:所有空閑文件代表存儲設備全部空閑空間。為空閑文件建立的專門目錄就是空閑文件目錄,每個表項對應一個空閑文件,包括第一個空閑塊號,空閑塊個數等信息。
- 何為文件目錄,其作用是什么?何為目錄文件?
文件目錄:文件名址錄,記錄文件名和存放地址的目錄表。
作用:具有將文件名轉換為外存物理位置的功能。文件屬性也記錄在目錄中。
目錄文件:文件目錄以文件形式存于外存,這個文件叫目錄文件。
總結
以上是生活随笔為你收集整理的【MOOC】华中科技大学操作系统慕课答案-单元作业+第1~2章开放性思考题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TypeScript+Vue3
- 下一篇: No grammar constrain