甚麼是OS
電腦系統四個組成要素:硬體設備、作業系統、應用程式、使用者
作業系統負責控制並協調分配硬體資源給各個使用者,管理系統內的 硬體、軟體、資料。
Process vs Thread
Process (程序)
Process 需要一些資源才可完成工作,如CPU、記憶體、檔案還有I/O裝置。
每一個Process互相獨立。
一個CPU只能執行一個Process
Thread (執行緒、線程)
CPU實際運算的部分,Process可以包含Thread,同一個Process可以包含很多Thread,每個Thread可以完成不同的事項。
同一個Process底下的Thread共享資源,像是記憶體、變數等等。
在多執行緒中如果存取或改變全域變數,可能發生同步的問題。若兩個thread互搶資源,可能會產生Deadlock。
Stack vs Heap
Stack
暫存記憶體的位置。
記憶體使用完之後會自動回收,不需要擔心Memory Leak 會在這裡發生。
Heap
支持動態記憶體配置。
存活的記憶體存活時間不規律也不可預測。
C++ 沒有GC (Garbage Collection) C++ 需要用delete來清除
Asynchronous(非同步) vs Synchronous(同步)
同步一次只做一件事情,不會有兩個任務同時進行;非同步是每個任務各做各的,再進行下一個任務。
同步會等待到完成後才做下一件事情,非同步不會等待。
Critical section:
- Mutual Exclusion (互斥) :當有有一個Process佔住critical section時,其他process不能進入critical section。
- Progress : 當沒有progress在Critical section當中執行時,不能阻擋其他progress進入critical section。
- Bounded Waiting : 等待Critical section 的時間