目录


CH01

1.1 What are the three main purposes of an operating system?
(1)為電腦使用者提供一個方便且高效的環境,以在電腦硬體上執行程序

(2)根據需要分配電腦的各種資源,分配過程應盡可能公平和高效。

(3)作為一個控制程序,它具有兩個主要功能:(1)監督使用者程序的執行,以防止錯誤和不當使用電腦,以及(2)管理I/O設備的操作和控制。

1.2 We have stressed the need for an operating system to make efficient use of the computing hardware. When is it appropriate for the operating system to forsake this principle and to “waste” resources? Why is such a system not really wasteful?
單使用者系統應該最大化用戶對系統的使用。圖形使用者介面(GUI)可能會「浪費」CPU週期,但它優化了用戶與系統的互動。

1.3 What is the main difficulty that a programmer must overcome in writing an operating system for a real-time environment?
主要困難在於將操作系統控制在實時系統的固定時間約束內。如果系統無法在特定時間內完成任務,可能會導致整個系統崩潰。因此,在為實時系統編寫操作系統時,編寫者必須確保他的調度方案不允許響應時間超過時間約束。

1.4 Keeping in mind the various definitions of operating system, consider whether the operating system should include applications such as web browsers and mail programs. Argue both that it should and that it should not, and support your answers.
將流行應用程序納入操作系統的一個支持觀點是,如果應用程序嵌入操作系統中,它很可能更能充分利用內核中的功能,因此在性能上優於運行在內核外部的應用程序。然而,通常反對將應用程序嵌入操作系統的論點佔上领先地位,原因如下:

(1) 這些應用程序是應用程序,而不是操作系统的一部分;

(2) 在內核內運行的性能優勢被安全性漏洞所抵消;

(3) 包含應用程序導致操作系統過於臃腫。

1.5 How does the distinction between kernel mode and user mode function as a rudimentary form of protection (security)?
核心模式(kernel mode)和用戶模式(user mode)之間的區別以以下方式提供了一種基本的保護機制。只有當CPU處於核心模式時,才能執行特定指令。同樣地,只有在程序處於核心模式時,才能訪問硬件設備,並且只有當CPU處於核心模式時才能啟用或禁用中斷。因此,當CPU在用戶模式下執行時,其功能非常有限,因此強制保護關鍵資源。这有助于防止用户程序对操作系统和硬件资源进行未授权的访问,提高了系统的稳定性和安全性。

1.6 Which of the following instructions should be privileged?
a. Set value of timer.
b. Read the clock.
c. Clear memory.
d. Issue a trap instruction.
e. Turn off interrupts.
f. Modify entries in device-status table.
g. Switch from user to kernel mode.
h. Access I/O device.
以下操作需要具有特權權限(privileged):設定計時器的值、清除記憶體、關閉中斷、修改設備狀態表中的項目、訪問I/O設備。其餘操作可以在用戶模式下執行。這些特權操作通常是操作系統的核心功能,只有操作系統具有足夠的權限來執行這些操作,以確保系統的穩定性和安全性。一般情況下,用戶程序不應該擁有這些特權,以避免潛在的不當操作。

1.7 Some early computers protected the operating system by placing it in a memory partition that could not be modified by either the user job or the operating system itself. Describe two difficulties that you think could arise with such a scheme.
操作系统所需的數據(例如密碼、訪問控制、會計信息等)必須存儲在或經過不受保護的內存,因此可以被未經授權的用戶訪問。這樣的設計會導致安全風險,因為未經授權的用戶可能會存取、修改或竊取這些數據,進而危及系統的安全性和隱私。因此,操作系統需要確保這些數據受到足夠的保護,只有授權的用戶或應用程序可以訪問它們。這通常通過訪問控制和安全性措施來實現。

