请求页式管理缺页中断模拟设计FIFO,OPT

请求页式管理缺页中断模拟设计FIFO,OPT
请求页式管理缺页中断模拟设计FIFO,OPT

课程设计

题目系统软件开发实训A 学院计算机科学与技术学院专业计算机科学与技术专业班级计算机1102班

姓名田蓝

指导教师李玉强

2014 年 1 月13 日

课程设计任务书

学生姓名:田蓝专业班级:计算机1102班

指导教师:李玉强工作单位:计算机科学与技术学院题目: 请求页式管理缺页中断模拟设计--FIFO、OPT

初始条件:

1.预备内容:阅读操作系统的内存管理章节内容,了解有关虚拟存储器、页式存储管理等概念,并体会和了解缺页和页面置换的具体实施方法。

2.实践准备:掌握一种计算机高级语言的使用。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写

等具体要求)

1.实现指定淘汰算法。能够处理以下的情形:

⑴能够输入给作业分配的内存块数;

⑵能够输入给定的页面,并计算发生缺页的次数以及缺页率;

⑶缺页时,如果发生页面置换,输出淘汰的页号。

2.设计报告内容应说明:

⑴课程设计目的与功能;

⑵需求分析,数据结构或模块说明(功能与框图);

⑶源程序的主要部分;

⑷测试用例,运行结果与运行情况分析;

⑸自我评价与总结。

时间安排:

设计安排3周:

查阅、分析资料 1天

系统软件的分析与建模 4天

系统软件的设计 5天

系统软件的实现 3天

撰写文档 1天

课程设计验收答辩 1天

设计验收安排:设计周的第三周的指定时间到实验室进行上机验收。

设计报告书收取时间:课程设计验收答辩完结时。

(注意事项:严禁抄袭,一旦发现,抄与被抄的一律按0分记)

指导教师签名: 2013 年 12 月 10日

系主任(或责任教师)签名:2013 年12 月10日

请求页式管理缺页中断模拟设计

——FIFO、OPT

1课程设计目的与功能

1.1设计目的

结合《操作系统》所学内存页式管理章节,掌握虚拟内存设计的重要性,熟悉和掌握请求分页式存储管理的实现原理,通过分析、设计和实现页式虚拟存储管理缺页中断的模拟系统,重点掌握当请求页面不在内存而内存块已经全部被占用时的替换算法(主要通过FIFO和OPT实现),并考察替换算法的评价指标——缺页次数和缺页率,得到每次淘汰的页面。

高级语言设计并实现出的结果程序要能够很好地显示页面调入和替换详细信息,能够输入要访问的页面的顺序,及能够输入给作业分配的内存块数。

1.2初始条件及可发环境

1.2.1初始条件

1.预备内容:阅读操作系统的内存管理章节内容,了解有关虚拟存储器、页式存储管理等概念,并体会和了解缺页和页面置换的

具体实施方法。

2.实践准备:掌握一种计算机高级语言的使用。

1.2.2开发环境

(1)使用系统:Windows 7

(2)使用语言:java

(3)开发工具:eclipse

1.3功能实现

设计的结果程序能实现FIFO、OPT算法模拟页式存储管理缺页中断,主要能够处理以下的情形:

(1) 用户能够输入给定分配的内存块数;

(2) 用户输入给定的页面,并计算发生缺页的次数、缺页率及淘汰页面次序;

(3)缺页时,如果发生页面置换,输出淘汰的页号;

(4) 程序可随机生成页面序列,或用户输入;

(5)能够显示分配的内存块数的存储情况

2需求分析及设计说明

2.1需求分析

由于纯页式存储管理提高了内存的利用效率,但并不为用户提供虚存,并且会产生磁盘碎片问题。用户程序将受到物理内存大小的限制。而

虚存的存储管理技术——请求分页存储管理技术和请求分段技术,则很好

的解决了这个问题。该设计虚拟实现请求分页管理(只实现FIFO和OPT)。

请求分页系统是在分页系统的基础上,增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。它允许只装入部分页面的程序和数

据,便启动运行。以后,再通过调页功能和页面置换功能,陆续把即将要

运行的页面调入内存,同时把暂时不运行的页面换出到外存上,置换时以

页面为单位。实现将程序正在运行时所需的但尚未在内存的页面调入内存,再将内存中暂时不用的页面从内存置换到外存磁盘上。

而我选择的是FIFO,OPT调度算法。主要考虑三种情况:1.不缺页,此时我不需要从外存中调入新的页面进入内存;2.缺页,但是内存空间块

数没有满,不需要淘汰内存中的页面,把缺页的页面直接调入内存中;3.

缺页,但是内存空间已经满了,访问页面时需要淘汰旧的的页面,从外存

中调入新的页面进入内存中。

请求分页的具体实现过程如图1

图1请求分页流程图

2.2设计说明

2.2.1算法分析

在进程运行过程中,若其所要访问的页面不在内存,需要把它们调入内存,但已无空闲已空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区。但应将哪个页面调出,必须根据替换算法来确定。

该设计采用的是常见置换算法中的先进先出(FIFO)、理想型淘汰算法OPT(Optimal Replacement Algorithm)。

详细算法原理如下:

FIFO(先进先出算法)基本思想:总是选择在内存驻留时间最长的一页将其淘汰,因为最早调入内存的页,不再被使用的可能性比近期调入内存

的大。该算法实现简单,只需要把一个进程调入内存的页面,按先后次序连结成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但是该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如有全局变量、常用函数,例程等的页面,FIFO算法并不能保证这些页面不被淘汰。

使用FIFO替换算法效率比较低,可能会比理想型算法要多出一倍。低的原因是:基于处理器按线性顺序访问地址空间这一假设。事实上,许多时候,处理器不是按线性顺序访问地址空间的。例如,执行循环结构的程序段。

使用FIFO算法时,在未给进程或作业分配足够它所需要的页面数时,有时会出现分配的页面数增,缺页次数反而增加的现象(Belady现象)。例如针对请求序列:1 2 3 4 1 2 5 1 2 3 4 5,若分配3个可用内存块,使用FIFO算法,一共会缺页9次,缺页率:75%;而如果分配4个可用内存块,则一共会缺页10次,缺页率:83.3%。

OPT(理想型淘汰算法)基本思想:当要调入一新页而必须淘汰一旧页时,所淘汰的页是以后不再使用的,或者是以后相当长的时间内不会使用的。

采用理想型替换算法,通常可保证获得最低的缺页率。但是由于人们目前无法预知一个进程在内存的若干个页面中,哪个页面是未来最长时间内不再被访问的,因而该算法是无法实现的,但是在模拟设计中,由于是事先给定一个页面序列,即知道各个时刻以前和以后的页面出现情况,所以可实现该算法。在实际系统中,虽无法实现理想型淘汰算法,但是可用它来评价其他替换算法。

2.2.2数据结构

主函数运用两个数组a[]、b[],数组a[]用于存放输入的待处理页面号,b[]数组用于记录内存中页面的置换情况。

FIFO(先来先出算法):将每次进入的页面往数组b[]的最后添加,当缺页发生时,则淘汰b[0]即可。定义两个变量:是否缺页的变量f:f=0时:表示不缺页,不需要淘汰页面;f=1时,表示缺页。而缺页时又需要分两种情况,这时定义另一个变量v,来表示缺页时,内存是否有空余:v=1时:表示发生缺页,

但是内存空间有空余,不需要淘汰页面,直接把缺页的页面号调入内存中;v=0时:表示发生缺页,但是内存空间已经满了,需要淘汰页面,再把缺页的页面号调入内存中。

