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.mzph.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改进系列 | 包含深度学习最新创新,主力高效涨点!!! 一、论文摘要 由于内存和计算资源有限,在嵌入式设备上部署卷积神经网络是困难的。特征图中的冗余是那些成功的细胞神经网络的一个重要特征…