操作系统上机实验2Word格式文档下载.docx
- 文档编号:13090432
- 上传时间:2022-10-04
- 格式:DOCX
- 页数:25
- 大小:101.31KB
操作系统上机实验2Word格式文档下载.docx
《操作系统上机实验2Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《操作系统上机实验2Word格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。
P[0]=0,P[1]=1,……,P[M-1]=M-1
用一指针K指示当要装入新页时应调出的页在数组中的位置,K的初值为“0”。
当产生缺页中断后,操作系统总是选择P[K]所指示的页面调出,然后执行
P[K]=要装入的新页页号K=(K+1)MODM
在实验中不必实际地启动磁盘执行调出一页和装入一页的工作,而用输出“OUT调出的页号”和“IN要装入的页号”来模拟一次调出和装入的过程。
模拟程序的流程图见附图。
④假定主存的每块长度为1024个字节,现有一个共7页的作业,其副本已在磁盘上。
系统为该作业分配了4个主存块,且该作业的第0页至第3页已经装入主存,其余3
页尚未装入主存,该作业的页表见附表2。
如果该作业依次执行的指令序列如附表3所示。
依次执行的指令序列来调式你所设计的程序。
⑤为了检查程序的正确性,可自行确定若干组指令序列,运行设计的程序,核对执行结
开始
取一条指令
取指令中访问的页号→L查页表
是
否(产生缺页中断)
页标志=1
形成绝对地址
是“
置L 否
输出“*
输出绝对地址
否
有后继指令?
A
B
取下一条指令
结束
果。
J=P[K]
J
输出“OUT
输出“IN
P[K]=L
修改页表
程序:
#include<
stdio.h>
#include<
iostream.h>
string.h>
math.H>
#defineSIZE7
#defineM4
structpagetable_type
{
intpgno;
intflag;
intmemblockno;
intmodiflag;
intdiskplace;
};
structopefile_type
charopera;
intpgno;
intpgaddr;
charflname[20];
voidsave()
FILE*fps;
inti=0;
structopefile_typeope;
if((fps=fopen(flname,"
wb"
))==NULL)
printf("
canotopenfile\n"
);
return;
}
请输入命令(cdd),输入空格为结束.\n"
cin>
>
ope.opera>
ope.pgno>
ope.pgaddr;
// scanf("
%c%d%d\n"
&
ope.opera,&
ope.pgaddr,&
ope.pgno);
printf("
ope.opera,ope.pgno,ope.pgaddr);
while((ope.opera!
='
e'
)&
&
(ope.opera!
E'
))
if(fwrite(&
ope,sizeof(opefile_type),1,fps)!
=1)printf("
filewriteerror\n"
请输入命令(cdd),输入e/E为结束.\n"
命令输入结束.\n"
fclose(fps);
voidreadm()
FILE*fpm;
structopefile_typeopem;
if((fpm=fopen(flname,"
rb"
文件打开错!
"
//exit(0);
if(fread(&
opem,sizeof(structopefile_type),1,fpm)!
=1)
if(feof(fpm))
// printf("
\nendoffile!
\n"
fclose(fpm);
return;
文件读错误."
while(!
(feof(fpm)))
opem.opera,opem.pgno,opem.pgaddr);
endoffile"
voidmain()
charcff;
structpagetable_typepgt[SIZE];
inttemp,l,k,j,counter=0;
intp[M];
命令文件是否存在?
Y/N?
cff=getchar();
请输入文件名:
scanf("
%s"
flname);
if((cff=='
n'
)||(cff=='
N'
文件不存在建立文件!
save();
readm();
for(temp=0;
temp<
SIZE;
temp+=1)
%s%d%s"
"
请输入页表的第"
temp,"
项的值(ddddd):
scanf("
%d%d%d%d%d"
pgt[temp].pgno,&
pgt[temp].flag,&
pgt[temp].memblockno,&
pgt[temp].modiflag,&
pgt[temp].diskplace);
if((fpm=fopen(flname,"
if(feof(fpm)){printf("
文件读错误.\n"
for(temp=0;
M;
temp++)p[temp]=temp;
k=0;
运行结果显示:
while(!
l=opem.pgno;
sb:
if(pgt[l].flag==1)
else
temp=pgt[l].memblockno*1024+opem.pgaddr;
if((opem.opera=='
s'
)||(opem.opera=='
S'
))pgt[l].modiflag=1;
第%d指令访问的绝对地址为%d\n"
counter+1,temp);
counter++;
%d%s\n"
l,"
页号"
j=p[k];
%d\n"
pgt[j].modiflag==1);
if(pgt[j].modiflag==1)
%s%d\n"
OUT:
j);
IN:
l);
p[k]=l;
pgt[j].flag=0;
pgt[l].flag=1;
pgt[l].memblockno=pgt[j].memblockno;
pgt[j].memblockno='
'
;
k=(++k==M?
0:
k);
gotosb;
fclose(fpm);
实验四 文件系统实验
本实验的目的是通过建立一个简单的多用户二级文件系统的设计,加深理解文件系统的内部功能和实现方式。
(1)掌握文件系统的管理。
(2)了解文件系统的功能
实现一个简单的多用户二级文件系统。
要求该文件系统具有以下功能:
① 用户登录
② 列文件目录
③ 创建文件
④ 删除文件
⑤ 打开文件
⑥ 关闭文件
⑦ 读文件
⑧ 写文件
命令格式
① 列文件目录格式
list
②创建文件命令格式
create(文件名,记录长度,文件属性)
③删除文件命令格式
delete(文件名)
④打开文件命令格式
open(文件名,打开方式)
⑤关闭文件命令格式
close(文件名)
⑥读文件命令格式
read(文件名,记录号)
⑦ 写文件命令格式
write(文件名,记录号)
使用的数据结构
一级目录(主目录MFD)
用户名
用户文件目
字符型
(20 整数型
录地址
二级目录(用户文件目录UFD)
文件名 文件属性
记录长度
文件地址
字符型(20)
字符型(10)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 上机 实验