1.8 Some CPUs provide for more than two modes of operation. What are two possible uses of these multiple modes?
雖然大多數系統只區分用戶模式和核心模式,但一些CPU支持多種模式。多種模式可用於提供更細粒度的安全策略。例如,不僅僅區分用戶模式和核心模式,還可以區分不同類型的用戶模式。也許屬於同一組的用戶可以執行彼此的代碼。當其中一個這些用戶運行代碼時,機器將進入指定的模式。在這種模式下,該組中的任何成員都可以運行屬於組中其他任何人的代碼。另一種可能性是在核心代碼內提供不同的區分。例如,特定模式可以允許運行USB設備驅動程序。這將意味著可以無需切換到核心模式來服務USB設備,從而基本上允許USB設備驅動程序在半用戶/半核心模式下運行。這樣的多模式架構可以為系統提供更靈活的權限管理和安全性控制。

1.9 Timers could be used to compute the current time. Provide a short description of how this could be accomplished.
一個程序可以使用以下方法來使用定時器中斷計算當前時間。程序可以設置一個定時器以在未來的某個時間醒來。當被中斷唤醒時,它可以更新本地狀態,用來跟踪迄今為止接收到的中斷的數量。然後,當實際引發中斷時,它可以重複這個設置定時器中斷和更新本地狀態的過程。這種方法可以用來實現一種簡單的計時器,用於測量經過的時間或執行某個操作,並在定時器中斷時更新計數器或執行其他操作。這種方法通常用於應用程序中需要精確時間控制的情況。

1.10 Give two reasons why caches are useful. What problems do they solve? What problems do they cause? If a cache can be made as large as the device for which it is caching (for instance, a cache as large as a disk), why not make it that large and eliminate the device?
快取(Cache)在兩個或多個組件需要交換數據,而這些組件以不同的速度執行數據傳輸時非常有用。快取通過提供中間速度的緩衝區解決了數據傳輸問題。如果快速設備在快取中找到所需的數據,則無需等待較慢的設備。快取中的數據必須與組件中的數據保持一致。如果組件的數據值發生更改,而該數據也存在於快取中,則必須更新快取中的數據。這在多處理器系統中尤其成為問題,因為可能有多個進程正在訪問一個數據。

可以通過一個等效大小的快取來取代組件,但前提是:(a)快取和組件具有相等的狀態保存容量(即,如果組件在斷電時保留其數據,則快取也必須保留數據),以及(b)快取是負擔得起的,因為更快的存儲通常更昂貴。這種方法可用於提高數據存取效率,尤其是在需要快速存取數據的場景中。

1.11 Distinguish between the client–server and peer-to-peer models of distributed systems.
客戶端-服務器模型明確區分了客戶端和服務器的角色。在這個模型下,客戶端請求由服務器提供的服務。而對等模型則沒有如此嚴格的角色區分。實際上,系統中的所有節點都被視為對等節點,因此可以充當客戶端或服務器,甚至兩者兼顧。一個節點可以從另一個對等節點請求服務,或者實際上可以向系統中的其他對等節點提供服務。

例如,考慮一個共享烹飪食譜的節點系統。在客戶端-服務器模型下,所有食譜都存儲在服務器上。如果客戶端希望訪問一個食譜,它必須從指定的服務器請求該食譜。而在對等模型中,一個對等節點可以向其他對等節點請求指定的食譜。擁有所請求食譜的節點(或者可能是多個節點)可以將其提供給請求的節點。請注意,每個對等節點可以同時充當客戶端(可以請求食譜)和服務器(可以提供食譜)的角色。这种模型的靈活性允许節點在不同情境下既提供服務又請求服務,而不受嚴格的角色約束。

1.12 How do clustered systems differ from multiprocessor systems? What is required for two machines belonging to a cluster to cooperate to provide a highly available service?
集群系統通常是通過將多台計算機組合成一個單一系統,以執行分佈在集群中的計算任務。另一方面,多處理器系統可以是一個單一的物理實體,包含多個CPU。集群系統比多處理器系統的耦合度較低。為了使兩台機器能夠提供高可用性的服務,這兩台機器上的狀態應該被複製並保持一致更新。當其中一台機器故障時,另一台機器可以接管故障機器的功能。

