- 博客(8)
- 收藏
- 关注
原创 Linux地址映射的全过程(Linux内核源代码情景分析读书笔记连载#)
1 Linux内核采用页式存储管理。虚拟地址空间划分成固定大小的“页面”,由MMU在运行时将虚拟地址“映射”成某个物理内存页面中的地址。与段式存储管理相比,页式存储管理有很多好处。首先,页面都是固定大小的,便于管理。更重要的是,当要将一部分物理空间的内容换出到磁盘上的时候,在段式存储管理中要将整个段(通常都很大)都换出,而在页式存储管理中则是按页进行,效率显然要高的多。页式存储管理与段式存储管理所
2017-03-03 08:46:39
965
原创 Linux内存管理的基本框架(Linux内核源代码情景分析读书笔记连载)
1 Linux内核的映射机制设计成三层,在页面目录和页面表中间增设了一层“中间目录”。页面目录称为PGD,中间目录称为PMD,页面目录称为PT,PT中的表项称为PTE。PGD、PMD、PT三者均为数组。相应的,在逻辑上把线性地址从高位到低位划分成4个位段,各占若干位,分别用作在目录PGD中的下标、中间目录PMD中的下标、页面表PT中的下标以及物理页面内的偏移。对于CPU发出的线性地址,虚拟的L
2017-03-01 14:28:18
699
原创 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
644
原创 i386的页式内存管理机制(Linux源代码情景分析读书笔记)
1 内存管理有两种,一种是段式管理,另一种是页式管理,而页式管理更为先进。段式存储管理机制的灵活性和效率都比较差。一方面“段”是可变长度的,这就给盘区交换操作带来了不便;另一方面,如果为了增加灵活性而将一个进程的空间划分成多小段时,就势必要求在程序中频繁地改变段寄存器的内容。同时,如果将段分小,虽然一个段描述表中可以容纳8192个描述项,也未必就能保证足够使用。80386的系统结构决定了它的页
2017-02-27 08:51:18
314
转载 GDT,LDT,GDTR,LDTR 详解
原文:http://www.techbulo.com/708.html一、引入保护模式下的段寄存器 由 16位的选择器 与 64位的段描述符寄存器 构成段描述符寄存器: 存储段描述符选择器:存储段描述符的索引段寄存器PS:原先实模式下的各个段寄存器作为保护模式下的段选择器,80486中有6个(即CS,SS,DS,ES,FS
2017-02-24 17:34:44
291
原创 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
776
转载 函数调用过程原理及函数栈帧分析
转载请注明地址:http://blog.csdn.net/zsy2020314/article/details/9429707 今天突然想分析一下函数在相互调用过程中栈帧的变化,还是想尽量以比较清晰的思路把这一过程描述出来,关于c函数调用原理的理解是很重要的。1.关于栈 首先必须明确一点也是非常重要的一点,栈是向
2016-10-11 09:20:21
293
转载 C++堆栈详解
C++中堆和栈的完全解析内存分配方面:堆:操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样代码 中的delete语句才能正确的释放本内存空间。我们常说的内存泄露,最常见的就是堆泄露(还有资源
2016-09-27 16:22:00
422
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人