OPT(理想型淘汰算法):也是运用两个跟FIFO算法中一样含义的数组a[],b[].不缺页的情况和缺页,但是内存空间有空余的情况的实现跟FIFO一样的,但是主要的区别是缺页但是空间已满,需要淘汰页面的情况,OPT中淘汰页面的算法比FIFO中较复杂。运用了HashMap,通过来记录内存空间数组b[]中的每一个元素在a[]中即将访问的页面号中对应的最远的位置,以便来确定a[]中在内存空间的但未被访问的页面的最远的页面号的距离。也通过一个返回类型为HashMap的函数:compare(a,b,i)来实现求得对应的最远距离的元素,从何确定应该淘汰内存中的哪一个页面。在OPT中也定义两个变量:是否缺页的变量f:f=0时:表示不缺页,不需要淘汰页面;f=1时,表示缺页。而缺页时又需要分两种情况,这时定义另一个变量v,来表示缺页时,内存是否有空余:v=1时:表示发生缺页,但是内存空间有空余,不需要淘汰页面,直接把缺页的页面号调入内存中;v=0时:表示发生缺页,但是内存空间已经满了,需要淘汰页面,再把缺页的页面号调入内存中。

3源程序的主要部分

3.1主函数输入输出部分:

public static void main(String[] arge) throws IOException

{

System.out.print("请输入页面使用列表,以空格分开:");

Scanner sc = new Scanner(System.in);

String input = sc.nextLine();

String[] aList = input.split("\\s");

int aFIFO[] = new int[aList.length];

int aOPT[] = new int[aList.length];

try{

for( int strIndex = 0; strIndex < aList.length; strIndex++ ){

aFIFO[strIndex] = Integer.valueOf( aList[strIndex]);

aOPT[strIndex] = Integer.valueOf( aList[strIndex]);

}

} catch(Exception e){

System.out.println("输入的必须是数字,请重新开始!!!");

System.exit(0);

}

System.out.print( "请输入内存空间大小:" );

Scanner bsc = new Scanner(System.in);

int bLength = bsc.nextInt();

System.out.println( bLength );

if( bLength == 0 ){

System.out.println( "内存空间输入错误,当前输入为0" );

System.exit(0);

}

int bFIFO[] = new int[bLength];

int bOPT[] = new int[bLength];

for( int bIndex = 0; bIndex < bLength; bIndex++ ){

bFIFO[bIndex] = -2;

bOPT[bIndex] = -2;

}

Person person = new Person();

System.out.println( "FIFO" );

person.fifo(aFIFO, bFIFO);

System.out.println("\nOPT");

person.opt(aFIFO, bOPT);

}

3.2 FIFO主要代码:

public void fifo( int a[], int b[] )

