操作系统实验三
- 格式:doc
- 大小:550.50 KB
- 文档页数:9
福建农林大学金山学院实验报告
系: 专业: 年级:
姓名: 学号: 实验室号 计算机号
实验时间: 指导教师签字: 成绩:
实验三 Linux文件操作与内存管理算法模拟
一、 实验目的和要求
1)熟悉LINUX文件系统;
2)通过编写文件操作的程序,进一步掌握操作系统的文件管理机制。
3)模拟内存管理算法的实现方法;
4)掌握简单的用户接口(字符菜单)的设计方法。
二、 实验内容和原理
(1)浏览LINUX文件系统,并记录下来。
(2)在LINUX下查看你的文件。
(3)在LINUX下(也可在TURBO C中)编写显示文件内容的程序CAT.C,要求
在运行时能提示输入文件名,当完成文件名输入后,在屏幕上显示文件内
容。
(4)虚拟内存程序设计,包括FIFO和LRU算法。
设计一个能模拟内存管理行为的系统程序,该系统至少应包括FIFO和LRU
算法(Least Recently Used)(当需要置换一页时,选择最长时间未被使用的那
一页淘汰掉。)的实现。
三、 实验环境
(1)硬件:PC机
(2)软件:linux 操作系统、虚拟机
四、 实验步骤
1. 浏览LINUX文件系统,并记录下来。
〈1〉运行pwd命令,确定你当前的工作目录。
〈2〉利用以下命令显示当前工作目录的内容: ls -l
〈3〉运行以下命令: ls -al
〈4〉使用mkdir命令建立一个子目录subdir。
〈5〉使用带-d选项的ls命令,只能看到当前目录的信息。
〈6〉使用cd命令,将工作目录改到根目录(/)上。
〈7〉使用ls命令列出根目录的内容,再分别列出各子目录的内容。
〈8〉使用ls-l命令列出/dev的内容。
〈9〉使用不带参数的命令cd改变目录,然后用pwd确定你当前的工作目
录是哪里?
〈10〉使用命令cd../..,你将工作目录移到什么地方?
2. 在LINUX下查看你的文件。
〈1〉利用cd命令,将工作目录改到你的主目录上。
〈2〉将工作目录改到你的子目录subdir,然后运行命令: date > file1
将当前 日期和时间存放到新建文件file1中。
〈3〉使用cat命令查看file1文件的内容。
〈4〉利用man命令显示date命令的用法。
〈5〉将date命令的用法附加到文件file1的后面。
〈6〉利用cat命令显示文件file1的内容。
〈7〉利用ls -l file1命令列出文件file1的较详细的信息。
运行ls -l/bin命令显示目录的内容。
〈8〉利用ls -l/bin|more命令行分屏显示/bin目录的内容。
〈9〉利用cp file1 fa命令生成文件file1的副本。然后利用ls -l命令
查看工作目录的内容。
〈10〉利用rm fa命令将文件fa删除。再利用ls -l命令查看工作目录内
容。
3. CAT.C
#include
#include
main()
{FILE *out;
char ch,infile[10],outfile[10];
printf("\n输入文件名 :\n");
scanf("%s",outfile);
out=fopen(outfile,"r");
ch=fgetc(out);
while(ch!=EOF) {putchar(ch);ch=fgetc(out);}
fclose(out);}
4. page.c
#include
#include
#define INVALID -1
#define page_len 16 //页序列总长
#define total_vp 18 //作业的总页数+1,即序列中出现的最大页号+1,为了开pl[total_vp]
数组所用
typedef struct
{int pn,pfn,counter,time;
}pl_type; //定义结构体类型pl_type
pl_type pl[total_vp]; //定义结构体对象pl[total_vp]
struct pfc_struct
{int pn,pfn;
struct pfc_struct *next;};
typedef struct pfc_struct pfc_type;
pfc_type pfc[total_vp],*freepf_head,*busypf_head,*busypf_tail;
int diseffect;
int page[]={0,1,7,2,3,2,17,1,0,3,0,3,0,3,0,10};
void initialize(int total)
{ int i;
diseffect=0;
for(i=0; i
pl[i].pfn=INVALID;
pl[i].counter=0;
pl[i].time=-1; //printf("pl[i]=%d",pl[i].pn);printf("\n");}
for(i=1;i
pfc[i-1].pfn=i-1;}
pfc[total-1].next=NULL;
pfc[total-1].pfn=total-1;
freepf_head=&pfc[0];
}
void FIFO(int total)
{ int i,j;
pfc_type *p,*t;
initialize(total);
busypf_head=busypf_tail=NULL;
for(i=0;i
{ diseffect+=1;
if(freepf_head==NULL)
{p=busypf_head->next;
pl[busypf_head->pn].pfn=INVALID;
freepf_head=busypf_head;
freepf_head->next=NULL;
busypf_head=p;
}
p=freepf_head->next;
freepf_head->next=NULL;
freepf_head->pn=page[i];
pl[page[i]].pfn=freepf_head->pfn;
if(busypf_tail==NULL)
busypf_head=busypf_tail=freepf_head;
else
{ busypf_tail->next=freepf_head;
busypf_tail=freepf_head;
}freepf_head=p;
}}printf("FIFO:%d",diseffect);}
main()
{ int i;
for(i=4;i<=7;i++)
{printf("\n- page frames ",i);
FIFO(i);}}
五、 调试过程
4.
在Printf(“\n- page frames ,i);加个右引号。
添加typedef struct pfc_struct pfc_type;。
六、 实验结果分析
1. 浏览LINUX文件系统,并记录下来。
2. 在LINUX下查看你的文件。
3. 在LINUX下(也可在TURBO C中)编写显示文件内容的程序CAT.C。
4. 虚拟内存程序设计,包括FIFO和LRU算法。
七、 总结
通过这次实验我熟悉LINUX文件系统;通过编写文件操作的程序,进一步掌
握操作系统的文件管理机制;模拟内存管理算法的实现方法;掌握简单的用户接
口(字符菜单)的设计方法。