03-03學習筆記 內存管理初始化

當指針位數為32位時,virtual space 的大小就是 2^32,只有當指針位數是64位時,virtual space 才會增大。
通常virtual space 的劃分方式為 3:1, 依靠 PAGE_OFFSET 常數控制,影響著內核空間和用戶空間的上下文切換效率。 像路由器這種設備就希望虛擬空間全部都歸kernel,不給user。
昨天建立了數據結構,描述node的pgdat,描述zone的zone,還有nodelist 等初始化
今天是特定于體系結構的設置 architecture-specific ,以IA32,AMD64為例子
PHYSICAL_START , PHYSICAL_ALIGN
the kernel should always be loaded into a contiguous memory range, IA-32 kernels use s0x100000 as the start address, this corresponds to the start of the first megabyte in RAM memory, named _text.

Each time the kernel is compiled, a file named System.map is generated and stored in the source base directory. Besides the address of all other variables, procedures, and functions defined in the kernel, this file also includes the values of the constants ablout _text…

For AMD64 systems, the kernel starts 2MiB after the fisrt page frame, and physical memory is mapped into the virtual address space from 0xffffffff80000000 onward.

These are not the same regions as in the NUMA concept but are areas occupied by ACPI functions
https://zhuanlan.zhihu.com/p/88202063

1.獲取當前可用memory
2. parse_early_param 計算highmem, fixmap,
3. bootmem 初始化
4. pageinit
5. bootmem allocator
6. 劃分 pageinit新,page table,線性映射,fixmap;清空所有boot期間的mem包括TLB,因為這個TLB是硬件建立的
7. zone 完全實例化, 冷熱頁的初始化,為watermark準備, buddy

pageinit
896M for system directly map
128M NOT directly :vmalloc, persitent, fixmap

highmemory -> max_low_phn 這里沒透,就先按趙是通過find 函數秋出來的。
fixmap 固定映射的內存,TLB高速緩存

the advantage of fixmap addresses is that at compilation time, the address acts like a constant whose physical address is assigned when the kernel is booted.
pagetable_init
–>kernel_physical_mapping
–> fixmap and persitent map
load cr2(swapper_pg_dir)PGD
__flush_all_tlb
kmap_init
->> 得到kmap_pte, kmem_vstart用來映射highmem

內核的zimage 還是保存到 實際物理內存的。

完善pg_data_t 的冷熱頁元素。
找到所有的活動區域,去除掉孔洞的那些。
開始buddy。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719545.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719545.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719545.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Python】進階學習:pandas--read_excel()函數的基本使用

【Python】進階學習:pandas–read_excel()函數的基本使用 🌈 個人主頁:高斯小哥 🔥 高質量專欄:Matplotlib之旅:零基礎精通數據可視化、Python基礎【高質量合集】、PyTorch零基礎入門教程👈 希…

【好書推薦-第七期】《RTC程序設計:實時音視頻權威指南》(音視頻開發必看!)

😎 作者介紹:我是程序員洲洲,一個熱愛寫作的非著名程序員。CSDN全棧優質領域創作者、華為云博客社區云享專家、阿里云博客社區專家博主、前后端開發、人工智能研究生。公粽號:洲與AI。 🎈 本文專欄:本文收錄…

AWTK-MVVM 配置文件模型

