分页式管理:操作系统实验——主存分配与回收

1星 需积分: 3 4 下载量 29 浏览量 更新于2024-09-12 收藏 99KB DOC 举报
"操作系统实验二,主要内容涉及主存空间的分配和回收,使用位示图在分页式管理中管理主存,通过C++编程实现。实验目标是理解不同存储管理方式下的分配与回收机制,使用二维数组表示位示图,并通过链表管理页表。" 操作系统是计算机系统的核心组成部分,负责管理和控制硬件资源,特别是内存资源的分配与回收。在本次实验中,主要探讨了在分页式存储管理下如何有效地分配和回收主存空间。分页系统将主存划分为固定大小的块,称为页,同时作业也被分割成同样大小的页,以便于管理。 实验的核心是位示图,这是一种高效的数据结构,用于追踪主存中的块状态。在这个实验中,假设系统有64个大小相等的块,位示图用0表示空闲,1表示已分配。位示图可以用一个二维数组表示,例如a[i][j],其中每个元素对应一个位,通过i和j的组合可以确定块号。块号的计算公式为:块号 = j * M + I,其中M是位示图存储单元的位数,j是字节编号,I是字节内的位编号。 当要装入一个作业时,首先检查空闲块数是否足够。如果足够,就在位示图中找到连续的空闲块,并更新位示图和空闲块数。然后,根据分配的块号创建页表,页表包含页号和块号的对应关系,这对于进程在内存中的定位至关重要。 回收主存时,需要将位示图中对应的位设置回0,表示该块现在是空闲的,同时更新空闲块数。实验要求编写程序,能够显示位示图和空闲块数的变化,这有助于观察和理解分配和回收过程。 程序设计方面,实验使用了C++语言,定义了数据结构linknode表示链表节点,包含页号和块号,以及指向下一个节点的指针。通过尾插法创建带头结点的单链表,用于表示页与块的映射关系。同时,还提供了初始化位示图、分配主存、回收主存等功能的函数,以模拟实际的操作系统行为。 这个实验不仅加深了对操作系统中内存管理的理解,也锻炼了编程能力,尤其是数据结构和算法的应用。通过实际操作,学生能够更好地掌握位示图在内存分配中的作用,以及如何利用链表来管理页表,从而提高对操作系统原理的实践认知。