---
# System prepended metadata

title: OS homework1
tags: [OS Homework & Learning]

---

# OS homework1
## 選擇題
1.  ( C ) 
2.  ( D )
3.  ( B )
4.  ( C )
5.  ( D )
6.  ( B )
7.  ( B )
8.  ( D )
9.  ( C )
10. ( B )

## 問答題
11. 作業系統是一個介於硬體和應用程式之間的系統軟體，他與各個設備、記憶體、硬碟等進行溝通，並允許各個程式訪問他們。因為作業系統可以決定哪個程式將會在哪個特定時間使用硬體設備，所以作業系統被看做是**resource allocator.**

12. 中斷向量(Interupt vector)僅僅是指向特定中斷處理例程的指針表。因為有固定數量的中斷，此表可以更有效地處理中斷，這比使用general purpose的中斷處理例程要好。

13. 一個general-purpose的電腦系統包括CPUs以及多個經由共用的bus所連接在一起的divice controllers。每一個device controller負責特定類型的設備，並且負責在外圍設備之間移動資料。通常每一個device controller都會有一個device driver，而device driver都會了解device controller並為其設備與OS的其他部分提供統一的接口。

14. 因為Clustered systems具有冗餘(redundancies)的能力去接管特定失敗時的流程和任務。這個**redundancies**是固有的，因為clustered systems是由兩個或多個耦合在一起的單個系統組成。

15. (1) Physical memory是機器可以實際執行操作的。
    (2) Virtual memory是一種儲存方法，當一個程式被執行時所需要的空間大於可用的 physical memory空間時，就可透過將 disk memory來做為main memory的後備存儲，這種多出來的虛擬 main memory就是 virtual memory。
    (3) Logical memory是對於電腦中各種類型的記憶體的一個抽象畫概念，讓使用者和應用程式可以簡化對 memory的觀點，並使他們不必擔心 memory空間。
    
16. 這兩種 mode分別是 user mode和 kernel mode。當 mode bit為"0"時代表為 kernel mode，"1"則代表 user mode。當電腦執行使用者的應用程式時，系統是處於 user mode的，假如這時使用者的應用程式需要來自作業系統的服務(如system call)，就必須將user mode轉為kernel mode。

17. 在多處理器環境下，同一數據的兩個副本可能存在各自CPU的 local cache 中。當其中一個 CPU 改變此數據，另一個 CPU 的 cache 將收到一個更新版本的資料，這就是 cache coherency，一致性涉及確保多個 cache 存到最新的資料版本。

18. Main memory 是易揮發性的 memory，因為系統的任何功率消耗都將導致消除該 memory 中儲存的資料。而 disk memory 能夠更為永久性的儲存資料，但存取速度明顯較慢。

19. 分別是: 硬體、作業系統、應用程式以及使用者。

20. DMA 在 I/O 端和 main memory 之間移動大量的數據是很有效率的，因為它不再依靠CPU來傳輸。DMA 指示 device controller 在設備及main memory間移動數據。

21. 因為同一芯片上的處理器之間的通信比單獨芯片上的處理器更快。

22. 在UMA系統上，從任何CPU去訪問RAM所需的時間都相同。
    在NUMA系統上，訪問內存的某些部分可能比其他部分要花費更多時間，因此會導致某些內存訪問的性能降低。
    
23. Clouding computing 是透過網路("cloud")來提供計算服務，如: 儲存、資料庫、軟體、分析...等等。

24. 在第一種方法中，使用者發出命令後，interpreter跳到code 的適當部分，執行命令，然後將控制權返回給使用者。在第二種方法中，interpreter將適當的程序連同適當的參數一起加載到內存。
    第一種方法的優點是速度和整體的簡便性; 而缺點是新命令需要重寫interpreter program，在進行大量修改後，interpreter可能變得太複雜或太大。
    第二種方法的優點在於可以在不更改interpreter的情況下添加新命令; 缺點則是速度降低以及將參數從interpreter傳遞到系統的笨拙性。
    
25. 程式語言的 system-call interface 藉由作業系統提供與system call 的連接。這個interface攔截API中的函數呼叫，並在作業系統中呼叫必要的system call。因此對程序員而言，operating-system interface的大多數細節都被API 隱藏了，並由library管理。

26. 最簡單的方法是將參數傳進暫存器(register)，但也有可能參數的數量超過暫存器數量，所以一般來說會將參數存在memory的"block"或"table"，並將"block"的位址作為參數傳到暫存器中。此外也可透過程式將參數用"stack"的方式存取。

27. 用高階語言寫能使程式碼撰寫的更快速、更簡單、更好理解且更好偵錯。此外，編譯技術的改進將通過簡單的重新編譯來改善整個作業系統的生成代碼。而且如果用高階語言撰寫，移植起來也會更容易，可以遷移到其他硬體上。

28. 需求可以分為用戶目標和系統目標。使用者希望系統是**方便使用、簡單上手、且可讀性高、安全、快速**。而系統目標是希望**容易設計、容易實作且容易維護**，綜合出來對於設計作業系統的目標為**靈活、可靠、無錯誤以及高效率**。

29. 其中一個優點是microkernel 容易擴展作業系統。所有新的服務都添加到用戶空間，因此不需要修改kernel。此外，microkernel更為安全且可靠，因為大部分的服務都以user processes的行式運行，而不是kernel。儘管如此，由於增加的系統功能開銷，microkernel會遭受性能下降的困擾。

30. 模塊化方法結合了分層和microkernel設計技術的優點。在模塊化設計中，microkernel僅需要具有執行所需功能並知道如何在模塊之間進行通信的能力。然而，如果kernel 需要更多功能，則用戶可以將模塊動態加載到kernel。Kernel 可以具帶有定義明確的受保護interfaces的部分，這是在分層系統中發現的理想屬性。通過允許模塊彼此通信，可以擁有更大的靈活性。




###### tags: `OS Homework & Learning`