进程管理实验.doc

进程管理实验.doc

ID:55535242

大小:128.50 KB

页数:16页

时间:2020-05-16

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

《进程管理实验.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、xxx操作系统课程实验报告书院系名称:xxx学生姓名:xxx专业名称:xxx班级:xxx学号:xxx时间:2012年10月22日至2012年11月1日实验题目进程管理实验一、实验目的1)熟悉Linux下进程管理和相关的系统调用2)通过观察、分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在POSIX规范中fork和kill系统调用的功能和使用。3)通过观察、分析实验现象,深入理解线程及线程在调度执行和内存空间等方面的特点,并掌握线程与进程的区别。掌握在POSIX规范中pthread_create()函数的功能和使用方法。4)通过观察、分析实验现象,深入理解互斥锁的原理

2、及特点,掌握在POSIX规范中的互斥函数的功能及使用方法。二、实验环境Linuxshell1.硬件(1)主机:PentiumIII以上;(2)内存:128MB以上;(3)显示器:VGA或更高;(4)硬盘空间:至少100MB以上剩余空间。2.软件Linux操作系统,内核2.4.26以上,预装有X-Window、vi、gcc、gdb和任意web浏览器。三、实验内容A、Linux下用线程模拟实现“生产者—消费者”同步问题算法思想:varmutex,empty,full:semaphore:=1,n,0;buffer:array[0,…,n-1]ofitem;in,out:integer:=0,0

3、;beginparbeginproducer:beginrepeat…produceranitemnextp;…wait(empty);wait(mutex);buffer(in):=nextp;in:=(in+1)modn;signal(mutex);signal(full);untilfalse;endconsumer:beginrepeat…wait(full);wait(mutex);nextc:=buffer(out);out:=(out+1)modn;signal(mutex);signal(empty);…consumeranitemnextc;untilfalse;endp

4、arendend流程图:开始Main()初始化变量(同步信号量,互斥信号量)创建N个生产者进程创建N个消费者进程生产者方法Producer()消费者方法Consumer()销毁所有进程结束Return函数调用的相互示意图:Main()函数初始化变量同步信号量互斥信号量创建N个生产者进程创建N个消费者进程生产者方法producer()消费者方法consumer()销毁所有进程程序设计(源代码附后);运行结果:A、补全代码:进程通过观察、分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在POSIX规范中fork和kill系统调用的功能和使用。学习man命令的用法,通过它查

5、看fork和kill系统调用的在线帮助,并阅读参考资料,学会fork与kill的用法。复习C语言的相关内容。实验过程先猜想一下这个程序的运行结果。假如运行“./process20”,输出会是什么样?然后按照注释里的要求把代码补充完整,运行程序。可以多运行一会儿,并在此期间启动、关闭一些其它进程,看process的输出结果有什么特点,记录下这个结果。开另一个终端窗口,运行“psaux

6、grepprocess”命令,看看process究竟启动了多少个进程。回到程序执行窗口,按“数字键+回车”尝试杀掉一两个进程,再到另一个窗口看进程状况。按q退出程序再看进程情况。问题回答下列问题,写入实验报告。

7、1.你最初认为运行结果会怎么样?进程交替执行,当输入某进程编号加回车后该进程会被杀死,不再输出,当输入q加回车后剩余的所有子进程都被杀死,程序运行结束。2.实际的结果什么样?有什么特点?试对产生该现象的原因进行分析。结果与上述的预期结果相同。特点:各进程交替执行。无确定顺序。分析:当程序执行到for(i=0;i

8、;)输出该进程的相关内容,并在输出语句后加上sleep(SLEEP_INTERVAL);语句,给其他进程抢占cpu的机会。这个过程不一定可以连续的执行下去,因为在该过程中,父进程随时可能抢到cpu,再次执行fork();创建另一个子进程或者执行else语句(由其上次执行到的位置决定)。该子进程的执行与第一个子进程类似。自此该3个进程交替执行,当父进程执行fork()时,则继续创建新的子进程以此类推。直到父进程完成for(

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

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

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