電腦的基本架構:
作業系統核心概念:
資源分配器
控制程式
interupt base : 呼叫才會做處理
作業系統中永遠運行的程式就是kernel,除了kernel以外的,都叫system program或application program
CPU會把資料從memory裡丟到local buffer,然後memory會直接跟buffer做溝通
interrupt比喻:櫃台叫你去填表單,填完後再告訴他,你填東西的這段時間,櫃台還可以服務其他人
device drive(hardware)或application(software)做完後,會發出interrupt告訴CPU任務做完了
interrupt handling
Storage-Device Hierarchy 越往下越慢,容量越大
bootstrap program:把kernel load進去
timesharing:透過很短暫的時間快速切換工作,讓user有種OS只服務他一人的感覺(時間管理大師)
Memory Layout for Multiprogrammed System
dual mode : 有些東西不能讓使用者直接碰觸到,所以要有區分
system call : 讓user存取system program的介面,user呼叫interrup,讓kernel去存取受到限制的資源(kernel mode)
CPU scheduler : 在ready queue中尋找下一個適合的process執行,雖然真正的最小執行單位是thread,但是存放的資訊還是在process裡,所以scheluder是選擇process而不是thread,process選完後才近一步選thread,thread再去選用哪個CPU來執行。
preemptive vs non-preemptive
呼叫scheduler時機 #必考
dispatcher : scheduler選好下個process後,就交給dispatcher,做以下處理:
scheduling criteria
First Come First Served(FCFS) : 依據進來的順序去執行,也就是直接拿ready queue的第一個element
Shortest Job First (SJF)
shortest remaining time first : FCFS與SJF結合
priority scheduling
Round Robin
Multilevel queue : 把不同種類的process丟到不同的queue,現在OS大多用這種方法
各種排程的比較
期中必考1
期中必考2
race condition : 多個process在同時競爭(使用)相同的資源,結果與存取資源的順序性有關連時,race condition就會發生
Synchronization : 避免race condition的發生
critical section problem
EX
EX
peterson's combined solution
Prove the validity of a critical section?
peterson's solution
x = 100;
與flag = true
調換順序,使Mutual exclusion條件無法符合Synchronization Hardware
Test and Set Instruction
Compare and Swap Instruction
在entry與exit section內都有可能發生race condition,所以其實這些解法都只是將複雜的大問題(critical section)轉化成小問題(entry與exit section),但問題本身還是存在,在讀寫lock變數時還是有機會被interrupt。
Bounded-waiting Mutual Exclusion with compare-and-swap
Bakery Algorithm
為何不使用hardware解決Synchronization就好?
busy waiting : 不context switch,而是一直不斷檢查,用於context switch cost 很高的情形
mutex lock : 在OS層面實作lock的library
Semaphore
signal(synch);
後,P2才可以進入S2;
不用busy waiting的方法?
Four Typical Uses of Semaphores
deadlock and starvation
Monitor : 自己定義資料結構(ADT),OS會自動保證Mutual exclusion,不會有deadlock的狀況
用Semaphore實作出Monitor
What’s the different between semaphore and monitor?
Classical Problems of Synchronization
wait (mutex);
與wait (empty);
寫反,則可能造成deadlock的狀況