摘要: 前言 Linux内核中是如何分配出页面的,如果a56爆大奖在线娱乐们站在CPU的角度去看这个问题,CPU能分配出来的页面是以物理页面为单位的。也就是a56爆大奖在线娱乐们计算机中常讲的分页机制。a56爆大奖在线娱乐就看下Linux内核是如何管理,释放和分配这些物理页面的。 伙伴算法 伙伴系统的定义 大家都知道,Linux内核的页面分配器的基本算法是基 阅读全文
posted @ 2024-06-23 22:30 学习,积累,成长 阅读(176) 评论(2) 推荐(0) 编辑
摘要: ARM32位系统的内存布局图 32位操作系统的内存布局很经典,很多书籍都是以32位系统为例子去讲解的。32位的系统可访问的地址空间为4GB,用户空间为1GB ~ 3GB,内核空间为3GB ~ 4GB。 为什么要划分为用户空间和内核空间呢? 一般处理器会把运行模式分为好几个,比如x86分为rang0 阅读全文
posted @ 2024-06-10 13:17 学习,积累,成长 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 页表的一些术语 现在Linux内核中支持四级页表的映射,a56爆大奖在线娱乐们先看下内核中关于页表的一些术语: 全局目录项,PGD(Page Global Directory) 上级目录项,PUD(Page Upper Directory) 中间目录项,PMD(Page Middle Directory) 页表项,( 阅读全文
posted @ 2024-06-10 13:05 学习,积累,成长 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 快速范围判断 经常要批量判断某些值在不在范围内,如果 int 检测是 [0, N) 的话: if (x >= 0 && x < N) ... 众所周知,现代 CPU 优化,减分支是重要手段,上述两次判断可以简写为: if (((unsigned int)x) < N) ... 减少判断次数。如果 i 阅读全文
posted @ 2024-06-10 12:58 学习,积累,成长 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 调试是a56爆大奖在线娱乐程序员都逃不过的宿命! 程序调试是一件非常考验耐心的事情,因为调试过程中经常会需要反复的修改源码,重新编译、重新部署、重新运行,这个过程通常是非常枯燥和繁琐的。尤其对于大型项目,光是编译可能需要几十分钟,甚至几个小时,部署过程则可能更为复杂漫长! 那么,有没有a56爆大奖在线娱乐更高效的调试手段,可以避免 阅读全文
posted @ 2024-06-10 12:57 学习,积累,成长 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 环境: 处理器架构:arm64 内核源码:linux-6.6.29 ubuntu版本:20.04.1 代码阅读工具:vim+ctags+cscope a56爆大奖在线娱乐主要介绍内核开发中常用的模块传参手段,通过模块参数传递可以通过用户态来获取内核的一些信息,也可以通过用户态写入一些值来控制内核相关行为。一般内核开 阅读全文
posted @ 2024-06-10 12:56 学习,积累,成长 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 做嵌入式系统软件开发,经常在代码中看到各种各样的对齐,很多时候a56爆大奖在线娱乐们都是知其然不知其a56爆大奖在线娱乐然,知道要做好各种对齐,但是不明白为什么要对齐,不对齐会有哪些后果,这篇文章大概总结了内存对齐的理由。 CPU体系结构和MMU的要求 目前有一些RISC指令集的CPU不支持非对齐的内存变量访问操作,比如 MIPS/ 阅读全文
posted @ 2024-06-10 12:55 学习,积累,成长 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 目录内存管理硬件结构早期内存的使用方法分段分页逻辑地址,线性地址(intel架构)虚拟地址物理地址结构图虚拟地址到物理地址的转换内存管理总览系统调用vm_area_struct缺页中断伙伴系统slab分配器页面回收反向映射KSMhuge page页迁移内存规整OOM内存管理的一些数据结构线性映射st 阅读全文
posted @ 2024-05-26 16:00 学习,积累,成长 阅读(243) 评论(0) 推荐(1) 编辑
摘要: 前言 通用块层是一个内核组件,处理来自系统其他组件发出的块设备请求。换句话说,通用块层包含了块设备操作的一些通用函数和数据结构,如通用磁盘结构gendisk,请求队列结构request_queue、请求结构request、块设备I/O操作结构bio和块设备操作结构block_device_opera 阅读全文
posted @ 2024-02-07 22:56 学习,积累,成长 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 什么是pstore pstore最初是用于系统发生oops或panic时,自动保存内核log buffer中的日志。不过在当前内核版本中,其已经支持了更多的功能,如保存console日志、ftrace消息和用户空间日志。同时,它还支持将这些消息保存在不同的存储设备中,如内存、块设备或mtd设备。 为 阅读全文
posted @ 2024-02-07 17:51 学习,积累,成长 阅读(497) 评论(0) 推荐(1) 编辑