這種方法允許在發生故障時實現冗余和故障恢復。集群系統的設計通常用於需要高可用性和容錯能力的應用,例如網絡伺服器或數據庫系統。每台機器都可以處理一部分工作,並且當一台機器出現問題時,其他機器可以接管其工作,從而確保系統的持續運作。

1.13 What is the purpose of interrupts? How does an interrupt differ from a trap? Can traps be generated intentionally by a user program? If so, for what purpose?
中斷是系統內部硬體生成的流程變化。中斷處理程序被召喚來處理中斷的原因,然後將控制返回到被中斷的上下文和指令。陷阱是一個由軟體生成的中斷。陷阱可以用來調用操作系統例程或捕捉算術錯誤。

簡而言之,中斷是由硬體生成的,用於處理各種硬體事件,而陷阱是由軟體生成的,通常用於觸發操作系統例程或處理軟體異常情況。這兩種機制都允許系統處理不同的事件和情況,以確保系統的正確運行。

1.14 Direct memory access is used for high-speed I/O devices in order to avoid increasing the CPU’s execution load.
a. How does the CPU interface with the device to coordinate the transfer?
b. How does the CPU know when the memory operations are complete?
c. The CPU is allowed to execute other programs while the DMA controller is transferring data.
Does this process interfere with the execution of the user programs? If so, describe what forms of interference are caused.

CPU可以通過將數值寫入可以獨立訪問的特殊寄存器來啟動DMA操作。一旦設備接收到來自CPU的命令,它就會啟動相應的操作。當設備完成操作時,它會中斷CPU以指示操作的完成。

設備和CPU可以同時訪問內存。內存控制器以公平的方式為這兩個實體提供對內存匯流排的訪問權。因此,CPU可能無法以最高速度發出內存操作,因為它必須與設備競爭,以獲得對內存匯流排的訪問權。

這種情況下,CPU和設備之間的競爭可能導致性能下降,特別是當CPU需要頻繁訪問內存時。為了最大程度地提高性能,系統設計者需要考慮如何有效管理CPU和設備之間的資源分配,以確保兩者能夠有效地共享系統資源。

1.15 Some computer systems do not provide a privileged mode of operation in hardware. Is it possible to construct a secure operating system for these computer systems? Give arguments both that it is and that it is not possible.
對於這種類型的機器,操作系統需要始終處於控制模式(或監控模式)下。這可以通過兩種方法實現:

a. 要求對所有用戶程序進行軟體解釋(例如某些BASIC、Java和LISP系統)。軟體解釋器將提供硬體未提供的功能。

b. 要求所有程序都用高級語言編寫,以便所有目標代碼都是由編譯器生成的。編譯器將生成(無論是通過內聯還是通過函數調用)硬體缺失的保護檢查。

這兩種方法都旨在確保操作系統能夠有效地監控和保護系統,並確保用戶程序不會損害系統的穩定性和安全性。在第一種方法中,軟體解釋器負責提供必要的保護,而在第二種方法中,編譯器生成的目標代碼包含了保護檢查。這樣可以確保系統保持在一個安全和穩定的狀態。

1.16 Rank the following storage systems from slowest to fastest:
a. Hard-disk drives
b. Registers
c. Optical disk
d. Main memory
e. Nonvolatile memory
f. Magnetic tapes
g. Cache


a. Registers

b. Cache

c. Main memory

d. Nonvolatile memory

e. Hard-disk drives

f. Optical disk

g. Magnetic tapes

1.17 Discuss, with examples, how the problem of maintaining coherence of cached data manifests itself in the following processing environments:
a. Single-processor systems
b. Multiprocessor systems
c. Distributed systems

