操作系统-请求页式存储管理实验报告分析解析汇编

操作系统-请求页式存储管理实验报告分析解析汇编
操作系统-请求页式存储管理实验报告分析解析汇编

操作系统

实验三

存储管理实验

班级:

学号:

姓名:

目录

1. 实验目的 (2)

2. 实验内容 (2)

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

(2) 将指令序列变换成为页地址流 (2)

(3) 计算并输出下述各种算法在不同内存容量下的命中率 (2)

3. 随机数产生办法 (3)

环境说明 (3)

4. 程序设计说明 (3)

4.1.全局变量 (3)

4.2.随机指令序列的产生 (4)

4.3.FIFO算法 (4)

4.4.LRU算法 (4)

4.5.OPT算法 (5)

5. 编程实现(源程序): (5)

6. 运行结果及分析 (11)

6.1.运行(以某两次运行结果为例,列表如下:) (11)

6.2.Belady’s anomaly (11)

1.实验目的

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

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

2.实验内容

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

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

a) 50% 的指令是顺序执行的;

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

c) 25% 的指令是均匀分布在后地址部分;

具体的实施方法是:

a) 在[0,319]的指令地址之间随机选取一起点m;

b) 顺序执行一条指令,即执行地址为m+1的指令;

c) 在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m';

d) 顺序执行一条指令,其地址为m'+1;

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

f) 重复上述步骤a)~f),直到执行320次指令。

(2) 将指令序列变换成为页地址流

设:

a) 页面大小为1K;

b) 用户内存容量为4页到32页;

c) 用户虚存容量为32K。

在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:第0条~第9条指令为第0页(对应虚存地址为[0,9]);

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

第310条~第319条指令为第31页(对应虚存地址为[310,319])。

按以上方式,用户指令可以组成32页。

(3) 计算并输出下述各种算法在不同内存容量下的命中率

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

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

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

命中率=1-页面失效次数/页地址流长度

在本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。

3.随机数产生办法

关于随机数产生办法,可以采用操作系统提供的函数,如Linux或UNIX系统提供函数srand()和rand(),分别进行初始化和产生随机数。例如:

srand();

语句可以初始化一个随机数;

a[0]=10*rand()/32767*319+1;

a[1]=10*rand()/32767*a[0];

语句可以用来产生a[0]与a[1]中的随机数。

环境说明

此实验采用的是Win7下Code::blocks 10.05编译器编程。

此word实验文档中采用notepad++的语法高亮。

4.程序设计说明

4.1.全局变量

const int maxn =320;//序列个数

const int max = maxn +20;//数组大小

const int maxp = max/10;//最大页数

int inst[max];//指令序列

int page[max];//页地址流

int size;//内存能容纳的页数

bool in[maxp];//该页是否在内存里,提高效率

int pin[maxp];//现在在内存里的页

其中in[]数组是为了方便直接判断该页是否在内存里,而不用遍历内存里所有页来判断。

fault_n用来记录缺页次数。

4.2.随机指令序列的产生

按照实验要求的写了,但是由于没有考虑细节,开始时出了点问题。

(1)当m=319时,我们顺序执行m+1会产生第32页的页地址,从而使页地址没能按要求限制在[0, 31]之间。

解决方法:采用循环模加来避免超出范围。

(2)但是这样之后有可能出现模0的问题。所以我索性将等于0的模数都赋值为160.

最后的程序如下。

void produce_inst()

{

int m, n;

int num =0;

while(num < maxn)

{

m = rand()% maxn;

inst[num++]=(m+1)%maxn;

if(num == maxn)break;

m =(m+2)% maxn;

if(m ==0) m =160;

n = rand()% m;

inst[num++]=(n+1)%maxn;

if(num == maxn)break;

n =(n+2)% maxn;

m = maxn - n;

if(m ==0) m =160;

m = rand()% m + n;

inst[num++]= m;

}

}

4.3.FIFO算法

定义变量ptr。

一开始先预调页填满内存。在这一部分,ptr指向下一个要存放的位置。

之后继续执行剩下的指令。此时,ptr表示队列最前面的位置,即最先进来的位置,也就是下一个要被替换的位置。ptr用循环加,即模拟循环队列。

4.4.LRU算法

定义数组ltu[],即last_time_use来记录该页最近被使用的时间。

定义变量ti模拟时间的变化,每执行一次加一。

这个算法,我没有预调页,而是直接执行所有指令。

若当前需要的页没在内存里,就寻找最近最少使用的页,也就是ltu[]最小的页,即最近一次使用时间离现在最久的页,然后替换掉它。或者在内存还未满时,直接写入,这个我以初始化内存里所有页为-1来实现。

若已经在内存里了,则只遍历内存内的页,把当前页的最近使用时间改一下即可。

4.5.OPT算法

定义数组ntu[], 即next_time_use来记录下一次被使用的时间,即将来最快使用时间。初始化为-1.

开始时预调页填满内存里的页。同样利用变量ptr来表示下一个要存放的位置从而控制预调页的过程。

接着初始化ntu数组为-1。然后求出每一页下一次被使用的指令号,以此代替使用时间。如果所有剩下的序列都没有用该页时,则还是-1.这种值为-1的页显然是最佳替换对象。

然后执行所有剩下的指令。当该页不在内存里时,遍历ntu数组,遇到-1的直接使用该页,没有则用ntu[]值最大的,也就是最晚使用的。

无论该页在不在内存里,因为这一次已经被使用了,所以都应该更新这个页的ntu[],只需往前看要执行的页流,记录下第一个遇到的该页即可。如果没有找到同样添-1即可。

5.编程实现(源程序):

#include

#include

#include

#include

using namespace std;

const int maxn =320;//序列个数

const int max = maxn +20;//数组大小

const int maxp = max/10;//最大页数

int inst[max];//指令序列

int page[max];//页地址流

int size;//内存能容纳的页数

bool in[maxp];//该页是否在内存里,提高效率

int pin[maxp];//现在在内存里的页

void welcome()

{

printf("******************************************\n");

printf("** By schnee On2011-12-06 **\n");

printf("** 班级:09211311 班内序号:30 **\n");

printf("******************************************\n\n");

}

void input_hint()

{

printf("\n1--create new instruction sequence 2--set memory page number(4 to 32)\n");

printf("3--solve by FIFO algorithm 4--solve by LRU algorithm\n");

printf("5--solve by OPT algorithm 0--exit\n");

printf("*********Please input Your choice: ");

}

/*通过随机数产生一个指令序列,共320条指令*/

void produce_inst()

{

int m, n;

int num =0;

while(num < maxn)

{

m = rand()% maxn;

inst[num++]=(m+1)%maxn;

if(num == maxn)break;

m =(m+2)% maxn;

if(m ==0) m =160;

n = rand()% m;

inst[num++]=(n+1)%maxn;

if(num == maxn)break;

n =(n+2)% maxn;

m = maxn - n;

if(m ==0) m =160;

m = rand()% m + n;

inst[num++]= m;

}

}

/*将指令序列变换成为页地址流*/

void turn_page_address()

