文档库 最新最全的文档下载
当前位置:文档库 › 实验三 存储管理

实验三 存储管理

实验三 存储管理
实验三 存储管理

实验三 存储管理

一、实验目的

存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。

本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。

二、实验内容

(1)通过计算不同算法的命中率比较算法的优劣。同时也考虑了用户内存容量对命中率的影响。

页面失效次数为每次访问相应指令时,该指令所对应的页不在内存中的次数。

在本实验中,假定页面大小为1k ,用户虚存容量为32k ,用户内存容量为4页到32页。

(2)produce_addstream 通过随机数产生一个指令序列,共320条指令。

A 、 指令的地址按下述原则生成:

1) 50%的指令是顺序执行的

2) 25%的指令是均匀分布在前地址部分

3) 25%的指令是均匀分布在后地址部分 B 、 具体的实施方法是:

1) 在[0,319]的指令地址之间随机选取一起点m ; 2) 顺序执行一条指令,即执行地址为m+1的指令; 3) 在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’;

4) 顺序执行一条指令,地址为m’+1的指令

5) 在后地址[m’+2,319]中随机选取一条指令并执行; 6)

重复上述步骤1)~5),直到执行320次指令

C 、 将指令序列变换称为页地址流

在用户虚存中,按每k 存放10条指令排列虚存地址,即320条指令在虚存中

的存放方式为:

第0条~第9条指令为第0页(对应虚存地址为[0,9]); 第10条~第19条指令为第1页(对应虚存地址为[10,19]); 。。。。。。

第310条~第319条指令为第31页(对应虚存地址为[310,319]); 按以上方式,用户指令可组成32页。

页地址流长度

页面失效次数命中率-

=1

(1)计算并输出下属算法在不同内存容量下的命中率。

1)先进先出的算法(FIFO);

2)最近最少使用算法(LRU);

3)最佳淘汰算法(OPT);

4)最少访问页面算法(LFR);

其中3)和4)为选择内容

三、系统框图

四、源程序代码

1.存储管理操作类

package MemoryManagement;

import java.util.Random;

public class MemoryManage_Operation {

private String[][] dataStrings = new String[33][4];//数据传递数组private int[] Addstream = new int[320];//地址流

private int[] Addspage = new int[320];//页面流

private int[] phyBlock = new int[32];//物理块数

private Random random = new Random();//随机数

private int blockNum;//内存块数

private int npageNum;//缺页数临时变量

private float rate;//缺页率

private int tempK, tempG, tempF;//临时变量

//产生随机地址流和页面流

public void setProduceAddstream() {

int temp;

for (int i = 0; i < 320; i+=3 ) {

temp = random.nextInt(320) % 320 + 0;

Addstream[i] = temp + 1;

temp = random.nextInt(320) % (Addstream[i] + 1);

Addstream[i+1] = temp + 1;

temp = random.nextInt(320)%(319 - Addstream[i+1]) + (Addstream[i+1] + 1);

if (i+2 >= 320) {

break;

}

Addstream[i+2] = temp;

}

for (int i = 0; i < 320; i++) {

Addspage[i] = Addstream[i] / 10;

}

}

//用户内存及相关数据初始化

private void initialization() {

for (int i = 0 ; i < 32 ; i++)

phyBlock[i] = -1;

this.npageNum = 0;

this.rate = 0;

this.tempK = 0;

this.tempG = -1;

this.tempF = -1;

}

//先进先出置换算法

public void FIFO()

{

int[] time = new int[32]; //定义进入内存时间长度数组

int max; //max表示进入内存时间最久的,即最先进去的

initialization();

for(int i = 0; i < blockNum ; i++)

time[i]=i+1;

for (int i = 0 ; i < 320 ; i++)

{

this.tempK = 0;

for (int j = 0; j < blockNum ; j++)

if (phyBlock[j] == Addspage[i]) { //表示内存中已有当前要调入的页面

this.tempG = j;

break;

}

for (int j = 0; j < blockNum ;j++)

if (phyBlock[j] == -1) {//用户内存中存在空的物理块

this.tempF = j;

break;

}

if (this.tempG != -1)

this.tempG = -1;

else {

if (this.tempF == -1) {//找到最先进入内存的页面

max = time[0];

for(int j = 0; j < blockNum ; j++)

if(time[j] > max) {

max = time[j];

this.tempK = j;

}

phyBlock[tempK] = Addspage[i];

time[tempK] = 0; //该物理块中页面停留时间置零

npageNum++; //缺页数+1

} else {

phyBlock[tempF] = Addspage[i];

time[tempF] = 0;

npageNum++;

tempF = -1;

}

}

for (int j =0; j < blockNum && phyBlock[j] != -1; j++) time[j]++; //物理块中现有页面停留时间+1

}

this.rate = 1 - (float)npageNum / 320;

dataStrings[blockNum][1] = this.rate+"";

}

//最近最少使用算法

public void LRU() {

int[] time = new int[32];

int max;

initialization();

for (int i = 0; i < blockNum ; i++)

time[i] = i + 1;

for (int i = 0; i < 320 ; i++) {

tempK = 0;

for (int j = 0;j < blockNum ; j++)

if (phyBlock[j] == Addspage[i]) {

this.tempG = j;

break;

}

for (int j = 0;j < blockNum ; j++)

if (phyBlock[j] == -1) {

this.tempF = j;

break;

}

if (this.tempG != -1) {

time[tempG] = 0;

this.tempG = -1;

}else {

if (this.tempF == -1) {

max=time[0];

for (int j = 0; j < blockNum ; j++)

if (time[j] > max) {

this.tempK = j;

max=time[j];

}

phyBlock[tempK] = Addspage[i];

time[tempK] = 0;

npageNum++;

}else {

phyBlock[tempF] = Addspage[i];

time[tempF] = 0;

npageNum++;

this.tempF = -1;

}

}

for (int j = 0;j < blockNum && phyBlock[j] != -1 ; j++) time[j]++;

}

this.rate = 1 - (float)npageNum / 320;

dataStrings[blockNum][2] = this.rate+"";

}

//最少访问页面算法

public void LFR() {

initialization();

int[] time_lru = new int[32];

int [] time = new int[32];

int min,max_lru,t;

for (int i = 0 ;i < blockNum; i++) {

time[i]=0;

time_lru[i]=i+1;

}

for (int i = 0;i < 320; i++) {

this.tempK = 0;

t=1;

for (int j = 0; j < blockNum; j++)

if (phyBlock[j] == Addspage[i]) {

this.tempG = j;

break;

}

for (int j = 0; j < blockNum; j++)

if (phyBlock[j] == -1) {

this.tempF = j;

break;

}

if (this.tempG != -1) {

time_lru[tempG] = 0;

this.tempG = -1;

}else {

if (this.tempF == -1) {

if (i <= 20) {//将最少使用的间隔时间定位个单位

max_lru=time_lru[0]; //在未达到“一定时间”的要求时,先采用LRU进行页面置换

for (int j = 0;j < blockNum; j++)

if (time_lru[j] > max_lru) {

this.tempK = j;

max_lru = time_lru[j];

}

phyBlock[tempK] = Addspage[i];

time_lru[tempK]=0;

npageNum++;

}else {

for (int j = 0;j < blockNum; j++) //计算一定时间间隔内物理块中的页面使用次数

for (int h = i-1;h >= i - 1; h--)

if (phyBlock[j] == Addspage[h])

time[j]++;

min=time[0];

for (int j = 0; j < blockNum; j++)

if (time[j] < min) {

min=time[j];

this.tempK = j;

}

for (int j = 0;j < blockNum; j++) //应对出现页面使用次数同样少的情况

if (time[j] == min)

t++;

if(t>1) {//若使用次数同样少,将次数相同的页面按照LRU 进行页面置换

max_lru=time_lru[tempK];

for(int j =0; j < blockNum&& time[j] == min ; j++)

if (time_lru[j]>max_lru) {

this.tempK = j;

max_lru=time_lru[j];

}

}

phyBlock[tempK] = Addspage[i];

time_lru[tempK] = 0;

npageNum++;

}

}else {

phyBlock[tempF] = Addspage[i];

time_lru[tempF] = 0;

npageNum++;

tempF = -1;

}

}

for (int j = 0; j < blockNum && phyBlock[j] != -1; j++) time_lru[j]++;

}

this.rate = 1 - (float)npageNum / 320;

dataStrings[blockNum][3] = this.rate+"";

}

public int getBlockNum() {

return blockNum;

}

public void setBlockNum(int blockNum) {

this.blockNum = blockNum;

}

public String[][] getDataStrings() {

return dataStrings;

}

public void setDataStrings(String[][] dataStrings) {

this.dataStrings = dataStrings;

}

}

