分段与分页存储管理简单实现

下载需积分: 9 | TXT格式 | 13KB | 更新于2024-08-05 | 44 浏览量 | 0 下载量 举报
收藏
本文主要介绍了基本的分段和分页存储管理的概念,并通过简单的C语言代码实现来演示了这两种内存管理方式。文章中包含了创建、回收、查看进程以及内存分配的相关函数。 在计算机系统中,分页存储管理和分段存储管理是两种常见的内存管理策略,用于解决虚拟地址到物理地址的映射问题。 **分页存储管理**是将进程的逻辑地址空间划分为固定大小的页,而物理内存则被划分为同样大小的页框。每个进程都有一个页表,用于记录逻辑页号与物理页框号的对应关系。在分页系统中,当进程执行时,CPU会根据页表中的信息进行地址转换。在提供的代码中,`Create_Pagi()` 函数用于创建一个分页进程,它包括输入进程号、进程名称、页表等信息。`Revoke_Pagi()` 函数负责回收进程所占用的物理块,`Look_Pagi()` 和 `Show_Pagi()` 分别用于显示所有进程的物理块占用情况和查看特定进程的信息。 **分段存储管理**则是按照进程的逻辑结构,如函数、数据结构等,将进程划分为多个段,每个段有自己的名字和长度。段的大小可以不同,且每个段都有自己的段表,记录段号和物理地址的对应关系。在分段系统中,地址通常由段号和段内偏移量组成。在给出的代码中,`Create_Segm()` 函数创建分段进程,`Show_Segm()` 显示进程信息。然而,这部分的实现没有详细展示段表和地址转换的过程。 文章中还提到了`Suggest()`、`Dispatch()` 和 `Segme()` 函数,这些可能是用于提供用户交互或优化内存分配的建议,但具体实现并未给出。主界面 `main_s()` 作为整个程序的入口,负责调度这些功能模块。 这个简单的实现展示了分页和分段的基本思想,但实际操作系统中的内存管理远比这复杂,涉及到更高级的特性,如快表、页替换算法、段页式存储等。此外,实际的页表和段表通常由硬件支持,而不是像示例代码那样由软件完全模拟。

相关推荐