在單處理器系統中,當處理器發出對緩存值的更新時,內存需要被更新。這些更新可以立即執行,也可以以一種懈怠的方式執行。在多處理器系統中,不同的處理器可能會在本地緩存中緩存相同的內存位置。當進行更新時,其他緩存的位置需要被無效或更新。在分散式系統中,緩存的內存值的一致性不是一個問題。然而,當客戶端緩存文件數據時,一致性問題可能會出現。

簡而言之,單處理器系統中,主要關注緩存和內存之間的一致性,而在多處理器系統中,需要處理不同處理器之間的緩存一致性。在分散式系統中,一般不需要擔心緩存的內存一致性,但當客戶端緩存文件數據時,可能需要處理一致性問題。這些問題的處理通常需要使用一些同步和通信機制來確保數據的一致性。

1.18 Describe some of the challenges of designing operating systems for mobile devices compared with designing operating systems for traditional PCs
設計移動操作系統時面臨的最大挑戰包括:

較少的存儲容量意味著操作系統必須謹慎管理內存。
操作系統必須謹慎管理能源消耗。
較少的處理能力和較少的處理器意味著操作系統必須謹慎分配處理器給應用程序。
這些挑戰主要涉及到移動設備的有限資源,包括存儲容量、能源和處理能力。為了應對這些挑戰,操作系統需要在有限的資源下實現優化,以確保良好的性能、良好的能源效率和有效的應用程序執行。这意味著操作系統必須謹慎管理內存、能源和處理器資源,以滿足用戶的需求。

1.19 Identify several advantages and several disadvantages of open-source operating systems. Identify the types of people who would find each aspect to be an advantage or a disadvantage.
開源操作系統具有許多優勢,包括有多人參與開發、多人參與錯誤修復、易於訪問和分發,以及快速的更新週期。此外,對於學生和程序員來說,能夠查看和修改源代碼肯定有優勢。通常情況下,開源操作系統在某些形式的使用上是免費的,通常只需要支付支持服務的費用。商業操作系統公司通常不喜歡開源操作系統帶來的競爭,因為這些特點很難競爭。一些開源操作系統不提供付費支持計劃。一些公司避免參與開源項目,因為他們需要付費支持,以便有某個實體負責解決問題或提供幫助。最後,有人抱怨開源操作系統編碼的不紀律性導致缺乏向後兼容性,使升級變得困難,而頻繁的釋放週期使這些問題更加嚴重,迫使用戶經常升級。

這些觀點反映了開源和專有操作系統之間的一些差異和爭議。開源操作系統提供了靈活性和共同參與的優勢,但也可能帶來一些挑戰,如支持和升級的問題。不同的使用情境和需求可能決定了何時選擇開源操作系統,何時選擇商業操作系統,或者可能需要兩者並存。

CH02

2.1 What is the purpose of system calls?
系統調用(System calls)允許用戶級進程向操作系統請求服務。這些服務可以包括文件操作、進程控制、訪問硬件設備、網絡通信等。系統調用是用戶程序與操作系統核心之間的界面,它允許用戶程序執行需要特殊權限或特殊資源的操作,而無需了解操作系統的內部實現細節。通過系統調用,用戶程序可以向操作系統提出特定的請求,以完成各種操作,從而實現了操作系統的服務和資源的共享和管理。

2.2 What is the purpose of the command interpreter? Why is it usually separate from the kernel?
它會讀取來自使用者或命令檔案的指令,然後執行這些指令,通常是透過轉換成一個或多個系統呼叫(system call)來實現。通常情況下,命令解釋器不是操作系統的核心部分,因為命令解釋器的功能可能會經常變化和更新,所以它通常不包含在操作系統的核心內。

2.3 What system calls have to be executed by a command interpreter or shell in order to start a new process on a UNIX system?
需要執行 fork() 系統調用和 exec() 系統調用來啟動一個新的進程。fork() 調用會複製當前正在運行的進程,而 exec() 調用會在調用進程之上覆蓋一個基於不同可執行文件的新進程。

