进程高效管理实验.doc

进程高效管理实验.doc

ID:57773862

大小:238.00 KB

页数:16页

时间:2020-03-27

进程高效管理实验.doc_第1页
进程高效管理实验.doc_第2页
进程高效管理实验.doc_第3页
进程高效管理实验.doc_第4页
进程高效管理实验.doc_第5页
资源描述:

《进程高效管理实验.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、广州大学学生实验报告开课学院及实验室:计算机科学与工程实验室2015年11月29日实验课程名称操作系统实验成绩实验项目名称实验1进程管理实验指导老师一、实验目的1、掌握进程的概念,明确进程的含义2、认识并了解并发执行的实质3、加深对进程概念的理解,明确进程和程序的区别 4、分析进程争用资源的现象,学习解决进程互斥的方法 5、了解Linux/windows系统中进程通信的基本原理6、熟悉LINUX系统中进程之间软中断通信的基本原理7、熟悉UNIX/LINUX支持的管道通信方式8、熟悉消息传送的机理9、了解和熟悉共享存储机制二、实验内容1、编写一段程序,使

2、用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。试观察记录屏幕上的显示结果,并分析原因。2、修改上述程序,每一个进程循环显示一句话。子进程显示'daughter…'及'son……',父进程显示'parent……',观察结果,分析原因。3、用fork()创建一个进程,再调用exec()用新的程序替换该子进程的内容,利用wait()来控制进程执行顺序。4、修改实验代码2中的程序,用lockf()来给每一个进程加锁,以实现进程

3、之间的互斥,观察并分析出现的现象。5、写一个使用守护进程(daemon)的程序,来实现:(1)创建一个日志文件/var/log/Mydaemon.log(2)每5秒都向其中写入一个时间戳(使用time_t的格式)注意:要root权限才能在/var/log创建文件。6、(1)编写程序:用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按^c键);捕捉到中断信号后,父进程用系统调用kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:Childprocess1iskilledbyparent!

4、Childprocess2iskilledbyparent!父进程等待两个子进程终止后,输出如下的信息后终止:Parentprocessiskilled!(2)分析利用软中断通信实现进程同步的机理7、编写程序实现进程的管道通信。用系统调用pipe()建立一管道,二个子进程P1和P2分别向管道各写一句话:Child1issendingamessage!Child2issendingamessage!父进程从管道中读出二个来自子进程的信息并显示(要求先接收P1,后P2)。8、消息的创建、发送和接收。使用系统调用msgget(),msgsnd(),msgre

5、v(),及msgctl()编制一长度为1k的消息发送和接收的程序。9、编制一长度为1k的共享存储区发送和接收的程序。二、实验原理 1、进程创建2、进程控制3、信号量机制4、管道机制5、消息通信机制及共享存储区机制。四、实验设备Win7下虚拟机VMware-workstation-11.0.0及CentOS-5.8-i386五、实验要求调试并运行一个允许n 个进程并发运行的进程管理模拟系统。了解该系统的进程控制、同步及通讯机构,每个进程如何用一个 PCB 表示、其内容的设置;各进程间的同步关系;系统在运行过程中显示各进程的状态和有关参数变化情况的意义。六

6、、实验程序1、进程创建#includemain(){intp1,p2;while((p1=fork())==-1);/*创建子进程p1*/if(p1==0)putchar('b');else{while((p2=fork())==-1);/*创建子进程p2*/if(p2==0)putchar('c');elseputchar('a');}}2、进程管理#includemain(){intp1,p2,i;while((p1=fork())==-1);/*创建子进程p1*/if(p1==0)for(i=0;i<10;i+

7、+)printf("daughter%d",i);else{while((p2=fork())==-1);/*创建子进程p2*/if(p2==0)for(i=0;i<10;i++)printf("son%d",i);elsefor(i=0;i<10;i++)printf("parent%d",i);}}3、进程控制#include#includemain(){intpid;pid=fork();/*创建子进程*/switch(pid){case-1:/*创建失败*/printf("forkfail!

8、");exit(1);case0:/*子进程*/execl("/bin/ls","ls","-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。