编程演示三种存储管理方式的地址换算过程.docx

上传人:b****7 文档编号:24022934 上传时间:2023-05-23 格式:DOCX 页数:26 大小:268.83KB
下载 相关 举报
编程演示三种存储管理方式的地址换算过程.docx_第1页
第1页 / 共26页
编程演示三种存储管理方式的地址换算过程.docx_第2页
第2页 / 共26页
编程演示三种存储管理方式的地址换算过程.docx_第3页
第3页 / 共26页
编程演示三种存储管理方式的地址换算过程.docx_第4页
第4页 / 共26页
编程演示三种存储管理方式的地址换算过程.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

编程演示三种存储管理方式的地址换算过程.docx

《编程演示三种存储管理方式的地址换算过程.docx》由会员分享,可在线阅读,更多相关《编程演示三种存储管理方式的地址换算过程.docx(26页珍藏版)》请在冰豆网上搜索。

编程演示三种存储管理方式的地址换算过程.docx

编程演示三种存储管理方式的地址换算过程

实习题目

指导教师

职称

学生姓名

学号

日期

实习题目

指导教师

职称

学生姓名

学号

日期

内蒙古师范大学计算机与信息工程学院

《操作系统》课程设计报告

实习题目

指导教师

职称

学生姓名

学号

日期

设计题目

编程演示三种存储管理方式的地址换算过程

指导教师

翟烨

职称

姓名

聂斐斐

学号

20111501182

日期

2014.6.27

计算机科学与技术专业课程设计任务书

学生姓名

聂斐斐

专业班级

13专升本

学号

20111501182

题目

编程演示三种存储管理方式的地址换算过程

课题性质

其它

课题来源

指导教师

翟烨

同组姓名

主要内容

1、分页方式的地址换算

2、分段方式的地址换算

3、段页式的地址换算

 

任务要求

要求演示正确、清晰,编程所用工具不限。

参考文献

 

张丽芬李侃刘利雄《操作系统学习指导与习题解析》电子工业出版社2006

谭浩强《C程序设计》清华大学出版社2008

任满杰等《操作系统原理实用教程》电子工业出版社2006

汤子瀛《计算机操作系统》(修订版)西安电子科技大学出版社2001

张尧学史美林《计算机操作系统教程》实验指导清华大学出版社2000

罗宇等《操作系统课程设计》机械工业出版社2005

审查意见

指导教师签字:

教研室主任签字:

年月日

说明:

本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页

1需求分析

编程演示三种存储管理方式的地址换算过程,分别为分页方式的地址换算,分段方式的地址换算,段页式的地址换算。

分页方式通过逻辑地址算出页号与叶内地址,然后通过页表来实现向物理地址的转换。

分段方式通过段号和段内地址得到物理地址。

段叶式通过段号得到页表首地址,通过页号得到块号,进而得到物理地址。

2概要设计

程序主要有三个功能,分别是分页方式的地址换算,分段方式的地址换算,段页式的地址换算。

利用可视化界面进行选择。

3运行环境

软件环境:

WindowXP,VisualC++6.0

4开发工具和编程语言

开发工具:

VisualC++6.0

编程语言:

C++语言

5详细设计

5.1流程图

5.2界面设计

5.3代码设计

//dizhizhuanhuanDlg.cpp:

implementationfile

//

#include"stdafx.h"

#include"dizhizhuanhuan.h"

#include"dizhizhuanhuanDlg.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

#include

#include

intpage(intA,intL);

intSegment(intsn,intsl);

intSegPagt(intsn,intpn,intpd);

typedefstructsegtable{

intsegf[256];

intsegl[256];

}segtable;

structsegtablest;

typedefstructsegpagt{

//intsegf[256];

intsegl[4];

intptl;

intpt[3][500];

//intpf[256];

intpl;

}segpagt;

structsegpagtsp;

inti,j;

intd,P;

intA,L;

intWD,wd;

intPT[4];

inttemp;

intkd;

intsn,sd;

intpn,pd;

/////////////////////////////////////////////////////////////////////////////

//CAboutDlgdialogusedforAppAbout

classCAboutDlg:

publicCDialog