2.界面类

package MemoryManagement;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.MessageBox;

import org.eclipse.swt.widgets.Shell;

import org.eclipse.swt.widgets.Menu;

import org.eclipse.swt.widgets.TableItem;

import org.eclipse.swt.SWT;

import org.eclipse.swt.widgets.MenuItem;

import org.eclipse.swt.widgets.Table;

import org.eclipse.swt.widgets.TableColumn;

import org.eclipse.swt.events.SelectionAdapter;

import org.eclipse.swt.events.SelectionEvent;

public class ManageSWT {

protected Shell shell;

private Table table;

/**

* Launch the application.

* @param args

*/

public static void main(String[] args) {

try {

ManageSWT window = new ManageSWT();

window.open();

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* Open the window.

*/

public void open() {

Display display = Display.getDefault();

createContents();

shell.open();

https://www.wendangku.net/doc/f815487269.html,yout();

while (!shell.isDisposed()) {

if (!display.readAndDispatch()) {

display.sleep();

}

}

}

/**

* Create contents of the window.

*/

protected void createContents() {

shell = new Shell();

shell.setSize(450, 300);

shell.setText("\u5B58\u50A8\u7BA1\u7406");

Menu menu = new Menu(shell, SWT.BAR);

shell.setMenuBar(menu);

MenuItem menuItem = new MenuItem(menu, SWT.NONE);

menuItem.addSelectionListener(new SelectionAdapter() { @Override

public void widgetSelected(SelectionEvent e) {

analysis();

}

});

menuItem.setText("\u547D\u4E2D\u7387\u5206\u6790");

MenuItem menuItem_2 = new MenuItem(menu, SWT.NONE);

menuItem_2.addSelectionListener(new SelectionAdapter() { @Override

public void widgetSelected(SelectionEvent e) {

shell.dispose();

}

});

menuItem_2.setText("\u9000\u51FA");

MenuItem menuItem_1 = new MenuItem(menu, SWT.NONE);

menuItem_1.addSelectionListener(new SelectionAdapter() { @Override

public void widgetSelected(SelectionEvent e) {

MessageBox messageBox = new

MessageBox(shell,SWT.ICON_INFORMATION);

messageBox.setText("关于");

messageBox.setMessage("存储管理\n 作者:章进兴\n 0941901228");

messageBox.open();

}

});

menuItem_1.setText("\u5173\u4E8E");

table = new Table(shell, SWT.BORDER | SWT.FULL_SELECTION);

table.setBounds(0, 0, 434, 242);

table.setHeaderVisible(true);

table.setLinesVisible(true);

TableColumn tblclmnNewColumn = new TableColumn(table, SWT.NONE);

tblclmnNewColumn.setWidth(90);

tblclmnNewColumn.setText("\u7269\u7406\u5757\u6570");

TableColumn tblclmnNewColumn_1 = new TableColumn(table, SWT.CENTER);

tblclmnNewColumn_1.setWidth(100);

tblclmnNewColumn_1.setText("\u5148\u8FDB\u5148\u51FA\u7684\u7B97\ u6CD5");

TableColumn tblclmnNewColumn_2 = new TableColumn(table,

SWT.CENTER);

tblclmnNewColumn_2.setWidth(110);

tblclmnNewColumn_2.setText("\u6700\u8FD1\u6700\u5C11\u4F7F\u7528\ u7B97\u6CD5");

TableColumn tblclmnLfu = new TableColumn(table, SWT.CENTER);

tblclmnLfu.setWidth(110);

tblclmnLfu.setText("\u6700\u5C11\u8BBF\u95EE\u9875\u9762\u7B97\u6 CD5");

}

public void analysis(){

table.removeAll();

MemoryManage_Operation mOperation = new

MemoryManage_Operation();

mOperation.setProduceAddstream();

String[][] tempStrings = new String[33][4];

for (int i = 2;i<=32;i++) {

mOperation.setBlockNum(i);

tempStrings[i][0] = i+"K";

mOperation.FIFO();

mOperation.LRU();

mOperation.LFR();

tempStrings[i][1] = mOperation.getDataStrings()[i][1];

tempStrings[i][2] = mOperation.getDataStrings()[i][2];

tempStrings[i][3] = mOperation.getDataStrings()[i][3];

}

for (int i = 2; i < 33; i++) {

TableItem item = new TableItem(table, SWT.NULL);

for (int j = 0; j < 4; j++) {

item.setText(j, tempStrings[i][j]);

}

}

}

}

五、运行结果

六、实验总结

本程序单一的实现了命中率的分析,并没有页面流的展示,这是一点缺陷,但展示了2k~32k的先进先出、最近最少使用和最少访问页面算法的所有命中率,便于比较对比三者之间的优劣。

通过本实验,我学会了请求页式管理中页面置换算法(先进先出、最近最少使用和最少访问页面算法)模拟的设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。

实验三:存储管理

实验三:存储管理 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

一、实验名称 实验三:存储管理 [1]Windows Server 2003内存结构 [2] Windows Server 2003虚拟内存 二、 [1]实验目的 1)通过实验了解windows Server 2003内存的使用,学习如何在应用程序中管理内存、体会Windows应用程序内存的简单性和自我防护能力。 2)了解windows Server 2003的内存结构和虚拟内存的管理,进而了解进程堆和windows为使用内存而提供的一些扩展功能。 三、 [1]实验内容 四、 [1]实验步骤 Windows提供了一个API即GetSystemInfo() ,以便用户能检查系统中虚拟内存的一些特性。程序5-1显示了如何调用该函数以及显示系统中当前内存的参数。 步骤1:登录进入Windows Server 2003 。 步骤2:在“开始”菜单中单击“程序”-“Microsoft Visual Studio 6.0”–“Microsoft Visual C++ 6.0”命令,进入Visual C++窗口。 步骤3:在工具栏单击“打开”按钮,在“打开”对话框中找到并打开实验源程序。 程序5-1:获取有关系统的内存设置的信息 步骤4:单击“Build”菜单中的“Compile ”命令,并单击“是”按钮确认。系统对进行编译。 步骤5:编译完成后,单击“Build”菜单中的“Build ”命令,建立可执行文件。 操作能否正常进行如果不行,则可能的原因是什么 答:操作能正常进行。 _____________________________________________________ 步骤6:在工具栏单击“Execute Program” (执行程序) 按钮,执行程序。 运行结果 (分行书写。如果运行不成功,则可能的原因是什么?) : 1) 虚拟内存每页容量为: 2) 最小应用地址: 0x00010000 3) 最大应用地址为: 0x7ffeffff 4) 当前可供应用程序使用的内存空间为: 5) 当前计算机的实际内存大小为: 阅读和分析程序5-1,请回答问题:

