操作系統恐龍書第十版課後答案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和虛擬機。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值