{

public:

CAboutDlg();

//DialogData

//{{AFX_DATA(CAboutDlg)

enum{IDD=IDD_ABOUTBOX};

//}}AFX_DATA

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport

//}}AFX_VIRTUAL

//Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

:

IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

//Nomessagehandlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CDizhizhuanhuanDlgdialog

CDizhizhuanhuanDlg:

:

CDizhizhuanhuanDlg(CWnd*pParent/*=NULL*/)

:

CDialog(CDizhizhuanhuanDlg:

:

IDD,pParent)

{

//{{AFX_DATA_INIT(CDizhizhuanhuanDlg)

m_A=_T("");

m_L=_T("");

m_s=_T("");

m_sn=_T("");

m_sd=_T("");

m_sn1=_T("");

m_pn1=_T("");

m_pd1=_T("");

m_y1=_T("");

m_y2=_T("");

m_y3=_T("");

m_y4=_T("");

m_d0=_T("");

m_d1=_T("");

m_d2=_T("");

m_d3=_T("");

m_d00=_T("");

m_d11=_T("");

m_d22=_T("");

m_d33=_T("");

m_dy11=_T("");

m_dy12=_T("");

m_dy13=_T("");

m_dy14=_T("");

m_dy21=_T("");

m_dy22=_T("");

m_dy23=_T("");

m_dy24=_T("");

m_dy31=_T("");

m_dy32=_T("");

m_dy33=_T("");

m_dy34=_T("");

//}}AFX_DATA_INIT

//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32

m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

voidCDizhizhuanhuanDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CDizhizhuanhuanDlg)

DDX_Text(pDX,IDC_EDIT1,m_A);

DDX_Text(pDX,IDC_EDIT2,m_L);

DDX_Text(pDX,IDC_JEIGUO,m_s);

DDX_Text(pDX,IDC_EDIT3,m_sn);

DDX_Text(pDX,IDC_EDIT4,m_sd);

DDX_Text(pDX,IDC_EDIT5,m_sn1);

DDX_Text(pDX,IDC_EDIT6,m_pn1);

//DDX_Text(pDX,IDC_EDIT7,m_pd1);

DDX_Text(pDX,IDC_Y1,m_y1);

DDX_Text(pDX,IDC_Y2,m_y2);

DDX_Text(pDX,IDC_Y3,m_y3);

DDX_Text(pDX,IDC_Y4,m_y4);

DDX_Text(pDX,IDC_D0,m_d0);

DDX_Text(pDX,IDC_D1,m_d1);

DDX_Text(pDX,IDC_D2,m_d2);

DDX_Text(pDX,IDC_D3,m_d3);

DDX_Text(pDX,IDC_D00,m_d00);

DDX_Text(pDX,IDC_D11,m_d11);

DDX_Text(pDX,IDC_D22,m_d22);

DDX_Text(pDX,IDC_D33,m_d33);

DDX_Text(pDX,IDC_DY11,m_dy11);

DDX_Text(pDX,IDC_DY12,m_dy12);

DDX_Text(pDX,IDC_DY13,m_dy13);

DDX_Text(pDX,IDC_DY14,m_dy14);

DDX_Text(pDX,IDC_DY21,m_dy21);

DDX_Text(pDX,IDC_DY22,m_dy22);

DDX_Text(pDX,IDC_DY23,m_dy23);

DDX_Text(pDX,IDC_DY24,m_dy24);

DDX_Text(pDX,IDC_DY31,m_dy31);

DDX_Text(pDX,IDC_DY32,m_dy32);

DDX_Text(pDX,IDC_DY33,m_dy33);

DDX_Text(pDX,IDC_DY34,m_dy34);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CDizhizhuanhuanDlg,CDialog)

//{{AFX_MSG_MAP(CDizhizhuanhuanDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_RADIO1,OnYeshi)

ON_BN_CLICKED(IDC_RADIO2,OnDuanshi)

ON_BN_CLICKED(IDC_RADIO3,OnDuanyeshi)

ON_EN_CHANGE(IDC_EDIT1,OnChangeEdit1)

ON_BN_CLICKED(IDC_BUTTON1,OnButton1)

//ON_BN_CLICKED(IDC_BUTTON2,OnButton2)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CDizhizhuanhuanDlgmessagehandlers

BOOLCDizhizhuanhuanDlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

//Add"About..."menuitemtosystemmenu.

//IDM_ABOUTBOXmustbeinthesystemcommandrange.

ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX<0xF000);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!

=NULL)

{

CStringstrAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if(!

strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

}

}

//Settheiconforthisdialog.Theframeworkdoesthisautomatically

//whentheapplication'smainwindowisnotadialog

SetIcon(m_hIcon,TRUE);//Setbigicon

SetIcon(m_hIcon,FALSE);//Setsmallicon

//TODO:

Addextrainitializationhere

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

}