实验三存储管理实验

实验三存储管理实验 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

实验三存储管理实验 一. 目的要求: 1、通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解。熟悉虚存管理的各种页面淘汰算法。 2、通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。二.实验内容: 1、设计一个固定式分区分配的存储管理方案,并模拟实现分区的分配和回收过程。 可以假定每个作业都是批处理作业,并且不允许动态申请内存。为实现分区的分配和回收,可以设定一个分区说明表,按照表中的有关信息进行分配,并根据分区的分配和回收情况修改该表。 算法描述: 本算法将内存的用户区分成大小相等的四个的分区,设一张分区说明表用来记录分区,其中分区的表项有分区的大小、起始地址和分区的状态,当系统为某个作业分配主存空间时,根据所需要的内存容量,在分区表中找到一个足够大的空闲分区分配给它,然后将此作业装入内存。如果找不到足够大的空闲分区,则这个作业暂时无法分配内存空间,系统将调度另一个作业。当一个作业运行结束时,系统将回收改作业所占据的分区并将该分区改为空闲。 算法原程序 #include "" #include "" #include <>

#include <> #define PCB_NUM 5 行程序."); printf("\n\t\t\t0.退出程序."); scanf("%d",&m); switch(m) { case1: break; case0: system("cls"); menu(); break; default: system("cls"); break; } } void paixu(struct MemInf* ComMem,int n) { int i,j,t; for(j=0; jComMem[i+1].size) { t=ComMem[i].size; ComMem[i].size=ComMem[i+1].size; ComMem[i+1].size=t; } } void paixu2() { int i,j,t; for(j=0; j<4; j++) for(i=0; i<4-j; i++) if(pcbList[i].size>pcbList[i+1].size) { t=pcbList[i].size; pcbList[i].size=pcbList[i+1].size; pcbList[i+1].size=t; } } void main() { DD: menu();

管理信息系统实验报告-选课系统

管理信息系统 课题名称:学生选课管理信息系统 一、项目概述 1.项目名称:学生选课管理信息系统 2.系统设计背景: 随着信息技术的日益发展和计算机网络的普遍应用,学校的学生人数不断增加,原有的学生信息管理的手工管理模式已无法更上时代的需要。随着社会的发 展,培养计划也在不断地修改。学分制的实行给学生以更大的选择空间,但也增 加了日常教务的管理工作量。因此,利用现代计算机和数据库开发技术,在网络 环境下建立学生信息系统对于减轻学生信息管理人员的劳动强度、提高工作质量 和效率、方便管理人员对信息的查询、提高信息资源的利用率和管理水平都具有 重要意义。 学生选课信息管理系统是一个一体化集成系统,进行信息管理是从总体出发,全面考虑,保证各种职能部门共享数据,减少数据的冗余度,保证数据的兼容性和 一致性。严格地说只有信息的集中统一,信息才是资源。数据的一体化并不限制 个别功能子系统保存自己的专用数据,但为保证一体化,首先要有一个全局的系统 计划,每一个小系统的实现均要在这个总体计划的指导下进行;其次是通过标准、 大纲和手续达到系统一体化。 3.现状分析: 随着近年来的不断扩招,学生数量持续增加,相应的工作量也随之增加,开发与之适应的管理系统有必要性和可行性:方便学生查询,有利工作人员操作,更展示了高校的风貌。因此学生教学管理信息系统应运而生了。 学生教学管理信息系统包含选课子系统,网上报名子系统,个人信息子系统,修改口令子系统,教师评估子系统,查询成绩子系统。这些包涵了学生从入学到毕业的全部过程,牵涉到各系部,学生办,财务处等校内其他职能部门。 很多学校的学生选课信息管理还处在起步阶段,并不是很完善。通过关于选课问题的调查统计数据显示,同学们对网上选课系统有诸多不满意。其中,问题主要集中在

存储管理实验报告

实验三、存储管理 一、实验目的: ? 一个好的计算机系统不仅要有一个足够容量的、存取速度高的、稳定可靠的主存储器,而且要能合理地分配和使用这些存储空间。当用户提出申请存储器空间时,存储管理必须根据申请者的要求,按一定的策略分析主存空间的使用情况,找出足够的空闲区域分配给申请者。当作业撤离或主动归还主存资源时,则存储管理要收回作业占用的主存空间或归还部分主存空间。主存的分配和回收的实现虽与主存储器的管理方式有关的,通过本实验理解在不同的存储管理方式下应怎样实现主存空间的分配和回收。 在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间。用这种办法扩充的主存储器称为虚拟存储器。通过本实验理解在分页式存储管理中怎样实现虚拟存储器。 在本实验中,通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解。熟悉虚存管理的各种页面淘汰算法通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。 二、实验题目: 设计一个可变式分区分配的存储管理方案。并模拟实现分区的分配和回收过程。 对分区的管理法可以是下面三种算法之一:(任选一种算法实现) 首次适应算法 循环首次适应算法 最佳适应算法 三.实验源程序文件名:cunchuguanli.c

