存储器管理小谈

来源:互联网 发布:东华软件数据库 编辑:程序博客网 时间:2024/05/22 14:55

一般说来,主流的内存管理方式有三种:

1, 分页式 paging

特点是规则。切得整整齐齐的,很方便操作系统调度,是对齐了的,寻址也方便。在32位机上分页大小一般为4K(10所面试题,没答上来啊),由于前20位已经对齐,后面12位作为页内偏移地址,直接和物理内存地址相加(对齐的好处)就是真实的地址。通常系统会因为没有太大连续的空间分配,所以会把每个页表的数目控制在一定范围内(比如1K),因此,当分页太小会导致页表项(entry)过多,需要的连续空间也过多。一般4K合适,有的系统也有8K的页面。

分页主要为了操作系统的方便,受到系统硬件的支持,物理内存其实也支持分页的,很快。

页表形式:

页表索引序号

物理内存地址

 

2, 分段式

分段是从人的角度来看的。相同的我们归为一类,比如代码,数据分开,段的大小不固定,因此,逻辑地址映射到物理地址时,不仅需要段标识,还需要偏移量标识(注意与分页区分,分页的内部偏移量由于之前对齐过,所以是确定的)。因此,分段是二维的。最后生成物理地址的时候,需要用到的是逻辑地址在程序中的偏移量。

段表形式:

段表索引序号

物理内存大小

物理内存基址

 

3, 段页式

结合了分页对操作系统方便与分段对程序员方便的两者优势,先把程序分段,然后分页

段表索引序号

页表基址

先找到页表,然后找到物理内存的基址,因为页方式以及对齐了,所以偏移量就是逻辑地址的地位(具体几位自己去找)

原创粉丝点击