操作系统实验报告实验四

实验四-操作系统实验报告实验四:进程管理(二)实验内容:1.编写一个程序,打印进程的如下信息:进程标识符,父进程标识符,真实用户ID,有效用户ID,真实用户组ID,有效用户组ID。并分析真实用户ID和有效用户ID的区别。源代码及结果:ID的区别:真实用户ID和有效用户unix就是我们登陆ID:这个ID真实用户ID系统时的身份。:定义了操作者的权限。有效有效用户ID是进程的属性,决定了该进程对文件的ID用户访问权限。.阅读如下程序,编译并运行,分析进程2CPU执行过程的时间消耗(总共消耗的时间和消耗的时间),并解释执行结果。再编写一个计算密集型的程序替代grep,比较两次时间的花销。注释程序主要语句。/*processusingtime*/#include<stdio.h>#include<stdlib.h>#include<sys/.h>#include<time.h>#include<unistd.h>voidtime_print(char*,clock_t);intmain(void){//取得进程运行相关的时间clock_tstart,end;structtmst_start,t_end;start=(t_start);system(“grepthe/usr/doc/*/*>/dev/null2>/dev/null”);/*command>/dev/null的作用是将是command命令的标准输出丢弃,而标准错误一般来讲标准输出和标准输出还是在屏幕上。.错误输出都是屏幕,因此错误信息还是会在屏幕上输出。>/dev/null2>/dev/null标准输出与标准错误输出都会被丢弃*///012标准输入标准输出错误输出//>将信息放到该文件null中end=(t_end);time_print(“elapsed”,end-start);puts(“parent”);time_print(“\tuserCPU”,t_end.tms_utime);time_print(“\tsysCPU”,t_end.tms_stime);puts(“child”);time_print(“\tuserCPU”,t_end.tms_cutime);time_print(“\tsysCPU”,t_end.tms_cstime);exit(EXIT_SUCCESS);}voidtime_print(char*str,clock_ttime){longtps=sysconf(_SC_CLK_TCK);的作用为将时钟滴答函数sysconf()/*为定义每秒钟有多_SC_CLK_TCK数转化为秒数,*/少个滴答的宏%6.2fprintf(“%s:n”,str,(float)time/tps);secs\}程序运行结果:故消耗的时间比较因为该程序计算量很小,不足为奇。而0.00secs消耗时间均为CPU少,进程的执行时间等于用户CPU时间和系统CPU时间加从硬盘读取数据时间之和。密集型的程序替代grep:更改为计算密集型的之后就较容易观察出消耗时间的差异。.阅读下列程序,编译并多次运行,观察3的原因;(或不同)执行输出次序,说明次序相同的分配规律。总结ID,分析进程观察进程ID的使用方法。注释程序主要语句。fork()forkusage/**/#include<unistd.h>#include<stdio.h>#include<stdlib.h>intmain(void){pid_tchild;if((child=fork())==-1){perror(“fork”);exit(EXIT_FAILURE);}elseif(child==0){puts(“inchild”);printf(“\tchildpid=%d\n”,getpid());printf(“\tchildppid=%d\n”,getppid());exit(EXIT_SUCCESS);}else{puts(“inparent”);pid“printf(\tparentn”,getpid());=%d\ppidprintf(“\tparent=%d\n”,getppid());}exit(EXIT_SUCCESS);}程序运行结果:开始时一般随机分配,(?)创建进程ID会顺序分配内或创建子进程时,但若多次运行,存。此外,当父进程结束时,子进程尚未结束,1。变为则子进程的父进程ID函数write函数的实质是一个系统调用(和fork(),其作用是创建一个新的进程,当一个进)类似完成后就出现两个几乎一模一样的进,程调用它.程,其中由fork()创建的新进程被称为子进程,而原来的进程称为父进程。子进程是父进程的一个拷贝,即子进程从父进程得到了数据段和堆栈的拷贝,这些需要分配新的内存;而对于只读的代码段,通常使用共享内存方式进行访问。4.阅读下列程序,编译并运行,等待或者按^C,分别观察执行结果并分析,注释程序主要语句。flag有什么作用?通过实验说明。/*usageofkill,signal,wait*/#include<unistd.h>#include<stdio.h>#include<sys/types.h>#include<signal.h>intflag;voidstop();//自定义函数,使flag=0,供signal调用intmain(void){intpid1,pid2;signal(3,stop);//signal()依参数3指定的信号编号来设置该信号的处理函数.while((pid1=fork())==-1);//程序等待成功创建子进程事件的发生if(pid1>0){//当前进程为父进程while...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?