执行文件名:cunchuguanli.exe 四、实验分析: 1)本实验采用可变分区管理,使用首次适应算法实现主存的分配和回收 1、可变分区管理是指在处理作业过程中建立分区,使分区大小正好适合作业的需求,并 且分区个数是可以调整的。当要装入一个作业时,根据作业需要的主存量查看是否有足够的空闲空间,若有,则按需要量分割一个分区分配给该作业;若无,则作业不能装入,作业等待。随着作业的装入、完成,主存空间被分成许多大大小小的分区,有的分区被作业占用,而有的分区是空闲的。 为了说明那些分区是空闲的,可以用来装入新作业,必须有一张空闲说明表 ? 空闲区说明表格式如下:? 第一栏 第二栏 其中,起址——指出一个空闲区的主存起始地址,长度指出空闲区的大小。 长度——指出从起始地址开始的一个连续空闲的长度。 状态——有两种状态,一种是“未分配”状态,指出对应的由起址指出的某个长度的区域是空闲区;另一种是“空表目”状态,表示表中对应的登记项目是空白(无效),可用来登记新的空闲区(例如,作业完成后,它所占的区域就成了空闲区,应找一个“空表目”栏登记归还区的起址和长度且修改状态)。由于分区的个数不定,所以空闲区说明表中应有适量的状态为“空表目”的登记栏目,否则造成表格“溢出”无法登记。 2、当有一个新作业要求装入主存时,必须查空闲区说明表,从中找出一个足够大的空闲区。 有时找到的空闲区可能大于作业需要量,这时应把原来的空闲区变成两部分:一部分分

管理信息系统实验报告

实验一认识计算机硬件和网络结构 一、实验题目 认识计算机硬件和网络结构。 二、实验课时 2课时。 三、实验目的 认识计算机的主要构成部件、功能、型号、在计算机机箱内的位置、网络结构等。 四、实验内容和要求 1、利用多媒体演示计算机的主要组成部件:机箱、主板、CPU、内存条、硬盘、软驱、光驱、插槽、BUS总线、串行接口、并行接口、USB接口等; 2、打开机箱,实物展示并讲解个部件的功能及其连接; 3、机箱、主板、CPU、CPU风扇、内存条、显卡、网卡等分别如下所示。 机箱主板

内存条显卡网卡无线网卡 CPU CPU风扇硬盘 机箱背面并行接口串行接口USB接口 4、观察每个部件在机箱的位置,并掌握每个部件的功能和基本知识。 5、观察实验室网络结构图。 6、结合某网吧的例子更好地理解网络结构。 Parallel port Serial port USB port Keyboard and mouse ports

7、独立完成上述内容,并提交书面实验报告。 五、实验体会 通过本次实验,我了解了计算机的各种硬件和网络结构。知道了各种硬件的形状、功能、特征等。还知道了网络结构的流程、大体构造。这使我对计算机有了初步的认识,为以后更进一步的学习打下了坚实的基础。也为我以后的学习和生活提供了方便。 1、cpu——中央处理器,是一台计算机的运算核心和控制核心。 2、硬盘——是电脑的主要存储媒介之一。 3、主板——又叫主机板、系统板或母板,安装在机箱内,是微机最基本也是最重要的部件之一。 4、机箱——作为电脑配件的一部分,它起的主要作用是放置和固定各电脑配件,起到一个承托和保护作 用。 5、内存条——是连接CPU和其他设备的通道,起到缓冲和数据交换作用。

实验三动态分区存储管理方式的主

实验三动态分区存储管理方式的主存分配回收 一、实验目的 深入了解动态分区存储管理方式主存分配回收的实现。 二、实验预备知识 存储管理中动态分区的管理方式。 三、实验内容 编写程序完成动态分区存储管理方式的主存分配回收的实现。实验具体包括: 首先确定主存空间分配表;然后采用最优适应算法完成主存空间的分配和回收;最后编写主函数对所做工作进行测试。 四、提示与讲解 动态分区管理方式预先不将主存划分成几个区域,而把主存除操作系统占用区域外的空间看作一个大的空闲区。当作业要求装入主存时,根据作业需要主存空间的大小查询主存内各个空闲区,当从主存空间中找到一个大于或等于该作业大小的主存空闲区时,选择其中一个空闲区,按作业需求量划出一个分区装入该作业。作业执行完后,它所占的主存分区被收回,成为一个空闲区。如果该空闲区的相邻分区也是空闲区,则需要将相邻空闲区合并成一个空闲区。 实现动态分区的分配和回收,主要考虑的问题有三个: 第一,设计记录主存使用情况的数据表格,用来记录空闲区和作业占用的区域;第二,在设计的数据表格基础上设计主存分配算法;第三,在设计的数据表格基础上设计主存回收算法。 首先,考虑第一个问题: 设计记录主存使用情况的数据表格,用来记录空闲区和作业占用的区域。 由于动态分区的大小是由作业需求量决定的,故分区的长度是预先不固定的,且分区的个数也随主存分配和回收变动。总之,所有分区情况随时可能发生变化,数据表格的设计必须和这个特点相适应。由于分区长度不同,因此设计的表格应该包括分区在主

存中的起始地址和长度。由于分配时空闲区有时会变成两个分区: 空闲区和已分分区,回收主存分区时,可能会合并空闲分区,这样如果整个主存采用一张表格记录已分分区和空闲区,就会使表格操作繁琐。主存分配时查找空闲区进行分配,然后填写已分配区表,主要操作在空闲区;某个作业执行完后,将该分区变成空闲区,并将其与相邻的空闲区合并,主要操作也在空闲区。 由此可见,主存的分配和回收主要是对空闲区的操作。这样为了便于对主存空间的分配和回收,就建立两张分区表记录主存使用情况,一张表格记录作业占用分区的 “已分配区表”;一张是记录空闲区的“空闲区表”。这两张表的实现方法一般有两种,一种是链表形式,一种是顺序表形式。在实验中,采用顺序表形式,用数组模拟。由于顺序表的长度必须提前固定,所以无论是“已分配区表”还是“空闲区 表”都必须事先确定长度。它们的长度必须是系统可能的最大项数,系统运行过程中才不会出错,因而在多数情况下,无论是“已分配区表”还是“空闲区表”都有空闲栏目。已分配区表中除了分区起始地址、长度外,也至少还要有一项“标志”,如果是空闲栏目,内容为“空”,如果为某个作业占用分区的登记项,内容为该作业的作业名;空闲区表中除了分区起始地址、长度外,也要有一项“标志”,如果是空闲栏目,内容为“空”,如果为某个空闲区的登记项,内容为“未分配”。在实际系统中,这两表格的内容可能还要多,实验中仅仅使用上述必须的数据。为此, “已分配区表”和“空闲区表”在实验中有如下的结构定义。 已分配区表的定义: #define n 10// 假定系统允许的最大作业数量为n struct {float address;// 已分分区起始地址 float length; // 已分分区长度,单位为字节 int flag;// 已分配区表登记栏标志, “0表”示空栏目,实验中只支持一个字符的作业名}used_table[n];// 已分配区表 空闲区表的定义:

OS实验指导四——虚拟存储器管理

OS实验指导四——虚拟存储器管理

