面試問答
Program, Process and Thread?
Process 是 ...
使用兩個控制變數flag與turn。其中flag[n]的值為true,表示 ID 為n的 Process 希望進入該臨界
區。變數turn保存有權訪問共享資源的 Process ID.
該演算法滿足解決臨界區問題的三個必須標準:互斥訪問、進入(No Deadlock)、有限等待(No Starvation)
面試問答
Program, Process and Thread?
Process 是 OS 分配 resource 的單位,相對的 Thread 是 OS 分配 CPU-time 的單位。
Process 之間的溝通相對複雜,要嘛是跟 OS 要一塊 Shared Memory,
不然就是透過 OS Message passing,
而 Thread 之間的溝通相對簡單,只要透過 Global Variable 即可,
雖然可能會有些問題(Race Condition)不過整體是比較簡單的,
再者 Thread 的切換可能不用轉到 Kernel Mode(看 Thread 如何實作)
又 Process 切換需要儲存許多資料到 PCB 而 Thread 相對少,
所以 Thread 的 Context Switch 也比 Process 快。
Program:放在二次儲存裝置中,尚沒有被Load到記憶體的一堆Code稱之為「程式」。 (也就是還是死的)
Process:已經被Load到記憶體中,任何一行Code隨時會被CPU執行,且其宣告的在記憶體的變數的值會隨著需求而不斷變動。
什麼是OS?
確保 Process 可以正確執行,不會讓 Process 跟 Process 之間互相干擾,
並透過 kernel mode 跟 user mode 保護硬體,
並提供 high level 的 system call 讓使用者不能直接操作硬體,
簡化操作,也更加有效率等。
面試建議
整體面試還不錯,很有挑戰性。需要多刷leetcode、了解OS相關知識,leetcode則刷top100題目。