![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
存储管理
文章平均质量分 84
xueli1991
这个作者很懒,什么都没留下…
展开
-
存储管理
主存储器,辅助存储器,高速缓冲存储器,寄存器寄存器:是处理器的组成部分,用来存放处理器的工作信息高速缓冲存储器:减少对主存储器的访问时间,加快程序的执行速度主存储器,辅存储器:存放的大量的程序和数据 主存储器的空间分两部分:系统区和用户区系统区:用来存放操作系统和硬件的接口信息,操作系统的管理信息,程序,标准子程序用户区:用来存放用户的程序和数据 主存空间的分配原创 2017-01-04 20:11:30 · 321 阅读 · 0 评论 -
kmalloc&vmalloc&malloc
简单的说:kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续,malloc不保证任何东西(这点是自己猜测的,不一定正确)kmalloc能分配的大小有限,vmalloc和malloc能分配的大小相对较大内存只有在要被DMA访问的时候才需要物理上连续vmalloc比kmal原创 2017-01-04 20:14:23 · 226 阅读 · 0 评论 -
程序的内存布局
程序的内存布局 现代的应用程序都运行在一个虚拟内存空间里,在32位的系统里,这个内存空间拥有4GB的寻址能力。现代的应用程序可以直接使用32位的地址进行寻址,整个内存是一个统一的地址空间,用户可以使用一个32位的指针访问任意内存位置。 在进程的不同地址区间上有着不同的地位,Windows在默认情况下会将高地址的2GB空间分配给内核,而Linux默认将高地址的1GB空间分配给内核,转载 2017-02-20 10:30:18 · 792 阅读 · 0 评论 -
逻辑地址&线性地址&物理地址
一、逻辑地址转线性地址 机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到。我们写个最简单的hello world程序,用gccs编译,再反编译后会看到以下指令:mov 0x80495b0, %eax这里的内存地址0x80495b0 就是一个逻辑地址,必须加上隐含的DS 数据原创 2017-02-20 10:58:48 · 345 阅读 · 0 评论 -
内存管理
翻译 2017-02-20 11:26:52 · 248 阅读 · 0 评论 -
Linux内核管理原理
翻译 2017-02-20 11:40:44 · 259 阅读 · 0 评论 -
内存映射机制
现代意义上的操作系统都处于32位保护模式下。每个进程一般都能寻址4G的内存空间。但是我们的物理内存常常没有这么大,进程怎么能获得4G的内存空间呢?这就是使用了虚拟地址的好处。我们经常在程序的反汇编代码中看到一些类似0x32118965这样的地址,操作系统中称为线性地址,或虚拟地址。通常我们使用一种叫做虚拟内存的技术来实现,因为可以使用硬盘中的一部分来当作内存使用。另外,现在操作系统都划分为系统空间转载 2017-02-20 14:38:00 · 2068 阅读 · 0 评论