————————————————————————————————作者:————————————————————————————————日期: 2

《操作系统》实验指导四 开课实验室:A207、A209 2015/11/23 、2015/11/24 实验类型设计 实验项目(四)虚拟存储器管理实验 实验学时 4 一、实验目的 设计一个请求页式存储管理方案,并编写模拟程序实现。 二、设备与环境 1. 硬件设备:PC机一台 2. 软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发 环境,如C \C++\Java 等编程语言环境。 三、实验要求 1) 上机前认真复习页面置换算法,熟悉FIFO算法和LRU页面分配和置换算法的过程; 2) 上机时独立编程、调试程序; 3) 根据具体实验要求,完成好实验报告(包括实验的目的、内容、要求、源程序、实例运行 结果截图)。 四、实验内容 1、问题描述: 设计程序模拟FIFO和LRU页面置换算法的工作过程。假设内存中分配给每个进程的最小物理块数为m,在进程运行过程中要访问的页面个数为n,页面访问序列为P1, … ,Pn,分别利用不同的页面置换算法调度进程的页面访问序列,给出页面访问序列的置换过程,并计算每种算法缺页次数和缺页率。 2、程序具体要求如下: 编写程序用来模拟虚拟页式存储管理中的页面置换 要求: 1)快表页面固定为4块 2)从键盘输入N个页面号 3)输出每次物理块中的页面号和缺页次数,缺页率 4)实现算法选择

3、程序流程图 3、源程序参考: (1)FIFO 算法部分 #include "stdio.h" #define n 12 #define m 4 void main() { int ym[n],i,j,q,mem[m]={0},table[m][n]; char flag,f[n]; printf("请输入页面访问序列\n "); for(i =0;i

管理信息系统实验3

洛阳理工学院 课内实验报告 课程名称管理信息系统 设计题目实验三:系统设计 专业工程管理 班级 B150703 学号 B 姓名肖志涵 完成日期 2017年11月17日

一、实验目的或要求 1、熟练掌握数据流程图的绘制 2、编制数据字典 3、熟悉管理信息系统的代码设计 4、设计系统的功能结构图 二、主要设备 DELL optiplex 380 ,Winxp、Word 2010 三、实验内容 1、请根据以下要求画出数据流程图:读者到图书馆还书,图书馆工作人员根据读者文档和图书文档的数据办理还书处理。如果还书时所还书已过期,则计算罚款,并办理罚款手续或记入罚款文档。同时检查预约文档中有无其它读者预约此书,若有则根据预约数据发到书通知。 2、根据下述情况制出表格分配图。 采购部门准备的采购单为一式四份:第1张送供货方;第Z张送交收货部门,用于登入待收货登记册;第3张交会计部门作应付款处

理,记人应付账;第4张留在采购部门备查。 3、某企业负责处理订货单的部门每大能收到40份左右的来自顾客的订货单,订货单上的项目包括订货单编号、顾客编号、产品编号。数量、订货日期、交货日期等。试根据这一业务情况,写出数据字典中的“订货单”数据流定义。 4、设计出学校教学管理信息系统的代码,内容包括学号,院系编号,专业编号,班级编号,课程编号,教师代码,教室代码。说明相关代码的含义。 5、设计出学校教学管理信息系统的功能结构图。并对每一个功能进行详细说明。 四、思考题 1、用几何级数法设计代码检验位的方案如下:原代码共4位,从左到右取权16,8,4,2;对乘积和以11为模取余作为校验码。试问原代码为6137的校验位应是多少: 2、系统设计中,为什么要先作输出设计,后作输入设计 1: 取权16,8,4,2(从左到右),取模11,则,

实验三 存储管理指导

实验三存储管理 实验目的 1) 加深对存储管理的理解; 2) 掌握几种页面置换算法; 3) 通过实验比较各种置换算法的优劣。 实验要求 1) 编写程序完成实验内容; 2) 对测试数据进行分析; 3) 撰写实验报告。 实验内容 1) 定义为进程分配的物理块数; 2)定义进程运行所需访问的页面号; 3)定义页的结构; 4)模拟两种页面置换算法; 5)计算页面置换算法的命中率; 6)比较两种算法的优劣。 实验原理 1.虚拟存储 基于局部性原理,应用程序在运行之前,没有必要全部装入内存,仅须将那些当前要运行的少数页面或段先装入内存便可运行,其余部分暂留在盘上。程序在运行时,如果它所要访问的页(段)已调入内存,便可继续执行下去;但如果程序所要访问的页(段)尚未调入内存(称为缺页或缺段),此时程序应利用OS所提供的请求调页(段)功能,将它们调入内存,以使进程能继续执行下去。如果此时内存已满,无法再装入新的页(段),则还须再利用页(段)

的置换功能,将内存中暂时不用的页(段)调至盘上,腾出足够的内存空间后,再将要访问的页(段)调入内存,使程序继续执行下去。 2.页面置换算法 1)最佳(Optimal)置换算法 最佳置换算法是由Belady于1966年提出的一种理论上的算法。其所选择的被淘汰页面,将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面。采用最佳置换算法,通常可保证获得最低的缺页率。但由于人们目前还无法预知一个进程在内存的若干个页面中,哪一个页面是未来最长时间内不再被访问的,因而该算法是无法实现的,但可以利用该算法去评价其它算法。 2)最近最久未使用(LRU)置换算法 FIFO置换算法性能之所以较差,是因为它所依据的条件是各个页面调入内存的时间,而页面调入的先后并不能反映页面的使用情况。最近最久未使用(LRU)的页面置换算法,是根据页面调入内存后的使用情况进行决策的。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法是选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当须淘汰一个页面时,选择现有页面中其t值最大的,即最近最久未使用的页面予以淘汰。 LRU置换算法虽然是一种比较好的算法,但要求系统有较多的支持硬件。为了了解一个进程在内存中的各个页面各有多少时间未被进程访问,以及如何快速地知道哪一页是最近最久未使用的页面,须有两类硬件之一的支持:寄存器或栈。 a)寄存器 为了记录某进程在内存中各页的使用情况,须为每个在内存中的页面配置一个移位寄存器,可表示为R=R n-1R n-2R n-3… R2R1R0当进程访问某物理块时,要将相应寄存器的R n-1位置成1。此时,定时信号将每隔一定时间(例如100 ms)将寄存器右移一位。如果我们把n位寄存器的数看做是一个整数,那么,具有最小数值的寄存器所对应的页面,就是最近最久未使用的页面。 b)栈 可利用一个特殊的栈来保存当前使用的各个页面的页面号。每当进程访问某页面时,便将该页面的页面号从栈中移出,将它压入栈顶。因此,栈顶始终是最新被访问页面的编号,而栈底则是最近最久未使用页面的页面号。

管理信息系统实验报告1

《管理信息系统》 实验报告 题目:熟悉MIS-速达服装管理系统实验报告学号xxx 姓名xxx 指导教师xxx 成绩 时间:2011 年10 月06 日

