课程设计:三种存储管理方式的地址换算

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要

分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),也同样为它们加以编号。

在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。每个段都从0开始编址,并采用一段连续的地址空间。段的长度由相应的逻辑信息组的长度决定,因而各段长度不等。整个作业的地址空间由于是分成多个段,因而是二维的,亦即,其逻辑地址由段号(段名)和段内地址所组成。

段页式系统的基本原理,是基本分段存储管理方式和基本分页存储管理方式原理的结合,即先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。

目录

1概述 (4)

(一)分页存储管理方式的作用: (4)

(二)分段存储管理方式的作用: (4)

(三)段页式存储管理方式的作用 (4)

2. 课程设计任务及要求 (5)

2.1 设计任务 (5)

2.2 设计要求 (5)

(一)分页方式的地址换算。具体要求: (5)

随机生成页面大小,但一定为2的幂,系统随机生成一个至少有10行的页表,页号、块号从0开始。 (5)

分段方式的地址换算。具体要求: (5)

(二)段页式的地址换算。具体要求: (5)

3. 算法及数据结构 (6)

3.1算法的总体思想 (6)

3.2数据结构模块 (6)

3.3分页方式的地址换算模块 (7)

3.4分段方式的地址换算模块 (9)

3.5段页方式的地址换算模块 (10)

3.6主函数模块 (12)

4. 程序设计与实现 (14)

4.1 程序流程图 (14)

5. 结论 (24)

6. 收获、体会和建议 (25)

7. 参考文献 (26)

1概述

(一)分页存储管理方式的作用:

页表的功能可以由一组专门的寄存器来实现。一个页表项用一个寄存器。由于寄存器具有较高的访问速度,因而有利于提高地址变换的速度;在分页系统中,选择过小的页面大小,可以减少内存碎片,起到减少内存碎片总空间的作用,有利于内存利用率的提高。

(二)分段存储管理方式的作用:

A.方便编程

B.信息共享

在实现对程序和数据的共享时,是以信息的逻辑单位为基础的。段是信息的逻辑单位。由此可知,为了实现段的共享,希望存储管理能与用户程序分段的组织方式相适应。

C.信息保护

信息保护同样是对信息的逻辑单位进行保护,因此,分段管理方式能更有效和方便地实现信息保护功能。

D.动态增长

在实际应用中,往往有些段,特别是数据段,在使用过程中会不断地增长,而事先又无法确切地知道数据段会增长到多大。分段存储管理方式能较好地解决这一问题。

E.动态链接

动态链接是指在作业运行之前,并不把几个目标程序段链接起来。要运行时,先将主程序所对应的目标程序装入内存并启动运行,当运行过程中又需要调用某段时,才将该段(目标程序)调入内存并进行链接。可见,动态链接也要求以段作为管理的单位。

(三)段页式存储管理方式的作用

分页系统以页面作为内存分配的基本单位,能够有效地提高内存利用率,而分段系统以段作为内存分配的基本单位,他能够更好地满足用户多方面的需要。如果能对两种存储管理方式“各取所长”,则可形成一种新的存储器管理方式——段页式存储管理方式。这种新的系统既具有分段系统的便于实现、分段可共享、易于保护、可动态链接等一系列优点,又能像分页系统那样,很好地解决内存的外部碎片问题。

2. 课程设计任务及要求

2.2设计要求

(一)分页方式的地址换算。具体要求:

随机生成页面大小,但一定为2的幂,系统随机生成一个至少有10行的页表,页号、块号从0开始。

1)用户给定一个逻辑地址,首先显示此地址的页号和页内地址,然后显示是第几块,

最后显示其物理地址。

分段方式的地址换算。具体要求:

1)由系统随机生成5个左右的段,并随机生成一个段表并显示。

2)由用户给定一个逻辑地址,包括段号和段内地址,最后显示其物理地址。

(二)段页式的地址换算。具体要求:

1)先由系统随机生成5个左右的段,然后再由系统随机生成页面大小,但一定为2的

幂。然后生成段表和页表。

2)由用户给定一个逻辑地址,包括段号和段内地址,最后显示其物理地址。

3. 算法及数据结构

3.1算法的总体思想

3.2数据结构模块

3.2.1 功能

进程的结构体声明与函数的声明

3.2.2 数据结构

int flag; //分配状态,1为已分配,0为未分配

int allo; //页数

int r; //随机数

int l_addr; //逻辑地址

int p_addr; //物理地址

int pnum,mnum ; //页号、内存块号

int addr; //页内地址

int memsize; //内存容量

int z; //随机数

Memory *memory; //内存地址

PageTable *page; //页表地址

int num; //段表长

int l_addr; //段内编移

int p_addr; //物理地址

int snum; //段号

SegTable *seg; //段表地址

3.3分页方式的地址换算模块

3.3.1功能

随机生成页面大小,但一定为2的幂,系统随机生成一个至少有10行的页表,页号、块号从0开始。用户给定一个逻辑地址,首先显示此地址的页号和页内地址,然后显示是第几块,最后显示其物理地址。

3.3.2 数据结构

void pageTra()//分页方式的地址换算

3.3.3算法

void pageTra()//分页方式的地址换算

{

int allo;//页数

int i;

int r;//随机数

int l_addr;//逻辑地址

int p_addr;//物理地址

int pnum,mnum;//页号、内存块号

int addr;//页内地址

int memsize;//内存容量

int z;//随机数

Memory *memory;//内存地址

PageTable *page;//页表地址

z=6+rand()%8;//随机数Z的范围6到8

相关文档
最新文档