操作系统课设之三种存储管理方式的地址换算.pdf
2021-10-06 14:00:19 430KB 技术
由于连续分配方式会形成许多“碎片”,虽然可通过“紧凑”的方法将许多碎片拼接成可用的大块空间,但是必须为之付出很大的开销。如果允许将一个进程直接分散地装入到许多不相邻接的分区中,则无需在进行“紧凑”。基于这一思想产生了离散分配方式。根据离散的单位不同产生了分页和分段式存储管理,又由他们的结合产生了段页式存储管理,本论文研究的是用C++语言描述这三种存储管理的地址换算过程。
1
任务:    编程演示三种存储管理方式的地址换算过程,分别是:分页式地址换算,分段式地址换算和段页式地址换算。七.程序及运行结果 import java.util.*; class Ya{ void print(){ System.out.println("***********************"); } int Ye(){ int b;
2021-05-24 20:22:06 247KB 地址换算
1
一、 课程设计目的 本课程设计是学生学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。 二、课程设计的内容 1、分页方式的地址换算 2、分段方式的地址换算 3、段页式的地址换算 三、程序运行 1、 分页式地址转换: 数据: 逻辑地址:223、页面大小:23 2、 分段式地址转换 数据: 逻辑地址段号:223、段内地址:23 3、 段页式地址换算 逻辑地址的段号:2、页号:3 四、程序源代码 #include #include int page(int A,int L ); int Segment(int sn,int sl); int SegPagt(int sn,int pn,int pd); typedef struct segtable { int segf[256]; int segl[256]; }segtable; struct segtable st; typedef struct segpagt { int segf[256]; int segl[256]; int ptl[256]; int pt[256]; int pf[256]; int pl; }segpagt; struct segpagt sp; int main() { int code; int pl,pa,sn,sd,pd,pn; //const int ptl ; int temp; do{ printf("----------------地址换算过程----------------------------\n\n"); printf(" 1.分页式地址换算\n"); printf(" 2.分段式地址换算\n"); printf(" 3.段页式地址换算\n"); printf(" 4.结束运行\n\n"); printf("----------------------------------------------------------\n"); printf("请输入您的选择:"); scanf("%d",&code); switch(code) { case 1:{ printf("注意:请演示设定页表长度小于\n"); printf("请输入换算的逻辑地址:\n"); scanf("%d",&pa); printf("页面大小(B):\n"); scanf("%d",&pl); page(pa,pl); }break; case 2:{ printf("请演示设定段表长度小于\n"); printf("请输入逻辑地址的段号:\n"); scanf("%d",&sn); printf("段内地址:\n"); scanf("%d",&sd); Segment(sn,sd); }break; case 3:{ printf("预设定段表长为,页面大小为\n"); printf("请输入逻辑地址的段号:\n"); scanf("%d",&sn); printf("页号:\n"); scanf("%d",&pn); printf("页内地址:\n"); scanf("%d",&pd); SegPagt(sn,pn,pd); }break; case 4:{}break; } }while (code<4); } int page(int A,int L) { int d,P,kd,i; int WD; int PT[256]; for(i=1;iL) printf("页号大于页表长度,越界中断\n\n");//如果页号大于页表长度,输出越界中段 else { printf("页号=逻辑地址/页面大小=%d,页内地址=逻辑地址%页面大小=%d\n",P,d);//输出页号和页内地址 kd=PT[P];//根据页号随机产生快号 printf("根据页号%d得到块号%d\n",P,kd); WD=kd*L+d
1
编程演示三种存储管理方式的地址换算过程,分别为分页方式的地址换算,分段方式的地址换算,段页式的地址换算。程序主要有三个功能,分别是分页方式的地址换算,分段方式的地址换算,段页式的地址换算。Switch函数包含3个case语句,分别用page,Segment,SegPagt完成分页方式的地址换算,分段方式的地址换算,段页式的地址换算
2020-01-03 11:36:52 1.81MB 编译原理 地址换算过程
1
1、分页方式的地址换算。具体要求: 1)随机生成页面大小,但一定为2的幂,系统随机生成一个至少有10行的页表,页号、块号从0开始。 2)用户给定一个逻辑地址,首先显示此地址的页号和页内地址,然后显示是第几块,最后显示其物理地址。 2、分段方式的地址换算。具体要求: 1)由系统随机生成5个左右的段,并随机生成一个段表并显示。 2)由用户给定一个逻辑地址,包括段号和段内地址,最后显示其物理地址。 3、段页式的地址换算。具体要求: 1)先由系统随机生成5个左右的段,然后再由系统随机生成页面大小,但一定为2的幂。然后生成段表和页表,具体内容参照课本。 2)由用户给定一个逻辑地址,包括段号和段内地址,最后显示其物理地址。
2019-12-21 19:47:06 880KB 操作系统
1