linux进程线程管理实验报告.doc

linux进程线程管理实验报告.doc

ID:58820479

大小:43.50 KB

页数:11页

时间:2020-10-25

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

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

1、西安郵電學院操作系统LINUX实验报告题目1:进程______题目2:线程管理__题目3:互斥_____系部名称:计算机学院专业名称:软件工程班级:0802学号:学生姓名:郭爽乐时间:2010-10-31实验一:进程管理一.实验目的通过观察、分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在POSIX规范中fork和kill系统调用的功能和使用。二.实验要求2.1实验环境要求1.硬件(1)主机:PentiumIII以上;(2)内存:128MB以上;(3)显示器:VGA或更高

2、;(4)硬盘空间:至少100MB以上剩余空间。2.软件Linux操作系统,内核2.4.26以上,预装有X-Window、vi、gcc、gdb和任意web浏览器。2.2实验前的准备工作学习man命令的用法,通过它查看fork和kill系统调用的在线帮助,并阅读参考资料,学会fork与kill的用法。复习C语言的相关内容。三、实验内容3.1补充POSIX下进程控制的残缺版实验程序3.2回答下列问题:1.你最初认为运行结果会怎么样?2.实际的结果什么样?有什么特点?试对产生该现象的原因进行分析。3.p

3、roc_number这个全局变量在各个子进程里的值相同吗?为什么?4.kill命令在程序中使用了几次?每次的作用是什么?执行后的现象是什么?5.使用kill命令可以在进程的外部杀死进程。进程怎样能主动退出?这两种退出方式哪种更好一些?四、实验结果4.1补充完全的源程序#include#include#include#include#include#defineMAX_CHILD_NUMBER10

4、/*允许建立的子进程个数最大值*/#defineSLEEP_INTERVAL1/*子进程睡眠时间*/intproc_number=0;/*子进程的编号,从0开始*/voiddo_something();main(intargc,char*argv[]){intchild_proc_number=MAX_CHILD_NUMBER;/*子进程个数*/inti,ch;pid_tchild_pid;pid_tpid[10]={0};/*存放每个子进程的id*/if(argc>1){child_proc_

5、number=atoi(argv[1]);child_proc_number=(child_proc_number>10)?10:child_proc_number;/*命令行参数中的第一个参数表示建立几个子进程,最多10个*/}/*建立child_proc_number个子进程*子进程要执行*proc_number=i;*do_something();*父进程把子进程的id保存到pid[i]*/for(i=0;i

6、if(child_pid==-1){perror("createrror!");return1;}elseif(child_pid>0)pid[i]=child_pid;else{proc_number=i;do_something();}}/*让用户选择杀死哪个进程。输入数字(自编号)表示杀死该进程*输入q退出*/while((ch=getchar())!='q'){if(isdigit(ch)){kill(pid[ch-'0'],SIGTERM);wait(&pid[ch-'0']);}

7、}kill(0,SIGTERM);/*杀死本组的所有进程*/return0;}voiddo_something(){for(;;){printf("ThisisprocessNO.%*d",proc_number+3,proc_number);sleep(SLEEP_INTERVAL);}}4.2回答上述实验内容中的问题1.预期结果:会持续输出0-9号进程,直到输入数字键+回车,则会杀死该进程,接下来的输出将不会有该进程号,当输入q+回车,则退出程序。2.实际结果:与预期差不多,因输入进程总

8、数20大于设定的最大进程数,因此按进程数10来处理。随机输出0-9号进程,sleep(SLEEP_INTERVAL),循环输出,直到输入数字键,则会杀死该数字对应的进程,直到输入q退出循环,然后杀死本组所有进程。分析:每创建一个子进程时,将其pid存储在pid[i]中,i存储在proc_number,然后调用死循环函数do_something(),输出该进程的代号proc_number;当输入数字键时,主进程会执行kill(pid[ch-'0'],SIGTERM),从而杀死(ch-‘0’)号进程

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

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

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