配置文件模型 AWTK-MVVM 內置了一些配置文件模型,用于讀寫各種配置文件,比如,JSON/XML/INI/CSV/UBJSON 等。 文件名中可以引用下面的變量。 ${app_dir} 應用程序目錄${user_dir} 用戶目錄${temp_dir} 臨時目錄 json(url${app_dir}/demos/de…

nodejs,JSDOM 補 window環境

window[atob] 是一個在瀏覽器中使用的 JavaScript 函數,用于將 base64 編碼的字符串解碼為原始數據。具體來說,atob 函數會將 base64 字符串解碼為一個 DOMString,其中包含解碼后的二進制數據。這在處理從服務器獲取的 base64 編碼的數據或在…

多平臺拼音輸入法軟件的開發

拼音輸入法從上個世紀發展到現在, 已經發展了幾十年了, 技術上已經非常成熟了. 換句話說, 就是實際上沒多少技術含量, 隨便來個人就能手搓一個. 本文介紹一個簡單的多平臺拼音輸入法軟件的設計和實現, 支持 GNU/Linux (ibus) 平臺 (PC) 和 Android 平臺 (手機). 目錄 1 中文輸…

E: 無法修正錯誤,因為您要求某些軟件包保持現狀,就是它們破壞了軟件包間的依賴關系。

比如,安裝ros的時候,用 執行: sudo apt install ros-melodic-desktop-full 出現如下問題: 如果你根據提示,安裝ros-melodic-desktop,他有會說類似“E: 無法修正錯誤,因為您要求某些軟件包保持…

Vue.js入門指南:簡介、環境配置與Yarn創建項目

一、Vue.js簡介 Vue.js,一個流行的JavaScript框架,以其直觀、靈活和高效的特點,在前端開發者中贏得了廣泛的贊譽。Vue.js的核心庫專注于視圖層,使得開發者能夠構建出響應式的數據綁定和組合的視圖組件。Vue.js的目標是通過盡可能簡…

BUUCTF---[極客大挑戰 2019]Http1

1.題目描述,在地址框輸入下面的網址 2.來到頁面,ctrlu查看源碼,仔細觀察會看到一個.php的跳轉頁面 3.點進去頁面提示It doesnt come from https://Sycsecret.buuoj.cn 4.頁面提示它不是來源于這個網址,我們需要用bp抓包對數據進行…

多波束水深數據粗差剔除方法總結(不斷更新)

目錄 一、粗差產生原因 二、粗差剔除方法 三、自動濾波方法分類 3.1 趨勢面濾波 3.1.1 現有方法 3.1.2 缺點

Web開發介紹,制作小網站流程和需要的技術【詳解】

1.什么是web開發 Web:全球廣域網,也稱為萬維網(www World Wide Web),能夠通過瀏覽器訪問的網站。 所以Web開發說白了,就是開發網站的,例如網站:淘寶,京東等等 2. 網站的工作流程 1.首先我們需…

sparse transformer 常見稀疏注意力

參考: https://zhuanlan.zhihu.com/p/259591644 主要就是降低transformer自注意力模塊的復雜度 復雜度主要就是 Q K^T影響的,稀疏注意力就是在Q點乘K的轉置這模塊做文章 下列式一些sparse transformer稀疏注意力方法 a、transformer原始的 &#xff0…

b站小土堆pytorch學習記錄—— P17 土堆說卷積操作

文章目錄 一、前置知識什么是卷積操作 二、代碼 一、前置知識 什么是卷積操作 推薦幾個高贊博客: 卷積最容易理解的解釋 卷積神經網絡(CNN)詳細介紹及其原理詳解 還有pytorch官網的動態圖: pytorch卷積 二、代碼 import t…

MyBatis源碼分析之基礎支持層反射

(/≧▽≦)/~┴┴ 嗨~我叫小奧 ??? 👀👀👀 個人博客:小奧的博客 👍👍👍:個人CSDN ??????:傳送門 🍹 本人24應屆生一枚,技術和水平有限&am…

PowerShell禁止運行腳本解決方案

錯誤代碼 CategoryInfo : SecurityError: (:) [],ParentContainsErrorRecordException FullyQualifiedErrorId : UnauthorizedAccess在計算機上啟動 Windows PowerShell 時,執行策略很可能是 Restricted(默認設置)。 Restricted …

圖像分類應用

先留一段圖像分類代碼,空閑時間再做分析: 創建神經網絡: import torch from torch import nn import torch.nn.functional as F class MyAlexNet(nn.Module):def __init__(self):super(MyAlexNet, self).__init__()self.c1nn.Conv2d(in_cha…

二刷代碼隨想錄算法訓練營第十天 | 232.用棧實現隊列、 225. 用隊列實現棧

目錄 一、232. 用棧實現隊列 二、225. 用隊列實現棧 一、232. 用棧實現隊列 題目鏈接:力扣 文章講解:代碼隨想錄 視頻講解: 棧的基本操作! | LeetCode:232.用棧實現隊列 題目: 請你僅使用兩個棧實現先…

Vision Pro開發者學習路線

官方給到的Vision Pro開發者學習路線: 1. 學習基礎知識: - 學習 Xcode、Swift 和 SwiftUI 的基礎知識,包括語法、UI 設計等。 - 掌握 ARKit 和 SwiftUI 的使用,了解如何創建沉浸式增強現實體驗。 2. 學習 3D 建模&#xf…

『Linux從入門到精通』第 ? 期 - System V 共享內存

文章目錄 💐專欄導讀💐文章導讀🐧共享內存原理🐧共享內存相關函數🐦key 與 shmid 區別 🐧代碼實例 💐專欄導讀 🌸作者簡介:花想云 ,在讀本科生一枚&#xff0…

CentOS7安裝DockerCompose和Docker鏡像倉庫的配置

CentOS7安裝DockerCompose 1.下載 Linux下需要通過命令下載: # 安裝 curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-uname -s-uname -m > /usr/local/bin/docker-compose2.修改文件權限 修改文件權限: # …

YOLOv9獨家原創改進|加入幽靈卷積Ghost Convolution模塊,輕量化!

專欄介紹:YOLOv9改進系列 | 包含深度學習最新創新,主力高效漲點!!! 一、論文摘要 由于內存和計算資源有限,在嵌入式設備上部署卷積神經網絡是困難的。特征圖中的冗余是那些成功的細胞神經網絡的一個重要特征…