西安邮电大学_操作系统_进程管理-进程调度_实验报告.doc_第1页
西安邮电大学_操作系统_进程管理-进程调度_实验报告.doc_第2页
西安邮电大学_操作系统_进程管理-进程调度_实验报告.doc_第3页
西安邮电大学_操作系统_进程管理-进程调度_实验报告.doc_第4页
西安邮电大学_操作系统_进程管理-进程调度_实验报告.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西 安 邮 电 大 学 (计算机学院)课内实验报告实验名称: 进程管理-进程调度 专业名称: 计算机科学与技术班 级: 计科1501 学生姓名: 赵阳学号(8位): 05141123指导教师: 张老师实验日期: 2016年4月一. 实验目的及实验环境1.实验目的 通过观察、分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在POSIX 规范中fork和kill系统调用的功能和使用。2.实验环境 (1)硬件 CPU:I7-6700HQ 内存:8G DDR4 2133 显示器:笔记本显示器 硬盘空间:80G (2)软件 虚拟机名称及版本:非虚拟机 操作系统名称及版本:Ubuntu 16.04 编译器:gcc二. 实验内容1、实验前准备工作学习man命令的用法,通过它查看fork和kill系统调用的在线帮助,并阅读参考资料,学会fork与kill的用法,复习C语言的相关内容。2、实验内容根据下发的Linux进程管理实验PPT内容,将实验代码补充完整。并考虑:先猜想一下这个程序的运行结果。假如运行“./process 20”,输出会是什么样?然后按照注释里的要求把代码补充完整,运行程序。可以多运行一会儿,并在此期间启动、关闭一些其它进程,看process 的输出结果有什么特点,记录下这个结果。开另一个终端窗口,运行“ps aux|grep process”命令,看看process 究竟启动了多少个进程。回到程序执行窗口,按“数字键+回车”尝试杀掉一两个进程,再到另一个窗口看进程状况。按q 退出程序再看进程情况。3、回答问题编写、编译、链接、执行实验内容设计中的代码,并回答如下问题:1)你最初认为运行结果会怎么样?最初认为结果会产生一定数量的进程,然后输入数字加回车杀死单个进程,按下q杀死全部进程。2) 实际的结果什么样?有什么特点?试对产生该现象的原因进行分析。实际结果产生一部分子进程,且数目最多是10个,而且不超过10个,因为程序设定了子进程数目最大为10。3) proc_number 这个全局变量在各个子进程里的值相同吗?为什么?不相同,proc_number是每一个进程的编号,从0到10。4) kill 命令在程序中使用了几次?每次的作用是什么?执行后的现象是什么?使用了2次,while循环一次,q命令一次,第一次是为了杀死单个进程,第二次是杀死全部进程,第一次执行后只能杀死单个进程,第二次可以杀死对应进程组内的全部进程。5)使用kill 命令可以在进程的外部杀死进程。进程怎样能主动退出?这两种退出方式哪种更好一些?进程主动退出就是进程执行完,到了return语句自行退出,主动退出更好一些。6)写出fork()和kill()函数原型,并解释函数的功能和参数的含义?#include #include pid_t fork(void);功能:fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。#include #include int kill(pid_t pid, int sig);功能:Kill()用于向任何进程组或进程发送信号。 7) ps aux|grep process命令功能是什么?并解释结果的含义。ps是显示当前状态正在运行的进程以及发出该命令的终端,所使用的CPU的时间以及正在执行的命令,grep表示在这些进程里进行搜索,ps aux是显示所有进程和他们的状态。$ ps aux | grep ./a.out三方案设计四测试数据及运行结果五总结1 实验过程中遇到的问题及解决办法;实验过程没有大的问题,就是在进行ps aux|grep的时候刚开始输入ps aux|grep process,没有进程列表出来,后来经过向同学请教得知在我的环境下需要输入ps aux|grep ./a.out 故解决问题。2 对设计及调试过程的心得体会。这次设计及调试让我深入理解进程及进程在调度执行和内存空间等方面的特点,初步掌握在POSIX 规范中fork和kill系统调用的功能和使用,以及感受linux系统的魅力。六附录:源代码(电子版)#include #include #include #include #include #include #define MAX_CHILD_NUMBER 10#define SLEEP_INTERVAL 2int proc_number=0;void do_something();int main(int argc,char* argv)int child_proc_number=MAX_CHILD_NUMBER ;int i,ch;pid_t child_pid;pid_t pid10=0;if(argc1)child_proc_number = atoi(argv1);child_proc_number = (child_proc_number10)?10:child_proc_number;for(i=0;i0)pidi=child_pid;printf(A Parent process,the pid is %dn,getpid();printf(input the number you want to killn);while(ch=getchar()!=q)if(isdigit(ch)ch=(int)ch-48;if(kill(pidch,SIGKILL)0)perror(kill);exit(1);elseprintf(process %d has been killed!nn,pidch);elseprintf(is not digitn);getchar();printf(input the number you want to kill:n);ki

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论