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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基本分段存储管理系统.docx

1、基本分段存储管理系统一、 课程设计的目的操作系统课程设计是重要的实践课程,课程开设的目的是让学生学习完计算机操作系统课程后,进行一次全面的综合训练,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。二、 课程设计的内容及要求基本分段存储管理系统的设计要求:(1)建立段表(2)设计地址变换机构(3)将变换后的结果显示出来三、 实验原理为了实现从进程的逻辑地址到物理地址的变换功能,在系统中设置了段表寄存器,用于存放段首地址,段长和段表长度TL。首先建立段表,段表内容包括段首地址,段长和段表长度。在建立段表时,应判断段表地址是否冲突(如第一个段的首

2、地址为1,段长为50,在建立第二个段的时候,段首地址应大于1+50),若不冲突,该段建立成功,否则重新建立该段。然后进行地址变换,在进行地址变换时,系统将逻辑地址中的段号与段表长度进行比较。若STL,表示段号太大,是访问越界,于是产生越界中断信号;若未越界,则根基段表的首地址和该段的段号,计算出该段在在段表项的位置,从中读出该段在内存中的首地址,然后,再检查,段内地址d是否超过该段的段长SL。若超过,即dSL,同样发出越界中断信号;若未越界则将该段的基址与段内地址相加,即可得到要访问内存的物理地址。最后,再将得到的物理地址显示出来。四、 地址换算变换过程结构五、关键算法实现流程图地址换算程序流

3、程图六、程序代码/*#include#includetypedef struct segtable /段表结构说明 int segadd256; /段首地址 int seglen256; /段长 int len; /表的长度 segtable;struct segtable st; /定义一个段表/*/段表的建立void create() char ch; int i=0; printf(建立段表n); st.len=0; printf(请输入第1个段首地址:); scanf(%d,&st.segadd0); printf(请输入第1个段的长度:); scanf(%d,&st.seglen0)

4、; st.len=1; i=1; while(i256) fflush(stdin); printf(是否继续输入(y/n)?n); ch=getchar(); if(ch=n) break; printf(第%d个段首地址应大于%dn,i+1,st.segaddi-1+st.segleni-1); printf(请输入第%d个段首地址:,i+1); scanf(%d,&st.segaddi); if(st.segaddist.len) printf(段号%d大于段表长度%d,越界中断n,sn,st.len); return 0; else if(sdst.seglensn-1) printf

5、(段内地址%d大于段长,越界中断n,sd); return 0; else printf(根据段号找到段首地址为%dn,st.segaddsn-1); printf(物理地址=段首地址%d+段内地址%dn,st.segaddsn-1,sd); add=st.segaddsn-1+sd; return (add);/*void main() int x,y; /x表示段号,y表示段内地址 int add; char ch=y; create(); while(ch=y) printf(地址换算n); printf(请输入段号:); scanf(%d,&x); printf(请输入段内地址:);

6、scanf(%d,&y); add=segment(x,y); if(add!=0) printf(换算后的物理地址为:%dn,add); fflush(stdin); printf(是否继续进行地址换算(y/n)?n); scanf(%c,&ch); if(ch=n) printf(程序运行结束!n); 七、运行结果及分析1.建立段表第一个段的物理地址为12-61,在建立第二个段的时候,输入的段首地址与第一个冲突,所以需要重新输入,7061,所以该段建立成功2.建立的段表如下3.地址换算地址换算的时候需要输入逻辑地址的段号和段内地址因为段号大于段表长度5,所以越界中断段号满足要求,但是段内地

7、址大于段表中对应段的段长,所以越界中断地址换算成功八、心得体会通过这次课程设计,不仅让我对操作系统这门课程有了更深刻的了解,而且增强了我的动手能力。对操作系统这门课程,经过了一个学期的学习,我们主要学习了操作系统的一些功能,如进程管理,设备管理,存储器管理等等,看似学了很多东西,实际上只是学到了一些皮毛,只是对对这门课程的大概有了一些大概了解。以后如果有机会,我会继续深入对操作系统这门课程的学习。由于时间的仓促,这次课程设计做的很粗糙,但是我依然学到了很多实用性知识。除了对分段存储管理 有了更深刻的了解,还加深了我对C语言的使用。在做这次课程设计的过程中,遇到了很多问题,多亏了杨老师的指导和同学们的帮助。最后感谢杨老师对我们一学期孜孜不倦的教导!九、参考文献计算机操作系统(第三版) 作者:汤小丹,梁红兵 西安电子科技大学出版社 2010C语言程序设计(第三版) 作者:谭浩强 清华大学出版社 2008Welcome ToDownload !欢迎您的下载,资料仅供参考!

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

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