---
tags: 作業系統
---
# 作業系統 (期末)
## Ch 5 Scheduling
- Scheduling type
- FCFS: convey effect
- SJF (Shortest-Job-First): nonpreemptive, type of priority(time)
- SRTF (Shortest-remaining-time-first): SJF && preemptive
- RR (Round Robin):preemptive, better response (time quantum > context switch time)
- Priority
- Scheduling Criteria
- cpu throughput
- cpu utilization
- waiting time
- turnaround time
- response time
- Multi-Level ( Single CPU )
- multi-level queue: process cann’t move between queues
- multi-level feedback queue: can move between queues
- Multiple-Processor ( Multi-core )
- processor affinity
- 補充名詞
- hardware real time: must complete before deadline
- software real-time system: priority high, not sure complete before deadline
- interrupt latency: interrupt service routine
- dispatch latency: stop one and swap another one to run(includ context switch)
- interrupt -> dispatch -> context switch
---
### Ch 6 Synchronization
- solution of critical section
- progress
- if a don't want to entry, a can't effect determine
- no deadlock, choose one entry in limit time
- mutual excludsive
- bounded waiting (no starvation)
- type of solution
- Hardware: atomic instruction (only in kernal mode)
- test_and_set
- compare_and_swap
- Mutex Locks(spinLock)
- os provide software solution
- acquire(lock), release(unlock)
- busy waiting
- mutex init = 1(no one, can entry)
- as binary semaphore
- Semaphore
- waiting queue to avoid busying waiting
- wait() -> signal()
- semaphore < 0 => can’t entry critical section
- Monitor
- high-level abstraction data type
- x.wait(), suspend util x.signal()
- 補充名詞
- race condition: result depend on excute order
- critial section (enter , exit)
- memory transaction: a sequence of read-write operation that are atomic
```javascript=
wait() {
while(s<=0);
s--;
}
signal() {
s++;
}
```
i want to entry
```javascript=
do {
flag [i] = true
turn = j
while(turn == j && flag[j] == true);
(critical section)
flag[i] = false
(remainder section)
} while(true)
```
---
### Ch 8 deadlock
- deadlock condition
- circular wait
- hold and wait
- no preemptive
- mutual exclusive
- solution of deadlock
- deadlock prevention
- deadlock avodience(priori , safe / unsafe state)
- deadlock detection and recovey
- ignore
- deadlock detection: How to recovery from deadlock
- process termination (abort all or chosen one)
- resource preemption
- select victim
- rollback: return to safe state
---
### Ch 9 Main Memory
- addresss type
- source code (symbolic)
- compile (relocation)
- linker / loader (absolut)
- binding time
- compile ( priori: absoult code )
- load
- execute ( binding delay )
- hardware support (Base and Limit registers)
a. logical address
b. hardware protection
- address type
- logical (virtual) address: generate by CPU
- physical address: memory unit use
- Memory management unit (MMU)
- hardware
- map logical -> physical address
- base register (relocation register、4)
- contiguous allocation
- two partition
- kernal process(resident OS): low memory, interrupt vector
- user process: high memory
- multiple partition allocation
- OS record some information
- a. allocated partition
- b. free partition(hole)
- dynamic allocation ways
- first fit
- best fit
- worst fit(largest)
- swap
- backing store, DMA to memory image
- problem | can't swap out process which use I/O
- solution | transfer I/O to kernel space (double buffering)
- Fragmentation
- internal fragmentation (solution: segmentation)
- external fragmentation (solution: compact)
- Segmentation
- user view of memory
- segment table
- segment number < STLR(limit register)
- logic address < segment number, offset>
- protection: validation bit、privilege
- Page
- page(logical), frame(physical)
- each process , each page table
- logic address < page number, offset>
- translate lookaside buffer (TLB): solve two memory access problem
- structure of page table
- hierarchical page table
- 32 bit (12, 10, 10 => outer, inner page number, offset)
- two-level (forward-mapped)=> outer、inner
- hashed page table
- \>32 bit
- inverted page table
- track physical memory
- each frame, have one entry in page table
- < PID, page number >
- 名詞解釋
- dynamic relocation: don't need special support from OS
- dynamic linking (shared lib): stub, excute time, os version
- reentrant: share code, interprocess communication
- execution time binding : binding instruction and data perform by most general OS
- protection bit (R, WR)
- absolute code can be generate for compile time binding
---
### 計算
- page size -> page offset (bits)