2.4 What is the purpose of system programs?
系統程式可以被視為有用的系統呼叫的集合。它們為使用者提供基本功能,使使用者無需撰寫自己的程式來解決常見問題。

2.5 What is the main advantage of the layered approach to system design? What are the disadvantages of the layered approach?
就像所有模塊化設計一樣,以模塊化方式設計操作系統具有幾個優勢。該系統更容易調試和修改,因為更改只影響系統的有限部分,而不觸及所有部分。信息僅保留在需要的地方,只能在定義和受限的區域內訪問,因此影響該數據的任何錯誤必須局限於特定的模塊或層。分層方法的主要缺點是性能差,因為需要遍歷不同層來獲取操作系統提供的服務,這會增加開銷。

2.6 List five services provided by an operating system, and explain how each creates convenience for users. In which cases would it be impossible for user-level programs to provide these services? Explain your answer.
這五個服務分別是:

a. 程式執行。操作系統將文件的內容(或部分內容)載入內存並開始執行。無法信任用戶級程式來正確分配 CPU 時間。

b. I/O 操作。需要以非常低的層次與磁盤、磁帶和其他設備進行通信。用戶只需指定設備和要執行的操作,系統將該請求轉換為特定於設備或控制器的命令。無法信任用戶級程式僅訪問應有訪問權限的設備,並僅在其未被使用時訪問它們。

c. 檔案系統操作。檔案創建、刪除、分配和命名涉及許多細節,用戶不應該執行這些操作。文件使用磁盤空間的塊,必須跟蹤這些塊。刪除文件需要刪除文件信息的名稱以及釋放分配的塊。還必須檢查保護以確保正確的文件訪問權限。用戶程序既無法確保遵守保護方法,也無法信任僅分配自由塊並在刪除文件時釋放塊。

d. 通信。系統之間的消息傳遞需要將消息轉換為信息包,發送到網絡控制器,經過通信媒介傳輸,然後由目的系統重新組合。必須進行信息包排序和數據修復。同樣,用戶程序可能無法協調訪問網絡設備,或者它們可能接收到其他進程的消息包。

e. 錯誤檢測。錯誤檢測發生在硬件和軟件級別。在硬件級別,必須檢查所有數據傳輸,以確保數據在傳輸過程中未被損壞。必須檢查媒體上的所有數據,以確保它們自寫入媒體以來未發生更改。在軟件級別,必須檢查媒體上的數據一致性,例如分配和未分配存儲塊的數量是否與設備上的總數相匹配。在那裡,錯誤通常是獨立於進程的(例如,磁盤上數據的損壞),因此必須有一個全局程序(操作系統)來處理系統上所有類型的錯誤。此外,當操作系統處理錯誤時,進程無需包含代碼來捕獲和更正系統上可能發生的所有錯誤。

2.7 Why do some systems store the operating system in firmware, while others store it on disk?
對於某些設備,例如嵌入式系統,可能不提供帶有文件系統的磁盤。在這種情況下,操作系統必須存儲在固件中。

2.8 How could a system be designed to allow a choice of operating systems from which to boot? What would the bootstrap program need to do?
考慮一個希望運行Windows和三種不同Linux發行版(例如RedHat、Debian和Ubuntu)的系統。每個操作系統將存儲在硬盤上。在系統啟動時,一個特殊的程序(我們將其稱為引導管理器)將確定要啟動哪個操作系統。這意味著,在最初引導到操作系統之前,引導管理器將在系統啟動期間首先運行。引導管理器負責確定要啟動哪個系統。通常,引導管理器必須存儲在硬盤的某些位置,以便在系統啟動期間被識別。引導管理器通常為用戶提供要啟動的系統選擇;如果用戶未選擇,引導管理器通常被設計為啟動默認操作系統。

