原创 進程地址空間 find_vma()

##進程地址空間 find_vma() find_vma()功能是查找給定地址的最鄰近區,是尋找合適的線性地址空間至關重要的函數。find_vma()函數有兩個參數:進程內存描述符的地址mm和線性地址addr。查找線性區的vm_e

原创 內核編譯 之 使用kernel-package編譯內核imgage包

之前我們編譯內核一般也就是使用make --> make modules_install --> make install --> update-grub 這一系列步驟,後來我發現了Debian、Ubuntu機器上可以使用kern

原创 per_cpu_pageset 之一(init/main.c start_kernel初始化)

##pcp 初始化          所謂的pcp是每cpu頁框高速緩衝,由數據結構struct per_cpu_pageset描述,包含在內存域struct zone中。在內核中,系統會經常請求和釋放單個頁框,如果每個cpu高速

原创 proc文件系統及初始化

proc 文件系統及初始化 proc 文件系統簡述: proc文件系統使得內核可以生成與系統的狀態和配置有關的信息。該信息可以由用戶和系統程序從普通文件讀取,而無需專門的工具與內核通信。通過proc文件系統,可以獲得有關內核各子系

原创 linux 混雜設備miscdevice

#miscdevice混雜設備          miscdevice混雜設備是字符設備的一種,它們共享一個主設備號(10),但次設備號不同,所有混雜設備形成一個鏈表,對設備發給你問時內核根據次設備號查找到相應的miscdevic

原创 build_zone_zonelists() 初始化備用內存域鏈表node_zonelists

         build_zone_zonelists() 建立管理結點及其內存域所需的數據結構,即node_zonelists數組。 type struct pglist_data{ ... struct zonelis

原创 QTableWidget 中表格添加其他控件

QTableWidget 中表格添加其他控件 添加其他控件 以QComboBox爲例 int row = 0, col = 0 QComboBox *comboBox = new QComboBox; comboBox->add

原创 進程地址空間 insert_vm_struct

進程地址空間 insert_vm_struct() insert_vm_struct() 在線性區對象鏈表和內存描述符的紅黑樹中插入一個vm_area_struct結構。這個函數使用兩個參數:mm 指定進程內存描述符的地址,vma

原创 進程地址空間 get_unmmapped_area()

進程地址空間 get_unmapped_area() 在向數據結構插入新的內存區域之前,內核必須確認虛擬地址空間中有足夠的空閒空間,可用於給定長度的區域。該工作由get_unmmaped_area()完成。 在分析get_unm

原创 linux內核編譯與卸載

         linux開行版的自帶內核不一定能滿足linux學習和某些特殊的要求,這時我們就不得不根據自己的需求重新安裝內核。這裏我介紹一些常用編譯內核的步驟。 編譯內核 一、一定是下載滿足需求的內核啦。 官網:https:

原创 內存管理 migration type中MIGRATE_HIGHATOMIC

##內存管理 migration type中MIGRATE_HIGHATOMIC 在內存管理中 新增MIGRATE_HIGHATOMIC遷移類型(migration type),從名字上大體有個猜測。菜企鵝在LWN上找到一篇關於M