作業系統必備知識

甚麼是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:

  1. Mutual Exclusion (互斥) :當有有一個Process佔住critical section時,其他process不能進入critical section。
  2. Progress : 當沒有progress在Critical section當中執行時,不能阻擋其他progress進入critical section。
  3. Bounded Waiting : 等待Critical section 的時間

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *