Linux 內核編程總結
從事了幾年的內核編程,對內核編程有一定的經驗,現總結、吐槽下,作爲標記。
任何進程都有有進程的入口點,用戶態的進程,其入口點是,main函數。
那麼內核的入口點是什麼?個人理解整個OS,運行起來就是一個進程,
內核的入口點是init進程,在這個進程中負責:
1)子進程的創建,包括內核的線程、用戶態的進程。
2)進程調度
3)I/O調度
4)內存管理
內核編程跟用戶態編程的相同點、異同點:
1)多線程編程需要同步、互斥,互斥的語義提供了
鎖、信號量。
2)分配內存的語義,提供分配內存的工具。
3)文件、網絡接口。
不同點:
在內核中分爲中斷環境和非中斷環境,中斷環境中不能睡眠,所有會睡眠的函數不能在中斷環境中調用,否則會出現假死。
因爲中斷環境睡眠,操作系統是無法喚醒該調用。