操作系统实验报告模板 联系客服

发布时间 : 星期一 文章操作系统实验报告模板更新完毕开始阅读030dc12d4b35eefdc8d333e1

操作系统上机

实 验 报 告

成绩 教 师: 2012 年 12月 5日

班 级: 学 号: 姓 名: 实验地点: 实验时间:

实验一 进程的建立

【实验目的】

创建进程及子进程 在父子进程间实现进程通信 【实验软硬件环境】

Linux 、Windows98、Windows2000 【实验内容】

创建进程并显示标识等进程控制块的属性信息; 显示父子进程的通信信息和相应的应答信息。 (进程间通信机制任选)

【实验程序及分析】

编程思路:首先本程序在Linux用C语言完成的,父子进程的创建用fork函数来实现,然后是父子进程间的通信,这里用pipe实现。可以定义chan1[2], chan1[2],chanx[0]表示读,chanx[1]表示写。他们配合使用。 【实验截图】

【实验心得体会】

通过这次上机练习,我熟悉了用c++实现进程的创建,销毁,父子进程间的通讯等一系列课程中需要学习的内容。本来进程的概念在一开始我始终无法清晰地理解,但是通过自己用mfc的方法去实现它后,我开始慢慢地理解操作系统的进程的运作机制。

虽然,我只是实现了一个父子进程的创建和通讯,但是,管中窥豹,我想自己开始明白一个操作系统正是由很多这种进程实现功能的。其中,系统整体的进程调度,管理等等还有很多东西等着我们去进一步学习、理解。

实验二 进程间的同步

【实验目的】

理解进程同步和互斥模型及其应用 【实验软硬件环境】

Linux 、Windows98、Windows2000 【实验内容】

利用通信API实现进程之间的同步: 建立司机和售票员进程; 并实现他们间的同步运行。

【实验程序及分析】

程序总体思路:由于本次试验时用PV操作实现的互斥与同步模型,所以先实现P、V操作的函数,然后在主程序中利用PV操作函数实现司机和售票员的同步。司机和售票员分别为父进程和子进程,假设司机停车开门,此时为父进程中运行,然后申请开车,但是此时乘客没上车,所以只能阻塞。此时进入子进程,乘客上车,关门,售票员检票,释放开车,然后死机开车,到站,释放开车门。如此循环。

示意图

#include

#include

#include #include #include #include #include

#include //这些是完成以下操作所需要的头文件 int runid=0,stopid=0;

int P(int semid) //P操作实现函数 {

struct sembuf buf={0,-1,0}; //Linux

系统自带的结构体,返回值表示操作申请成功与否 if(semop(semid,&buf,1)==-1) { perror(\ return -1;

} return 0;

}

int V(int semid) { struct sembuf buf={0,1,0}; if(semop(semid,&buf,1)==-1) { perror(\ return -1;

}

return 0;

} int main() { if(fork()==0) { while(1) { P(runid); printf(\ printf(\汽车启动\\n\

printf(\汽车到站\\n\

V(stopid); }

}

else { while(1) { printf(\乘务员开车门\\n\ printf(\乘务员关车门\\n\ V(runid); printf(\售票\\n\ P(stopid);

printf(\乘务员关车门\\n\ }

} return 0;

}