存储管理(内存分配)
前言
程序的运行需要装在到内存中去运行。
为什么呢,这是因为于通用计算机的多级存储器结构,以及他们之间访问速度差异
内存分配的方式
1. 连续分配方式
- 固定分区分配
固定分区式分配是最简单的一种可运行多道程序的存储管理方式。这是将内存空间划分为若干个固定大小的区域,在每个分区中只装入一道作业。
缺点:分区小了,放不下;分区大了,碎片浪费
- 动态分区分配
动态分区分配是根据进程的实际需要,动态地为之分配内存空间。在实现可变分区分配时,将涉及到分区分配中所用的数据结构、分区分配算法和分区的分配与回收操作这样三个问题。
2. 基于分页存储管理方式
连续分配方式会形成许多“碎片”,虽然可通过“紧凑”方法将许多碎片拼接成可用的大块空间,但须为之付出很大开销。
如果允许将一个进程直接分散地装入到许多不相邻接的分区中,则无须再进行“紧凑”
- 页面和页表
分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从 0 开始,如第 0 页、第 1 页等。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),也同样为它们加以编号,如 0,1块等等。
在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。由于进程的最后一页经常装不满一块而形成了不可利用的碎片,称之为“页内碎片”。
2.地址结构表
- 进程逻辑地址到实际地址的转换