Symbol Who
Preview Image

linux内核笔记(八)vmalloc、持久映射、固定映射

vmalloc、持久映射、固定映射 回顾一下第五、六章的内容:在32位的内核虚拟地址空间中, 只有$1G$的可用空间 (总共$2^{32} = 4G$ - 用户空间$3G$),如果物理内存超出$1G$, 那么kernel将无法寻址超出的那部分物理内存 (即高端内存 HIGH_MEMORY), 为了解决这个问题,kernel将内核空间分了两部分:可直接线性映射物理内存的$896MiB$普通内...

Preview Image

linux内核笔记(七)伙伴系统(Buddy System)

伙伴系统 在内核初始化完成后,内存管理的责任由伙伴系统(Buddy System)承担。它是基于一种相对简单效率的算法的高效的内存管理技术,一直到最新版本都还在使用。 伙伴系统的基本思想是将内存或资源分成大小相等的块(称为伙伴),每个块可以被分配给一个进程或线程使用。当一个进程或线程请求内存或资源时,系统会搜索一个空闲的伙伴来满足请求,如果找到了一个空闲的伙伴,系统会将其分配给请求者,并...

Preview Image

linux内核笔记(六)启动时的内存初始化

启动时的内存初始化 涉及硬件架构相关的功能均以i386结构为例 (经典的x86 且有高端内存的处理逻辑) 系统引导时,内核在物理内存中的结构 引导将内核载入到内存中,并跳转到相应的内存地址开始执行内核代码,在ia32架构下,内核在内存中的架构如上。 _text、_etext、_edata、_end的具体地址在编译后的System.map下,以线性地址表示,如: ...

Preview Image

linux内核笔记(三)进程的调度

进程的调度 概念 内存中保存了对每个进程的唯一描述,并通过若干结构与其他进程连接起来。内核必须提供一种方法,在各个进程之间尽可能公平地共享CPU时间,而同时又要考虑不同的任务优先级,而这就是调度器的目标。 调度器的一般原理是,按所能分配的计算能力,向系统中的每个进程提供最大的公平。如果通过轮流运行各个进程来模拟多任务(现实情况是CPU数目总比要运行的进程数目少),那么当前运行的进程,其...