段页式存储管理简述
今天来简单聊聊操作系统的内存管理。
目前主要的管理方式是段页式管理,顾名思义,结合了段式管理和页式管理两种方式。
对于应用程序,申请内存时都是申请连续的一大片空间,如果直接分配连续的物理内存,则会产生很多内存碎片区域,这些碎片区域不满足程序需要的连续空间大小,所以会造成内存使用率低,而整理这些区域的代价又很大,所以需要增加映射关系,即将应用程序申请的连续空间映射到离散的物理内存空间。于是,有了不同的内存管理方式。
分页式管理
我们先来讲讲页式管理方式。
分页式管理将应用程序申请的内存分为页,通常一页为4K,然后将物理内存分为块,通常每块的大小等于每页的大小,然后,使用页表保了页号和块号的对应关系这样,应用程序访问内存时通过查询页表即可访问到内存。
页表示例:
页号 | 块号 |
---|---|
0 | 2 |
1 | 3 |
2 | 6 |
3 | 8 |
分段式管理
我们再来聊聊分段式管理方式。
分段式管理是将应用程序申请的内存分成段,每一段对应的物理内存都是连续的,寻址时同样也需要映射关系。
段表示例:
段号 | 段长 | 基址 |
---|---|---|
0 | 30K | 40K |
1 | 60K | 80K |
段页式内存管理
段页式管理结合了段式管理和页式管理。先查段表,然后查页表。每一个段对应一张页表。
段表示例:
段号 | 页表长度 | 页表始址 |
---|---|---|
0 | 2 | |
1 | 3 |
页表示例:
页号 | 块号 |
---|---|
0 | 2 |
1 | 3 |
2 | 6 |
3 | 8 |