{

for(int i=0; i

page[i]= inst[i]/10;

}

void FIFO_solve()

{

memset(in,false,sizeof(in));

int fault_n =0;//缺页率

int ptr, i;

//预调页填满空间

ptr =0;//下一个要放的位置

for(i=0; i

if(!in[page[i]])

{

pin[ptr++]= page[i];

in[page[i]]=true;

fault_n++;

}

//继续执行剩下的指令

ptr =0;//队列里最先进来的位置,即下一个要被替换的位置

for(; i

if(!in[page[i]])

{

in[pin[ptr]]=false;

in[page[i]]=true;

pin[ptr]= page[i];

fault_n++;

ptr =(ptr+1)% size;

}

printf("\nBy FIFO algorithm, the fault-page number is: %d\n", fault_n);

printf(" the hit ratio is : %.2lf\n",(1-(fault_n+0.0)/320.0)); }

void LRU_solve()

{

int ltu[maxp];//last_time_use

int ti =1;//模拟时间

int fault_n =0;

memset(ltu,0,sizeof(ltu));

memset(in,false,sizeof(in));

memset(pin,-1,sizeof(pin));

int min, ptr, i, j;

for(i=0; i

{

if(!in[page[i]])

{

//寻找lru

min=1000000; ptr=0;

for(j=0; j

{

if(ltu[j]< min)

{

min = ltu[j];

ptr = j;

}

}

//替换或写入

if(pin[ptr]!=-1)

in[pin[ptr]]=false;

in[page[i]]=true;

pin[ptr]= page[i];

fault_n++;

ltu[ptr]= ti++;

}

else//已经在内存里则只需更改最近使用时间

{

for(j=0; j

if(pin[j]== page[i])

{

ltu[j]= ti++;

break;

}

}

}

printf("\nBy LRU algorithm, the fault-page number is: %d\n", fault_n);

printf(" the hit ratio is : %.2lf\n",(1-(fault_n+0.0)/320.0)); }

void OPT_solve()

{

int ntu[maxp];//next_time_use

int fault_n =0;

int i, j;

memset(in,false,sizeof(in));

memset(ntu,-1,sizeof(ntu));

//预调页填满

int ptr =0;

for(i=0; i

{

if(!in[page[i]])

{

in[page[i]]=true;

pin[ptr]= page[i];

fault_n++;

ptr++;

}

}

//初始化ntu数组

ptr =0;

for(j=i; j

{

if(ntu[page[j]]==-1)

{

ntu[page[j]]= j;

ptr++;

}

}

int max;

for(; i

{

if(!in[page[i]])

{

max =0;ptr =0;

for(j=0; j

{

if(ntu[pin[j]]==-1)

{

ptr = j;

break;

}

if(ntu[pin[j]]> max)

{

max = ntu[pin[j]]; ptr = j;

}

}

in[pin[ptr]]=false;

in[page[i]]=true;

pin[ptr]= page[i];

fault_n++;

}

ntu[page[i]]=-1;

for(j=i+1; j

if(page[j]== page[i])

{

ntu[page[i]]= j;

break;

}

}

printf("\nBy OPT algorithm, the fault-page number is: %d\n", fault_n);

printf(" the hit ratio is : %.2lf\n",(1-(fault_n+0.0)/320.0)); }

int main()

{

srand(time(NULL));

welcome();

int choice;

while(1)

{

input_hint();

scanf("%d",&choice);

printf("\n");

if(choice ==0)

{

printf("BYE-BYE!!!\n");

break;

}

if(choice ==1)

{

produce_inst();

turn_page_address();

printf("New page address sequence is set OK!!!\n");

}

else if(choice ==2)

{

printf("Please input the size of memory page number: ");

scanf("%d",&size);

}

else if(choice ==3)

FIFO_solve();

else if(choice ==4)

LRU_solve();

else if(choice ==5)

OPT_solve();

else

printf("INPUT ERROR !!! \n");

}

return0;

}

6.运行结果及分析

6.1.运行(以某两次运行结果为例,列表如下:)

内存 4 5 10 15 20 25 32 FIFO 285 272 230 178 135 90 32 LRU 285 274 224 185 139 91 32 OPT 221 202 140 96 68 48 32 FIFO 272 262 206 167 128 82 32 LRU 271 265 204 163 130 86 32 OPT 201 183 127 92 66 47 32

随着页数的增多,除了FIFO对某些序列会有Belady’s anomaly(详见6.2)外,大部分情况和LRU算法、OPT算法都是缺页率减小。

OPT是理想情况,效率是最高的。当然当不缺页时,所有的算法缺页次数都是把所有页调进去的次数。

LRU算法有时候和FIFO算法的效率差别并不大。甚至有时候它还比FIFO低一些的。

6.2.Belady’s anomaly

如下,我稍微改了下输入,手动输入课本上的样例,编程见证了Belady异常现。这是只有FIFO算法才有的异常。

管理信息系统实验报告

实验一认识计算机硬件和网络结构 一、实验题目 认识计算机硬件和网络结构。 二、实验课时 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和其他设备的通道,起到缓冲和数据交换作用。

存储管理实验报告

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

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

操作系统实验心得

1-1:通过这次小实验,是我更加了解Linux一些常用指令的操作以及其作用,对于一个刚开始接触lniux操作系统的初学者来说非常有用,助于以后能够更进一步学习Linux操作系统。 1-2:在实验过程中,使用VI编辑器虽然不能像window操作系统那样对文本进行熟练度编辑,但是,VI编辑器使用命令来操作,将可以锻炼我的记忆力、对键盘的熟练读,还能帮助我们尽快适应linux操作系统的操作。 1-3:原本对liunx下的编译和调试环境不是很熟悉,但通过这次的实验,让我熟悉了linux 下的编译器和调试器的使用。 实验中使用了gcc命令,gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(#include)、预编译语句(如宏定义#define等)进行分析。 当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是链接。在链接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的库中链接到合适的地方。 1-4:API 接口属于一种操作系统或程序接口。通过实验,我了解了Windows的这种机制,加深了对API函数的理解。 2-1:通过本次实验了解了一些常用进程管理命令的使用,例如ps、kill命令,了解到换个kill与killall的不同,对于linux操作系统下的进程的学习打下基础,更好的学习进程。 2-2:本次实验是熟悉掌握Linux 系统常用进程创建与管理的系统调用,linux下使用fork()创建子进程,与windows下CreateProcess()创建子进程完全不同,通过比较小组更好的理解和掌握了进程的创建,对于进程的管理的理解也有了清晰地认识。 实验中遇到fork函数返回2次结果,经过分析结果如下: 由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。因为fork函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的。 调用fork之后,数据、堆栈有两份,代码仍然为一份但是这个代码段成为两个进程的共享代码段都从fork函数中返回,箭头表示各自的执行处。当父子进程有一个想要修改数据或者堆栈时,两个进程真正分裂。 2-3:通过这次实验对熟悉掌握和了解windows平台常用进线程控制API,有了更深刻的认识,认识到API函数对windows编程的重要性,了解进程线程在内存中的执行,特别认识互斥体Mutex对象,API函数一定要多用,才能记得。 3-1:该程序的输入变量具有限制,若输入除0和1的数据,则将视为0处理.改进的方法为修改if 语句中的条件为:1,即只要输入为非零,则有效。即逻辑表达式的值为真。(在逻辑数学里非零则表示为真!) 为了能较好的实现进程的同步,可以另外设一个标志量,标志临界资源是否正被访问,当a,b,c

管理信息系统实验报告分析报告

实验报告 课程:管理信息系统 一、实验目的 验证有关概念和理论,加深对概念和知识的理解和认识;熟悉和掌握Visual Basic 6.0 软件的使用方法;初步具备信息管理知识和制作数据字典、系统数据流程图的能力。运用课程讲授的管理信息系统的系统分析方法、模块化系统设计方法以及系统的调试方法进行人事档案管理信息系统的分析、设计、开发、实现与调试。 二、实验方法 面向对象法 三、实验环境及开发工具 1.硬件环境 在最低配置的情况下,系统的性能往往不尽如人意,但现在的硬件性能已经相当的出色,而且价格便宜,因此通常给服务器的配置高性能的硬件。 处理器:Interl Pentium II 266 MX 或更高 内存:64M 硬盘空间:2 GB 显卡:SVGA 显示适配器 显示器:液晶17寸 2.软件环境 操作系统:Windows/98/ME/2000/XP或更高版本 数据库:Microsoft Access 2000

3.实验开发工具:Visual Bisic 6.0程序系统 四、实验内容 (一)、系统分析 1、系统数据流程图 2、数据字典

3、系统中所有实体(包括实体的属性)以及实体之间的联系类型分析 人员的个人资料经过专业的处理部门的处理形成个人档案。档案包括自然情况,工作情况,简历,政治情况等各方面信息,内容比较庞大复杂。将档案信息传送到人员信息库。同时还综合考虑档案管理工作的性质,总结归纳出所需实现的功能。为人事档案进行服务,对人事的变动、人事资料、以及人事资料的查询,统计等功能。总体上说具有编辑,查询,用户管理,图表统计等功能。然后将最终结果提交到人力资源管理部门,由人力资源管理人员进行审查,以便于对职工的调配。 4、典型处理的表达 档案完整添加用户档案到档案库 个人信息成功添加到档案库 修改用户档案信息 档案不完整失败退回用户档案

管理信息系统实验报告

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

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

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

操作系统实验报告

实验四进程与线程实验目的(1)理解进程的独立空间;(2)理解线程的相关概念。实验内容与要求1、掌握进程创建和构造的相关知识和线程创建和构造的相关知识,2、了解C 语言程序编写的相关知识;3、理解进程的独立空间的实验内容及步骤4、理解线程的实验步骤5、对整个实验过程进行分析总结,给出详细步骤;实验过程1、进程的与线程的创建和构造进程简单来说就是在操作系统中运行的程序,它是操作系统资源管理的最小单位。新的进程通过克隆旧的程序(当前进程)而建立。fork() clone()(对于线程)系统调用可用来建立新的进程。2、理解进程的独立空间流程图如下所示:(1)编写一个程序,在其main()函数中定义一个变量shared,对其进行循环加/减操作,并输出每次操作后的结果源程序如下所示: #include int main() intshared=1; shared++; shared fork()ERROR 输出shared 操作输出shared 操作pid printf("%d\n",shared); shared--; printf("%d\n", shared); shared++; printf("%d\n", shared); shared--; printf shared);return (2)使用系统调用fork()创建子进程,观察该变量的变化(3)修改程序把shared 变量定义到main()函数之外,重复第(2)步操作,观察该变量的变化。(4)当把shared 放到主函数之外时,运行结果和内部时相比,并未发生变化。 一. 实验目的及实验环境 (一)实验环境 Linux 操作系统

管理信息系统实验报告答案要点

实验

3、分组讨论并确定小组管理信息系统的题目,并给出题目的具体功能和要求。心得体 会:(可以从以下几个方面来总结:你在上机过程中遇到了哪些难题?你是怎么克服的?你的收获有哪些?你有什么没有解决的问题等) 实验

书E 选脚 ■1. 订盼蔚豆 建立学生表 则剩余不够的部分还须向其他书商订购,同时 在订购信息中添加该教材在另一个书商中订购的信息。 1、请画出上述内容的 E-R 图。 2、把E-R 图转换成合理的关系模式: 学 生(学号,姓名,性别,院系,年龄) 教 材(书号,书名,出版社,出版日期, 书商(商号,电话,联系人,商名) 山膿E 軀 nanie = ^Buy_Booksdb , j filename - J E: \Buy_Bcoksdb* mdf', size = 5j maxsize - 20, f llegrovrth = 1 ) log on ( rtajne-' Buy^Bookslog 1、 f ilenajue~, E:\Buy_Bcakslog. ldf'. size=2_, maxsize! 8, fllegrawth-1 ] Go 口. ■号, 3、在SQL Serve r (或Access )中建立数据库和表(截图) 建立数据库: create database Buy Books on primary 主键为学号 主编) 主键为书号 主键为商号 ' —i r - ! 見意「腿 性别 商号 1 ---------- 戟条人

CREATE TABLE St udent ( Sno char 9- primary key. Sname char (20 i unique, Ssex char (2), Sage smallint. Sdept char (2Q 1 ) f -f 建立教材表 CREATE TABLE Books ( Eno char 9) primary key Btitle char (40), Bauthor char ^20), Bpress char 40 Bdate datetime ): 建立书商表 -CREATE TABLE SSellcr BSno char 9[ priinaty key, BSnane char 201 . Tel char 30;. Person char (201 feedback char '40 1 鼻 /*书号* /車书名*/ 八作者于/ /廉也版社康/ " 由版日期柑

存储管理实验报告.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)计算并输出下述各种算法在不同内存容量下的命中率。

操作系统实验报告

操作系统实验报告 集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

实验二进程调度1.目的和要求 通过这次实验,理解进程调度的过程,进一步掌握进程状态的转变、进程调度的策略,进一步体会多道程序并发执行的特点,并分析具体的调度算法的特点,掌握对系统性能的评价方法。 2.实验内容 阅读教材《计算机操作系统》第二章和第三章,掌握进程管理及调度相关概念和原理。 编写程序模拟实现进程的轮转法调度过程,模拟程序只对PCB进行相应的调度模拟操作,不需要实际程序。假设初始状态为:有n个进程处于就绪状态,有m个进程处于阻塞状态。采用轮转法进程调度算法进行调度(调度过程中,假设处于执行状态的进程不会阻塞),且每过t个时间片系统释放资源,唤醒处于阻塞队列队首的进程。 程序要求如下: 1)输出系统中进程的调度次序; 2)计算CPU利用率。 3.实验环境 Windows操作系统、VC++6.0 C语言 4设计思想: (1)程序中进程可用PCB表示,其类型描述如下:

structPCB_type { intpid;//进程名 intstate;//进程状态 2——表示“执行”状态 1——表示“就绪”状态 0——表示“阻塞”状态 intcpu_time;//运行需要的CPU时间(需运行的时间片个数) } 用PCB来模拟进程; (2)设置两个队列,将处于“就绪”状态的进程PCB挂在队列ready中;将处于“阻塞”状态的进程PCB挂在队列blocked中。队列类型描述如下: structQueueNode{ structPCB_typePCB; StructQueueNode*next; } 并设全程量: structQueueNode*ready_head=NULL,//ready队列队首指针 *ready_tail=NULL,//ready队列队尾指 针

操作系统-Linux课程实验报告材料

实验1.1、1.2 Linux Ubuntu的安装、创建新的虚拟机VMWare

实验1.3 Shell编程 1.实验目的与内容 通过本实验,了解Linux系统的shell机制,掌握简单的shell编程技巧。 编制简单的Shell程序,该程序在用户登录时自动执行,显示某些提示信息,如“Welcome to Linux”, 并在命令提示符中包含当前时间、当前目录和当前用户名等基本信息。 2.程序源代码清单 #include #include int main(){ printf("Hello Linux\n"); int pid; int state; int pfd[2]; pipe(pfd); if (fork()==0){ printf("In the grep progress\n"); dup2(pfd[0],0); close(pfd[0]); close(pfd[1]); execlp("grep","grep","sh",0); perror("exelp grep error");

} esle if(fork()==0){ printf("In the ps progress\n"); dup2(pfd[1],1); close(pfd[0]); close(pfd[1]); execlp("ps","ps","-ef",0); perror("execlp ps -ef"); } close(pfd[1]); close(pfd[0]); wait(&state); wait(&state); } 实验2.3 内核模块 实验步骤: (1).编写内核模块 文件中主要包含init_clock(),exit_clock(),read_clock()三个函数。其中init_clock(),exit_clock()负责将模块从系统中加载或卸载,以及增加或删除模块在/proc中的入口。read_clock()负责产生/proc/clock被读时的动作。(2).编译内核模块Makefile文件 # Makefile under 2.6.25

网络存储实验报告

湖北文理学院《网络存储》 实验报告 专业班级:计科1211 姓名:*** 学号:*** 任课教师:李学峰 2014年11月16日

实验01 Windows 2003的磁盘阵列技术 一、实验目的 1.掌握在Windows 2003环境下做磁盘阵列的条件和方法。 2.掌握在Windows 2003环境下实现RAID0的方法。 3. 掌握在Windows 2003环境下实现RAID1的方法。 4. 掌握在Windows 2003环境下实现RAID5的方法。 5. 掌握在Windows 2003环境下实现恢复磁盘阵列数据的方法。 二、实验要求 1.在Windows 2003环境下实现RAID0 2.在Windows 2003环境下实现RAID1 3.在Windows 2003环境下实现RAID5 4.在Windows 2003环境下实现恢复磁盘阵列数据 三、实验原理 (一)磁盘阵列RAID技术的概述 RAID是一种磁盘容错技术,由两块以上的硬盘构成冗余,当某一块硬盘出现物理损坏时,换一块同型号的硬盘即可自行恢复数据。RAID有RAID0、RAID1、RAID5等。RAID 技术是要有硬件来支持的,即常说的RAID卡,如果没RAID卡或RAID芯片,还想做RAID,那就要使用软件RAID技术,微软Windows系统只有服务器版本才支持软件RAID技术,如Windows Server 2003等。 (二)带区卷(RAID0) 带区卷是将多个(2-32个)物理磁盘上的容量相同的空余空间组合成一个卷。需要注意的是,带区卷中的所有成员,其容量必须相同,而且是来自不同的物理磁盘。带区卷是Windows 2003所有磁盘管理功能中,运行速度最快的卷,但带区卷不具有扩展容量的功能。它在保存数据时将所有的数据按照64KB分成一块,这些大小为64KB的数据块被分散存放于组成带区卷的各个硬盘中。 (三)镜像卷(RAID1) 镜像卷是单一卷的两份相同的拷贝,每一份在一个硬盘上。它提供容错能力,又称为RAID1技术。 RAID1的原理是在两个硬盘之间建立完全的镜像,即所有数据会被同时存放到两个物理硬盘上,当一个磁盘出现故障时,系统仍然可以使用另一个磁盘内的数据,因此,它具备容错的功能。但它的磁盘利用率不高,只有50%。 四、实验设备 1.一台装有Windows Server 2003系统的虚拟机。 2.虚拟网卡一块,类型为“网桥模式”。 3.虚拟硬盘五块。 五、实验步骤 (一)组建RAID实验的环境 (二)初始化新添加的硬盘 (三)带区卷(RAID0的实现)

操作系统实验报告心得体会

操作系统实验报告心得体会 每一次课程设计度让我学到了在平时课堂不可能学到的东西。所以我对每一次课程设计的机会都非常珍惜。不一定我的课程设计能够完成得有多么完美,但是我总是很投入的去研究去学习。所以在这两周的课设中,熬了2个通宵,生物钟也严重错乱了。但是每完成一个任务我都兴奋不已。一开始任务是任务,到后面任务就成了自己的作品了。总体而言我的课设算是达到了老师的基本要求。总结一下有以下体会。 1、网络真的很强大,用在学习上将是一个非常高效的助手。几乎所有的资料都能够在网上找到。从linux虚拟机的安装,到linux的各种基本命令操作,再到gtk的图形函数,最后到文件系统的详细解析。这些都能在网上找到。也因为这样,整个课程设计下来,我浏览的相关网页已经超过了100个(不完全统计)。当然网上的东西很乱很杂,自己要能够学会筛选。 不能决定对或错的,有个很简单的方法就是去尝试。就拿第二个实验来说,编译内核有很多项小操作,这些小操作错了一项就可能会导致编译的失败,而这又是非常要花时间的,我用的虚拟机,编译一次接近3小时。所以要非常的谨慎,尽量少出差错,节省时间。多找个几个参照资料,相互比较,

慢慢研究,最后才能事半功倍。 2、同学间的讨论,这是很重要的。老师毕竟比较忙。对于课程设计最大的讨论伴侣应该是同学了。能和学长学姐讨论当然再好不过了,没有这个机会的话,和自己班上同学讨论也是能够受益匪浅的。大家都在研究同样的问题,讨论起来,更能够把思路理清楚,相互帮助,可以大大提高效率。 3、敢于攻坚,越是难的问题,越是要有挑战的心理。这样就能够达到废寝忘食的境界。当然这也是不提倡熬夜的,毕竟有了精力才能够打持久战。但是做课设一定要有状态,能够在吃饭,睡觉,上厕所都想着要解决的问题,这样你不成功都难。 4、最好在做课设的过程中能够有记录的习惯,这样在写实验报告时能够比较完整的回忆起中间遇到的各种问题。比如当时我遇到我以前从未遇到的段错误的问题,让我都不知道从何下手。在经过大量的资料查阅之后,我对段错误有了一定的了解,并且能够用相应的办法来解决。 在编程中以下几类做法容易导致段错误,基本是是错误地使用指针引起的 1)访问系统数据区,尤其是往系统保护的内存地址写数据,最常见就是给一个指针以0地址 2)内存越界(数组越界,变量类型不一致等) 访问到不属于你的内存区域

系统分析与设计实验报告

鞋店进销存管理系统 一.项目背景 随着计算机技术的不断发展, 它已经成为人们工作和生活中不可缺少的工具。早在1954年,银行、大公司和大企业纷纷采用计算机进行账户和账目管理、生产管理、库存管理、销售管理、统计报表等。从数据的收集、存储、整理到检索统计,应用的范围日益扩大,使计算机的应用很快超过科学计算,成为最大的计算机应用领域。 鞋店管理的特点是信息处理量比较大,所存的鞋种类多,而且由于进货单、销售单、需求单等单据发行量特别大,关联信息多,查询和统计的方式各不相同等原因,因此在管理上实现起来有一定困难。在管理的过程中经常会出现信息的重复传递,单据报表种类繁多,各个部门管理规格不统一等问题。 在本系统的设计过程中,为了克服这些困难,满足计算机管理的需要,我们采取了下面的一些原则: 1、统一各种原始单据的格式,统一账目和报表的格式。 2、删除不必要的管理冗余,实现管理规范化、科学化。 3、程序代码标准化,软件统一化,确保软件的可维护性和实用性。 4、界面尽量简单化,做到实用,方便,尽量满足书店中不同层次员工 的需要。 二.定义 “鞋店进销存管理系统”为用户提供添加、修改、查询、退货操作等服务。用户在登陆界面输入用户名,密码后系统核对正确进入系统内部。系统就要求用户选择事务类型(添加、修改、查询、退货等),直至用户选择退出应用服务,询问用户是否退出应用服务,如果用户选择结束,系统重回登陆界面。用户进入添加界面后,首先可以输入的数字必须大于等于100),否则系统显示输入有误。用户点击确认后,由系统查询,判断该取值是否超出库存量,如果没有,则系统会显示确认界面,用户单点击“确认”后,系统自动生成账单,并在后台进行工作,系统进行清

操作系统实验报告16487

西安邮电大学 (计算机学院) 课实验报告 实验名称:进程管理 专业名称:计算机科学与技术 班级: 学生: 学号(8位): 指导教师: 实验日期:*****年**月**日

一. 实验目的及实验环境 目的:(1)加深对进程概念的理解,明确进程和程序的区别。 (2)进一步认识并发执行的实质。 (3)分析进程竞争资源现象,学习解决进程互斥的方法。 (4)了解Linux系统中进程通信的基本原理。 环境:Linux操作系统环境: 二. 实验容 (1)阅读Linux的sched.h源文件,加深对进程管理概念的理解。 (2)阅读Linux的fork.c源文件,分析进程的创建过程。 三.方案设计 (1)进程的创建 编写一段源程序,使系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察纪录屏幕上的显示结果,并分析原因。(2)进程的控制 修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕出现的现象,并分析原因。 如果在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 (3)①编写一段程序,使其现实进程的软中断通信。 要求:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按DEL键);当捕捉到中断信号后,父进程用系统调用Kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止: Child Processll is Killed by Parent! Child Processl2 is Killed by Parent! 父进程等待两个子进程终止后,输出如下的信息后终止 Parent Process is Killed! 程序流程图如下:

操作系统实验心得(精选多篇)

操作系统实验心得 每一次课程设计度让我学到了在平时课堂不可能学到的东西。所以我对每一次课程设计的机会都非常珍惜。不一定我的课程设计能够完成得有多么完美,但是我总是很投入的去研究去学习。所以在这两周的课设中,熬了2个通宵,生物钟也严重错乱了。但是每完成一个任务我都兴奋不已。一开始任务是任务,到后面任务就成了自己的作品了。总体而言我的课设算是达到了老师的基本要求。总结一下有以下体会。 1、网络真的很强大,用在学习上将是一个非常高效的助手。几乎所有的资料都能够在网上找到。从linux虚拟机的安装,到linux的各种基本命令操作,再到gtk的图形函数,最后到文件系统的详细解析。这些都能在网上找到。也因为这样,整个课程设计下来,我浏览的相关网页已经超过了100个(不完全统计)。当然网上的东西很乱很杂,自己要能够学会筛选。不能决定对或错的,有个很简单的方法就是去尝试。就拿第二个实验来说,编译内核有很多项小操作,这些小操作错了一项就可能会导致编译的失败,而这又是非常要花时间的,我用的虚拟机,编译一次接近3小时。所以要非常的谨慎,尽量少出差错,节省时间。多找个几个参照资料,相互比较,慢慢研究,最后才能事半功倍。 2、同学间的讨论,这是很重要的。老师毕竟比较忙。对于课程设计最大的讨论伴侣应该是同学了。能和学长学姐讨论当然再好不过了,没有这个机会的话,和自己班上同学讨论也是能够受益匪浅的。

大家都在研究同样的问题,讨论起来,更能够把思路理清楚,相互帮助,可以大大提高效率。 3、敢于攻坚,越是难的问题,越是要有挑战的心理。这样就能够达到废寝忘食的境界。当然这也是不提倡熬夜的,毕竟有了精力才能够打持久战。但是做课设一定要有状态,能够在吃饭,睡觉,上厕所都想着要解决的问题,这样你不成功都难。 4、最好在做课设的过程中能够有记录的习惯,这样在写实验报告时能够比较完整的回忆起中间遇到的各种问题。比如当时我遇到我以前从未遇到的段错误的问题,让我都不知道从何下手。在经过大量的资料查阅之后,我对段错误有了一定的了解,并且能够用相应的办法来解决。 在编程中以下几类做法容易导致段错误,基本是是错误地使用指针引起的 1)访问系统数据区,尤其是往系统保护的内存地址写数据,最常见就是给一个指针以0地址 2)内存越界(数组越界,变量类型不一致等) 访问到不属于你的内存区域 3)其他 例如: <1>定义了指针后记得初始化,在使用的时候记得判断是否为 null <2>在使用数组的时候是否被初始化,数组下标是否越界,数组元素是否存在等 <3>在变量处理的时候变量的格式控制是否合理等

管理信息系统实验报告

. 经济管理学院 《管理信息系统》实验报告 集发农业生态观光园景区管理系统设计

专业资料 . 课程实验报告基本内容一、系统概述

1、系统背景 集发农业生态观光园作为秦皇岛大型旅游景区,其旅游项目较为齐全,景区内存在餐饮,住宿,娱乐,观光,植物采摘,民俗展示,购物中心等众多旅游项目,但经过我们的网上调查,其还没有建立自己的官方网站系统。我们通过与景区负责人员的沟通,了解到该景区有意向开发自己的官方网站系统,并且对于网站系统内部的板块设计提出了一些特定需求。 2、功能需求 (1)用户注册登录功能 用户可以注册为网站会员。会员支持修改、完善会员基本资料,自助修改密码,查看、管理订单、在线支付订单,对网站进行留言评论、查看留言。 (2)会员管理 后台可以直接添加会员,记录会员注册时间、注册IP、登录次数、最后登录时间,会员详细资料应记录会员发布的信息、商品、购买过的商品、评论留专业资料 . 言及相关资料信息,支持按用户名搜索用户、按注册时间范围显示用户,支持删除、关闭用户。 (3)后台用户 添加后台管理员,支持自定义设置姓名、密码、所属级别、设置

开通或者关闭或者删除的权限。自定义设置用户组的详细权限分配。(4)更新景区、活动、票务信息 随时更新景区景点的介绍,包括文字和图片;自定义设置添加网站活动名称、时间,详情;更改门票、住宿、餐饮的价格及相关信息(5)网站留言 网站动态,实时显示最新留言,会员可以编辑,提交留言,管理员可以回复、删除留言。 (6)支付接口 系统内置网上支付系统:支付宝、网银,配置好账号相关信息即可使用支付接口,支付接口适用于本系统的购物支付。由于时间关系与技术问题,支付功能暂时没有实现,也是本次网站设计课程的不足之处。 3、人员分工 A:系统背景、人员分工、系统目标、子系统划分、业务流程分析、课 程实验报告的汇总与修改 B:系统可行性分析、系统必要性分析 C:输入设计、输出设计、信息系统流程图设计 D:数据库设计、功能结构图设计、数据流程分析 二、系统规划 1、系统目标

存储管理实验报告

综合性实验报告 一、实验目的 通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。 页面置换算法是虚拟存储管理实现的关键,通过本次实验理解内存页面调度的机制,在模拟实现FIFO、LRU、OPT、LFU、NUR几种经典页面置换算法的基础上,比较各种置换算法的效率及优缺点,从而了解虚拟存储实现的过程。 二、总体设计 1、编写函数计算并输出下述各种算法的命中率 ①OPT页面置换算法 OPT所选择被淘汰的页面是已调入内存,且在以后永不使用的,或是在最长时间内不再被访问的页面。因此如何找出这样的页面是该算法 的关键。可为每个页面设置一个步长变量,其初值为一足够大的数,对 于不在内存的页面,将其值重置为零,对于位于内存的页面,其值重置 为当前访问页面与之后首次出现该页面时两者之间的距离,因此该值越 大表示该页是在最长时间内不再被访问的页面,可以选择其作为换出页 面。 ②FIFO页面置换算法 FIFO总是选择最先进入内存的页面予以淘汰,因此可设置一个先进先出的忙页帧队列,新调入内存的页面挂在该队列的尾部,而当无空闲 页帧时,可从该队列首部取下一个页帧作为空闲页帧,进而调入所需页 面。 ③LRU页面置换算法 LRU是根据页面调入内存后的使用情况进行决策的,它利用“最近的过去”作为“最近的将来”的近似,选择最近最久未使用的页面予以 淘汰。该算法主要借助于页面结构中的访问时间time来实现,time记

录了一个页面上次的访问时间,因此,当须淘汰一个页面时,选择处于 内存的页面中其time值最小的页面,即最近最久未使用的页面予以淘 汰。 ④LFU页面置换算法 LFU要求为每个页面配置一个计数器(即页面结构中的counter),一旦某页被访问,则将其计数器的值加1,在需要选择一页置换时,则 将选择其计数器值最小的页面,即内存中访问次数最少的页面进行淘 汰。 ⑤NUR页面置换算法 NUR要求为每个页面设置一位访问位(该访问位仍可使用页面结构中的counter表示),当某页被访问时,其访问位counter置为1。需要 进行页面置换时,置换算法从替换指针开始(初始时指向第一个页面) 顺序检查处于内存中的各个页面,如果其访问位为0,就选择该页换出, 否则替换指针下移继续向下查找。如果内存中的所有页面扫描完毕未找 到访问位为0的页面,则将替换指针重新指向第一个页面,同时将内存 中所有页面的访问位置0,当开始下一轮扫描时,便一定能找到counter 为0的页面。 2、在主函数中生成要求的指令序列,并将其转换成页地址流;在不同 的内存容量下调用上述函数使其计算并输出相应的命中率。 三、实验步骤(包括主要步骤、代码分析等) 主要步骤: 、通过随机数产生一个指令序列,共320条指令。其地址按下述原则生成: ①50%的指令是顺序执行的; ②25%的指令是均匀分布在前地址部分; ③25%的指令是均匀分布在后地址部分; 具体的实施方法是: A.在[0,319]的指令地址之间随机选区一起点M; B.顺序执行一条指令,即执行地址为M+1的指令; C.在前地址[0,M+1]中随机选取一条指令并执行,该指令的地址为M’; D.顺序执行一条指令,其地址为M’+1; E.在后地址[M’+2,319]中随机选取一条指令并执行;

操作系统实验报告(进程的创建)

实验题目进程的创建小组合作否姓名班级学号 一、实验目的 1、了解进程的创建。 2、了解进程间的调用以及实现。 3、分析进程竞争资源的现象,学习解决互斥的方法。 4、加深对进程概念的理解,认识并发执行的本质。 二.实验环境 Windows 系统的计算机一台,安装了Linux虚拟机 三、实验内容与步骤 1、fork()系统调用的使用例子 程序代码: #include #include #include int glob=3; int main(void) { pid_t pid;int loc=3; printf("before fork();glod=%d,loc=%d.\n",glob,loc); if((pid=fork())<0) { printf("fork() error. \n"); exit(0); } else if(pid==0) { glob++; loc--; printf("child process changes glob and loc: \n"); } else

wait(0); printf("parent process doesn't change the glob and loc:\n"); printf("glob=%d,loc=%d\n",glob,loc); exit(0); } 运行结果: 2、理解vofork()调用: 程序代码: #include #include #include int glob=3; int main(void) { pid_t pid; int loc=3; if((pid=vfork())<0) { printf("vfork() error\n"); exit(0); } else if(pid==0) { glob++; loc--; printf("child process changes the glob and loc\n"); exit(0); } else printf ("parent process doesn't change the glob and loc\n"); printf("glob=%d,val=%d\n",glob,loc);

操作系统实验实验总结实验报告

8.1 实验的基本内容 (1) 本学期完成的操作系统实验主要有(根据实际完成的实验情况填写): 1) 实验1.1 主要内容:________________________________________________ ________________________________________________________________________ ________________________________________________________________________ 2) 实验1.2 主要内容:________________________________________________ ________________________________________________________________________ ________________________________________________________________________ 3) 实验2.1 主要内容:________________________________________________ ________________________________________________________________________ ________________________________________________________________________ 4) 实验2.2 主要内容:________________________________________________ ________________________________________________________________________ ________________________________________________________________________ 5) 实验2.3 主要内容:________________________________________________ ________________________________________________________________________ ________________________________________________________________________ 6) 实验3.1 主要内容:________________________________________________ ________________________________________________________________________ ________________________________________________________________________ 7) 实验3.2 主要内容:________________________________________________ ________________________________________________________________________ ________________________________________________________________________ 8) 实验4.1 主要内容:________________________________________________ ________________________________________________________________________ ________________________________________________________________________ 9) 实验4.2 主要内容:________________________________________________ ________________________________________________________________________ ________________________________________________________________________ 10) 实验4.3 主要内容:_______________________________________________ ________________________________________________________________________ ________________________________________________________________________ 11) 实验5.1 主要内容:_______________________________________________ ________________________________________________________________________ ________________________________________________________________________ 12) 实验5.2 主要内容:_______________________________________________ ________________________________________________________________________ 实验8 实验总结

相关文档
最新文档