B001-操作系統:設計及實現-第一章練習答案

操作系統的兩個主要功能是什麼?

答:擴展機和資源管理;那兩個主要功能怎麼理解?

擴展機就是基於硬件上再封裝一層接口(術語叫系統調用)的等價計算機。程序員可以通過調用這些特殊的指令來使用底層硬件。

資源管理,因爲本身電腦有很多硬件,比如處理器、硬盤(塊設備)、鼠標(字符流設備)、網絡接口、打印機等等,操作系統就是解決這些硬件設備的控制分配。

內核態和用戶態的區別是什麼?對於一個操作系統 來說,這種區別爲什麼很重要?

內核態受硬件保護,操作系統就是在內核態上運行的,不允許用戶改動。
用戶態,運行的是用戶級的軟件,用戶可以基於操作系統,編寫自己的軟件。

最重要的區別是:內核態不允許修改,這樣可以保護操作系統的穩定性!而用戶態可以修改。

什麼是多道程序?

內存劃分爲多個分區,每個分區存放不同作業。
比如A作業正在使用I/O操作,那B或者其它作業可以使用CPU。這樣多道程序可以充分利用I/O和CPU的能力,而不會浪費。

什麼是假脫機? 你認爲將來的高檔個人計算機會將假脫機作爲標準特性嗎?

假脫機,我理解是將計算機輸入及輸出自動化。原來是要人工將任務輸入計算機中,等待任務的完成,再輸出到指定地方,再進行下一個循環。

而假脫機技術,相當:
1. 所有進來的任務直接放在輸入隊列;
2. 計算機從輸入隊列自動取任務;
3. 計算機處理完後,將結果輸出,然後又走到1;

優點: 整個流程無須人工干擾。將獨佔式變爲了共享式。我們當前的生活中,最常見的就是打印機。很好地使用了假脫機技術。

在早期的計算機中,每一個字節數據的讀寫都是由CPU直接進行處理的(那時沒有DMA,即直接存儲器訪問)。這種組織結構對多道程序技術有什麼影響?

多道程序:一個作業在使用IO,另一個作業在使用CPU.
如果每個字節數據的讀寫都要CPU處理,那說明CPU一直是忙碌的。當一個作業在使用IO時,這個作業也要佔用CPU。那就達不到多道程序技術的效果。

什麼是分時系統

一臺計算機,多個用戶聯機終端。每個用戶可以使用終端連上計算機,而操作互不干擾,如果要做到互不干擾,須採用什麼技術呢?最終用回的是多道程序,所以說分時系統是多道程序的變種。

有一個更容易理解的例子,那就是電力供應系統,如果要用電,就只要在家裏把電器的插頭插上到插座上就好了……

爲什麼分時系統未被二代計算機廣泛採用?

因爲第二代計算機的設計沒有采用所需要的硬件保護機制,不能很好的保護內存中的各個作業,使它們不會相互妨礙攻擊。

哪些指令可以在內核態運行?

請指出個人計算機操作系統與大型主機操作系統的不同之處?

  1. 個人計算機是給個人用戶使用,所以要求更好的用戶體驗,以圖形界面展示;
  2. 大型主機是給專業人員使用的,對用戶接口要求不高,一般是以命令行與計算機交互。

給出一個理由,說明爲什麼源代碼不公開的商業操作系統(如windows)要比一個開源代碼的操作系統(如linux)具有更好的品質?
然後再給一個理由,爲什麼一個開源代碼的操作系統(如linux)會比一個源代碼不公開的商業操作系統(如windows)有更好的品質?

  1. 要說windows比linux好,那是其操作系統自我保護性、穩定性。相當一個盒子,不允許別人隨意修改,這樣能保證其穩定性。
  2. 要說linux比windows好,那是因爲開源,所以有更多創新,有更快速的發展。

一個Minix文件的所有者的UID=12,GID=1,該文件的權限模式碼爲rwxr-x—。別一個用戶的UID=6,GID=1,如果他試圖去執行該文件,結果會如何?

看GID爲同組用戶。 rwxr-x—爲文件所有者有讀寫執行權限,同組用戶有讀加執行權限,其它用戶無權限。

既然超級用戶的存在將導致許多安全問題,爲什麼還要使用這個概念?

超級用戶是系統中的一個特殊的用戶,超級用戶擁有系統的最高權限,許多保護規則對它無效。可以管理系統所有的權限,管理系統非常方便。

