武汉理工大学《操作系统》课程设计说明书
、指定的选题一一段页式存储管理
1课程设计题目分析
段式和页式存储管理各有优缺点,段页式存储管理系统,用分段的方法来分配和管理 虚拟存储器,而用分页的方法来分配和管理主存。既有段式系统便于实现段的共享,段的 保护,动态链接和段的动态增长等一系列优点,又能像页式系统那样,很好地解决内存的 外碎片问题。
段页式系统的基本原理,是分段和分页原理的组合。即先将用户程序分为若干个段,再把每个段划分 成若干页,并为每个段赋予一个段名。在段页式系统中,地址结构由段号、段内页号、页内地址三部 分组成。
在段页式系统中,为了便于实现地址变换,须配置一段表寄存器,存放段表始址和段长 进行地址变换时,首先利用段号
TL O( 1)
S,将它与段长TL进行比较,若S 和段号来求出该段对应的段表项在段表中的位置,得到该段的页表始址; (2)利用逻辑地址中的段内页号 (3)用块号b和页内地址构成物理地址 P,获得对应页的页表项位置,读出该页所在的物理块号 O 2数据结构及模块说明 2.1存储结构说明 在此段页式存储管理系统中,我们采用以下数据结构来存储数据,存储结构用结构体和 结构体数组来实现: 2.1段表 段号s 状态flag 页表长度Plen 页表始址psta //段表 -1 - 武汉理工大学《操作系统》课程设计说明书 typ edef struct Stack int num;// 段号 int flag;// 段状态 int plen;//页表长度 int psta;//页表始址 }Stack; 其中状态为1代表在内存,为0代表不在内存。 2.2页表 页号pnum 状态位(是否在内存中) 块号block //页表 typ edef struct Page int num;// 页号 int flag;//页状态,即是否在内存。 int block;//该页对应的块号 }P age; 2.3数据区 块号block 作业内容 简单起见,我们没有把内容初始化到每一个内存地址, 只给出每个作业块的内容,替。 typ edef struct Data int num;//内存的块数 string str;//对应数据块的作业内容,简化起见说明内容为一串字符。 -2 - 并且用一串字符代 武汉理工大学《操作系统》课程设计说明书 }Data; 2.4快表 段号 段内页号 块号 〃快表 typ edef struct Quick int qs;//快表段号 int qp;//快表页号 int qb;//快表段号 }Quick; 2.5段表寄存器 段表始址 段表长度〃段表寄存器 typ edef struct Stare int ssta;//段表始址 int slen;//段表长度 }Stare; -3 - 武汉理工大学《操作系统》课程设计说明书 3程序流程图 -4 - 武汉理工大学《操作系统》课程设计说明书 4使用技术及实现功能 使用技术:本实验使用 VC++ 6.0平台,使用基本的控制台应用程序,单文档结构,主要数据结构是结 C++源文件,根据数据结构编写代码。 构体间的关系。打开 VC++6.0建立一个空工程,然后简历 实现功能:从键盘输入进程及其各段大小,能实现空间的分配,回收,地址转换,能显示段表、页表及 存储空间状态 5程序代码 #in clude typ edef struct Quick { int qs;//快表块号 int qp;//快表页号 int qb;//快表段号 }Quick; 〃数据区,简单起见,只为每一个内储块写入内容,不具体到每一物理地址。 typ edef struct Data { int num;//内存的块数 stri ng str;//对应数据块的作业内容,简化起见说明内容为一串字符。 bool flag;//是否被分配,1为是,0为否 }Data; //页表 typ edef struct Page { int nu m;// 页号 -5 -