實作 System V Shared Memory in Linux User Space

System V Shared Memory

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

Dave Jones: Kernel hacking mini-howto (中譯)

寫在前面

無意間我看到 Dave Jones 寫給 kernel 新手的這篇文章(Dove Jones 是 red hat 公司 Fedora Kernel team 的 leader,也參與過不少計畫與專案),覺得很有意思,也頗為受用。於是就乾脆把他翻成中文,給想要研究 Linux Kernel 的入門者與我自己,作為參考。先聲明我並不是專業的翻譯,若有錯誤還請輕虐(跪)! 繼續閱讀

Kernel NTFS Driver and ntfs-3g

NTFS on Linux

以目前 Linux Kernel 對於 NTFS 的支援,若在編譯時選擇 CONFIG_NTFS_FSCONFIG_NTFS_RW 兩個選項,則可以『部份的』支援 NTFS 檔案系統(只能讀取不可寫入,或是只可寫入也存在的檔案)。但若想要如 Windows 般正常的存取 NTFS,這兩個編譯選項依然猶如雞肋。 繼續閱讀

製作 ext4 隨身碟,並於 windows 存取

Why NOT NTFS?

本篇的主要用意在製作一個隨身碟檔案系統,並且可以在 Linux 與 windows 桌面系統可以共用。也許很多人會想說何不使用 NTFS 或是 FAT32。NTFS 在自由軟體中的驅動,受限於微軟的保護。今日多數的 Linux distribution 雖然可以存取 NTFS,但其可能都是透過逆向工程或是 trail and error 的方式完成的驅動,大幅的降低了執行效能。而 FAT32 這類已經可以寫入歷史教科書的檔案系統就更不用提了。 繼續閱讀

實作 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,此時讀寫可能都會失敗,而導致系統不穩定。此類問題在多工作業系統中可能經常發生,因此需要使用一個機制來限制特定區域的存取。 繼續閱讀