《2022年操作系统课设——三种存储管理方式的地址换算》由会员分享,可在线阅读,更多相关《2022年操作系统课设——三种存储管理方式的地址换算(17页珍藏版)》请在金锄头文库上搜索。
1、题目三种存储管理方式的地址换算姓名:学号:专业:学院:指导教师:姚若龙201 8 年 11 月 27 日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 17 页 - - - - - - - - - 【目录】摘要01 引言02 算法设计02 程序分析04 算法分析09 调试结果11 个人总结15 参考文献15 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页
2、,共 17 页 - - - - - - - - - 摘要:操作系统( Operating System,OS )是方便用户、管理和控制计算机软硬件资源的系统软件(或程序集合)。从用户角度看,操作系统可以看成是对计算机硬件的扩充;从人机交互方式来看,操作系统是用户与机器的接口;从计算机的系统结构看,操作系统是一种层次、模块结构的程序集合,属于有序分层法,是无序模块的有序层次调用。操作系统在设计方面体现了计算机技术和管理技术的结合。操作系统是系统软件的核心,、它控制程序的执行和提供资源分配、调度、输入/ 输出控制和数据管理等任务。如DOS 、UNIX 、OS/2和 Windows NT都是得到广泛
3、使用的操作的系统。三种管理方式中,分页系统能有效地提高内存利用率,分段系统则能很好地满足用户需要,而段页式系统则是把前两种结合起来形成的系统。这种新系统既具有分段系统的便于实现、分段可共享、易于保护、可动态链接等一系列优点,有能像分页系统那样很好地解决内存的外部碎片问题,以及可为各个分段离散地分配内存等问题。关键字:分页方式,分段方式,段页式方式,操作系统。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 17 页 - - - - - - - - - 一. 引言分页存储管理
4、是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页。在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。段的长度由相应的逻辑信息组的长度决定,因而个段长度不等。段页式存储管理方式是分段和分页原理的结合,即先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。三种存储管理都有其相应的段表、页表和地址变换机构。二三种存储管理方式地址换算描述(1)分页存储管理方式在页式存储管理方式中地址结构由两部构成,前一部分是页号,后一部分为页内地址w (位移量) ,如图为了实现从进程的逻辑地址到物理地址的变换功能,在系统中设置了页表寄存器,用于存放页
5、表在内存中的始址和页表的长度。当进程要访问某个逻辑地址中的数据时,分页地址变换机构会自动地将有效地址(相对地址)分为页号和页内地址两部分,再以页号为索引去检索页表。查找操作由硬件执行。在执行检索之前,先将页号与页表长度进行比较,如果页号大于或等于页表长度,则表示本次所访问的地址已超越进程的地址空间。于是,这一错误将被系统发现并产生一地址越界中断。若未出现越界错误,则将页表始址与页号和页表项长度的乘积相加,便得到该表项在页表中的位置,于是可从中得到该页的物理块号,将之装入物理地址寄存器中。与此同时,再将有效地址寄存器中的页内地址送入物理地址寄存器的块内地址字段中。这样便完成了从逻辑地址到物理地址
6、的变换。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 17 页 - - - - - - - - - (2)分段存储管理方式程序通过分段划分为多个模块,如代码段、数据段、共享段:可以分别编写和编译可以针对不同类型的段采取不同的保护可以按段为单位来进行共享,包括通过动态链接进行代码共享为了实现从进程的逻辑地址到物理地址的变换功能,在系统中设置了段表寄存器,用于存放段表始址和段表长度TL。在进行地址变换时, 系统将逻辑地址中的段号与段表长度TL 进行比较。若 STL ,表示段
7、号太大,是访问越界,于是产生越界中断信号;若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存的起始地址,然后,再检查段内地址d 是否超过该段的段长SL。若超过,即 dSL ,同样发出越界中断信号;若未越界,则将该段的基址与段内地址d 相加,即可得到要访问的内存物理地址。(3)段页存储管理方式在段页式系统中,为了便于实现地址变换,需配置一个段表寄存器,其中存放段表始址和段表长 TL。进行地址变换时,首先利用段号S,将它与段表长TL进行比较。若 STL,表示未越界,于是利用段表始址和段号来球出该段所对应的段表项在段表中的位置,从中得到该段的页表址,并利用逻辑地址
8、中的段内页号P 来获得对应表的页表项位置,从中读出该页所在的物理块号b,再利用块号 b 和页内地址来构成物理地址。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 17 页 - - - - - - - - - (4)段表、页表、段表地址寄存器。为了进行地址转换,系统为每个作业建立一个段表,并且要为该作业段表中的每一个段建立一个页表。系统中有一个段表地址寄存器来指出作业的段表起始地址和段表长度。三程序模块int settable1(int n,int k);/创建页表int
9、printTable1(int n,int k);/显示页表int transt(int n,int k,int add);/分页地址换算int defSect(int n,int *t);/创建段表int printSect(int n);/输出段表内容int transSect(int n,int s,int d);/进行分段地址换算函数int setSectTable(int n,int k);/创建段页式内容int printSectTable(int n,int k);/显示段页内容int transSectPage(int n,int k,int s1,int s2,int s3)
10、;/段页式地址换算/ 定义页表结构体typedef struct stable int y1;/页号int y2;/块号stable; struct stable setst512; / 建立段表的结构体名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 17 页 - - - - - - - - - typedef struct setsect int d1;/段号int d2;/段长int d3;/基址setsect; struct setsect sets512;/定义段
11、表的总长度/ 建立段页式内的页表的结构体typedef struct table int dy1;/页号int dy2;/块号table; / 建立段页式的结构体typedef struct setAll struct table c1512;/定义段内页表的结构体int c2;/段号int c3;/段长int c4;/起始地址setAll; struct setAll set512;/定义段页式的总长度1. 分页系统int page(int A,int L) int d,P,kd,i; int WD; int PT256; for(i=1;iL) printf(页号大于页表长度, 越界中断
12、nn);/如果页号大于页表长度,输出越界中段 else printf(页号 =逻辑地址 / 页面大小 =%d,页内地址 =逻辑地址页面大小=%dn,P,d);/输出页号和页内地址 kd=PTP;/根据页号随机产生快号 printf(根据页号 %d得到块号 %dn,P,kd); WD=kd*L+d;/计算物理地址的公式 printf(物理地址 =块号%d*页面大小 %d+ 页内地址 %dn,kd,L,d);/输出物理地址 =块号 * 页面大小 +页内地址 printf(逻辑地址 %d换算后的物理地址为%dnn,A,WD);/输出物理地址的结果 return (0); 2. 分段系统 int Se
13、gment(int sn,int sd) int i,wd; for(i=0;i256) printf(段号 %d大于段表长度 , 越界中断 nn,sn);/如果段号大于段表长度,输出越界中断else if(sdst.seglsn) printf(段内地址 %d大于段长度 %d,越界中断 n,sd,st.seglsn);/如果段内地址大于段长度,输出越界中断else printf(根据段号找到段首地址%dn,st.segfsn); printf(物理地址 =段首地址 %d+ 段内地址 %dn,st.segfsn,sd); /输出物理地址 =段首地址 +段内地址 wd=st.segfsn+sd;
14、/计算物理地址的算法 printf(换算得到的物理地址为:%dnn,wd);/输出物理地址 return (0); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 17 页 - - - - - - - - - 3. 段页系统int SegPagt(int sn,int pn,int pd) int i,wd; sp.pl=256; for(i=0;i256) printf(段号 %d大于段表长度 , 越界中断 nn,sn);/如果段号大于段表长度, 输出越界中断else
15、if(pnsp.ptlpn) printf(页号 %d大于页表长度 %d,越界中断 n,pn,sp.ptlpn);/如果页号大于页表长度, 输出越界中断else if(pdsp.pl) printf(页内地址 %d大于页面长度 %d,中断 n,pd,sp.pl);/如果页内地址大于页面长度, 输出中断else printf(通过段号 %d找到页表首地址%dn 通过页号 %d找到块号 %dn,sn,sp.pfsn,pn,sp.ptpn);/输出页表首地址和块号 printf(物理地址 =页表首地址 %d+ 快号 %d*页面长度 %d+ 页内地址 %dn,sp.pfsn,sp.ptpn,sp.pl
16、,pd);/输出物理地址 =页表首地址 +快号 *页面长度 +页内地址 wd=sp.pfsn+sp.ptpn*sp.pl+pd;/计算物理地址的公式 printf(物理地址为 :%dnn,wd);/输出物理地址的最好结果return (0); 4. 主函数int main() int code; int pl,pa,sn,sd,pd,pn; /const int ptl ; int temp; do 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 17 页 - - - -
17、 - - - - - printf(-地址换算过程 -nn); printf( 1.分页式地址换算 n); printf( 2.分段式地址换算 n); printf( 3.段页式地址换算 n); printf( 4.结束运行 nn); 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); br
18、eak; 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); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
19、 - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 17 页 - - - - - - - - - SegPagt(sn,pn,pd); break; case 4:break; while (code 页号(3)页内地址1 b 页表物理地址逻辑地址 L 越界中断页表寄存器页号块号0 1 2 3 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 17 页 - - - - - - - - - (2)分段系统的地址变换机构为了实现从进程
20、的逻辑地址到物理地址的变换功能,在系统中设置了段表寄存器,用于存放段表始址和段表长度TL。在进行地址变换时, 系统将逻辑地址中的段号与段表长度TL 进行比较。1. 若 STL ,表示段号太大,是访问越界,于是产生越界中断信号;2. 若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存的起始地址, 然后, 再检查段内地址 d 是否超过该段的段长SL。 若超过,即 dSL,同样发出越界中断信号;3. 若未越界,则将该段的基址与段内地址d 相加,即可得到要访问的内存物理地址。(3)段页式系统中的地址变换机构在段页式系统中,为了便于实现地址变换,需配置一个段表寄存器,
21、其中存放段表始址和段表长 TL。进行地址变换时,首先利用段号S,将它与段表长 TL 进行比较。若 STL,表示未越界,于是利用段表始址和段号来球出该段所对应的段表项在段表中的位置,从中得到该段的页表始址,并利用逻辑地址中的段内页号P 来获得对应表的页表项位段表始址段表长度 2 100 越界有效地址段号段长基址0 1 2 3 物理地址名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 17 页 - - - - - - - - - 置,从中读出该页所在的物理块号b,再利用块号
22、b和页内地址来构成物理地址。五. 结果分析1)主菜单页面段表始址段表长度段表寄存器 段超长页号 P 段号 S 页内地址0 1 2 3 段表长度页表始址0 1 2 3 b 块号 b 块内地址页表段表名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 17 页 - - - - - - - - - 2)页式页面选择 1 输入:换算的逻辑地址:120 页面大小: 100 输出:页号 =1 页内地址 =20 块号=41 物理地址 =4120 名师资料总结 - - -精品资料欢迎下载
23、- - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 17 页 - - - - - - - - - 3)段式页面选择 2 输入:换算的逻辑地址的段号:230 段内地址: 180 输出:段首地址 =68 物理地址 =248 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 17 页 - - - - - - - - - 4)段页式页面选择 3 输入:逻辑地址的段号: 230 页号: 5 页内地址:
24、10 输出:页表首地址 =5447 块号=166 物理地址 =47953 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 17 页 - - - - - - - - - 六个人总结为期一周的操作系统课程设计很快就结束了,做为每个学期末的一项必修课,课程设计的目的就是要让我们能够更加深刻的理解课堂上所学的知识,并能够将它们应用到实践中去,让知识能为实践服务。这次操作系统的课程设计,我是通过编程演示三种存储管理方式的地址换算过程。通过这次课程设计,加深了我对课堂上所学的三种存
25、储管理方式的地址换算的概念的理解,了解了操作系统的工作原理已经平时遇到的一些状况是怎么样产生的,通过这次操作系统的课程设计,另我学到了很多在课堂上学不到的知识,以及动手能力,这次课程设计老师不限开发工具,因此也锻炼了我们对新的开发工具的掌握能力。对于我们计算机专业的学生来说,在软件更新如此之快的今天,对新的开发工具的快速掌握能力也是一项必不可少的能力。当然,在这次课程设计中,也暴露出来了一些问题,就是我对开发工具的使用,虽然大学三年基本是用C 编写程序比较多,但是还是感到了力不从心的感觉,就是自己对一些 C 函数库的了解不够,导致自己在用的时候走了很多弯路,这也从间接让我了解了许多平时学习不到的知识。课程设计不仅能锻炼我们把知识应用于实践的能力,还锻炼了我们思维的逻辑性。编写一个BUG尽可能少的程序,需要考虑很多方面的问题,包括给别人试用,这就锻炼了我们逻辑思维的能力,为今后走上工作岗位打下了坚实的基础。参考文献:计算机操作系统第2 版清华大学出版社C primer plus (第 5 版)人民邮电出版社名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 17 页 - - - - - - - - -