操作系统课程设计报告

发布 2022-10-05 12:25:28 阅读 4249

课程设计任务书。

目录。一、 课程设计目的及要求 2

二、相关知识 2

三、题目分析 3

四、概要设计 3

五、**及流程 4

六、运行结果 9

七、设计心得 10

参考文献 11

页面置换算法。

实验目的:深入掌握内存调度算法的概念原理和实现方法。

设计要求:编写程序实现:

1)先进先出页面置换算法(fifo)

2)最近最久未使用页面置换算法(lru)

3)最佳置换页面置换算法(opt)

专题:设计一个虚拟存储区和内存工作区,编程序演示以上三种算法的具体实。

现过程,并计算访问命中率。

演示页面置换的三种算法。

1 先进先出(fifo)算法。

这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程已调入内存的页面,按照先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总指向最老的页面。

但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如,含有全局变量、常用函数、例程等的页面,fifo算法并不能保证这些页面不被淘汰。

2 最近最久未使用(lru)算法。

fifo置换算法性能之所以较差,是因为它所依据的条件是各个页面调入内存的时间,而页面调入的先后并不能反映页面的使用情况。最近最久未使用(lru)的页面置换算法,是根据页面调入内存后的使用情况进行决策的。由于无法**各页将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,lru置换算法是选择最近最久未使用的页面予以淘汰。

该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当须淘汰一个页面时,选择现有页面中其t值最大的,即最近最久未使用的页面予以淘汰。

3 最佳(optimal)算法。

最佳置换算法是由belady于2024年提出的一种理论上的算法。其所选择的被淘汰的页面,将是以后永不使用的,或是在最长(未来)时间内不再被访问的页面。采用最佳置换算法,通常可保证获得最低的缺页率。

但由于人们目前还无法预知一个进程在内存的若干个页面中,哪一个页面是将来最长时间内不再访问的,因而该算法时无法实现的,但可以利用该算法评价其他算法。

熟悉页面置换算法及其实现,引入计算机系统性能评价方法的概念。页面置换算法是虚拟存储管理实现的关键,通过本次课程设计理解内存页面调度的机制,在模拟实现fifo、lru和opt几种经典页面置换算法的基础上,比较各种置换算法的效率及优缺点,从而了解虚拟存储实现的过程。

4.1进入系统模块。进入登陆界面,输入内存页面数和实际页数。

int input(int x,pro p[x])

cout<<"请输入实际页数:";

dowhile(1);

4.2页面号打印模块。打印输入的页面号。

void print(pro* page1)

pro*page=new pro[y];/定义一个指针。

page=page1;

for(int i=0;i if(page[i].num==-1)

cout<<"

elsecout< cout<}

4.3菜单选择模块。选择相应的页面的置换方式,选择相应的字母,进入相应的功能。

4.4算法模块。选择相应的页面置换算法。

4.5显示输出模块。显示页面被置换的情况。

4.6缺页次数和缺页率模块。计算页面号输入的结果。

4.7退出系统模块。退出置换页面。

#include<>

#define x 40

int y;

struct pro//内存页的结构体。

int num,time;

int input(int x,pro p[x]) 输入函数,输入实际页号和实际页数。

cout<<"请输入实际页数:";

dowhile(1);

cout< for(int i=0;i

return x;//x 代表实际页面走向数。

void print(pro* page1) /打印当前内存中存放的页面。

pro*page=new pro[y];/定义一个指针。

page=page1;

for(int i=0;i if(page[i].num==-1)

cout<<"

elsecout< cout<}

int search(int z,pro*page1) /查找内存中是否存在要调入的页面。

pro*page=new pro[y];

page=page1;

for(int i=0;i return -1;

int max(pro*page1)//找出离现在时间最长的页面。

pro*page=new pro[y];

page=page1;

int z=page[0].time,i=0;

while(i

for(i=0;i if(z==page[i].time) return i;//找最长时间的下标。

return -1;

int compfu(pro*page1,int i,int t,pro p[x])/找到最久不使用的页面。

pro*page=new pro[y];

page=page1;

int count=0;

for(int j=i;j

return count;

int main()

cout<<"可用内存页面数"< cin>>y;

pro p[x];

pro*page=new pro[y];

char z;

int x=0,t=0;

float y=0;

m=input(x,p);

doint i=0;

cout<<"f:fifo页面置换"< cout<<"l:lru 页面置换"< cout<<"o:opt 页面置换"< cout<<"按其它键结束"< cin>>z;

if(z=='f') fifo页面置换。

if(z=='l') lru页面置换。

if(t==1)

if(t==2)

if(k==-1) print(page);

i++;cout<<"缺页次数:"<

if(z=='o')/opt页面置换。

y=0;//记录缺页数。

while(i

if(search(p[i].num,page)>=0)i++;

操作系统课程设计报告

西安郵電大學。院系名称 计算机学院。专业名称 软件工程。班级 1104 学生姓名 赵大伟。学号 8位 04113124 指导教师 舒新峰。设计起止时间 2013.11.10 2013.11.20 1 通过观察 分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在posix 规范中...

操作系统课程设计报告

课程设计。课程名称操作系统。题目名称多级文件系统 2 学生学院计算机学院 专业班级。学号。学生姓名。指导教师。年月日。目录。一 课程设计 6 二 开发工具及环境 6 三 设计内容 6 四 结构图 8 五 部分 9 六 运行截图 11 七 参考文献 15 八 心得体会 15 本课程设计要求设计一个模拟...

操作系统课程设计报告

实验一进程管理。一 实验目的。1 开发一个函数,建立进程控制块和资源控制块结构,并实现相关数据结构的初始化。2 开发一系列操作,由进程调用这些操作,达到控制进程申请或释放各种资源的目的。通过实验理解进程的概念,进程的组成 pcb结构 进程的并发执行和操作系统进行进程管理的相关原语 主要是进程的创建 ...