實作 System V Shared Memory in Linux User Space

System V Shared Memory

在撰寫 process 時,有時會希望一些數值或是資料結構可以在不同 process 之間傳遞或是修改。但是資料結構儲存於虛擬記憶體中,不同 process 之間的記憶體區塊都是各自獨立的,無法存取到其他 process 的記憶體位置。如果要實現不同 process 之間存取相同一塊記憶體這樣的功能,就必須使用共享記憶體 (shared memory) 了。 繼續閱讀

實作 System V Semaphore in Linux User Space

System V Semaphore

在撰寫 Linux AP 時,System V semaphore 經常作為保護關鍵區域(critical section)或在不同 process 之間的同步(synchronization)之用。所謂 critical section 是指某程式碼段落對特定資源(可能是任何變數、檔案、驅動等等)做操作,而該資源若同時被不同程式(process)讀寫可能會有風險導致系統崩潰。好比 A process 正在寫入某 flash sector,此時 B process 正巧要讀取也要讀取同一個 flash sector,此時讀寫可能都會失敗,而導致系統不穩定。此類問題在多工作業系統中可能經常發生,因此需要使用一個機制來限制特定區域的存取。 繼續閱讀