{

i nt count = 0; //用来记录缺页的次数

int n = a.length;

int m = b.length;

int i,j,f,v;

for( i = 0; i < n; i++ ){

f = 1; //f=1:表示缺页,需要淘汰页面;f=0:表示不缺页

v = 0; //v=1:表示发生缺页!内存有空余,可直接调入内存;v=0;发生缺页,内存空间已满,需要淘汰页面

for( j = 0; j < m; j++ )

{

if( b[j] == a[i] ){ //表示不缺页

f = 0;

}

if( b[j] == -2){ //b【j】的初始值为-2,表示发生缺页,但内存有空余

v = 1;

break;

}

}

if( f == 0 ){

System.out.println( "不缺页~" );

} else if( v == 1 ) {

System.out.print(a[i] + " ");

System.out.println("发生缺页!内存有空余,可直接调入内存~");

b[j] =a [i];

count++;

} else {

System.out.print(a[i]);

System.out.print("发生缺页! 淘汰页面为:" + b[0]); //每次发生缺页时都淘汰b[0]

/*淘汰页面的过程,因为缺页时都淘汰b[0],故淘汰页面时将b[1~m-1]向前移动,即b[j]=b[j+1]

* 而把新调入内存的页面号加入到数组的最后一个元素b【m-1]中*/

System.out.println();

for(j=0;j

{

b[j]=b[j+1];

}

b[m-1]=a[i];

count++;

}

System.out.print("内存空间的存储情况为: ");

for( int t = 0; t < b.length; t++ ){

System.out.print(b[t] + " ");

}

System.out.println(" ");

}

double rate = (double)count/n;

System.out.println("发生缺页的次数: " + count);

System.out.println("缺页率为:" + rate);

}

3.3 OPT主要代码:

public void opt(int a[],int b[])

{

int count = 0; //用来记录缺页的次数

int n = a.length;

int m = b.length;

int i,j,f,v;

for( i = 0; i < n; i++ ){

f = 1;

v = 0;

for( j = 0; j < m; j++ ) {

if( b[j] == a[i]) f = 0;

if( b[j] == -2 ) {

v = 1;

break;

}

}

if( f == 0 ) {

System.out.println("不缺页~");

}else if( v == 1 ) {

System.out.print( a[i] + " ");

System.out.println( "发生缺页!内存有空余,可直接调入内存~");

b[j] = a[i];

count++;

}

else{

int distance = 0; //表示b[]中的所有元素中在a[]中最远的的下标

int bFarEstIndex = 0; //表示要淘汰的页面在b[]中的下标

HashMap targetMap = compare( b, a, i );

for( int bIndex = 0; bIndex < b.length; bIndex++ ){

if( targetMap.get( b[bIndex] ) == 0 ){ //表示b[bIndex]在a[]未被访问的页面号中再也不会出现,直接淘汰,跳出循环

System.out.print( a[i] );

System.out.println( "发生缺页! 淘汰页面为:" + b[bIndex] );

b[bIndex] = a [i];

count++;

break;

} else {

if( distance < targetMap.get( b[bIndex] ) ){

bFarEstIndex = bIndex;

distance = targetMap.get( b[bIndex] );

}

}

}

if( distance != 0 ){

System.out.print( a[i] );

System.out.println( "发生缺页! 淘汰页面为:" +

b[bFarEstIndex]);

count++;

b[bFarEstIndex] = a[i];

}

}

System.out.print(" 内存空间的存储情况为: ");

for( int t = 0; t < b.length; t++ ){

System.out.print(b[t] + " ");

}

System.out.println(" ");

}

double rate = (double)count/n;

System.out.println("发生缺页的次数: " + count);

System.out.println("缺页率为:" + rate);

}

/*aIndex是指a[]中即将要访问的的页面号的下标,

* compare()函数运用HashMap,通过它的key,value值来求内存空间数组b[]中的每一个元素在a[]中即将被访问的页面号中的各自最远的的位置,

* key对应着bNum,而value值对应着最远距离。即bNum中记录着b[]中每个元素在a[]中的最远距离*/

public HashMap compare( int b[], int a[] ,int aIndex ){

HashMap targetMap = new HashMap();

for( int bNum : b ){

targetMap.put( bNum , 0 ); //

}

for( int index = aIndex+1 ; index < a.length; index++ ){

int aTemp = a[index]; //依次把a[]中即将要访问的的页面号后面未被访问的页面号赋给aTemp

for( int bNum : b ){ //遍历数组b[],把b[]每个元素的再即将访问的a[]中的最远距离放入其元素bNum中

if( bNum == aTemp ){

targetMap.put( bNum , index );//把对应的最远下标放入bNum中}

}

}

return targetMap;

}

4 测试用例,运行结果与运行情况分析

1.输入的页面号为:1 2 3 4 1 2 5 1 2 3 4 5

内存空间块数:4

输出结果为:

2.输入的页面号为:1 2 3 4 1 2 5 1 2 3 4 5 内存空间块数:4

输出结果为:

2.输入的页面号为:2 3 4 5 1 2 3 4 1 5

内存空间块数:3 输出结果为:

5 自我评价与总结

本周我们进行了《系统软件开发实训》的课程设计,在拿到题目以后便着手准备,通过查阅课本和相关的资料,对本次课程设计要实现的功能有了深刻的了解,在此基础上写起实验代码变得心应手。现将本次课程设计总结如下:本次课程设计顺利的实现了对页面置换算法FIFO和OPT的模拟演示。通过本次课程设计,加深了对操作系统的认识,了解了操作系统中各种资源分配算法的实现,特别是对虚拟存储,页面置换有了深入的了解,并且用java来实现了该实验,提高了自己的编程能力,同时也使自己对java的熟悉能力提高了很多。页面置换算法FIFO和OPT理解起来相当容易,但在实际编程实现的时候需要注意各种细节,需要耐心细致,实际编程中遇到一些细节上的小问题确实需要仔细考虑才行。

从实验结果分析可知,OPT置换算法的效率要高于FIFO置换算法,这也符合理论分析。遗憾的是,OPT算法无法在操作系统中实现,因为它要求必须预先知道每一个进程的访问串。本次课程设计中的不足之处在于所采用的数据结构不够合理,输入的页面序列是保存在一个数组中,有最大长度的限制,应该采用像动态链表等数据结构,减少静态方法的限制。

通过这次课程设计,进一步的加深了对课本上知识的理解和掌握,更深的体会到了操作系统的构造性能在计算机系统中的重要性,更深贴的体会到了实践的重要性,只有将在课堂上学到的知识融入于实践中,才能锻炼我们的思维能力、培养我们学以致用灵感,在以后的学习中,在学好理论知识的同时,我会更加重视每一次实验,使自己能更好的将知识用于实践中。

最后,感谢在课程设计过程中给予我帮助的同学和在检查验收过程中提出本次课程设计中不足之处的老师,是你们的帮助和指正让我明白的自己的不足,谢谢你们!

本科生课程设计成绩评定表

班级:计算机1102班姓名:田蓝学号:0121110340232

及格(60-69分)、60分以下为不及格

指导教师签名:

2014 年月日

附件:

源代码:

import java.io.*;

import java.util.HashMap;

import java.util.Scanner;

public class Person{

//先入先出的调度算法过程

public void fifo( int a[], int b[] )

{

i nt count = 0; //用来记录缺页的次数

int n = a.length;

int m = b.length;

int i,j,f,v;

for( i = 0; i < n; i++ ){

f = 1; //f=1:表示缺页,需要淘汰页面;f=0:表示不缺页

v = 0; //v=1:表示发生缺页!内存有空余,可直接调入内存;v=0;发生缺页,内存空间已满,需要淘汰页面

for( j = 0; j < m; j++ )

{

if( b[j] == a[i] ){ //表示不缺页

f = 0;

}

if( b[j] == -2){ //b【j】的初始值为-2,表示发生缺页,但内存有空余

v = 1;

break;

}

}

if( f == 0 ){

System.out.println( "不缺页~" );

} else if( v == 1 ) {

System.out.print(a[i] + " ");

System.out.println("发生缺页!内存有空余,可直接调入内存~");

b[j] =a [i];

count++;

} else {

System.out.print(a[i]);

System.out.print("发生缺页! 淘汰页面为:" + b[0]); //每次发生缺页时都淘汰b[0]

/*淘汰页面的过程,因为缺页时都淘汰b[0],故淘汰页面时将b[1~m-1]向前移动,即b[j]=b[j+1]

* 而把新调入内存的页面号加入到数组的最后一个元素b【m-1]中*/

System.out.println();

for(j=0;j

{

b[j]=b[j+1];

}

b[m-1]=a[i];

count++;

}

System.out.print("内存空间的存储情况为: ");

for( int t = 0; t < b.length; t++ ){

System.out.print(b[t] + " ");

}

System.out.println(" ");

}

double rate = (double)count/n;

System.out.println("发生缺页的次数: " + count);

System.out.println("缺页率为:" + rate);

}

//最佳调度算法

public void opt(int a[],int b[])

{

int count = 0; //用来记录缺页的次数

int n = a.length;

int m = b.length;

int i,j,f,v;

for( i = 0; i < n; i++ ){

f = 1;

v = 0;

for( j = 0; j < m; j++ ) {

if( b[j] == a[i]) f = 0;

if( b[j] == -2 ) {

v = 1;

break;

}

}

if( f == 0 ) {

System.out.println("不缺页~");

}else if( v == 1 ) {

System.out.print( a[i] + " ");

System.out.println( "发生缺页!内存有空余,可直接调入内存~");

b[j] = a[i];

count++;

}

else{

int distance = 0; //表示b[]中的所有元素中在a[]中最远的的下标

int bFarEstIndex = 0; //表示要淘汰的页面在b[]中的下标

HashMap targetMap = compare( b, a, i );

for( int bIndex = 0; bIndex < b.length; bIndex++ ){

if( targetMap.get( b[bIndex] ) == 0 ){ //表示b[bIndex]在a[]未被访问的页面号中再也不会出现,直接淘汰,跳出循环

System.out.print( a[i] );

System.out.println( "发生缺页! 淘汰页面为:" + b[bIndex] );

b[bIndex] = a [i];

count++;

break;

} else {

if( distance < targetMap.get( b[bIndex] ) ){

bFarEstIndex = bIndex;

distance = targetMap.get( b[bIndex] );

}

}

}

if( distance != 0 ){

System.out.print( a[i] );

System.out.println( "发生缺页! 淘汰页面为:" +

b[bFarEstIndex]);

count++;

b[bFarEstIndex] = a[i];

}

}

System.out.print(" 内存空间的存储情况为: ");

for( int t = 0; t < b.length; t++ ){

System.out.print(b[t] + " ");

}

System.out.println(" ");

}

double rate = (double)count/n;

System.out.println("发生缺页的次数: " + count);

System.out.println("缺页率为:" + rate);

}

操作系统-页式虚拟存储管理程序模拟

实验3:页式虚拟存储管理程序模拟 实验目的:编写程序来模拟计算机的两种调度方式: (1)先进先出算法 (2)最近最少使用算法 程序设计 FIFO页面置换算法 1在分配内存页面数(AP)小于进程页面数(PP)时,当然是最先运行的AP个页面放入内存。2这时有需要处理新的页面,则将原来内存中的AP个页面最先进入的调出(是以称为FIFO),然后将新页面放入。 3以后如果再有新页面需要调入,则都按2的规则进行。 算法特点:所使用的内存页面构成一个队列。 LRU页面置换算法

1当分配内存页面数(AP)小于进程页面数(PP)时,当然是把最先执行的AP个页面放入内存。2当需要调页面进入内存,而当前分配的内存页面全部不空闲时,选择将其中最长时间没有用到的那个页面调出,以空出内存来放置新调入的页面(称为LRU)。 算法特点:每个页面都有属性来表示有多长时间未被CPU使用的信息。 结果分析

#include #include using namespace std; const int MaxNum=320;//指令数 const int M=5;//内存容量 int PageOrder[MaxNum];//页面请求 int Simulate[MaxNum][M];//页面访问过程 int PageCount[M],LackNum;//PageCount用来记录LRU算法中最久未使用时间,LackNum记录缺页数 float PageRate;//命中率 int PageCount1[32]; bool IsExit(int i)//FIFO算法中判断新的页面请求是否在内存中 { bool f=false; for(int j=0;j

模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断

实验报告 课程名称操作系统原理实验名称虚拟页式管理 姓名学号专业班级网络 实验日期成绩指导教师赵安科 (①实验目的②实验原理③主要仪器设备④实验内容与步骤⑤实验数据记录与处理⑥实验结果与分析⑦问题建议) 实验二模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断 1.内容:模拟请求页式存储管理中硬件的地址转换和缺页中断处理 2.思想: 装入新页置换旧页时,若旧页在执行中没有被修改过,则不必将该页重写磁盘。因此,页表中增加是否修改过的标志,执行“存”指令和“写”指令时将对应的修改标志置成“1” 3.要求及方法: ①设计一个地址转换程序来模拟硬件的地址转换和缺页中断。当访问的页在主存时则形成绝对地址,但不去模拟指令的执行,可以输出转换后的绝对地址来表示一条指令已执行完成。当访问的页不在主存中时,则输出“*页号”来表示硬件产生了一次缺页中断。模拟地址转换流程见图1。 ②编制一个FIFO页面调度程序;FIFO页面调度算法总是先调出作业中最先进入主存中的哪一页。因此可以用一个数组来表示(或构成)页号队列。数组中每个元素是该作业已在主存中的页面号,假定分配给作业的页架数为m,且该作业开始的m页已装入主存,则数组可由m个元素构成。 P[0],P[1],P[2],…,P[m-1] 它们的初值为P[0]:=0,P[1]:=1,P[2]:=2,…,P[m-1]:=m-1 用一指针K指示当要调入新页时应调出的页在数组中的位置,K的初值为“0”,当产生缺页

中断后,操作系统总是选择P[K]所指出的页面调出,然后执行: P[K]:=要装入的新页页号 K :=(k+1)mod m 在实验中不必实际地启动磁盘执行调出一页和装入一页的工作,而用输出“OUT 调出的页号”和“IN 要装入的新页页号”来模拟一次调出和装入过程,模拟程序的流程图见附图1。 按流程控制过程如下: 提示:输入指令的页号和页内偏移和是否存指令?? ? 0 1非存指令存指令,若d 为-1则结束,否则进 入流程控制过程,得P 1和d ,查表在主存时,绝对地址=P 1×1024+d ③ 假定主存中页架大小为1024个字节,现有一个共7页的作业,其副本已在磁盘上。系统为该作业分配了4个页架,且该作业的第0页至第3页已装入内存,其余3页未装入主 依次执行上述指令调试你所设计的程序(仅模拟指令的执行,不考虑序列中具体操作的执行)。

毕业设计选题管理系统

1.前言 每年毕业临近,都有大量的毕业生需要进行毕业设计,这其中的首要关节就是课题的选择,以往指导老师都是采用人工手写方式给学生们提供相关的课题供学生选择,如果指导老师带领的学生比较多,或者是当年毕业的学生比较多,这样就容易造成学生的课题选择很混乱,指导教师难于统计学生的课题选择情况等一系列问题,基于这些传统问题,我们需要一个能够自动统计、实时分配课题的一个管理平台来帮助学生、指导老师。 此系统的开发,主要的目的是使老师能更好的管理课程设计,也能使学生能更好的把自己想要选的课程正确无误的选出来。使处在选课时期的学生能有条不紊的进行。 2.系统的需求分析 2.1功能需求 2.1.1 毕业设计选题管理系统功能要求: 1.毕业设计题目维护和查询:毕业设计题目的添加、修改;按照项目类型、名称、编号等 查询;毕业设计选题查询、登记。 2.指导教师信息维护和查询:指导教师信息的添加、修改、删除,查询; 3.毕业生选题管理:学生选题登记;选题情况查询; 4.毕业生信息的维护和查询。 根据以上各功能模块需求将系统的功能细化为以下几点: (1)前台学生选题 学生网上选题:学生登录管理系统进行选题 (2)前台教师出题 教师网上出题:教师进入毕业选题出题。 教师管理出题:教师进入系统后对毕业设计题目进行修改和删除。 选题确认:学生选好题目后,教师可以确认该题由选择该题的学生做。 (3)后台管理出题及选题情况 用户管理模块:管理员可以对用户进行用户管理,对已存在的用户进行修改,查看等。 角色管理模块:管理员可以对用户的角色进行管理,可以给用户分配角色,对角色分配权限。 2.2开发环境需求 操作系统:window7或更高版本 因为毕业设计课题管理系统针对的用户是学生和教师,学生和教师普遍使用windows 操作系统,所以选着windows7或更高版本的操作系统 web服务器:apache-tomcat6

操作系统-页式虚拟存储管理程序模拟

操作系统-页式虚拟存储管理程序模拟

FIFO页面置换算法 1在分配内存页面数(AP)小于进程页面数(PP)时,当然是最先运行的AP个页面放入内存。 2这时有需要处理新的页面,则将原来内存中的AP个页面最先进入的调出(是以称为FIFO),然后将新页面放入。 3以后如果再有新页面需要调入,则都按2的规则进行。 算法特点:所使用的内存页面构成一个队列。LRU页面置换算法 1当分配内存页面数(AP)小于进程页面数(PP)时,当然是把最先执行的AP个页面放入内存。2当需要调页面进入内存,而当前分配的内存页面全部不空闲时,选择将其中最长时间没有用到的那个页面调出,以空出内存来放置新调入的页面(称为LRU)。 算法特点:每个页面都有属性来表示有多长时间未被CPU使用的信息。 结果分析

#include #include using namespace std; const int MaxNum=320;//指令数 const int M=5;//内存容量 int PageOrder[MaxNum];//页面请求 int Simulate[MaxNum][M];//页面访问过程 int PageCount[M],LackNum;//PageCount用来记录LRU算法中最久未使用时间,LackNum记录缺页数 float PageRate;//命中率 int PageCount1[32]; bool IsExit(int i)//FIFO算法中判断新的页面请求是否在内存中 { bool f=false; for(int j=0;j

请求页式存储管理中常用页面置换算法模拟

请求页式存储管理中常用页 面置换算法模拟 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

信息工程学院实验报告 课程名称:操作系统Array 实验项目名称:请求页式存储管理中常用页面置换算法模拟实验时间: 班级姓名:学号: 一、实验目的: 1.了解内存分页管理策略 2.掌握调页策略 3.掌握一般常用的调度算法 4.学会各种存储分配算法的实现方法。 5.了解页面大小和内存实际容量对命中率的影响。 二、实验环境: PC机、windows2000 操作系统、VC++6.0 三、实验要求: 本实验要求4学时完成。 1.采用页式分配存储方案,通过分别计算不同算法的命中率来比较算法的优劣,同时 也考虑页面大小及内存实际容量对命中率的影响; 2.实现OPT 算法 (最优置换算法)、LRU 算法 (Least Recently)、 FIFO 算法 (First IN First Out)的模拟; 3.会使用某种编程语言。 实验前应复习实验中所涉及的理论知识和算法,针对实验要求完成基本代码编写、实验中认真调试所编代码并进行必要的测试、记录并分析实验结果。实验后认真书写符合规范格式的实验报告,按时上交。 四、实验内容和步骤: 1.编写程序,实现请求页式存储管理中常用页面置换算法LRU算法的模拟。要求屏幕 显示LRU算法的性能分析表、缺页中断次数以及缺页率。 2.在上机环境中输入程序,调试,编译。 3.设计输入数据,写出程序的执行结果。 4.根据具体实验要求,填写好实验报告。 五、实验结果及分析: 实验结果截图如下:

利用一个特殊的栈来保存当前使用的各个页面的页面号。当进程访问某页面时,便将该页面的页面号从栈中移出,将它压入栈顶。因此,栈顶始终是最新被访问页面的编号,栈底是最 近最久未被使用的页面号。 当访问第5个数据“5”时发生了缺页,此时1是最近最久未被访问的页,应将它置换出去。同理可得,调入队列为:1 2 3 4 5 6 7 1 3 2 0 5,缺页次数为12次,缺页率为80%。 六、实验心得: 本次实验实现了对请求页式存储管理中常用页面置换算法LRU算法的模拟。通过实验,我对内存分页管理策略有了更多的了解。 最近最久未使用(LRU)置换算法的替换规则:是根据页面调入内存后的使用情况来进行决策的。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间,当需淘汰一个页面的时候选择现有页面中其时间值最大的进行淘汰。 最佳置换算法的替换规则:其所选择的被淘汰页面,将是以后永不使用的或许是在最长(未来)时间内不再被访问的页面。 先进先出(FIFO)页面置换算法的替换规则:该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。 三种替换算法的命中率由高到底排列OPT>LRU>FIFO。 本次的程序是在网上查找的相关代码然后自己进行修改,先自己仔细地研读了这段代码,在这过程中我对C++代码编写有了更深的了解。总之,本次实验使我明白要学会把课堂上的理论应用到实际操作中。我需要在今后熟练掌握课堂上的理论基础,只有坚实的基础,才能在实际操作中更得心应手。

请求页式存储管理中常用页面置换算法模拟

湖南科技学院计算机与信息科学系 实验报告 实验名称请求页式存储管理中常用页面置换算法模拟 课程名称计算机操作系统所属系部班级计科0902 时间2011年12 月8 日第9、10 节地点E305 姓名王校君学号200908001230 成绩 本组成员(一人一组) 一、实验要求 1、上机前认真阅读实验内容,并编好程序; 2、上机实验后,请列出实验数据,写出实验结果; 3、完成实验报告后交任课教师。 二、实验目的 页式虚拟存储器实现的一个难点是设计页面调度(置换)算法,即将新页面调入内存时,如果内存中所有的物理页都已经分配出去,就要按某种策略来废弃某个页面,将其所占据的物理页释放出来,供新页面使用。本实验的目的是通过编程实现几种常见的页面调度(置换)算法,加深读者对页面思想的理解。三、实验环境 每人一台电脑,在下实现。 四、实验内容 (1)设计程序实现以上三种页面调度算法,要求: ①.可以选择页面调度算法类型; ②.可以为进程设置分到物理页的数目,设置进程的页面引用情况,可以从键盘输入页面序列,也可从文件中读取; ③.随时计算当前的页面调度次数的缺页中断率; ④.使用敲键盘或响应WM-TIMER的形式模仿时间的流逝; ⑤.以直观的的形式将程序的执行情况显示在计算机屏幕上; ⑥.存盘及读盘功能,可以随时将数据存入磁盘文件,供以后重复实验时使用。(2)假定进程分配到3个物理块,对于下面的页面引用序列: 7-0-1-2-0-3-0-4-2-3-0-3-2-1-2-0-1-7-0-1 请分别用先进和先出调度算法,最近最少用调度算法,最近最不常用调度算法计算缺页中断次数,缺页中断率和缺页调度次数、缺页置换率。 再假定进程分配到4、5个物理块,重复本实验。 (3)假定进程分配到3个物理块,对于下面的页面引用序列: 4-3-2-1-4-3-5-4-3-2-1-5-0-7-3-8-9-0-2-1-4-7-3-9 请分别用先进先出调度算法、最近最少用调度算法,最近最不常用调度算法计算缺页中断次数,缺页中断率和缺页调度次数、缺页置换率。 再假定进程分配到4、5个物理块,重复本实验。 (4)假定进程分配到3个物理块,使用程序的动态页面序列生成算法,生成一个页面序列,将此序列存入磁盘文件。再从磁盘文件读入该序列,用程序分别计算三种算法下的缺页中断次数、缺页中断率和缺页调度次数、缺页置换率。

请求页式存储管理的模拟实现_参考代码_

do_init(){ int i,j; srand(time(NULL)); for(i=0; i

页式虚拟存储管理中地址转换和缺页中断实验参考2

页式虚拟存储管理中地址转换和缺页中断 一.实验目的 (1)深入了解存储管理如何实现地址转换。 (2)进一步认识页式虚拟存储管理中如何处理缺页中断。 二.实验内容 编写程序完成页式虚拟存储管理中地址转换过程和模拟缺页中断的处理。 三.实验原理 页式存储管理把内存分割成大小相等位置固定的若干区域,叫内存页面,内存的分配以“页”为单位,一个程序可以占用不连续的页面,逻辑页面的大小和内存页面的大小相同,内外存的交换也以页为单位进行,页面交换时,先查询快表,若快表中找不到所需页面再去查询页表,若页表中仍未找到说明发生了缺页中断,需先将所需页面调入内存再进行存取。 四.实验部分源程序 #define size 1024//定义块的大小,本次模拟设为1024个字节。 #include "stdio.h" #include "string.h" #include struct plist { int number; //页号 int flag; //标志,如为1表示该页已调入主存,如为0则还没调入。 int block; //主存块号,表示该页在主存中的位置。 int modify; //修改标志,如在主存中修改过该页的内容则设为1,反之设为0 int location; //在磁盘上的位置 }; //模拟之前初始化一个页表。 struct plist p1[7]={{0,1,5,0,010},{1,1,8,0,012},{2,1,9,0,013},{3,1,1,0,021},{4,0,-1,0,022},{5,0,-1,0,023},{6, 0,-1,0,125}}; //命令结构,包括操作符,页号,页内偏移地址。 struct ilist { char operation[10]; int pagenumber; int address; }; //在模拟之前初始化一个命令表,通过程序可以让其顺序执行。 struct ilist p2[12]={{"+",0,72},{"5+",1,50},{"*",2,15},{"save",3,26},

某公司人员管理系统(毕业设计论文).

软件综合课程设计报告题目:某公司员工管理系统 院(系):计算机科学与工程 专业:计算机科学与技术 班级:120605 学生:冯凯 学号:120605102 指导教师:姜虹 2015年09月

目录 中文摘要 (1) 英文摘要 (2) 1 绪论 (1) 1.1 研究背景 (1) 1.2 本课题研究现状 (1) 2 企业信息管理系统分析................................................ . (3) 2.1需求分析 (3) 2.2 技术可行性 (4) 2.3 环境可行性分析 (5) 2.4 系统结构可行性分析 (6) 3 企业信息管理系统设计 (9) 3.1 数据库设计 (9) 3.2 系统功能模块详细设计 (10) 4 系统实现 (11) 4.1 用户操作文件总体架构 (11) 4.2 技术难点 (13) 5 系统测试 (14) 5.1 界面测试 (14) 5.2 功能测试 (14) 5.3 需求测试 (15) 5.4 性能测试 (15) 5.5 企业员工信息管理系统的测试 (15) 6 结论 (16) 致谢 (17) 参考文献 (18) 毕业设计(论文)独创性声明 (18) 附录 (19)

某公司员工管理系统 摘要 在当今社会,互联网空前的发展,给人们的工作和生活带来了极大的便利和高效,信息化,电子化已经成为节约运营成本,提高工作效率的首选。考虑到当前大量企业的企业员工管理尚处于手工作业阶段,不但效率低下,还常常因为管理的不慎而出现纰漏。因此根据部分企业提供的需求,设计此企业企业员工管理系统,以帮助企业达到企业员工管理办公自动化、节约管理成本、提高企业工作效率的目的。 根据实际需求,“企业员工信息管理系统”项目采用模块化的设计思想,在Windows 操作系统环境下,搭建JSP运行环境JDK+TOMCAT,通过使用JAVA脚本语言完成动态的、交互的web服务器应用程序,实现员工个人信息查询、个人业绩查询及用户密码修改功能。 本系统具有多方面特点:系统功能完备,用户使用方便简捷,人性化的用户界面,安全保密设置齐全,大大减少了操作人员和用户的工作负担,提高了企业员工信息管理的工作效率和企业的信息化的水平。 关键词:java;员工管理;

模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断

实验二模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断 1.内容:模拟请求页式存储管理中硬件的地址转换和缺页中断处理 2.思想: 装入新页置换旧页时,若旧页在执行中没有被修改过,则不必将该页重写磁盘。因此,页表中增加是否修改过的标志,执行“存”指令和“写”指令时将对应的修改标志置成“1” 3.要求及方法: ①设计一个地址转换程序来模拟硬件的地址转换和缺页中断。当访问的页在主存时则形成绝对地址,但不去模拟指令的执行,可以输出转换后的绝对地址来表示一条指令已执行完成。当访问的页不在主存中时,则输出“*页号”来表示硬件产生了一次缺页中断。模拟地址转换流程见图1。 ②编制一个FIFO页面调度程序;FIFO页面调度算法总是先调出作业中最先进入主存中的哪一页。因此可以用一个数组来表示(或构成)页号队列。数组中每个元素是该作业已在主存中的页面号,假定分配给作业的页架数为m,且该作业开始的m页已装入主存,则数组可由m个元素构成。 P[0],P[1],P[2],…,P[m-1] 它们的初值为P[0]:=0,P[1]:=1,P[2]:=2,…,P[m-1]:=m-1 用一指针K指示当要调入新页时应调出的页在数组中的位置,K的初值为“0”,当产生缺页中断后,操作系统总是选择P[K]所指出的页面调出,然后执行: P[K]:=要装入的新页页号 K:=(k+1)mod m 在实验中不必实际地启动磁盘执行调出一页和装入一页的工作,而用输出“OUT调出的页号”和“IN要装入的新页页号”来模拟一次调出和装入过程,模拟程序的流程图见附图1。 按流程控制过程如下:

计算机专业毕业设计题目大全

计算机毕业设计题目大全安卓/Android题目大全: 安卓001个人事务管理系统 安卓002手机订餐系统 安卓003无线点菜 安卓004酒店房间预定系统? 安卓005个人相册管理系统 安卓006计算器 安卓007英语学习 安卓008绘图软件 安卓009医疗健康查询系统 安卓010健身信息管理系统 安卓011课程表 安卓012音乐播放器 安卓013便民自行车管理 安卓014点餐系统SQL版 安卓015二手图书交易系统 安卓016公交查询线路 安卓017订餐管理系统 安卓018校园闲置物品交易平台 安卓019电子书阅读器 安卓020蔬菜水果销售系统 安卓021网上商店系统 安卓022消费导航系统 安卓023GPS移动定位及运行轨迹管理系统 安卓024基于安卓系统的数据传输wifi 安卓025基于蓝牙的手机好友发现系统 安卓026学英语智力游戏 安卓027电子书阅读器(两个版本) 安卓028短信管理 安卓029音乐播放器 安卓030旅游记忆系统

安卓031教师教学信息查询系统 安卓032个人信息管理系统 安卓033基于Android的公路客运售票管理系统安卓034基于Android的英文词典的设计与实现安卓035同学通讯录 安卓036安卓仓库管理系统(单机) 安卓037电子词典的设计与实现 安卓038二维码识别系统的研究与实现 安卓039任务管理器的设计与实现 安卓040手机防火墙 安卓041邮件收发Email 安卓042计算器 安卓043绘图软件设计与实现 安卓044俄罗斯方块系统 安卓045网上商店系统设计与开发 安卓046消费导航系统设计与实现 安卓047记事本 安卓048拼图游戏的设计与实现 安卓049南京旅游 安卓050公交查询线路 安卓051打飞机游戏 安卓052建筑连连看 安卓053扫雷程序 安卓054视频播放器 安卓055多功能日历 安卓056图书借阅系统 安卓057天气预报 安卓058人体健康监测软件 安卓059天气预报 安卓060实习登记系统 安卓061五子棋 安卓062餐厅点餐订餐系统 安卓063心理测试 安卓064手机理财软件 安卓065音频编辑器 安卓066相册图片浏览器 安卓067手机校园信息系统

毕业设计选题管理系统修订稿

毕业设计选题管理系统内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)

1.前言 每年毕业临近,都有大量的毕业生需要进行毕业设计,这其中的首要关节就是课题的选择,以往指导老师都是采用人工手写方式给学生们提供相关的课题供学生选择,如果指导老师带领的学生比较多,或者是当年毕业的学生比较多,这样就容易造成学生的课题选择很混乱,指导教师难于统计学生的课题选择情况等一系列问题,基于这些传统问题,我们需要一个能够自动统计、实时分配课题的一个管理平台来帮助学生、指导老师。 此系统的开发,主要的目的是使老师能更好的管理课程设计,也能使学生能更好的把自己想要选的课程正确无误的选出来。使处在选课时期的学生能有条不紊的进行。 2.系统的需求分析 2.1功能需求 2.1.1 毕业设计选题管理系统功能要求: 1.毕业设计题目维护和查询:毕业设计题目的添加、修改;按照项目类型、名 称、编号等查询;毕业设计选题查询、登记。 2.指导教师信息维护和查询:指导教师信息的添加、修改、删除,查询; 3.毕业生选题管理:学生选题登记;选题情况查询; 4.毕业生信息的维护和查询。 根据以上各功能模块需求将系统的功能细化为以下几点: (1)前台学生选题 学生网上选题:学生登录管理系统进行选题 (2)前台教师出题

教师网上出题:教师进入毕业选题出题。 教师管理出题:教师进入系统后对毕业设计题目进行修改和删除。 选题确认:学生选好题目后,教师可以确认该题由选择该题的学生做。(3)后台管理出题及选题情况 用户管理模块:管理员可以对用户进行用户管理,对已存在的用户进行修改,查看等。 角色管理模块:管理员可以对用户的角色进行管理,可以给用户分配角色,对角色分配权限。 2.2开发环境需求 操作系统:window7或更高版本 因为毕业设计课题管理系统针对的用户是学生和教师,学生和教师普遍使用windows操作系统,所以选着windows7或更高版本的操作系统 web服务器:apache-tomcat6 apache-tomcat6是开源的免费的web服务器,节省开发成本 数据库:MySQL MySQL是一款免费的数据库,节省成本 开发工具:myeclipse8.5 myeclipse8.5功能强大的JavaEE开发工具,该管理系统选用JavaEE开发。 3.系统设计 3.1基本设计概念和处理流程 本系统采用结构化分析,设计顺序为自顶向下,层层逐步细化。 图1 3.2软件功能设计 图2 3.2数据库设计 3.2.1 E-R图 图3

请求调页存储管理方式的模拟

实验3请求调页存储管理方式的模拟 1实验目的 通过对页面、页表、地址转换和页面置换过程的模拟,加深对请求调页系统的原理和实现过程的理解。 2实验内容 (1)假设每个页面中可存放10条指令,分配给一作业的内存块数为4。 (2)模拟一作业的执行过程。该作业共有320条指令,即它的地址空间为32页,目前它的所有页都还未调入内存。在模拟过程中,如果所访问的指令已经在内存中,则显示其物理地址,并转下一条指令。如果所访问的指令还未装入内存,则发生缺页,此时需记录缺页的次数,并将相应页调入内存。如果4个内存块中均已装入该作业,则需进行页面置换。最后显示其物理地址,并转下一条指令。在所有320条指令执行完毕后,请计算并显示作业运行过程中发生的缺页率。 (3)置换算法:请分别考虑OPT、FIFO和LRU算法。 (4)作业中指令的访问次序按下述原则生成: ?50%的指令是顺序执行的。 ?25%的指令是均匀分布在前地址部分。 ?25%的指令时均匀分布在后地址部分。 代码: package mainDart; import java.util.ArrayList; import java.util.List; import java.util.Random; public class FIFO { private static int times=0; //记录置换内存页面的次数 /** * 随机产生0~319之间的数 * 产生320条指令 * * @return 包含320条指令的数组 */ public static int[] productNumber() { int order[] = new int[320]; //数组存储的数字表示指令 Random rand = new Random(); for(int i=0;i<320;i++) { if(i%4==0) {

模拟请求页式存储管理中硬件的地址转换和缺页中断处理

一.实验内容 模拟请求页式存储管理中硬件的地址转换和缺页中断处理 二.实验原理 装入新页置换旧页时,若旧页在执行中没有被修改过,则不必将该页重写磁盘。因此,页表中增加是否修改过的标志,执行“存”指令和“写”指令时将对应的修改标志置成“1”表示修改过,否则为“0”表示未修改过。页表格式如下: 页号 标志 页架号 修改标志 在磁盘上位置 三.要求及方法: ① 设计一个地址转换程序来模拟硬件的地址转换和缺页中断。当访问的页在主存时则形成绝对地址,但不去模拟指令的执行,可以输出转换后的绝对地址来表示一条指令已执行完成。当访问的页不在主存中时,则输出“*页号”来表示硬件产生了一次缺页中断。模拟地址转换流程见图1。 ② 编制一个FIFO 页面调度程序;FIFO 页面调度算法总是先调出作业中最先进入主存中的哪一页。因此可以用一个数组来表示(或构成)页号队列。数组中每个元素是该作业已在主存中的页面号,假定分配给作业的页架数为m ,且该作业开始的m 页已装入主存,则数组可由m 个元素构成。 P[0],P[1],P[2],…,P[m-1] 它们的初值为P[0]:=0,P[1]:=1,P[2]:=2,…,P[m-1]:=m-1 用一指针K 指示当要调入新页时应调出的页在数组中的位置,K 的初值为“0”,当产生缺页中断后,操作系统总是选择P[K]所指出的页面调出,然后执行: P[K]:=要装入的新页页号 K :=(k+1)mod m 在实验中不必实际地启动磁盘执行调出一页和装入一页的工作,而用输出“OUT 调出的页号”和“IN 要装入的新页页号”来模拟一次调出和装入过程,模拟程序的流程图见附图1。 按流程控制过程如下: 提示:输入指令的页号和页内偏移和是否存指令??? 0 1非存指令存指令,若d 为-1则结束,否则进

请求调页存储器管理方式的模拟

课程设计 课程设计名称:计算机操作系统课程设计 专业班级:计算机科学与技术班 学生姓名: 学号: 指导教师: 课程设计时间: 2010.12.20 ~ 2010.12.24

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

一需求分析 请求调页存储管理方式的模拟是基于LRU算法的设计而设计的,通过学习计算机操作系统中的请求调页存储管理方式的几种算法,我选择了最近最久未使用算法即LRU算法实现请求调叶存储管理,通过具体的程序来模仿LRU的工作机制。二概要设计 1.数据结构 依据给定的数据信息,数组必须以结构体实现,结构类型的层次结构如下: typedef struct BLOCK//声明一种新类型——物理块类型 { int pagenum;//页号 int accessed;//访问字段,其值表示多久未被访问 }BLOCK; 2.函数原型清单: Void main();//主函数 void init(int Bsize); //程序初始化函数 int findExist(int curpage);//查找物理块中是否有该页面 int findSpace(int Bsize);//查找是否有空闲物理块 int findReplace();//查找应予置换的页面 void display(int Bsize);//显示 void suijishu(int r);//产生320条随机数,显示并存储到temp[320] void pagestring();//显示调用的页面队列 void LRU(int Bsize);// LRU算法 3.全局变量: int Bsize; int pc;//程序计数器,用来记录指令的序号 int n;//缺页计数器,用来记录缺页的次数

请求页式存储管理系统

软件学院 操作系统实验报告 专业:软件工程 班级:RB软工互152 学号:201560160226 学生姓名:王泽华 指导教师:韩新超

实验四:请求页式存储管理 一.实验目的 深入理解请求页式存储管理的原理,重点认识其中的地址变换、缺页中断、置换算法等实现思想。 二.实验属性 该实验为综合性、设计性实验。 三.实验仪器设备及器材 普通PC386以上微机 四.实验要求 本实验要求4学时完成。 本实验要求完成如下任务: (1)建立相关的数据结构:存储块表、页表等; (2)实现基本分页存储管理,如分配、回收、地址变换; (3)在基本分页的基础上实现请求分页存储管理; (4)给定一批作业/进程,选择一个分配或回收模拟; (5)将整个过程可视化显示出来。 实验前应复习实验中所涉及的理论知识和算法,针对实验要求完成基本代码编写并完成预习报告、实验中认真调试所编代码并进行必要的测试、记录并分析实验结果。实验后认真书写符合规范格式的实验报告(参见附录A),并要求用正规的实验报告纸和封面装订整齐,按时上交。 五、实验提示 1、本实验虽然不以前面实验为基础,但建议在其界面中继续增加请求页式存储管理功能。 2、数据结构:内存分配表、页表空间(用数组实现),修改PCB结构增加页表指针、页表长度。 3、存储管理:编写内存分配、内存回收算法、页面置换算法。 4、主界面设计:在界面上增加一个请求分页内存分配按钮、请求分页内存回收按钮、装入指定进程的指定页按钮。 触发请求分页内存分配按钮,弹出作业大小输入框,输入后调用内存分配函数,在内存分配表和页表中看到分配的存储块。触发请求分页内存回收按钮,弹出进程ID输入框,输入后调用内存回收函数,在内存分配表中看到回收后的状态改变。 5、功能测试:从显示出的内存分配表和页表,可查看操作的正确与否。 六、实验步骤 (1)任务分析:

请求页式存储管理中常用页面置换算法模拟

信息工程学院实验报告 课程名称:操作系统Array实验项目名称:请求页式存储管理中常用页面置换算法模拟实验时间: 班级姓名:学号: 一、实验目的: 1.了解内存分页管理策略 2.掌握调页策略 3.掌握一般常用的调度算法 4.学会各种存储分配算法的实现方法。 5.了解页面大小和内存实际容量对命中率的影响。 二、实验环境: PC机、windows2000 操作系统、VC++6.0 三、实验要求: 本实验要求4学时完成。 1.采用页式分配存储方案,通过分别计算不同算法的命中率来比较算法的优劣,同时也考虑页面大 小及内存实际容量对命中率的影响; 2.实现OPT 算法 (最优置换算法)、LRU 算法 (Least Recently)、 FIFO 算法 (First IN First Out)的模拟; 3.会使用某种编程语言。 实验前应复习实验中所涉及的理论知识和算法,针对实验要求完成基本代码编写、实验中认真调试所编代码并进行必要的测试、记录并分析实验结果。实验后认真书写符合规范格式的实验报告,按时上交。 四、实验内容和步骤: 1.编写程序,实现请求页式存储管理中常用页面置换算法LRU算法的模拟。要求屏幕显示LRU算法 的性能分析表、缺页中断次数以及缺页率。 2.在上机环境中输入程序,调试,编译。 3.设计输入数据,写出程序的执行结果。 4.根据具体实验要求,填写好实验报告。 五、实验结果及分析: 实验结果截图如下:

利用一个特殊的栈来保存当前使用的各个页面的页面号。当进程访问某页面时,便将该页面的页面号从栈中移出,将它压入栈顶。因此,栈顶始终是最新被访问页面的编号,栈底是最近最久未被使用的页面号。当访问第5个数据“5”时发生了缺页,此时1是最近最久未被访问的页,应将它置换出去。同理可得,调入队列为:1 2 3 4 5 6 7 1 3 2 0 5,缺页次数为12次,缺页率为80%。 六、实验心得: 本次实验实现了对请求页式存储管理中常用页面置换算法LRU算法的模拟。通过实验,我对内存分页管理策略有了更多的了解。 最近最久未使用(LRU)置换算法的替换规则:是根据页面调入内存后的使用情况来进行决策的。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间,当需淘汰一个页面的时候选择现有页面中其时间值最大的进行淘汰。 最佳置换算法的替换规则:其所选择的被淘汰页面,将是以后永不使用的或许是在最长(未来)时间内不再被访问的页面。 先进先出(FIFO)页面置换算法的替换规则:该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。 三种替换算法的命中率由高到底排列OPT>LRU>FIFO。 本次的程序是在网上查找的相关代码然后自己进行修改,先自己仔细地研读了这段代码,在这过程中我对C++代码编写有了更深的了解。总之,本次实验使我明白要学会把课堂上的理论应用到实际操作中。我需要在今后熟练掌握课堂上的理论基础,只有坚实的基础,才能在实际操作中更得心应手。 附录: #include "iostream.h" #include const int DataMax=100; const int BlockNum = 10;

大作业用先进先出(FIFO)页面调度算法处理缺页中断

实验四 用先进先出(FIFO )页面调度算法处理缺页中断 1.实验目的 深入了解页式存储管理如何实现地址转换; 进一步认识页式虚拟存储管理中如何处理缺页中断。 2.实验预备知识 页式存储管理中的地址转换的方法; 页式虚拟存储的缺页中断处理方法。 3.实验内容 编写程序完成页式虚拟存储管理中地址转换过程和模拟缺页中断的处理。实验具体包括:首先对给定的地址进行地址转换工作,若发生缺页则先进行缺页中断处理,然后再进行地址转换;最后编写主函数对所作工作进程测试。 假定主存64KB ,每个主存块1024字节,作业最大支持到64KB ,系统中每个作业分得主存块4块。 4.提示与讲解 页式存储管理中地址转换过程很简单,假定主存块的大小为2n 字节,主存大小为2m'字节和逻辑地址m 位,则进行地址转换时,首先从逻辑地址中的高m-n 位中取得页号,然后根据页号查页表,得到块号,并将块号放入物理地址的高m'-n 位,最后从逻辑地址中取得低n 位放入物理地址的低n 位就得到了物理地址,过程如图1所示。 图1 页式存储管理系统地址转换示意图 地址转换是由硬件完成的,实验中使用软件程序模拟地址转换过程,模拟地址转换的流程图如图2所示(实验中假定主存64KB ,每个主存块1024字节,即n=10,m'=16,物理地址中块号6位、块内地址10位;作业最大64KB ,即m=16,逻辑地址中页号6位、页内地址10位)。 在页式虚拟存储管理方式中,作业信息作为副本放在磁盘上,作业执行时仅把作业信息的部分页面装入主存储器,作业执行时若访问的页面在主存中,则按上述方式进行地址转换,若访问的页面不在主存中,则产生一个“缺页中断”, 逻辑地址

毕业设计选题管理系统

毕业设计选题管理系统 Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

1.前言 每年毕业临近,都有大量的毕业生需要进行毕业设计,这其中的首要关节就是课题的选择,以往指导老师都是采用人工手写方式给学生们提供相关的课题供学生选择,如果指导老师带领的学生比较多,或者是当年毕业的学生比较多,这样就容易造成学生的课题选择很混乱,指导教师难于统计学生的课题选择情况等一系列问题,基于这些传统问题,我们需要一个能够自动统计、实时分配课题的一个管理平台来帮助学生、指导老师。 此系统的开发,主要的目的是使老师能更好的管理课程设计,也能使学生能更好的把自己想要选的课程正确无误的选出来。使处在选课时期的学生能有条不紊的进行。 2.系统的需求分析 功能需求 2.1.1 毕业设计选题管理系统功能要求: 1.毕业设计题目维护和查询:毕业设计题目的添加、修改;按照项目类型、名称、编 号等查询;毕业设计选题查询、登记。 2.指导教师信息维护和查询:指导教师信息的添加、修改、删除,查询; 3.毕业生选题管理:学生选题登记;选题情况查询; 4.毕业生信息的维护和查询。 根据以上各功能模块需求将系统的功能细化为以下几点: (1)前台学生选题 学生网上选题:学生登录管理系统进行选题 (2)前台教师出题 教师网上出题:教师进入毕业选题出题。 教师管理出题:教师进入系统后对毕业设计题目进行修改和删除。

选题确认:学生选好题目后,教师可以确认该题由选择该题的学生做。 (3)后台管理出题及选题情况 用户管理模块:管理员可以对用户进行用户管理,对已存在的用户进行修改,查看等。 角色管理模块:管理员可以对用户的角色进行管理,可以给用户分配角色,对角色分配权限。开发环境需求 操作系统:window7或更高版本 因为毕业设计课题管理系统针对的用户是学生和教师,学生和教师普遍使用windows操作系统,所以选着windows7或更高版本的操作系统 web服务器:apache-tomcat6 apache-tomcat6是开源的免费的web服务器,节省开发成本 数据库:MySQL MySQL是一款免费的数据库,节省成本 开发工具: 功能强大的JavaEE开发工具,该管理系统选用JavaEE开发。 3.系统设计 基本设计概念和处理流程 本系统采用结构化分析,设计顺序为自顶向下,层层逐步细化。 图1 软件功能设计 图2 数据库设计 3.2.1 E-R图 图3 图4

实验报告关于请求调页存储管理方式

《网络操作系统》 课程设计报告书 题目:请求调页存储管理方式的模拟学号: 学生姓名: 指导教师: 年月日

目录 一. 实验内容.................................................. 错误!未定义书签。 二. 实验目的.................................................. 错误!未定义书签。 三. 设计思想.................................................. 错误!未定义书签。 四. 程序流程图................................................ 错误!未定义书签。 五. 程序清单.................................................. 错误!未定义书签。 六. 运行结果及分析............................................ 错误!未定义书签。 七. 总结...................................................... 错误!未定义书签。

一、实验内容 1.假设每个页面中可存放10条指令,分配给作业的内存块数为4。 2.用C语言或C++语言模拟一个作业的执行过程,该作业共有320条指令,即它的地址空间为32页,目前它的所有页都还未调入内存。在模拟过程中,如果所访问的指令已在内存,则显示其物理地址,并转下一条指令。如果所访问的指令还未装入内存,则发生缺页,此时需记录缺页的次数,并将相应页调入内存。如果4个内存块均已装入该作业,则需进行页面置换,最后显示其物理地址,并转下一条指令。 在所有320指令执行完毕后,请计算并显示作业运行过程中发生的缺页率。 3.置换算法:请分别考虑最佳置换算法(OPT)、先进先出(FIFO)算法和最近最久未使用(LRU)算法。 4.作业中指令的访问次序按下述原则生成; 50%的指令是顺序执行的; 25%的指令是均匀分布在前地址部分; 25%的指令均匀分布在后地址部分。 具体的实现办法是: (1)在[0,319]之间随机选取一条起始执行指令,其序号为m; (2)顺序执行下一条指令,其序号为m+1条指令; (3)通过随机数,跳转到前地址部分[0,m-1]中的某条指令处,其序号为m1; (4)顺序执行下一条指令,即序号为m1+1的指令; (5)通过随机数,跳转到后地址部分[m1+2,319]中的某条指令处,其序号为m2; (6)顺序执行下一条指令,则序号为m2+1的指令; (7)重复跳转到前地址部分,顺序执行,跳转到后地址部分;顺序执行的过程,直至执行320条指令。 二、实验目的 1.通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟储技术的特点。2.通过对页面、页表、地址转换和页面置换过程的模拟,加深对请求调页系统的原理和实现过程的理解。 3.掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程,并比较它们的效率。 三、设计思想 在进程运行过程中,若其所要访问的页面不在内存需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区中。但应将哪个页面调出,所以需要根据一定的算法来确定。在这一过程中,选择换出页面的算法称为页面置换算法。一个好的页面置换算法,应具有较低的页面更换频率。页面置换算法的好坏,将直接影响到系统的性能。以下分别是实验要求的两个页面置换算法的介

相关文档
最新文档