UNIX的所有版本都文件的命名方式,即絕對路徑名(相對於根目錄)和相對路徑(相對於當前工作目錄)。能否去掉其中一種,只使用一種統一的命名方式?如果要這樣做,你建議保留哪一種。

可以去掉其中的一種,但是使用起來就沒有兩種方式混合用那麼方便。如果要去掉一種,建議去掉第二種,因爲第一種可以進行全局定位,不需要知道當前目錄是哪裏。

在分時系統中爲什麼需要進程表?假設在一個PC機系統中,只有一個進程,該進程點有整個的系統資源,直至它運行結束。在這種情形下,是否還需要進程表?

在分時系統中,每隔一定的週期,操作系統就會暫停當前進程的執行,轉而啓動另一個進程。進程被暫時掛起,那麼後來當它需要重新運行的時候,就要求此刻的狀態與先前暫停時的狀態完全相同。這就意味着當我們掛起一個進程時,必須把它所有信息都要保存在某個地方(進程表)。

所以只有一個進程,則不需要進程表。

塊設備文件和字符設備文件的本質區別是什麼?

塊設備文件描述的是以隨機訪問的數據塊爲單元的設備,如磁盤。在打開一個塊設備文件後,可以直接去訪問它的某一個數據塊,如第4個數據塊,而不用考慮其文件系統的內部結構。類似地,字符設備文件指那些以字符流方式進行操作的設備,如打印機、調制解調器等。他們的本質區別是操作的對象不一樣和訪問數據的方式不一樣,歸根到底是設備特性引起的。

在MINIX3系統中,用戶2對用戶1的一個文件建立了一個鏈接,然後用戶1刪除了這個文件,如果此時用戶2去訪問該文件,結果會如何?

會報文件找不到。

管道是一種必備的工具嗎?如果沒有管道,系統的許多功能會失效嗎?

計算機爲什麼要每30s執行update程序?

MINIX3在內存里弄了一個叫塊緩存區來保存訪問過的數據,這樣能避免重複從磁盤讀取數據,這樣能提高IO。但這裏會有一個數據同步的問題。一個場景:緩存裏的一個數據被修改,在被寫回磁盤之前系統崩潰,那文件就會出現損壞。

爲了減少數據丟失的風險(只能減少,不能完全避免),那就要每30s執行同步操作,將緩存區的數據寫到磁盤中。

現代消費電子產品,如立體音響和數碼相機,通常會有一個顯示屏幕,可以輸入命令並顯示相應的結果。在這些設備內部有一個原始的操作系統。這種命令處理功能與個人計算機軟件上的哪一部分類似?

windows操作系統沒有fork系統調用,但它也能創建新進程。請你猜測一下,windows用來創建一個新進程的系統調用的語義是什麼?

CreateProcess

爲什麼chroot系統調用僅限於超級用戶使用?

chroot只能在進程擁有超級用戶的權限時才能執行。chroot一般用來設置對系統的限制訪問權限。

分析一下圖1.9中的系統調用列表。你認爲執行速度最快的系統調用是哪一個?爲什麼?

假設一臺機算機的執行速度爲10億條指令/秒,一個系統調用需要1000條指令,包括陷阱指令和所有的上下文切換指令。請問,在保留一半的CPU容量來運行應用程序的情形下,該系統每秒鐘能執行多少次系統調用?

= (10億 /2)/1000

在圖1.16 中有一個mknod系統調用,但卻沒有rmnod調用。這是否意味着我們在創建新節點時,必須非常小心,因爲沒有辦法去刪掉它們。

暫時沒有找到答案。。。。

在什麼情形下,忽略SIGALRM信號是有意義的。

當一個程序要後臺執行時。

客戶-服務器模型在分佈式系統中很流行,它能在單機系統中嗎?

可以。不管是分佈式還是單機,客戶不關注,只要發出一個請求,收到一個應答。

Pentium處理器的初始版本不支持虛擬機監控程序。一臺機器需要具備什麼樣的特徵才能使之虛擬化?

虛擬化技術是一套解決方案。完整的情況需要CPU、主板芯片組、BIOS和軟件的支持。

編寫一個程序或者一組程序,來測試所有的MINIX3系統調用。對每個系統調用,嘗試使用不同的參數,包括錯誤的參數,以驗證它們能否被檢測出來。

https://www.cnblogs.com/onlyforcloud/articles/4465995.html
https://yq.aliyun.com/articles/42076

編寫一個類似圖1.10的shell,要求其中包括足夠多的代碼,使之能正常工作,這樣才能對它進行測試。可以加入一些特徵,如輸入輸出的重定向、管道和後臺作業等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章