Linux内核源代码情景分析读书笔记连载
天涯问路人
以工匠之心打磨代码之美
展开
-
Linux内存管理的基本框架(Linux内核源代码情景分析读书笔记连载)
1 Linux内核的映射机制设计成三层,在页面目录和页面表中间增设了一层“中间目录”。页面目录称为PGD,中间目录称为PMD,页面目录称为PT,PT中的表项称为PTE。PGD、PMD、PT三者均为数组。相应的,在逻辑上把线性地址从高位到低位划分成4个位段,各占若干位,分别用作在目录PGD中的下标、中间目录PMD中的下标、页面表PT中的下标以及物理页面内的偏移。对于CPU发出的线性地址,虚拟的L原创 2017-03-01 14:28:18 · 710 阅读 · 0 评论 -
Linux地址映射的全过程(Linux内核源代码情景分析读书笔记连载#)
1 Linux内核采用页式存储管理。虚拟地址空间划分成固定大小的“页面”,由MMU在运行时将虚拟地址“映射”成某个物理内存页面中的地址。与段式存储管理相比,页式存储管理有很多好处。首先,页面都是固定大小的,便于管理。更重要的是,当要将一部分物理空间的内容换出到磁盘上的时候,在段式存储管理中要将整个段(通常都很大)都换出,而在页式存储管理中则是按页进行,效率显然要高的多。页式存储管理与段式存储管理所原创 2017-03-03 08:46:39 · 1013 阅读 · 0 评论 -
Linux内核源代码中的C语言代码(Linux内核源代码情景分析读书笔记连载)
1 Linux内核的主体是以 GNU 的 C 语言编写的,GNU为此提供了编译工具gcc。GNU对C语言本身作了不少扩充。首先,gcc从C++语言中吸收了“inline”和“const”。其实,GNU的C和C++是合为一体的,gcc即是C编译又是C++编译,所以从C++中吸收一些东西是很自然的。还有,为了支持64位的CPU结构,gcc增加了一种新的基本数据类型“long long int”原创 2017-02-27 10:10:10 · 659 阅读 · 0 评论 -
i386的页式内存管理机制(Linux源代码情景分析读书笔记)
1 内存管理有两种,一种是段式管理,另一种是页式管理,而页式管理更为先进。段式存储管理机制的灵活性和效率都比较差。一方面“段”是可变长度的,这就给盘区交换操作带来了不便;另一方面,如果为了增加灵活性而将一个进程的空间划分成多小段时,就势必要求在程序中频繁地改变段寄存器的内容。同时,如果将段分小,虽然一个段描述表中可以容纳8192个描述项,也未必就能保证足够使用。80386的系统结构决定了它的页原创 2017-02-27 08:51:18 · 346 阅读 · 0 评论 -
Intel X86系列CPU寻址方式
Intel X86系列CPU寻址方式1 历史上第一个微处理器芯片4004就是Intel制造的。所谓X86系列,是指Inte从16位微处理器8086开始的整个CPU芯片系列。在X86系列中8086和8088是16位处理器,而从80386开始为32位处理器。2 当我们说一个CPU是16位或者32位时,指的是处理器中“算术逻辑单元”ALU的宽度。系统总线中的数据线部分,称为数据总线,原创 2017-02-24 16:02:46 · 806 阅读 · 0 评论