---
# System prepended metadata

title: 作業系統期末考古
tags: [作業系統]

---

---
tags: 作業系統
title: 鄭欣明作業系統期末考古
---

### 6. Please describe the definitions of deadlock prevention, avoidance, detection, recovery

1. prevention
    預防比較難，因此需要針對deadlock的四個條件做處理。
    - Mutual Exclusion：不共用資源不會互斥，但基本上不可能。
    - Hold and Wait：process必須保證再要求一項資源時，不能佔用其他資源，除非他可以一次取得所有資源。
    - No Preemption：只要process握有一些資源，但得不到其他的，就要先全部釋放，再重新申請。
    - Circular Wait：對 resource type 強制安排線性順序，不讓circular wait 的條件達成
3. avoidance 
    - 想要avoidance的話 system 必須要知道事有。
        - 每個process 要知道對不同的resource type需要多少，這是最重要的
        - deadlock-avoidance演算法檢查時，要確定不會有circular wait的狀況發生
        - 在資源分配時要看狀況，再決定是不是要再給resource。
    - Avoidance的演算法分為兩種
        - Resources Aollocation Graph(RAG)：如果resource type 只有一種 instance
        - Banker's Algorithm：如果resource types有多個instance
    
4. detection & revocery
    - 容許發生deadlock，但要能偵測到且恢復
        - 偵測到有deadlock的process可以選擇一把它給終結或是把資源給中斷。如果把它終結掉，可以依照優先權高低或是資源用的多寡還有其他條件，去決定要砍掉誰，一次砍一個process。如果是把資源中斷，就找資源使用最少的開始犧牲，之後重新再來一次，不過可能導致使用資源少的程式會stravation。

### 7. Please describe the differences between clone, fork and vfork
- fork/vfork都沒有參數，而clone帶有參數
- 執行vfork的時候，完全和父process共享RAM，所以vfork之後對所有的數據進行修改，父process也會看見。而fork則指示延遲了複製，在修改數據後還是需要複製頁面。
- clone是fork的推廣形式，他允許新的process指定具體需要與父process共享哪些資源，比fork更靈活

### 8. Please describe how buddy system and Slab Allocator for kernel memory allocation
- Buddy system：讓固定大小的每兩塊組成更大的連續page，因此大小為2的密次方，類似2048遊戲那樣，優點可以快速合併大的chunk，缺點容易造成fregamentation
    - EX：有33bKB的但只能用64KB的page，浪費了31KB的空間
- Slab Allocation：此方法保留了的剛存取過的object data type,以便在後續分配相同type的時候可以重用。slab是由一或多個physically contiguous page組成，而cache由一或多個slab組成，object會去使用cache。此方法沒有fragmentation的問題

### 9. Please describe the difference between segmentation and paging approachs for use program memory allocation
- paging：將實體記憶體切成最小單位frame，在virtual memory則稱為page，兩者大小一樣，將得到的虛擬記憶體位置除以size大小得到第幾頁為q值，餘數則是s值，q值即是page table的key值用來求map的value，value則是指實體記憶體內的第幾個frame，值則是在page或frame的第幾個記憶體
- segmentation：不將記憶體分成某個特定的最小單位，而是依照要load進來的process大小，給定一個base register和limit register，base代表開頭，limit代表長度，並透過map把base當作key值，value一樣儲存在實體記憶體的位置。
- **paging會有內部斷裂，segmentation有外部斷裂**

### 11-B. What's the drawback of busy waiting when we implement semaphore
- 浪費CPU cycle，因為process會一直等待，這叫做spinlock
- 改善：在等待時把process移到waiting queue中 (等同於sleep())

### 12-A. What's the different between a program, a process, and a thread
- program：只得就是我們所寫的code，而且尚未被載入記憶體裡。
- process：process則是指已經執行並被載入記憶體，隨時會被CPU執行，每一個process都是獨立的，但不是最小單位
- thread：可執行的最小單位，一個process底下有很多thread，這些thread5共享資源如記憶體、變數，但不同的process則否

### 12-B. Please briefly describe how context switch between processes works
- 讓多個process可以共用單一CPU的資源，進行context switch的時候，會先儲存當前process的狀態到該process對應的PCB，然後load要執行的process的PCB到CPU的register

### 12-C. What's the differences between Uesr Thread, Kernel Thread, and Hardware Thread
- Hardware thread：物理上能夠同時運作的執行單元數量
    - 單核心的 CPU 只有一個 Hardware Thread
    - 多核心的 CPU 可以有多個 Hardware Thread
    - 原本這件事其實不重要，但在 Intel 做出 Hyperthreading 的技術以後，一顆 CPU 可以同時執行兩個指令，也就是有兩個 Hardware Thread
        - 實際上這種 CPU 也並不總是能夠同時執行兩個指令，但對作業系統來說，一次可以放兩個指令給這顆 CPU
- User thread：程式所產生的thread
    - 對程式而言，User Thread 代表兩項並行的工作，執行的速度以及順序無法保證
- kernel thread：在作業系統中被排程的單位
    - 作業系統在運作時，會帶有很多 Kernel Thread，這些 Kernel Thread 要何時被放到 Hardware Thread 上執行，由作業系統中的排程器決定