1. 在熟悉速达服装管理软件时,要求每个同学以自己学号和姓名的身份建立自己的帐套。请用自己的语言阐述你对“帐套管理”的理解。 答:帐套管理就是一个管理系统,是管理人员进行管理的一个工具,让人更容易更快地了解一个企业的各方面信息。 它可以建立基础档案(部门及职员档案、客户档案和供应商档案、存货信息、存货档案、期初数据等)和日常业务(填制销售订单并进行审核、根据销售合同填制销售发货单并审核、进行销售开票处理等),以及期末工作(月末结账)和账簿查询(查询销售订单执行情况表、销售发货开票款勾对表、销售明细账、销售明细表等) 2. 以你自己完成的实验为例,阐明“数据和信息”的关系(可以画图或截图说明)。 答:数据与信息的关系为: 数据是信息的载体,信息是从数据中提炼出来的,不是所有的数据都是信息。例如0在数学中它所表示的信息是一个数字,但在现实生活中,有时可以表示有意义的信息,而有时则没有任何意义。数据不等于信息,数据只是信息表达方式中的一种。 数据是信息的一种表现形式,数据通过能书写的信息编码表示信息,信息有多种表现形式。由于数据能够书写,因而它能够被记录、存储和处理,以下的“货品-基础资料”中,就是数据被书写,一书写的形式让我们了解到库存商品的编码以及属性价格等信息。 3. 根据所介绍的“系统”概念,结合你对本软件的操作体验,请画图描述速达服装管理系统的基本结构并辅以文字说明。 答:系统是按一定的关系,有条有理的组成的整体。述速达服装管理系统既有横向综合又有纵向综 合的管理系统,从业务导航的纵向综合有进货管理、销售管理等,从横向综合的菜单栏有文件、资进销存等,如下图,系统是由子系统构成的,每一个业务下面都有子系统,也是跟详细的内容,例如:进货管理下面有采购订单、销售订单等。

实验 存储器管理(二)

存储器管理(二) 一、目的 本课题实验的目的是,使学生实验存储器管理系统的设计方法;加深对所学各种存储器管理方案的了解;要求采用一些常用的存储器分配算法,设计一个存储器管理模拟系统并调试运行。 二、题目 存储器管理 三、要求及提示 1、要求采用一种常用的存储器分配算法,设计一个存储器管理模拟系统。允许进行 多次的分配和释放,并可向用户反馈分配和释放情况及当前内存的情况;采用 “命令菜单”选择和键盘命令输入的会话方式,根据输入请求调用分配模块, 或回收模块,或内存查询模块,或最终退出系统。 2、编程实现。 3、工具:C语言或其它高级语言 4、实验时间:3学时 四、实验报告 1、写出存储器管理的思想。 2、画出算法流程图和设置的数据结构。 3、写出调试程序出现的问题及解决的方法。 4、打印实验报告及程序清单。 5、报告给出测试的结果。 五、范例 采用可变分区存储器管理方案的模拟系统。 1、问题描述 该模拟系统的外部特性与真实系统基本一样。存储分配算法采用首次适应法。用“拼,接”和“紧凑”技术来处理存储器碎片。 2、算法 存储分配算法采用首次适应(FF)法。根据指针freep查找自由链,当找到第一块可满足分配请求的空闲区时便分配之。当某空闲区被分配后的剩余空闲区空间大于规定的碎片最小容量min时,则形成一个较小的空闲区留在自由链中。 回收时,根据MAT将指定分区链入自由链。若该分区有前邻或后邻空闲分区,则将他们拼接成一块加大的空闲区。 当某个分配请求不能被满足,但此时系统中所有碎片总量满足分配请求的容量时,系统立即进入内存“紧凑”以消除碎片。即将各作业占用区集中下移到用户内存区的下部(高地址部分),形成一片连接的作业区,而在用户内存区的上部形成一块较大的空闲区。然后再进行分配。 本系统的主要程序模块包括:分配模块ffallocation,回收模块ffcolection,紧凑模块coalesce及命令处理模块menu。Menu用以模拟系统的输入,采用“命令菜单”选择和键盘命令输入的会话方式,根据输入请求调用分配模块,或回收模块,或内存查询模块,或最终退出系统。 系统的主流程如图3所示。 3、数据结构 (1)自由链与区头。内存空闲区采用自由链结构。链首由freep指向,链中各个空

管理信息系统课程实验三

管理信息系统课程 实验报告(三) 实验名称:管理信息系统案例分析 学号: 姓名: 院(系): 专业班级: 实验成绩:

案例一:一个能源企业的信息化经验问题 1:通过学习该案例,你认为企业在加强信息化建设中应抓好哪几项工作? 答案:结合该案例可以看到,该集团公司在前期虽然实现了部分的信息化,但是显然领导不是特别重视,因此信息化建设比较分散,进而无法满足和适应管理要求,不仅没有带来效益,反而增加了工作的负荷和资源的浪费。再后来公司领导认识到了信息化对基层管理控制的重要性,开始进行信息化建设,从而改善了公司的运行情况,提高了工作效率,为公司带来效益。由此可以看出,在建设与加强信息化建设的过程中要注意以下几点:1、对信息化有个具体的认识,认识到信息化对企业运行和管理方面的重要性。 2、根据公司的整体结构来建设一加强信息化的建设,同时根据信息化系统对内部结构进行一定的调整,理顺管理系统,改革业务流程。 3、建立统一的信息系统平台,威统一规范信息系统铺平道路,似的信息资源得到更广泛的共享,不仅是各个部门更好的合作,而且可以使领导能够更加全面、

动态、及时、准确的掌握公司的经营状况。 案例二:奇瑞公司的SAP/ERP实施与信息化建设 问题1:奇瑞公司的ERP实施成功的因素有哪些? 答案:奇瑞公司的ERP实施成功减低了成本、提高了效率、提升了效益,而造就这一切的因素有以下几点: 1、公司领导对信息化有着清晰的认识,对信息化非常重视, 2、ERP项目的实施是以公司的具体情况与IRM公司的顾问帮助为前提的, 这样不仅符合公司的具体情况,而且还吸取了IRM公司的经验,可以说为ERP的成功奠定了坚实的基础。 3、公司领导层富有战略眼光,将统一平台,综合利用SAP的集成信息作为 奇瑞公司重要战略之一。认为制造业信息化是发展的必然趋势,只有通过ERP的系统的实施来进行企业信息化管理,才能够增强企业竞争优势。

存储管理实验报告.doc

存储管理实验报告

