ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:387.56KB ,
资源ID:251099      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/251099.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统课程设计--编程演示三种存储管理方式的地址换算过程.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统课程设计--编程演示三种存储管理方式的地址换算过程.docx

1、课 程 设 计课程名称操作系统学院计算机学院专业软件工程年级班别学 号学生姓名指导教师2013 年1月7 日操作系统 课程设计任务书学生姓名陈泳鑫专业班级学号题目编程演示三种存储管理方式的地址换算过程指导教师题目编号 主要内容1、分页方式的地址换算2、分段方式的地址换算3、段页式的地址换算要求演示正确、清晰,编程所用工具不限。任务要求参考文献1 计算机操作系统, 汤小丹等 ,西安电子科技大学出版社2 操作系统实验指导书,傅秀芬,广东工业大学(自编)3 计算机操作系统教程 ( 第二版 ), 张尧学、 史美林,清华大学出版社4 现代操作系统,A.S.Tanenbaum 著,陈向群等译机械工业出版社

2、指导教师签字:审查意见系主任签字: 年月日 设计思想说明1.1 设计环境 在实现地址转换的程序实现时,运用了 C+6.0 来实现,因为对 C 语言程序的编写稍微熟悉点,可以很好的编写及调试。程序很容易看懂,输入条件在后边备注。1.2 设计思想编程演示三种存储管理方式的地址换算过程,分别为分页方式的地址换算, 分段方式的地址换算,段页式的地址换算。分页方式通过逻辑地址算出页号与叶内地址,然后通过页表来实现向物理地址的转换。分段方式通过段号和段内地址得到物理地址。段叶式通过段号得到页表首地址,通过页号得到块号,进而得到物理地址。2、系统结构程序主要有三个功能,分别是分页方式的地址换算,分段方式的地

3、址换算, 段页式的地址换算。Switch函数包含3个case语句,分别用page,Segment,SegPagt完成分页方式的地址换算,分段方式的地址换算,段页式的地址换算。3、数据结构的说明typedef struct segtable int segf256; int segl256; segtable; struct segtable st; typedef struct segpagt int segf256; int segl256; int ptl256; int pt256; int pf256; int pl; segpagt; struct segpagt sp; 4、算法流

4、程图分页式:分段式:段页式:5、主要函数列表函数原型void main() 功能输入、输出入口、出口参数说明Int 整形变量6、测试与分析分页式地址换算结果:分页式地址越界中断:分段式地址转换结果:分段式地址段号越界中断:分段式地址段内越界中断:段页式地址转换结果:段页式地址转换段号越界中断:段页式地址转换页号越界中断:段页式地址转换段内地址越界中断:结束:7、用户使用说明根据提示输入 1-4,然后有相应的提示说明,分别输入,错误的时候有提示,正确的输入会输出相应的正确的结果。附录:#include #include int page(int A,int L ); int Segment(in

5、t sn,int sl); int SegPagt(int sn,int pn,int pd); typedef struct segtable int segf256; int segl256; segtable; struct segtable st; typedef struct segpagt int segf256; int segl256; int ptl256; int pt256; int pf256; int pl; segpagt; struct segpagt sp; int main() int code; int pl,pa,sn,sd,pd,pn,pc; /cons

6、t int ptl ; int temp; do printf(-地址换算过程-nn); printf(* 本程序由陈泳鑫设计-2013 年 1 月 3 号*n); printf( 1. 分页式地址换算n); printf( 2. 分段式地址换算n); printf( 3. 段页式地址换算n); printf( 4. 结 束 运 行 nn); printf(-n); printf( 请输入 1-4:); scanf(%d,&temp); switch(temp) case 1: printf( 预设页表长度为256n); page(pl,pa); break; case 2: int pl,p

7、a; printf( 预设段表长度为256n); printf( 请输入您的逻辑地址段号:); scanf(%d,&pl); printf(请输入您的页内地址:); scanf(%d,&pa); if(pl256) printf(段号%d 大于段表长度 256,越界中断n,pl); else if(pa256) printf(段内地址%d 大于段长度 256,越界中断n,pa); else Segment(pl,pa); break; case 3: printf( 预设段表长度为256,页面大小为256n); printf(请输入您的逻辑地址段号:); scanf(%d,&pl); prin

8、tf(请输入您的页号:); scanf(%d,&pa); printf( 请输入您的页内地址:); scanf(%d,&pc); if(pl256) printf(段号%d 大于段表长度 256,越界中断n,pl); else if(pa256) printf(页号长度%d 大于页表长度 256,越界中断n,pa); else if(pc256) printf(页内地址%d 大于页面长度 256,越界中断n,pc); else SegPagt(pl,pa,pc); break; while(temp != 4); return 0; /分页式地址换算部分: int page(int A,int

9、 L) int pl,pa; printf(请输入您的逻辑地址:); scanf(%d,&pl); printf( 请输入您的页面大小:); scanf(%d,&pa); if(pl256) printf(页号%d 大于页表长度 256,越界中断n,pl); else int d,P,kd,i; int WD; int PT256; for(i=0;i=256) printf( 页号大于页表长度,越界中断nn);/如果页号大于页表长度, 输出越界中段 else printf(页号= 逻辑地址/ 页面大小 =%d, 页内地址= 逻辑地址 页面大小=%dn,P,d);/输出页号和页内地址 kd=P

10、TP;/根据页号随机产生快号 printf(根据页号%d 得到块号%dn,P,kd); WD=kd*L+d;/计算物理地址的公式 printf(物理地址=块号*页面大小+页内地址n); printf(物理地址=%d*%d+%dn,kd,L,d);/输出物理地址=块号*页面大小+页内地址 printf(逻辑地址%d 换算后的物理地址=%dnn,A,WD);/输出物理地址的结果 return (0); /分段式地址换算部分: int Segment(int sn,int sd) int i,wd; for(i=0;i256) printf( 段号%d 大于段表长度 256,越界中断nn,sn);/

11、如果段号大于段表长度,输出越界中断 elseif(sdst.seglsn) printf( 段 内 地 址 %d 大 于 段 长 度 %d, 越 界 中 断nn,sd,st.seglsn);/如果段内地址大于段长度,输出越界中断 else printf( 根据段号找到段首地址%dn,st.segfsn); printf( 物理地址=段首地址+段内地址n); printf(物理地址=%d+%dn,st.segfsn,sd); /输出物理地址=段首地址+段内地址 wd=st.segfsn+sd;/ 计算物理地址的算法 printf( 换算得到的物理地址=%dnn,wd);/输出物理地址 return (0); /段页式地址换算部分: int SegPagt(int sn,int pn,int pd) int i,wd; sp.pl=256; for(i=0;i=256) printf(段号%d 大于段表长度

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1