voidCDizhizhuanhuanDlg:

:

OnSysCommand(UINTnID,LPARAMlParam)

{

if((nID&0xFFF0)==IDM_ABOUTBOX)

{

CAboutDlgdlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog:

:

OnSysCommand(nID,lParam);

}

}

//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow

//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,

//thisisautomaticallydoneforyoubytheframework.

voidCDizhizhuanhuanDlg:

:

OnPaint()

{

if(IsIconic())

{

CPaintDCdc(this);//devicecontextforpainting

SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);

//Centericoninclientrectangle

intcxIcon=GetSystemMetrics(SM_CXICON);

intcyIcon=GetSystemMetrics(SM_CYICON);

CRectrect;

GetClientRect(&rect);

intx=(rect.Width()-cxIcon+1)/2;

inty=(rect.Height()-cyIcon+1)/2;

//Drawtheicon

dc.DrawIcon(x,y,m_hIcon);

}

else

{

CDialog:

:

OnPaint();

}

}

//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags

//theminimizedwindow.

HCURSORCDizhizhuanhuanDlg:

:

OnQueryDragIcon()

{

return(HCURSOR)m_hIcon;

}

 

voidCDizhizhuanhuanDlg:

:

OnYeshi()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData(true);

YS();

UpdateData(false);

xz=1;

}

voidCDizhizhuanhuanDlg:

:

OnDuanshi()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData(true);

DS();

UpdateData(false);

xz=2;

}

voidCDizhizhuanhuanDlg:

:

OnDuanyeshi()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData(true);

DYS();

UpdateData(false);

xz=3;

}

voidCDizhizhuanhuanDlg:

:

OnChangeEdit1()

{

//TODO:

IfthisisaRICHEDITcontrol,thecontrolwillnot

//sendthisnotificationunlessyouoverridetheCDialog:

:

OnInitDialog()

//functionandcallCRichEditCtrl().SetEventMask()

//withtheENM_CHANGEflagORedintothemask.

//TODO:

Addyourcontrolnotificationhandlercodehere

}

voidCDizhizhuanhuanDlg:

:

OnButton1()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData(true);

if(xz==1)

{

A=(int)atof(m_A);

L=(int)atof(m_L);

P=A/L;

d=A%L;

if(P>=4)

{

m_s=(CString)"页号大于页表长度,越界中断\n";

}

else

{

kd=PT[P];//根据页号随机产生快号

WD=kd*L+d;//计算物理地址的公式

temp=WD;

m_s.Format("%d",temp);

}

//return(0);

}

if(xz==2)

{

sn=(int)atof(m_sn);

sd=(int)atof(m_sd);

if(sn>4)

m_s=(CString)"段号大于段表长度4,越界中断";

elseif(sd>st.segl[sn])

m_s=(CString)"段内地址大于段长度,越界中断";

else

{

wd=st.segf[sn]+sd;//计算物理地址的算法

temp=wd;

m_s.Format("%d",temp);

}

}

if(xz==3)

{

sn=(int)atof(m_sn1);//段号

A=(int)atof(m_pn1);//逻辑地址

//pd=(int)atof(m_pd1);

pn=A/1024;

pd=A%1024;

 

if(sn>3)

m_s=(CString)"段号大于段表长度3,越界中断";

elseif(pn>=4)

m_s=(CString)"页号大于页表长度4,越界中断";

else

{

kd=sp.pt[sn-1][pn-1];

wd=kd*1024+pd;//计算物理地址的公式

temp=wd;

m_s.Format("%d",temp);

}

}

UpdateData(false);

}

 

intCDizhizhuanhuanDlg:

:

YS()

{

//intd,P,kd,i;

//intA,L;

//intWD;

//intPT[4];

for(i=1;i<=4;i++)

{

PT[i]=rand()%500;//定义随机产生的快号在1到500之间

}

m_y1.Format("%d",PT[1]);

m_y2.Format("%d",PT[2]);

m_y3.Format("%d",PT[3]);

m_y4.Format("%d",PT[4]);

return(0);

}

 

intCDizhizhuanhuanDlg:

:

DS()

{

//inti,wd;

//intsn,sd;

for(i=0;i<4;i++)

{

st.segf[i]=rand()%200;//定义随机产生段首地址

st.segl[i]=rand()%2000;//定义随机产生段长度

}

m_d0.Format("%d",st.segf[0]);

m_d1.Format("%d",st.segf[1]);

m_d2.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 判决书

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

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