Linux核心原始碼閱讀之系統呼叫sys brk

2021-08-19 22:15:20 字數 707 閱讀 1750

brk()用於使用者程序向核心申請空間,進一步說用於擴充套件使用者堆疊空間,或者**使用者堆疊空間。

asmlinkage unsigned long sys_brk(unsigned long brk)
1.malloc為小空間申請,brk()為大塊空間申請。

2.sys_brk()包括兩部分

增長動態分配區

unsigned long do_brk(unsigned long addr, unsigned long len)
釋放動態分配區

int do_munmap(struct mm_struct *mm, unsigned long addr, size_t len)
1.2獲取涉及到的所有vma結構鍊錶

1.3處理單個vma結構,主要包括:

1.3.1迴圈處理該vma涉及到的目錄表dir

1.3.1.1迴圈處理vma涉及到的頁面表項pte

1.3.1.2將pte指向的頁面脫鏈,釋放

1.4釋放vma結構,調整釋放範圍邊界落到某個vma內部的vma邊界

1.5看看能否釋放整個目錄表

2.1檢查增長是否超過頂部堆疊區,增長區需要落到空洞中

2.2vma flag一致,可以合併vma

2.3否則需要單獨成乙個新vma

2.4建立記憶體頁面對映

Linux核心原始碼 閱讀方法

url 通常linux會有以下目錄 arch 子目錄包括所有和體系結構相關的核心 它還有更深的子目錄,每乙個代表一種支援的體系結構 include 子目錄包括編譯核心所需要的大部分 include 檔案。它也有更深的子目錄,每乙個支援的體系結構乙個。include asm 是這個體系結構所需要的真實...

Linux核心原始碼閱讀 1

1 作業系統的基本知識 2 對c語言比較熟悉,最好要有組合語言的知識和gnu c對標準c的擴充套件的知識的了解。另外在閱讀之前,還應該知道linux核心源 的整體分布情況。我們知道現代的作業系統一般由程序管理 記憶體管理 檔案系統 驅動程式 網路等組成。看一下linux內 核源 就可看出,各個目錄大...

原始碼閱讀 Glide原始碼閱讀之with方法(一)

前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...