资源简介
题 目: 模拟设计段式存储管理中地址转换
初始条件:
1.预备内容:阅读操作系统的内存管理章节内容,理解段式存储管理的思想及相应的分配主存的过程。
2.实践准备:掌握一种计算机高级语言的使用。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.实现段式存储管理中逻辑地址到物理地址的转换。能够处理以下的情形:指定内存的大小,进程的个数,每个进程的段数及段大小; 能检查地址的合法性,如果合法进行转换,否则显示地址非法的原因。
2.设计报告内容应说明:
⑴ 课程设计目的与功能;
⑵ 需求分析,数据结构或模块说明(功能与框图);
⑶ 源程序的主要部分;
⑷ 测试用例,运行结果与运行情况分析;
⑸ 自我评价与总结:
i)你认为你完成的设计哪些地方做得比较好或比较出色;
ii)什么地方做得不太好,以后如何改正;
iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);
iv)完成本题是否有其他的其他方法(如果有,简要说明该方法);
v)对实验题的评价和改进意见,请你推荐设计题目。
时间安排:
设计安排一周:周1、周2:完成程序分析及设计。
周2、周3:完成程序调试及测试。
周4、周5:验收、撰写课程设计报告。
代码片段和文件信息
#include
#include“stdlib.h“
#include “string.h“
#include“stdio.h“
#include
using namespace std;
struct duan
{
long capacity;//该段的长度
long addr;//起始逻辑地址
long realaddr;//该段实际起始地址
};
struct duanbiao
{
duan duans[10];
char processname[20]; // 进程的名字
int Isdiaoyong; //是否被调用
int num; //段的数目
long total; //该进程的总占用量
};
long neicun=0;
int duanbiaonum=0; //段表的数目
long zhanyong=0; // 占用的内存
long baseaddr=0;
duanbiao duanbiaos[10];
void show1(int );
void show();
void diaodu()
{
cout<<“您要调度的进程是:p“;
int n;
cin>>n;
if(n>duanbiaonum)
cout<<“段表不存在!“< else if(duanbiaos[n-1].Isdiaoyong==1)
cout<<“操作错误,该进程已经被调入到内存!“< else if(duanbiaos[n-1].total>neicun-zhanyong)
cout<<“内存空间不足,调度不成功!“< else
{
cout<<“下面对进程“< for(int j=0;j {
cout<<“正在进行第“< duanbiaos[n-1].duans[j].realaddr=duanbiaos[n-1].duans[j].addr+zhanyong;
cout<<“第“<
}
zhanyong=zhanyong+duanbiaos[n-1].total;
duanbiaos[n-1].Isdiaoyong =1;
cout<<“调度后的结果是:“< show1(n-1);
}
}
void zhuanhuan()
{
int nij;
cout<<“请输入进程:p“;
cin>>n;
if(n>duanbiaonum)
cout<<“进程不存在或没被调度!“< else if(duanbiaos[n-1].Isdiaoyong==1)
{
cout<<“请输入段号:“< cin>>i;
cout<<“输入偏移地址:“< cin>>j;
if(i>duanbiaos[n-1].num)
{
cout<<“段号超出范围“< }
else if(j>duanbiaos[n-1].duans[i-1].capacity)
{
cout<<“段内偏移地址超出范围“< }
else
{
cout<<“转换后的地址为“< cout< }
}
else cout<<“该进程没有调入内存“< }
void apply()
{
printf(“请输入进程的名字:“);
cin>>duanbiaos[duanbiaonum].processname;
printf(“请输入该进程的段数:“);
cin>>duanbiaos[duanbiaonum].num;
int paddr=0;
for(int j=0;j {
cout<<“进程第“< cin>>duanbiaos[duanbiaonum].duans[j].capacity ;
duanbiaos[duanbiaonum].duans[j].addr=paddr;
paddr=paddr+duanbiaos[duanbiaonum].duans[j].capacity;
}
duanbiaos[duanbiaonum].Isdiaoyong=0;
duanbiaos[duanbiaonum].total=paddr;
duanbiaonum++;
}
void show1(int i)
{
cout<<“进程p“< cout<<“名字:“< cout<<“该进程所占用的存储空间:“< if(duanbiaos[i].Isdiaoyong==0)
cout<<“进程状态:未调用“< else
cout<<“进程状态:已调用“< cout<<“____________________________________________“< cout<<“段 号 始址 内存始址 大小“< for(int j=0;j {
cout<<“ “< if(duanbiaos[i].Isdiaoyong==0)
cout<<“ “;
else
cout< cout< }
cout<<“___________________________________________
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 46080 2010-01-28 10:53 地址转换\Debug\地址转换.exe
文件 403552 2010-01-28 10:53 地址转换\Debug\地址转换.ilk
文件 584704 2010-01-28 10:53 地址转换\Debug\地址转换.pdb
文件 10338 2010-01-28 10:53 地址转换\地址转换\Debug\BuildLog.htm
文件 67 2010-01-28 10:53 地址转换\地址转换\Debug\mt.dep
文件 74752 2011-01-20 09:58 地址转换\地址转换\Debug\vc60.idb
文件 110592 2011-01-20 09:52 地址转换\地址转换\Debug\vc60.pdb
文件 166912 2010-01-28 10:53 地址转换\地址转换\Debug\vc90.idb
文件 208896 2010-01-28 10:53 地址转换\地址转换\Debug\vc90.pdb
文件 557136 2011-01-20 09:52 地址转换\地址转换\Debug\地址.exe
文件 800704 2011-01-20 09:52 地址转换\地址转换\Debug\地址.ilk
文件 273068 2011-01-20 09:52 地址转换\地址转换\Debug\地址.obj
I.A.... 2026012 2011-01-15 21:30 地址转换\地址转换\Debug\地址.pch
文件 1106944 2011-01-20 09:52 地址转换\地址转换\Debug\地址.pdb
文件 663 2010-01-28 10:53 地址转换\地址转换\Debug\地址转换.exe.em
文件 728 2010-01-28 10:53 地址转换\地址转换\Debug\地址转换.exe.em
文件 621 2010-01-28 10:53 地址转换\地址转换\Debug\地址转换.exe.intermediate.manifest
文件 4063 2011-01-19 15:02 地址转换\地址转换\地址.cpp
文件 3379 2011-01-20 09:52 地址转换\地址转换\地址.dsp
文件 533 2011-01-20 09:59 地址转换\地址转换\地址.dsw
文件 41984 2011-01-20 09:59 地址转换\地址转换\地址.ncb
文件 48640 2011-01-20 09:59 地址转换\地址转换\地址.opt
文件 744 2011-01-20 09:52 地址转换\地址转换\地址.plg
文件 3918 2010-01-26 11:25 地址转换\地址转换\地址转换.vcproj
文件 1427 2010-01-28 15:46 地址转换\地址转换\地址转换.vcproj.WWW-8BF7580FE27.Administrator.user
文件 2206720 2010-01-28 15:46 地址转换\地址转换.ncb
文件 902 2010-01-26 11:24 地址转换\地址转换.sln
..A..H. 8704 2010-01-28 15:46 地址转换\地址转换.suo
I.A.... 671744 2011-01-19 19:57 地址转换\孙虎杰OS.doc
目录 0 2011-01-20 09:52 地址转换\地址转换\Debug
............此处省略6个文件信息
- 上一篇:SX1276无线模块PCB+代码
- 下一篇:仓库管理系统全套文档
相关资源
- Netapp存储管理系统中文版
- 嵌入式学习成长记
- 操作系统课程设计-段页式存储管理的
- 批量地址转换为经纬度,并在百度地
- 操作系统模拟分页式存储管理中硬件
- 操作系统虚拟分页存储管理,LRU页面
- 东华大学 操作系统实验 存储管理 含
- 编写程序实现虚拟存储管理中OPTFIFO
- 可变分区存储管理[附答案]
- 操作系统-基本分页存储管理(内有代
- 编程演示三种存储管理方式的地址换
- 模拟设计动态分区存储管理的分配与
- STM32L152 段式液晶驱动4*8,可阅读扩展
- 请求调页存储管理方式课程设计LRU
- 模拟段式存储管理的分配与回收操作
- 存储管理实验首次适应算法循环首次
- 操作系统课程设计之存储管理—动态
- 模拟分页式存储管理中硬件的地址转
- 模拟系统请求分页式存储管理
- 页式虚拟存储管理中地址转换和缺页
- 操作系统-页式存储管理
- 动态分区存储管理方式的主存分配回
- 操作系统实验报告 存储管理
- 动态分区存储管理的模拟实现
- 模拟设计动态分区存储管理中地址转
- 操作系统实验报告-动态存储管理
- 请求调页存储管理系统的模拟实现
- 药品存储管理系统课程设计文档
- 存储管理—基本分页存储管理,带报
- 基于Verilog的三段式状态机
评论
共有 条评论