2.9 Describe three general methods for passing parameters to the operating system
a. 參數可以通過寄存器傳遞。

b. 寄存器可以傳遞參數塊的起始地址。

c. 參數可以由程序放入(壓入)堆棧,然後由操作系統彈出(彈出)。

2.10 What are the advantages and disadvantages of using the same systemcall interface for manipulating both files and devices?
使用相同的系統調用接口來操作文件和設備的優點在於,由於大部分的內核通過這個接口處理設備,因此通過實現適當的硬件特定代碼,相對容易添加新的設備驅動程序。這有利於用戶程序代碼的開發,可以以相同的方式訪問設備和文件,以及設備驅動程序代碼的開發,可以支持明確定義的API。使用相同接口的缺點是,可能難以在文件訪問API的上下文中捕捉某些設備的功能,從而導致功能損失或性能損失。通過使用ioctl操作,可以克服一些這種困難,該操作提供了一個通用接口,供進程調用設備操作。

2.11 Describe why Android uses ahead-of-time (AOT) rather than just-in-time (JIT) compilation.
提前編譯是在將Java代碼安裝到設備上時進行的編譯。這是一種節省時間和能源的策略,對於移動設備至關重要。

2.12 What are the two models of interprocess communication? What are the strengths and weaknesses of the two approaches?
進程間通信的兩種模型是消息傳遞模型和共享內存模型。消息傳遞適用於交換較小量的數據,因為無需避免衝突。它也比共享內存對於跨計算機通信更容易實現。共享內存允許在計算機內部進行通信,因此可以實現最大的速度和便利性。但是,這種方法在內存共享的進程之間的保護和同步方面存在問題。

2.13 What is the main advantage of the microkernel approach to system design? How do user programs and system services interact in a microkernel architecture? What are the disadvantages of using the microkernel approach?
傳統的顯示器設備包括CRT和LCD。CRT(陰極射線管)是一種老式的顯示技術,它使用一個電子槍向螢幕發射電子束,通過控制電子束的位置和強度來生成圖像。LCD(液晶顯示器)則使用液晶面板來控制光的通過,以顯示圖像。CRT顯示器通常較厚重,而LCD顯示器則較薄輕便。另外,CRT顯示器通常有較好的色彩表現,而LCD顯示器在視角和解析度方面通常更優。 LCD顯示器在現代計算機和許多其他設備中更常見。

2.14 How are iOS and Android similar? How are they different?
相似之處:

二者都基於現有的核心(Linux 和 macOS)。
二者都使用軟件堆棧的架構。
二者都為開發者提供框架。
不同之處:

iOS 是封閉源代碼,而 Android 是開源的。
iOS應用程序是使用Objective-C開發的,而Android是使用Java開發的。
Android使用虛擬機,而iOS可以本地執行代碼。
2.15 Explain why Java programs running on Android systems do not use the standard Java API and virtual machine.
這是因為標準API和虛擬機是為桌面和伺服器系統設計的,而不是移動設備。Google為移動設備開發了單獨的API和虛擬機。
 

CH03

https://blog.csdn.net/apple_72111807/article/details/134119565?spm=1001.2014.3001.5501

CH04

https://blog.csdn.net/apple_72111807/article/details/134119849?spm=1001.2014.3001.5501

CH05

https://blog.csdn.net/apple_72111807/article/details/134117379?spm=1001.2014.3001.5501

CH06

操作系統恐龍書第十版課後答案 ch6-CSDN博客

CH07

CH08

CH09

CH10

【精选】操作系統恐龍書第十版課後答案CH10-CSDN博客

CH11

https://blog.csdn.net/apple_72111807/article/details/128245197?spm=1001.2014.3001.5501

CH12

【精选】操作系統恐龍書第十版課後答案 ch12_why is it important to scale up system-bus and dev_單細胞生物的博客-CSDN博客

CH13

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