iT邦幫忙

DAY 12
0

當開始要執行一個程式的時候 (process 建立了),kernel 就會為這個 process 準備一塊記憶體讓他儲存執行程式所需要的變數、資料、stack 等。而每一支程式都會有屬於自己的記憶體空間,kernel 透過其記憶體管理的方式,可以讓每個 process 都有自己的程式空間,自己的記憶體定址範圍,而且不會相互影響。

但是在 kernel module 中,所有的 module 使用的是跟 kernel 一樣的記憶體空間,所以如果其中某個 module 發生問題,譬如說佔用了別人的記憶體空間,或是修改了別人的記憶體內容,而造成 segmentation fault 的話,整個 kernel 也會因此而當掉的,所以必須小心謹慎的在 module 中處理變數跟位址。


上一篇
變數的命名空間
下一篇
Device driver
系列文
Linux kernel模組的開發30

尚未有邦友留言

立即登入留言