- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux多进程并发执行实验.
存档资料 成绩:
华东交通大学理工学院
《Linux操作系统原理与应用》实验报告书
题 目 linux多进程并发执行实验
分 院 电 信 分 院
专业班级 通信工程2008级 2 班
学生姓名 骆 玉 春
学生学号 20080210420224
指导教师 徐 涢 基
2011 年 5 月 24 日
一、实验目的
1、对理论课中学习的进程、程序等的概念作进一步的理解,明确进程和程序的区别;
2、加深理解进程并发执行的概念,认识多进程并发执行的实质;
3、观察进程争夺资源的现象,分析其过程和原因,学习解决进程互斥的方法;
4、对经典的多用户、多任务的优先级轮转调度系统Linux有一定的了解;
5、了解Linux系统中多进程之间通过管道通信的基本原理和应用方法。
二、实验内容
1、用virtual虚拟机运行linux虚拟系统;
2、分析并理解源程序;
3、在linux中输入相应程序并观察运行结果。
三、实验原理
(一)多进程并发执行是使用后台任务来实现任务的“多进程化”。在不加控制的模式下,不管有多少任务,全部都后台执行。也就是说,在这种情况下,有多少任务就有多少“进程”在同时执行。
(二)实验中要用到的函数
1、fork()函数——进程创建函数。
2、getpid()函数——取得目前进程的进程标识码。
3、exit()函数——用来正常终结目前进程的执行。
4、sleep()函数——用来延时,它会被挂起,把处理器让给其他的进程。
5、printf()函数——是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。
(三)实验中要用的命令
1、cd 命令 :
功能:改变工作目录。
语法:cd [directory]
说明:该命令将当前目录改变至directory所指定的目录。若没有指定directory,则回到用户的主目录。为了改变到指定目录,用户必须拥有对指定目录的执行和读权限。 该命令可以使用通配符。
2、mkdir命令 :
功能:创建一个目录(类似MSDOS下的md命令)。语法:mkdir [选项] dir-name 说明:该命令创建由dir-name命名的目录。要求创建目录的用户在当前目录中(dir-name的父目录中)具有写权限,并且dirname不能是当前目录中已有的目录或文件名称。
3、ls 命令 :
功能:ls是英文单词list的简写,其功能为列出目录的内容。这是用户最常用的一个命令之一,因为用户需要不时地查看某个目录的内容。该命令类似于DOS下的dir命令。
语法:ls [选项] [目录或是文件] 说明:对于每个目录,该命令将列出其中的所有子目录与文件。对于每个文件,ls将输出 其文件名以及所要求的其他信息。默认情况下,输出条目按字母顺序排序。当未给出目录名或是文件名时,就显示当前目录的信息。
4、vim、clear命令在这里就不做介绍了。
(四)实验源程序如下:
#include stdio.h
#include unistd.h
#include sys/types.h
#include sys/wait.h
#include stdlib.h
main(){
int pid1,pid2,i=1;
while((pid1=fork())==-1);
if(pid1==0){
printf(This is child process 1,pid=%d\n,getpid());
sleep(1);
for(i=A;i=Z;i++){
printf(Child process1 print:%c\n,i);
sleep(1);
}
exit(0);
} else{
while((pid2=fork())==-1);
if(pid2==0){
printf(This is child process 2,pid=%d\n,getpid());
sleep(1);
for(i=a;i=z;i++){
printf(Child process1 print:%c\n,i);
sleep(1);
} exit(0);
} else{printf(This is a parent process,pid=%d\n,getpid());
sleep(1);
for(i=1;i=26;i++){
文档评论(0)