基本分段存储管理系统_第1页
基本分段存储管理系统_第2页
基本分段存储管理系统_第3页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录一、课程设计的目的2二、课程设计的内容与要求 2三、实验原理 2四、地址换算变换过程结构 2五、关键算法实现流程图 3六、程序代码4七、运行结果与分析 7八、心得体会9九、参考文献9课程设计的目的操作系统课程设计是重要的实践课程,课程开设的目的是让学生学习完 计算机操作系统课程后,进展一次全面的综合训练,让学生更好地掌握操作系统的原理与实现方法,加深对操作系统根底理论和重要算法的理解,加强学生的动手能力。二、课程设计的内容与要求根本分段存储管理系统的设计要求:1建立段表2设计地址变换机构3将变换后的结果显示出来三、实验原理为了实现从进程的逻辑地址到物理地址的变换功能,在系统中设置了段表存放

2、器,用于存放段首地址,段长和段表长度TL。首先建立段表,段表内容包括段首地址,段长和段表长度。在建立段表时,应判断段表地址是否冲突如第一个段的首地址为1,段长为50,在建立第二个段的时候,段首地址应大于1+50,假如不冲突,该段建立成功,否如此重新建立该段。然后进展地址变换, 在进展地址变换时, 系统将逻辑地址中的段号与段表长度进展 比拟。假如S>TL,表示段号太大,是访问越界,于是产生越界中断信号;假如未越界,女口 此根基段表的首地址和该段的段号,计算出该段在在段表项的位置,从中读出该段在内存中的首地址,然后,再检查,段内地址d是否超过该段的段长 SL。假如超过,即d>SL,同样

3、发出越界中断信号;假如未越界如此将该段的基址与段内地址相加,即可得到要访问内存的物理地址。最后,再将得到的物理地址显示出来。四、地址换算变换过程结构五、关键算法实现流程图开始输入段号 和段内地址rT地址换算程序流程图六、程序代码*#in clude<stdio.h>#in clude<stdlib.h>typedef struct segtable / 段表结构说明int segadd256;段首地址int segle n256;段长int le n;表的长度segtable;struct segtable st;/ 定义一个段表*段表的建立void create()c

4、har ch;int i=0;printf(” 建立段表 n”);st.le n=0;printf("请输入第1个段首地址:”);scan f("%d", &st.segaddO);printf("请输入第1个段的长度:");scan f("%d", &st.segle n0);st.le n=1;i=1;while(i<256)fflush(stdi n);printf("是否继续输入(y/n)?n");ch=getchar();if(ch=' n')break;p

5、rintf("第 %d 个段首地址应大于 %dn",i+1,st.segaddi-1+st.segleni-1); printf("请输入第%d个段首地址:",i+1);scan f("%d", &st.segaddi);if(st.segaddi<=st.segaddi-1+st.segle n i-1)printf("地址冲突,请重新输入:");scan f("%d", &st.segaddi);printf("请输入第%d个段的长度:",i+1);

6、scan f("%d", &st.segle n i);st.le n+;i+;*II地址换算int segment(int sn,int sd) I/sn为逻辑地址,sd为段内地址int i,add;if(s n> st.le n)printf("段号%d大于段表长度%d ,越界中断n",sn,st.len);return 0;else if(sd>st.segle nsn-1)printf("段内地址%d大于段长,越界中断n",sd);return 0;elseprintf("根据段号找到段首地址为d

7、n",st.segadds n-1);printf("物理地址=段首地址 %d+段内地址 dn",st.segaddsn-1,sd); add=st.segadds n-1+sd;return (add);*void mai n()int x,y;x表示段号,y表示段内地址int add;char ch='y'create();while(ch='y')printf("地址换算 n");printf(”请输入段号:");scan f("%d", &x);printf(&quo

8、t;请输入段内地址:");scan f("%d", &y);add=segme nt(x,y);if(add!=0)printf("换算后的物理地址为:%dn",add);fflush(stdi n);printf("是否继续进展地址换算(y/n)?n");scan f("%c",&ch);if(ch='n') printf("程序运行完毕!n");七、运行结果与分析1IKF1 殳百地址应大于等于麗 也址詔送 fW< = 70第一个段的物理地址为1

9、2-61,在建立第二个段的时候,输入的段首地址与第一个冲突,所以需要重新输入,70>61,所以该段建立成功地址应大干銅否继续输入3心3个段苜地址应大于10044长 =1824ht:i200地址换算的时候需要输入逻辑地址的段号和段内地址址聽号否 也土星 lE段内地址江的 碱騙鹦断20&段长L越界中断段号满足要求,但是段内地址大于段表中对应段的段长,所以越界中断因为段号大于段表长度 5,所以越界中断1|&=否継離曲亍地址换目II址=46地址为146 地址146 段内地址46:192_换算®小?地址换算成功八、心得体会通过这次课程设计,不仅让我对操作系统这门课程有了更深刻的了解,而且增强了我 的动手能力。对操作系统这门课程,经过了一个学期的学习,我们主要学习了操作系统的一 些功能,如进程管理,设备管理,存储器管理等等,看似学了很多东西,实际上只是学到了 一些皮毛,只是对对这门课程的大概有了一些大概了解。以后如果有机会,我会继续深入对操作系统这门课程的学习。由于时间的仓促,这次课程设计做的很粗糙,但是我依然学到了很多实用性知识

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论