還是那張熟悉的老圖:linux核心子系統簡介(由七個部分組成)
linux記憶體管理模型:
1. 記憶體管子系統職能:
1> 管理虛擬位址與實體地址的對映
2> 管理物理記憶體的分配
2. 位址對映管理
linux採用的是一種虛擬位址的管理方式,對於乙個32位的處理器對於的記憶體空間為4g,其中0到3g是使用者空間, 從3g到4g是核心空間,而核心空間從下圖中可以看出被分為了四個部分:
直接對映區,vmalloc區,永久對映 區,以及固定對映區
乙個32位的虛擬位址是如何轉化為實體地址的:看下圖所代表的意義,第一步首先取虛擬位址的高十位作為乙個 偏移,cr3暫存器作為乙個基位址。相加後就可以從頁目錄中得到乙個位址,這個位址會指向乙個頁表,頁表的基 位址加上中間的十位就可以得到物理頁的基位址,然後再加上頁內的偏移,也就是低12位,就得到了實際的物理 位址!
896m以上的記憶體叫做高階記憶體,896m一下的記憶體叫做低端記憶體!
3. 物理記憶體分配
framebuffer 子系統分析
fb info screen base dma alloc writecombine fbi dev,map size,map dma,gfp kernel fb info screen base 是framebuffer起始虛擬位址,也就是mmap後程式寫入fb的位址,該位址會直接寫入到fb in...
framebuffer 子系統分析
come from struct fb info ranges 0 apertures struct fb var screeninfo struct fb fix screeninfo 這兩個結構體分別記錄了顯示器可以修改和不可修改的資訊,這些資料成員需要在驅動程式中初始化。其中fix.visua...
Linux輸入子系統分析一
輸入裝置分散不堪,用input子系統可以對分散的,不同類別的輸入裝置進行統一驅動。好處 1.統一了物理形態各異的輸入裝置相似的裝置處理,例如各種滑鼠,鍵盤,觸控螢幕。2.提供了用於分發輸入報告給使用者應用程式的簡單事件介面。你的驅動不必建立管理 dev節點以及相關的訪問方法。因此他能夠很方便的呼叫輸...