本文总结了我对内存管理机制的学习,先从通用的操作系统课本的内存管理机制学习,然后深入到Linux操作系统,对于内存管理机制的实现。
通用操作系统内存管理机制
这一目我主要参考的是汤小丹老师《计算机操作系统》当中的内容,在此先说明。
概述
- 课本上并非直接讲内存管理,而是即cpu管理讲完之后,开始的存储器管理。毕竟它是操作系统需要负责进行管理的,当然这里面的重中之重当然是对于内存的管理。
- 内存管理当中最重要的就是,将程序装入内存的时候,需要给用户程序在内存中分配内存。这也是程序和进程的主要区别,进程是要占资源的。
- 在给用户程序在分配内存的时候,有两种方式,一种是为用户程序分配一个连续的内存空间。与之对应的是将用户程序存储在内存当中不连续的空间,也就是说为用户程序分配离散的内存空间。
- 程序装入的时候需要分配内存,有连续的方式,有离散的方式。离散的方式就是将用户程序分配在内存当中不连续的空间,主要有分页和分段两种机制。
分页机制
- 分页存储管理是将用户程序的逻辑地址空间分成若干个大小相同的片,称为页或者页面。相应的把机器的内存空间也分成大小相同的若干块,称为frame。page以及frame都是进行编号的。在为程序分配内存的时候,以块为单位,将用户程序当中的若干个页,装入到内存当中不相邻的物理快当中。,从而实现了,离散存储。
- 显然的是,既然你的逻辑地址空间要转化为物理地址空间,那么需要给出逻辑地址到物理地址的转换机制。通常情况下,对于一个32位的地址,给出页号所占的位数,那么剩下的地址位数就是页偏移。通常情况下,页的大小为4K.
- 此时,地址转换机制还需要页表的支持。当我们在用户程序拿到一个逻辑地址之后,首先得到页号,然后根据页表,查找其在内存中所存储的块号。然后,由于页的大小和块的大小一致,此时在加上之前的页偏移即可。
- 下图是地址变换机构,图片来自汤小丹老师的《计算机操作系统-第三版》

本文详细介绍了操作系统中的内存管理机制,包括分页、分段、分页和分段的区别以及虚拟存储器的工作原理。分页机制通过将逻辑地址空间划分为固定大小的页和内存的帧来实现离散存储,而分段机制则是按逻辑信息单位进行内存分配。虚拟存储器利用请求调页和置换策略,使得程序可以在小于其实际需求的内存中运行,逻辑上扩展了内存容量。

1187

被折叠的 条评论
为什么被折叠?



