
linux学习计划
文章平均质量分 86
阅读Linux源代码,掌握Linux实现全貌,掌握实现的关键细节。
范吉民(DY Young)
年与时驰,意与日去,遂成枯落!多不接世,悲守穷庐,将复何及?
展开
-
linux mm系列:buddy分配器
buddy分配器的真实接口是 rm_queue,该接口实际调用 rmqueue_buddy. 这个函数不断地尝试从zone中寻找符合order要求的page,申请的核心是__rmqueue_smallest和__rmqueue.这是一个锦上添花的操作,大概的作用就是把空闲的块按照能否移动的性质分成几类,再以后出现大量外碎片的时候,可以做些移动操作来减小。expand函数中的low是申请的内存的order数,high是当前分配的block的order数。剩余的那一个3阶的内存块就是要返回的内存块了。原创 2023-03-26 18:19:21 · 455 阅读 · 0 评论 -
linux mm系列:内核内存管理概述
首先明确内存访问过程,程序中使用的都是虚拟地址,所有的内存访问从软件角度都是虚拟地址。同时,真实的存储都是在物理内存或者外设寄存器上,这些物理内存和外设寄存器在物理地址空间上的分配一同构成了物理内存布局。在解决这两个核心问题后,可以进行一些锦上添花的操作,例如可以在实际写内存时才分配物理内存,提升物理内存的实际利用率等等。这两个问题,在逻辑上是两个完全独立的问题,虚拟内存的分配可以和物理内存分配没有任何关系,让二者关联的方式就是地址映射,也就是通过页表将虚拟地址转换成物理地址。原创 2023-03-26 14:28:57 · 318 阅读 · 0 评论 -
ARMv7 MMU多级页表
Arm v7-A架构中规定的VMSA(virtual memory space address)可以支持最多两级页表,MMU是具体实现VMSA的器件,本文关注使用MMU实现虚拟地址转换的关键的软件细节。原创 2022-08-07 12:11:17 · 1720 阅读 · 0 评论 -
linux mm系列:memblock分配器
memblock是物理分配器还是虚拟分配器?答:memblock管理的核心逻辑是基于物理内存的,从这个角度来看是物理分配器。但是分配的返回地址可以是物理地址也可以是虚拟地址。虚拟地址是通过phys_to_virt函数完成的映射。因此可以看出memblock的工作在直接映射区上,即通过__va()宏得到虚拟地址。memblock的生命周期是怎样的?答:memblock存在于Linux启动初期,这个阶段buddy还未工作。原创 2023-03-26 13:36:39 · 312 阅读 · 0 评论 -
SCons上手教程
如何使用scons,基本的三个问题的答案原创 2023-01-11 22:41:24 · 1074 阅读 · 0 评论 -
Linux配置、编译和移植以及GDB调试
本文阐述拿到Linux源码之后,如何对其进行配置、编译,以及如何使用gdb调试内核原创 2023-01-16 22:59:04 · 576 阅读 · 0 评论 -
Cache的基本原理
Cache是高性能的处理器必不可少的,cache的实现在逻辑上的关键是在于将一个地址A,映射成为到一个cache内的地址单元。本文尝试对这三种结构做一个的简单明亮的阐述。原创 2022-12-12 01:51:59 · 723 阅读 · 2 评论 -
Linux CFS调度器的思考
linux CFS调度器常见的调度策略固定时间片的问题CFS调度的目标1 什么是完美的多任务处理器?2 如何刻画一个完美的多任务处理器?3 如何模拟一个完美的多任务处理器?CFS调度的实现新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与原创 2022-01-12 21:37:39 · 557 阅读 · 0 评论