北方工业大学 《计算机操作系统》实验报告 实验名称存储管理实验序号 2 实验日期2013.11.27实验人 一、实验目的和要求 1.请求页式存储管理是一种常用的虚拟存储管理技术。本实验目的 是通过请求页式存储管理中页面置换算法的模拟设计,了解虚拟存储 技术的特点,掌握请求页式存储管理的页面置换算法。 二、相关背景知识 1.随机数产生办法 关于随机数产生办法, Linux 或 UNIX 系统提供函数 srand() 和 rand() ,分 别进行初始化和产生随机数。 三、实验内容 (1).通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成: 1.50% 的指令是顺序执行的; 2.25% 的指令是均匀分布在前地址部分; 3.25% 的指令是均匀分布在后地址部 分;具体的实施方法是: 1.在[0, 319]的指令地址之间随机选取一起点 m; 2.顺序执行一条指令,即执行地址为 m+1 的指令; 3.在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’; 4.顺序执行一条指令,其地址为 m’+1; 5.在后地址 [m ’+2, 319]中随机选取一条指令并执行; 6.重复上述步骤 1~5,直到执行 320 次指令。 (2)将指令序列变换成页地址流,设 1.页面大小为 1K ; 2.用户内存容量为 4 页到 32 页; 3.用户虚存容量为 32K 。 在用户虚存中,按每 K 存放 10 条指令排列虚存地址,即 320 条指令在虚存 中存放的方式为: 第 0 条至第 9 条指令为第 0 页(对应虚存地址为 [0, 9]); 第 10 条至第 19 条指令为第 1 页(对应虚存地址为 [10, 19]); 第 310 条至第 319 条指令为第 31 页(对应虚存地址为 [310,319]); 按以上方式,用户指令可以组成 32 页。 (3)计算并输出下述各种算法在不同内存容量下的命中率。

管理信息系统实验报告

《管理信息系统》实验报告 实验项目:教务处排课系统分析 实验学时:18 学时 姓名: 学号: ________________ 专业班级: 实验时间: _______ 实验成绩: __________________________

东北财经大学 《管理信息系统》实验报告实验项目名称:

沟通能力,养成对问题全面分析、思考和严谨认真的态度,增强创新意识五、教师评语 签名: 日期: 管理系统实验报告

实验小组成员: 实验对象:教务处排课信息系统实验对象背景介绍:教务管理系统是一个庞大而复杂的系统,它包括:学生学籍管理 系统、排课系统、教师管理系统、学生成绩系统、系统设置、班级信息系统、教学培养计划管理系统、教学资源管理系统、招生系统教务信息发布系统和事务处理系统。随着科学技术 的进步与相应的管理信息系统的升级,教务系统管理平台充分利用互联网络B/S管理信息模 式,以网络为平台,为各个学校教务系统的管理提供一个平台,帮助学校管理教务系统,用一个帐号解决学校教务教学管理,并且学校可以自由选择学校需要的教务管理系统,灵活地 定制符合学校自己实际情况的教务系统。教务管理系统内部子系统多样庞杂,今天我们主要 讨论的研究对象是排课管理信息系统。 排课管理系统是每个学校必不可少的内容,它的优劣直接学校教学工作质量和学校的正常教 学活动秩序。随着现在生源数量的不断增长以及各行业竞争日益激烈,为了满足中国社会主 义事业发展对高素质人才的需求,各大高校都在尽自己努力,以本校现状及需求作为基础,以科技发展进步作为依托,发展完善一个功能完整,操作简单快捷,高效率,与本校其他教 务管理系统良好适应的排课系统与之配套,使教师等教学资源利用达到最大化,为学生提供 优良的教育环境。因此,东北财经大学作为一个知名的财经类高校,要达到适应教育现状及 提高自身教育层次的目标,完善教务排课管理系统显得尤为重要。 系统功能简述 排课管理系统需要合理调配各个班级专业所需的专业课程选修必修课程,相应教师,教师及 上课班级,尽可能全面的考虑到教师的身体状况,工作条件,家庭状况甚至与学校距离,教 师及学生时间,各种课程按重要程度以及学生兴奋点和接受能力合理排序,教师的容量用途, 学校集体活动或教师会议等多方面因素,以计算机安排为主,手工调整为辅的方式做出各个 院系各个专业各个班级的课程安排。 排课管理系统的目标不仅是对于原有系统进行改进提高,还使课程管理科学化系统化准确化,减少手工录入的误差可能性,方便操作者的随时添加、查询、修改,是统计表格格式规范化统一化,提高工作效率,降低人工成本,提高处理数据能力与速度,提高教学质量,优化学校教务管理系统,为学校的进一步发展提供技术支持与可能性。 系统分析 (1 )系统分析任务:根据系统设计任务书所确定的范围,并在充分认识原有系统的基础上进行详细的调查分析,通过问题识别、可行性分析、详细调查、系统化分析,进而确定新系统的基本目标和逻辑功能结构,最后完成新系统的逻辑方案设计。 (2)可行性分析和详细调查概述:由于实验的限制,假定建立排课管理信息系统在管理上、 技术上、经济上都是可行的。而详细调查采用一定的调查方法发现了现行系统有以下优缺点: 现有系统优缺点分析 1?选课分为预选、正选、补退选,一定程度上完善了选课系统。 2?在选课中,按年级差异区分次序,一定程度上缓解短时间内系统压力,保证了高年级学生 顺利完成课业。 3?学生面临选课时,具有多重选择性,使学生有机会挑选感兴趣的课程,更加人性化设置。 4?正选是以随机抽选的形式来的话,会更具有公平性。 5?学生可以自主跨专业选择自己喜欢的课,使选课更具有自主性。

实验三 虚拟存储器管理

实验三虚拟存储器管理 一、实验目的 为了使大的进程(其地址空间超过主存可用空间)或多个进程的地址空间之和超过实际主存空间时,仍能运行,引入了虚拟存储器的概念。使进程的一部分地址空间在主存,另一部分在辅存,由操作系统实现多级存储器的自动管理,实现主存空间的自动覆盖。模拟请求分页虚拟存储器管理技术中的硬件地址变换、缺页中断以及页式置换算法,处理缺页中断。 通过本实验,使学生对请求分页存储管理的概念有一个清楚的理解。 二、实验内容 1、模拟请求分页存储管理中的硬件地址变换的过程 (1)请求分页虚拟存储器管理技术是把进程地址空间的全部信息存放在磁盘对换区上。当进程被选中运行时,先把进程的开始几页装入主存并启动运行。为此在为进程建立页表时,应说明哪些页已在主存,哪些页不在主存。页表的格式如表1 所示。 在表1中 ①"标志位"表示对应页是否已经装入主存的标志: "0"表示对应页未装入主存;"1"表示对应页已装入主存。 ②"主存块号"表示该页对应的主存块号。 ③"修改位"指示该页进主存后是否修改过的标志。 ④"外存地址"表示该页所在的外存地址。 设计一个主存分块表,假定分配给进程的主存块数为M,且该进程开始的M页已装入主存。 (2)进程执行时,指令中的逻辑地址指出指令或操作数的地址中的页号和页内地址。硬件地址转换机构按页号查页表。 ①若该页的有效位为"1" ,表示该页已在主存,从而找到该页对应的主存块号。根据如下的关系式,计算出欲访问的主存地址: 绝对地址=块号×块的长度+页内地址 由于页的大小为2 的整次幕,所以只要将块号与页内地址相拼接,放入主存地址寄存器,形成绝对地址。不去模拟指令的执行,而是输出被转换的地址即可。 ②若该页的有效位为"0" ,对应的页不在主存,由硬件产生缺页中断,转操作系统处理。这里不去设计缺页处理程序,仅输出"*该页号的页不在主存,产生缺页中断"即可,以表示产生了一次缺页中断。 假定主存的每块长度为128个字节。现有一个具有8页的进程,系统为它分配了4 个主存块(即m=4)。其中第0~3页已经装入主存。该进程的页表如表2 所示,进程执行的指令序列如表3 所示,地址变换算法流程如图1所示。