### 16.Please describe the definition of thrashing and the reason why thrashing happen. To prevent thrashing, we must provide a process frames as many as it actually using. Typically, it is achieved by considering locality and please why? Please also discribe the famous solution "working-set model".
- definition of trashing：Thrashing會發生在process分配到的frame不夠多時，頻繁發生page fault，使CPU的使用效率急速下降
- Why thrashing happen：Frame不夠，發生page fault, Page replacement發生，frame又不夠用，導致CPU效率低，因為process忙著swap in/out, CPU閒下來，又抓更多process進來工作
- why achieved by locality：Process執行時，對於Memory的存取區域並非是均勻(Uniform)的，而是具有區域性(Locality)的特質
- working-set model：利用loaclity觀察一段時間內一個process所使用的pages數量，因為process的需求是動態的所以locality隨時間改變，OS要持續track process 的locality。Working Set:一段時間內process reference 的page數量，設為WSS，frame總需求數設為D=∑WSS, D > m(availabe frames) --> trashing
    - D << m：增加 degree of multiprogramming
    - D > m：把整個 process suspend (mid-term scheduler) 掉，free 該 process 所有的 frames
    
    優點：
    - 在最大化 multiprogramming 的情況下，同時防止 trashing 的發生
    - 可以最大化 CPU 使用率
    
    缺點
    - tracking 的成本很高

### 18. Describe the following items：
#### a. In NUMA system for frame allocation, why the goal is to have memory frames allocated "as close as possible" to the CPU on which the process is running
> 因為在NUMA系統中，記憶體存取的時間取決於記憶體相對CPU的位置，因此可以的話越近越好，這樣存取的速度比較快
#### b. What is "Belady's annmaly" in page replacement
> 給予更多的frame卻發生更多的page fault
#### c. What is acyclic-graph directories
> 非循環式圖形目錄，他能共享子目錄跟檔案，也就是說會有別名。
#### d. Why interrupts from I/O device are much better than polling
> interrupt可比喻成上課直接舉手打斷老師，然後老師中斷並回你的問題，而polling則是不能舉手問問題，老師會挨個詢問有沒有問題，但若是剛好被問完後突然有問題，就要等到下次老師問完一圈重新問你才能發問，因此interrupt的主動打斷，比起polling的被動打斷會有效率很多，因為挨個詢問但都沒有問題的時候非常浪費時間
#### e. What is "double buffering" in kernel I/O subsystem
> 進一步加快輸入和輸出速度，提高裝置利用率，也稱緩衝對換（Buffer Swapping）
- 資料送入第一緩衝區，裝滿後轉向第二緩衝區。
    - 輸入：資料送入第一緩衝區，裝滿後轉向第二緩衝區。
    - 讀出：OS從第一緩衝區中移出資料，送入使用者程序，再由CPU對資料進行計算。
>兩個緩衝區，CPU和外設不再針對一塊交替，可能實現連續處理無需等待對方。前提是CPU和外設對一塊資料的處理速度相近。而如下圖情況CPU仍需等待慢速裝置。
#### f. What is Direct Memory Acess(DMA)
> 一種記憶體存取技術，允許某些電腦內部的硬體子系統以獨立地直接讀寫系統記憶體，而不需中央處理器介入處理。同等程度的處理器負擔下，DMA是一種快速的資料傳送方式。很多硬體的系統會使用DMA。
#### g. Which of the following memory management methods is not for kernel process
(1) Buddy system (2) Slub (3) Typical paging (4)Slab
> (3)Typical paging
#### ==h. Which of the following programming techniques and structures are "good" for a demand-paged environment==
(1) Hashed symbol (2) Array (3) Linked List (4)Goto
> ?
#### i. RAID have been widely used to provide reliability via redundancy. Please make the right binding between RAID-1 and one of following explanations
(1) block-interleaved parity (2) non-redundant (3) mirror disks (4) bit-interleaved
> (3) mirror disks
#### j. 同 5-g
> ?

#### 21. Please describe how the following features change when page size is increased
a. Fragmentation
- 上升

b. Page table size
- 降低

c. Resolution （解析度？）題目就這樣0.0
- 更差
- (老師上課只說，page size越小的resolution就越高)
- 較小的page size更能把「真正需要」的載入，如果page size = 1GB，那麼可能會載入很多不是真正需要的 (by 中正大學 羅習五)

d. I/O overhead
- 上升

e. Number of page faults
- 如果沒有Belady's Anomaly，page fault的數量應該要增加
- 平均的pages數量減少，page fault應該會降低吧

f Locality
- 越分散

g. TLB size and effectiveness
- 在 TLB size 不變的情況下，hit ratio 會變高，進而使effectiveness 上升（更有效率）
- 可以透過更少的 TLB size 達到一樣的 effectiveness

### 22. Please define four usages of semaphores and present an example for each usage.
1. Mutual exclusion
    - mutex locks
2. Force suspend
    - 讓execution有一個特定順序
3. Count-down lock
    - A semaphore has an implicit counter
    - 同時可讓n個process進入critical section，當滿了就會鎖住，直到這n個process中有人出CS
4. Notification
    - Indicate that an event has occurred
    - signal() &　wait()