第1篇:操作系统文件管理实验报告
操作系统文件管理实验报告
在我们平凡的日常里,报告使用的频率越来越高,写报告的时候要注意内容的完整。我敢肯定,大部分人都对写报告很是头疼的,以下是小编为大家整理的操作系统文件管理实验报告,仅供参考,大家一起来看看吧。
操作系统文件管理实验报告1
【实训目的】
1、掌握系统安装的基本过程。
2、了解主机箱内部构造与实现系统安装.
【实训条件】
能正常运行的计算机、系统U盘、螺丝刀。
【实训任务】
1、完成主机的拆装与组装。
2、完成系统的安装,并且计算机能够正常的运行。
【实训思考】
1、说明了主机内部硬件每个的功能。
2、电脑不正常运行是主机箱内部的原因吗?
【实训内容】
系统安装:
1、插入带有系统的U盘,启动电脑,不停的按Del.键,进入BOIS界面。
BOIS→FirstBootDevice→USB-HDD→按F10保存。
2、进入老毛桃界面→WinPE<适用老机>。,
3、进入桌面→按Ghost手动→ok→Local→partition→FromImage→寻找U盘里的Winpsp3.GHD文件,按确定→然后按系统默认选项,一直按OK,出现完成进度→完成进度实现后,按确定,电脑重启,并拔出U盘.
4、第二次启动完成,系统装机成功。
硬件组装的主要部件:
cpu(核心部件)、2.cpu散热器、3.主板、4.内存条、5.硬盘、6.软驱、7.光驱、8.电源、9.显卡、10.鼠标、11.键盘、12.显示器、13.主机箱,14.数据条。
硬件组装的过程:
1、拆装机箱:安装底板和挡板;
2、安装电源:将电源放在机箱上,电源的散热器朝机箱后并对准风扇孔。用螺栓将电源固定;
3、连接电源主板;
4、连接散热器电源线;
5、安装CPU散热器;
6、安装内存;
7、安装硬盘;
8、安装光驱;
9、安装显卡;
10、连接机箱内部连线;
11、整理并连接主板电源线;
12、连接外设;
13、完成机箱内部的连接后,合上机箱盖连接网线、电源、键盘、鼠标,显示器等设备;
14、完成以上操作就可以接通电源,观察计算机是否正常运行。
操作系统文件管理实验报告2
一、实验题目
文件和文件夹的管理
二、实验目的
1.熟悉WindowsXP的文件系统。
2.掌握资源管理器的使用方法。
3.熟练掌握在WindowsXP资源管理器下,对文件(夹)的选择、新建、移动、复制、删除、重命名的操作方法。
三、实验内容
1.启动资源管理器并利用资源管理器浏览文件。
2.在D盘创建文件夹
3.在所创建文件夹中创建Word文件。
4.对所创建文件或文件夹执行复制、移动、重命名、删除、恢复、创建快捷方式及设置共享等操作。
四、实验步骤
(一)文件与文件夹管理
1.展开与折叠文件夹。右击开始,打开资源管理器,在左窗格中点击“+”展开,点击“—”折叠
2.改变文件显示方式。打开资源管理器/查看,选择缩略、列表,排列图标等
3.建立树状目录。在D盘空白处右击,选择新建/文件夹,输入经济贸易学院,依次在新建文件夹中建立经济类1103
4..创建Word并保存。打开开始/程序/word,输入内容。选择文件/另存为,查找D盘/经济贸易学院/1103班/王帅,单击保存
5.复制、移动文件夹
6.重命名、删除、恢复。右击文件夹,选择重命名,输入新名字;选择删除,删除文件
7.创建文件的快捷方式。右击王帅文件夹,选择发送到/桌面快捷方式
8.设置共享文件。右击王帅,选择属性/共享/在网络上共享这个文件/确定
9.显示扩展名。打开资源管理器/工具/文件夹选项/查看/高级设置,撤销隐藏已知文件的扩展名
(二)控制面板的.设置。
1.设置显示属性。右击打开显示属性/桌面、屏幕保护程序
2.设置鼠标。打开控制面板/鼠标/按钮(调整滑块,感受速度)、指针
3.设置键盘。打开控制面板/键盘/速度(调整滑块,感受速度)、硬件
4.设置日期和时间打开控制面板/日期和时间
5.设置输入法。打开控制面板/区域与语言选项/详细信息/文字服务与输入语言
(三)Windows附件的使用
1.计算器。打开开始/所有程序/附件/计算器/查看/科学型,
2.画图。打开开始/程序/附件/画图/椭圆/填充/选定
3.清理磁盘。打开开始/程序/附件/系统工具/磁盘清理,选择磁盘,确定
4.整理磁盘碎片。打开开始/程序/附件/系统工具/磁盘碎片整理
五、实验结果。
通过对《大学计算机基础》的学习和上机,我掌握了包括文件的管理、控制面板的设置、Windows
附件的使用等在内的计算机基础知识和操作技术,让我对计算机有了初步认识。
六、实验心得
对文件的管理、控制面板的设置、Windows附件的使用等在内的计算机基础知识和操作技术的学习,让我对计算机的工作原理和简单操作有了熟练地掌握,使我对计算机的运用充满好奇与热情,也为我以后在工作岗位上运用计算机技术,更好的让计算机服务于生活、工作打下坚实的基础。我相信,在老师辛勤教导下,在我的努力学习下,我一定能够让计算机及其运用技术创造我们更好的明天。
第2篇:操作系统课程设计文件管理
#include “stdio.h” #include “string.h” #include “malloc.h”
#include “stdlib.h”
#define MAX 1000 struct file/*普通文件的结构体*/ { //int type;//0无作用,当做一个空节点存在;1为记录型文件;2为执行文件
//前两个变量为文件的权限设置,1为允许操作,0为不允许操作
int write;//可写
int read;//可读
int length;//文件的长度
char ch[MAX];};typedef struct file File;
typedef struct ffile/*定义文件类型的结构体*/ { int type;//1为文件夹; 2为文件;
char name[20];//文件(夹)名字
int open;//文件打开标志,0为关,1为开
File iffile;//如果为文件时有的信息
struct ffile *parent;//指向上一级文件的指针
struct ffile *brother;//指向同级兄弟文件(夹)的指针
struct ffile *child;//指向下一级文件(夹)的指针 }Ffile;typedef Ffile *FFile;
/*typedef struct Open/*记录打开文件的结构体 { char name[20];//记录打开文件(夹)的名字
FFile* add;//记录打开文件上一级文件地址的指针 }Open;*/
//全局变量
FFile user1;//用户1 FFile user2;//用户2 FFile copyf;//记录被复制文件(夹)的上一级文件地址 //Open openf[20];//记录打开文件的队列
FFile init(void)/*初始化,创建根结点*/ { FFile c;c=(Ffile*)malloc(sizeof(Ffile));
c->type=2;c->open=0;//c->iffile.type=2;c->iffile.write=1;c->iffile.read=1;c->iffile.length=0;strcpy(c->name,“file1”);c->parent=NULL;c->child=NULL;c->brother=NULL;strcpy(c->iffile.ch,“NULL”);return(c);}
/*void initopen(){ int a,b;a=20;for(b=1;b
openf[b].add=NULL;} }*/
//传递要显示文件的parent的地址
void show(FFile user)/*显示当前界面存在的文件*/ { user=user->child;if(user==NULL){
printf(“该文件内没有任何文件(夹)。n”);return;} printf(“n”);for(;user!=NULL;){ printf(“<%s”,user->name);if(user->type==2){
/*if(user->iffile.type==1)
printf(“/记录型文件/”);
else
printf(“/执行文件/”);*/
printf(“/%dk”,user->iffile.length);} else {
printf(“/文件夹”);
}
printf(“>n”);
user=user->brother;} }
void creatf(FFile user)/*创建文件 || 文件夹*/ { FFile parent;char ch[20];//FFile user0;//parent=(Ffile*)malloc(sizeof(Ffile));parent=user;printf(“输入要创建文件(夹)的名字:n”);
scanf(“%s”,ch);if(user->child==NULL){
user->child=(Ffile*)malloc(sizeof(Ffile));
user=user->child;}else {
user=user->child;
for(;;)
{
if(user->type==0)//开端的空结点,用新结点覆盖
break;
if(!strcmp(user->name,ch))
{
printf(“错误:该文件名已经存在,文件(夹)创建失败!n”);
return;
}
if(user->brother==NULL)
{
user->brother=(Ffile*)malloc(sizeof(Ffile));
user=user->brother;
break;
}
user=user->brother;
}
} }
//设置新文件(夹)的信息 strcpy(user->name,ch);printf(“选择创建对象:1文件夹; 2文件;n”);scanf(“%d”,&user->type);user->open=0;if(user->type==2)//添加文件信息 {
//printf(“选择文件类型:1记录型文件;2执行文件;n”);//scanf(“%d”,&user->iffile.type);printf(“能否对文件进行读:0禁止;1允许;n”);scanf(“%d”,&user->iffile.read);printf(“能否对文件进行写:0禁止;1允许;n”);scanf(“%d”,&user->iffile.write);//printf(“设置文件大小(单位:K):n”);//scanf(“%d”,&user->iffile.length);user->iffile.length=0;strcpy(user->iffile.ch,“NULL”);} user->brother=NULL;user->child=NULL;user->parent=parent;printf(“文件创建成功!n”);void deletechildtree(FFile user)/*删除子树--结合deletefile();使用*/ { if(user->brother!=NULL)//从下到上,从右到左删除
{
deletechildtree(user->brother);} if(user->child!=NULL){
deletechildtree(user->child);} if(user!=NULL){
free(user);} }
void deletefile(FFile user,char ch[20])/*删除文件 || 文件夹*/ { FFile p,parent;
int a;parent=user;if(user->child==NULL){ printf(“错误:删除失败,该目录下没有可删除的文件(夹)!n”);return;} user=user->child;p=user;for(a=1;;a++)//找出要删除文件的所在位置 { if(!strcmp(user->name,ch))
break;if(user->brother==NULL){
printf(“错误:删除失败,当前位置没有该文件!n”);
return;}
if(a>1)
p=user;user=user->brother;} if(user->open==1)//判断文件的开关情况 {
} printf(“错误:删除失败,选择文件处于打开状态!n”);return;if(p==user)//被删文件在文件队列的开头 { if(user->brother==NULL)//该文件队列只有有一个文件
{
parent->child=NULL;
if(user->child!=NULL)//删除的是文件(夹)子树
{
deletechildtree(user);}else {
free(user);//删除的是文件(夹)结点
} printf(“删除成功!n”);return;} //文件队列有多个文件 p=user->brother;
} parent->child=p;p->parent=parent;if(user->child!=NULL){ deletechildtree(user);}else { free(user);} printf(“删除成功!n”);return;else//被删文件不在队列开头 {
if(user->brother==NULL)//被删文件在文件队列最末尾 { p->brother=NULL;if(user->child!=NULL){
deletechildtree(user);}else {
free(user);}
} printf(“删除成功!n”);return;
//被删文件在文件队列中间
p->brother=user->brother;
if(user->child!=NULL)
{
deletechildtree(user);
}
else
{
free(user);
} } printf(“删除成功!n”);}
FFile openfolder(FFile user)/*打开文件夹*/ {
} //int a,b;//a=0;/*if(user->child==NULL){ user->child=(Ffile*)malloc(sizeof(Ffile));user->child->type=0;user->child->brother=NULL;user->child->parent=user;user->child->child=NULL;
} /*for(b=1;b
a++;} if(a==20){ printf(“错误:打开列表溢出!”);return(user);} for(b=1;;b++){ if(openf[b].add==NULL)
break;}*/
user->open=1;//设置文件为打开 //strcpy(openf[b].name,user->name);//openf[b].add=user;printf(“文件夹打开成功。n”);return(user);//返回被打开的文件夹的地址
void openfile(FFile user)/*打开普通文件*/ { if(user->open==1){
printf(“错误:打开失败,此文件已经被打开!n”);
return;} user->open=1;printf(“普通文件打开成功!n”);}
FFile openff(FFile user)/*打开文件(夹)*/ {
char ch[20];FFile parent;
int a;printf(“选择要打开的文件名:n”);scanf(“%s”,ch);
parent=user;if(user->child==NULL){
printf(“错误:打开失败,该目录下没有可打开的文件(夹)!n”);return(parent);} user=user->child;for(a=1;;a++)//找出要打开文件的所在位置 { if(!strcmp(user->name,ch))
break;if(user->brother==NULL){
printf(“错误:打开失败,当前位置没有该文件!n”);
return(parent);}
user=user->brother;} if(user->type==1){
printf(“开始打开文件夹。。n”);user=openfolder(user);} else if(user->type==2){
printf(“开始打开普通文件。。n”);
openfile(user);
user=user->parent;} return(user);}
void closefile(FFile user)/*关闭普通文件*/ {
char ch[20];int a;printf(“选择要打开的文件名:n”);scanf(“%s”,ch);if(user->child==NULL){ printf(“错误:关闭失败,该目录下没有可关闭的文件!n”);return;} user=user->child;for(a=1;;a++)//找出要关闭文件的所在位置 { if(!strcmp(user->name,ch))
break;if(user->brother==NULL){
printf(“错误:关闭失败,当前位置没有该文件!n”);
return;}
user=user->brother;} if(user->open==0){
printf(“错误:关闭失败,该文件已经是关闭状态!n”);
return;} user->open=0;printf(“文件已经成功关闭!”);} /*没有文件夹关闭原因:
文件夹一打开就会跳向打开的新文件里 而文件夹关闭就会直接返回上一级的目录,若想整个文件夹都关闭,直接退出就可以了 因此不会直接关闭某个特定的文件*/
FFile backf(FFile user)/*返回上一层目录*/ { if(user->parent==NULL){
printf(“错误:返回失败,此处是最顶层目录!n”);
return(user);}
} user->open=0;user=user->parent;return(user);void readfile(FFile user)/*读文件*/ { char ch[20];int a;
printf(“选择要读取的文件名:n”);scanf(“%s”,ch);if(user->child==NULL){ printf(“错误:读取失败,该目录下没有可读取的文件!n”);return;} user=user->child;for(a=1;;a++)//找出要读取文件的所在位置 { if(!strcmp(user->name,ch))
break;if(user->brother==NULL){
printf(“错误:读取失败,当前位置没有该文件!n”);
return;}
user=user->brother;} if(user->open==0){ printf(“错误:文件读取失败,该文件处于关闭状态!n”);return;} else if(user->iffile.read==0){ printf(“错误:文件读取失败,该文件受保护,禁止读取!n”);return;} printf(“读操作,该文件中的内容:n”);if(!strcmp(user->iffile.ch,“NULL”)){ printf(“该文件内没有可读内容!n”);return;
} } printf(“%sn”,user->iffile.ch);printf(“文件读取成功!n”);void writefile(FFile user)/*写文件*/ { char ch[20];int a;
} printf(“选择要进行写操作的文件名:n”);scanf(“%s”,ch);if(user->child==NULL){ printf(“错误:写操作失败,该目录下没有可写的文件!n”);return;} user=user->child;for(a=1;;a++)//找出要读取文件的所在位置 { if(!strcmp(user->name,ch))
break;if(user->brother==NULL){
printf(“错误:写操作失败,当前位置没有该文件!n”);
return;}
user=user->brother;} if(user->open==0){ printf(“错误:文件写操作失败,该文件处于关闭状态!n”);return;} else if(user->iffile.write==0){ printf(“错误:文件写操作失败,该文件受保护,禁止写!n”);return;} printf(“写操作,输入内容:n”);scanf(“%s”,user->iffile.ch);user->iffile.length=strlen(user->iffile.ch);printf(“文件进行写操作成功!n”);
FFile copyfile(FFile user,FFile copyf)/*拷贝文件*/ { char ch[20];int a;printf(“选择要进行拷贝的文件(夹)名:n”);scanf(“%s”,ch);
if(user->child==NULL){
printf(“错误:拷贝失败,该目录下没有可拷贝的文件!n”);
return(NULL);} user=user->child;for(a=1;;a++)//找出要拷贝文件的所在位置,用user替代
{
if(!strcmp(user->name,ch))
break;
if(user->brother==NULL)
{
printf(“错误:拷贝失败,当前位置没有该文件!n”);
return(NULL);
}
user=user->brother;} copyf=user;
} printf(“拷贝成功!n”);return(copyf);FFile fenpei(FFile copyf,FFile user,FFile parent)/*粘贴时,给已拷贝项分配内存空间,以及给对应信息赋值*/ { user=(Ffile*)malloc(sizeof(Ffile));
//parent对child的连接,以及brother之间的连接已经完成if(copyf->brother==NULL && copyf->child==NULL){
user->parent=parent;
user->child=NULL;
user->brother=NULL;}
else{ if(copyf->brother!=NULL){
user->brother=fenpei(copyf->brother,user->brother,parent);//brother连接,兄弟节点有同一个父结点
user->brother->parent=user->parent;} else { user->brother=NULL;} if(copyf->child!=NULL){ //parent=p;user->child=fenpei(copyf->child,user->child,user);
user->child->parent=user;//完成child对parent的连接
//child连接,自己孩子的父结点就是自己
} else {
user->child=NULL;
user->child->parent=user;} }
//设置结点对应的信息
strcpy(user->name,copyf->name);user->open=copyf->open;user->type=copyf->type;if(user->type==2){
user->iffile.length=copyf->iffile.length;
user->iffile.read=copyf->iffile.read;
//user->iffile.type=copyf->iffile.type;
user->iffile.write=copyf->iffile.write;
strcpy(user->iffile.ch,copyf->iffile.ch);}
return(user);}
void prastefile(FFile user,FFile copyf)/*粘贴文件*/ //user是要粘贴的地方,copyf是要粘贴的内容,//有相同文件名的会判断会不会覆盖,或者是重命名 //在原树中进行新建操作 { int i,j;char ch[20];FFile p,user0,parent;parent=user;//记录父结点
user=user->child;
p=user;//记录当前结点的前一个brother结点 strcpy(ch,“NULL”);if(copyf==NULL)//判断有没有拷贝文件 {
printf(“错误:粘贴失败,还没有拷贝任何文件(夹)!n”);
return;}
//p=(Ffile*)malloc(sizeof(Ffile));//p->child=(Ffile*)malloc(sizeof(Ffile));//先给粘贴项分配内存空间
//p->child=fenpei(copyf,p->child,p);
if(user==NULL)//当前位置没有任何文件结点
{
} user=fenpei(copyf,user,parent);//是他自己要分配,不是孩子结点!!parent->child=user;user->brother=NULL;user->parent=parent;return;//该位置没有任何文件 for(j=1;;j++){ if(user->type==0)//开端的空结点,用新结点覆盖,即:当前位置没有文件结点
{
user=user->parent;
deletechildtree(p);
user=fenpei(copyf,user->child,user);//返还增加的结点
user->brother=NULL;
user->parent=parent;
parent->child=user;
} return;if(!strcmp(user->name,copyf->name)){
printf(“提示:该文件名已经存在!n”);
printf(“请重命名文件:n”);
printf(“输入新文件名:n”);
scanf(“%s”,ch);
} if(user->brother==NULL)//普通的退出条件
{
break;} p=user;user=user->brother;} user->brother=fenpei(copyf,user->brother,user->parent);user->brother->parent=user->parent;//若要更名,粘贴分配完内存空间返回时再改变
if(strcmp(ch,“NULL”))
strcpy(user->brother->name,ch);printf(“粘贴成功。n”);}
void showroute(FFile user)/*显示当前路径*/ { if(user->parent!=NULL){
showroute(user->parent);} printf(“%s/”,user->name);//路径中每个结点的输出项 }
void change(FFile user){ char ch[20];int a,b;
if(user->child==NULL)
{
} printf(“错误:属性修改失败,该目录下没有可修改的文件!n”);return;printf(“选择要进行属性修改的文件(夹)名:n”);scanf(“%s”,ch);user=user->child;for(a=1;;a++)//找出要拷贝文件的所在位置,用user替代 { if(!strcmp(user->name,ch))
break;if(user->brother==NULL){
printf(“错误:属性修改失败,当前位置没有该文件!n”);
return;}
user=user->brother;} if(user->type==1){ printf(“错误:文件夹不能进行属性修改!n”);return;} for(;;){
printf(“1.修改读权限;n”);printf(“2.修改写权限;n”);printf(“3.返回;n”);printf(“选择操作:n”);scanf(“%d”,&a);if(a==1){ printf(“0.禁止;
1.允许;n”);printf(“请选择:n”);scanf(“%d”,&b);user->iffile.read=b;printf(“修改成功!n”);} else if(a==2){ printf(“0.禁止;
1.允许;n”);printf(“请选择:n”);scanf(“%d”,&b);user->iffile.write=b;
}
} printf(“修改成功!n”);} else if(a==3){ return;} else { } printf(“错误:没有该操作!n”);void main()/*主函数*/ {
FFile d,e,f;//f记录当前显示界面父结点位置 int a,b,c;char ch[20];a=0;printf(“******************************目录******************************n”);printf(“
1.选择用户n”);printf(“
2.退出n”);
printf(“****************************************************************n”);for(;;){
printf(“选择操作:n”);scanf(“%d”,&a);if(a==1){ printf(“选择用户:n”);printf(“1.user1;n2.user2;n”);scanf(“%d”,&b);break;} else if(a==2){ printf(“欢迎使用。n”);exit(0);//系统退出的操作码 } else { printf(“错误:没有该操作!n”);
} } //初始化打开列表 //initopen();//初始化各个用户的信息
//copyf=(Ffile*)malloc(sizeof(Ffile));//copyf=NULL;copyf=NULL;user1=init();strcpy(user1->name,“user1”);user2=init();strcpy(user2->name,“user2”);d=init();e=init();user1->child=d;user2->child=e;d->parent=user1;e->parent=user2;printf(“%d”,user1->child->type);if(b==1){ printf(“已经进入user1系统n”);f=user1;show(user1);}else{
} printf(“已经进入user2系统n”);f=user2;show(user2);
for(;;){ printf(“****************************************************************n”);printf(“1.创建文件(夹)
5.读文件
9.显示当前路径
n”);printf(“2.删除文件(夹)
6.写文件
10.返回上一层目录
n”);printf(“3.打开文件(夹)
7.拷贝文件
11.改变普通文件属性n”);printf(“4.关闭普通文件
8.粘贴文件
12.退出n”);printf(“****************************************************************n”);printf(“选择操作:n”);scanf(“%d”,&c);if(c==12){
break;}else if(c==1){ creatf(f);} else if(c==2){
printf(“选择要删除的文件(夹)的名字:n”);scanf(“%s”,ch);deletefile(f,ch);} else if(c==3){ f=openff(f);} else if(c==4){ closefile(f);} else if(c==5){ readfile(f);} else if(c==6){ writefile(f);} else if(c==7){ copyf=copyfile(f,copyf);} else if(c==8){ prastefile(f,copyf);copyf=NULL;} else if(c==9){ printf(“路径为:n”);showroute(f);printf(“n”);} else if(c==10){
}
f=backf(f);
} else if(c==11){ change(f);} else { continue;} show(f);} printf(“欢迎使用!n”);
第3篇:操作系统实验报告
许昌学院
《操作系统》实验报告书
学号:姓名:闫金科班级:成绩:
5006140057
14物联网工程 2016年02月实验一 Linux的安装与配置
一、实验目的1.熟悉Linux系统的基本概念,比如Linux发行版、宏内核、微内核等。2.掌握Linux系统的安装和配置过程,初步掌握Linux系统的启动和退出方法。3.熟悉Linux系统的文件系统结构,了解Linux常用文件夹的作用。
二、实验内容
1.从网络上下载VMware软件和两个不同Linux发行版镜像文件。2.安装VMware虚拟机软件。
3.在VMware中利用第一个镜像文件完成第一个Linux的安装,期间完成网络信息、用户信息、文件系统和硬盘分区等配置。
4.在VMware中利用第二个镜像文件完成第二个Linux的安装,并通过LILO或者GRU
第4篇:操作系统实验报告
实验二
进程调度
1.目的和要求
通过这次实验,理解进程调度的过程,进一步掌握进程状态的转变、进程调度的策略,进一步体会多道程序并发执行的特点,并分析具体的调度算法的特点,掌握对系统性能的评价方法。
2.实验内容
阅读教材《计算机操作系统》第二章和第三章,掌握进程管理及调度相关概念和原理。
编写程序模拟实现进程的轮转法调度过程,模拟程序只对PCB进行相应的调度模拟操作,不需要实际程序。假设初始状态为:有n个进程处于就绪状态,有m个进程处于阻塞状态。采用轮转法进程调度算法进行调度(调度过程中,假设处于执行状态的进程不会阻塞),且每过t个时间片系统释放资源,唤醒处于阻塞队列队首的进程。
程序要求如下:
1)输出系统中进程的调度次序; 2)计算CPU利用率。
3.实验环境
Windows操作系统、VC++6.0 C语言
第5篇:操作系统实验报告
实验项目二 进程管理
一、实验目的1.理解进程的概念,掌握父、子进程创建的方法。
2.认识和了解并发执行的实质,掌握进程的并发及同步操作。
二、实验内容
1.编写一C语言程序,实现在程序运行时通过系统调用fork()创建两个子进程,使父、子三进程并发执行,父亲进程执行时屏幕显示“I am father”,儿子进程执行时屏幕显示“I am son”,女儿进程执行时屏幕显示“I am daughter”。
2.多次连续反复运行这个程序,观察屏幕显示结果的顺序,直至出现不一样的情况为止。记下这种情况,试简单分析其原因。
3.修改程序,在父、子进程中分别使用wait()、exit()等系统调用“实现”其同步推进,并获取子进程的ID号及结束状态值。多次反复运行改进后的程序,观察并记录运行结果。
三、源程序及运行结果