实验四 操作系统存储管理实验报告

实验四 操作系统存储管理实验报告 一、实验目的 存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。 本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。 二、实验内容 (1) 通过计算不同算法的命中率比较算法的优劣。同时也考虑了用户内存容量对命 中率的影响。 页面失效次数为每次访问相应指令时,该指令所对应的页不在内存中的次数。 在本实验中,假定页面大小为1k ,用户虚存容量为32k ,用户内存容量为4页到32页。 (2) produce_addstream 通过随机数产生一个指令序列,共320条指令。 A 、 指令的地址按下述原则生成: 1) 50%的指令是顺序执行的 2)25%的指令是均匀分布在前地址部分 3) 25%的指令是均匀分布在后地址部分 B 、 具体的实施方法是: 1) 在[0,319]的指令地址之间随机选取一起点m ; 2) 顺序执行一条指令,即执行地址为m+1的指令; 3) 在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m ’; 4) 顺序执行一条指令,地址为m ’+1的指令 5) 在后地址[m ’+2,319]中随机选取一条指令并执行; 6) 重复上述步骤1)~5),直到执行320次指令 页地址流长度页面失效次数命中率- =1

C、将指令序列变换称为页地址流 在用户虚存中,按每k存放10条指令排列虚存地址,即320条指令在虚存中 的存放方式为: 第0条~第9条指令为第0页(对应虚存地址为[0,9]); 第10条~第19条指令为第1页(对应虚存地址为[10,19]); 。。。。。。 第310条~第319条指令为第31页(对应虚存地址为[310,319]); 按以上方式,用户指令可组成32页。 (3)计算并输出下属算法在不同内存容量下的命中率。 1)先进先出的算法(FIFO); 2)最近最少使用算法(LRU); 3)最佳淘汰算法(OPT); 4)最少访问页面算法(LFR); 其中3)和4)为选择内容

实验三 存储管理实验2014012622沈桂江

实验三存储管理实验2014012622沈桂江西北农林科技大学信息工程学院实习报告课程计算机操作系统学院信息工程专业年级软件141 学号 2014012622 姓名沈桂江 周次 10 交报告时间成绩 实验三存储管理实验 一. 目的要求: 1、通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解。熟悉虚存管理的各种页面淘汰算法。 2、通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。二( 实习内容: 1、设计一个固定式分区分配的存储管理方案,并模拟实现分区的分配和回收过程。 可以假定每个作业都是批处理作业,并且不允许动态申请内存。为实现分区的分配和回收,可以设定一个分区说明表,按照表中的有关信息进行分配,并根据分区的分配和回收情况修改该表。 2、设计一个可变式分区分配的存储管理方案。并模拟实现分区的分配和回收过程。 对分区的管理法可以是下面三种算法之一: 首次适应算法 循环首次适应算法 最佳适应算法 3、编写并调试一个段页式存储管理的地址转换的模拟程序。

首先设计好段表、页表,然后给出若干个有一定代表性的地址,通过查找段表页表后得到转换的地址。 要求打印转换前的地址,相应的段表,页表条款及转换后的地址,以便检查。三(实习任务及完成情况: 1.设计存储算法流程图: 图1-1

图1-2 段表、页表和内存的关系 2.第一道题:设计一个固定式分区分配的存储管理方案,并模拟实现分区的分配和回收过程。 (1)编写程序源代码: #include #define N 5 struct freearea /*定义一个空闲区说明表结构,并初始化变量*/ { int startaddress;/*空闲区地址*/ int size;/*空闲区大小*/ int state;/*空闲区状态:0为空表目,1为可用空闲块*/ } freeblock[N]= {{20,20,1},{80,50,1},{150,100,1},{300,30,0},{600,100,1}}; /*定义为作业分配主存空间的函数alloc()*/ int alloc(int applyarea) /*applyarea为作业申请量*/ { int i,tag=0;/*tag为检查是否有满足作业若需要的空闲区的标志*/ for(i=0; iapplyarea) { startaddress=freeblock[i].startaddress+applyarea; freeblock[i]. freeblock[i].size=freeblock[i].size-applyarea;

实验3虚拟存储器管理

淮海工学院计算机科学系实验报告书 课程名:《操作系统原理》 题目:实验三虚拟存储器管理 班级:Z软件52 学号:2017140595 姓名:郭文静

1、实验目的与要求 本实验模拟请求页式虚存管理系统的页面置换情况。实验程序能模拟一个拥有若干个虚页的进程在给定的若干个实页中运行、并在缺页中断发生时分别使用FIFO和LRU算法进行页面置换的情形。要求程序运行时屏幕能显示出置换过程中的状态信息并输出访问结束时的页面命中率。并通过为该进程分配不同的实页数,来比较几种算法的稳定性。 2、实验内容或题目 本实验要求使用C/C++语言编程模拟一个拥有若干个虚页的进程在给定的若干个实页中运行、并在缺页中断发生时分别使用FIFO和LRU算法进行页面置换的情形。其中虚页的个数可以事先给定(例如10个),对这些虚页访问的页地址流(其长度可以事先给定,例如20次虚页访问)可以由程序随机产生,也可以事先保存在文件中。要求程序运行时屏幕能显示出置换过程中的状态信息并输出访问结束时的页面命中率。程序应允许通过为该进程分配不同的实页数,来比较两种置换算法的稳定性。 实验说明: (1)设计中虚页和实页的表示 本设计利用C/C++/Java语言的结构体来描述虚页和实页的结构。 在虚页结构中,pn代表虚页号,因为共10个虚页,所以pn的取值范围是0—9。pfn代表实页号,当一虚页未装入实页时,此项值为-1;当该虚页已装入某一实页时,此项值为所装入的实页的实页号pfn。time项在FIFO算法中不使用,在LRU中用来存放对该虚页的最近访问时间。 在实页结构中中,pn代表虚页号,表示pn所代表的虚页目前正放在此实页中。pfn代表实页号,取值范围(0—n-1)由动态指派的实页数n所决定。next 是一个指向实页结构体的指针,用于多个实页以链表形式组织起来,关于实页链表的组织详见下面第4点。 (2)关于缺页次数的统计

相关文档