收藏 分销(赏)

进程管理实验二.doc

上传人:a199****6536 文档编号:3859948 上传时间:2024-07-22 格式:DOC 页数:12 大小:66KB
下载 相关 举报
进程管理实验二.doc_第1页
第1页 / 共12页
进程管理实验二.doc_第2页
第2页 / 共12页
进程管理实验二.doc_第3页
第3页 / 共12页
进程管理实验二.doc_第4页
第4页 / 共12页
进程管理实验二.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、#includemain() int p,x; p=fork(); if(p0) x=fork(); if(x0) printf(fathern); else printf(child2); else printf(child1);实验步骤及输出结果:testlocalhost 桌面$ gcc -o 1 1.ctestlocalhost 桌面$ ./1fathertestlocalhost 桌面$ child2child12、运行以下程序,分析程序执行过程中产生的进程情况。#includemain() intp,x;p=fork();if(p0) fork();elsefork();fork(

2、);sleep(15);实验步骤:编译连接gccoforktreeforktree.c后台运行./forktree&使用pstreeh查看进程树实验步骤及输出结果:testlocalhost 桌面$ gcc -o forktree forktree.ctestlocalhost 桌面$ ./forktree &1 3952testlocalhost 桌面$ pstree -hinitNetworkManagerdhclient NetworkManager abrtd acpid atd auditdauditd automount4*automount avahi-daemonavahi-d

3、aemon bonobo-activatibonobo-activat clock-applet console-kit-dae63*console-kit-da crond 2*dbus-daemondbus-daemon 2*dbus-launch devkit-power-da gconf-im-settin gconfd-2 gdm-binarygdm-simple-slavXorg gdm-session-worgnome-sessionabrt-ap+ bluetoo+ gdu-not+ gnome-p+ gnome-p+ gnome-v+ gpk-upd+ metacit+ na

4、utilus polkit-+ restore+ rhsm-co+ gnome-+ gdm-user-switch gedit gnome-keyring-d2*gnome-keyring- gnome-screensav gnome-settings-gnome-settings gnome-terminalbashpstree gnome-pty-helpe gnome-terminal gnote gvfs-afc-volumegvfs-afc-volum gvfs-gdu-volume gvfs-gphoto2-vo gvfsd gvfsd-burn gvfsd-computer gv

5、fsd-metadata gvfsd-trash haldhald-runnerhald-addon-acpi hald-addon-inpu ibus-x11 im-settings-daeibus-daemonibus-engine-pin ibus-gconf python ibus-daemon loop masterpickup qmgr 5*mingetty modem-manager notification-ar notification-da polkitd pulseaudiogconf-helper 2*pulseaudio rhsmcertd rpc.idmapd rp

6、c.mountd rpc.rquotad rpc.statd rpcbind rsyslogd2*rsyslogd rtkit-daemon2*rtkit-daemon seahorse-daemon sshd trashapplet udevd2*udevd udisks-daemonudisks-daemon wnck-applet wpa_supplicant xinetd1+ Done ./forktree3、运行程序,分析运行结果。#includemain()intp,x,ppid,pid;x=0;p=fork();if(p0)printf(parentoutputx=%dn,+x)

7、;ppid=getpid();printf(Thiidnumberofparentis:ppid=%dn,ppid);elseprintf(childoutputx=%dn,+x);pid=getpid();printf(Thiidnumberofchildis:pid=%dn,pid);实验步骤及输出结果:testlocalhost 桌面$ gcc -o 3 3.ctestlocalhost 桌面$ ./3child output x=1Thi id number of child is:pid=4070parent output x=1Thi id number of parent is:

8、ppid=4069注释:fork创建进程的时候子进程与父进程共享了代码区,子进程复制父进程的数据区,所以,两个进程的数据互不影响东都是1.4、loop.c#includemain()while(1);编译gcc loop.c_o ioop 后台运行./loop&(可多次使用命令)多次使用ps命令查看进程状态实验步骤输出结果:testlocalhost 桌面$ gcc loop.c o looptestlocalhost 桌面$ ./loop &13770testlocalhost 桌面$ps PID TTY TIME CMD3572 PTS/0 00:00:00 bash3770 pst0 0

9、0:00:08 loop3771 pst/0 00:00:00 pstestlocalhost 桌面$psPID TTY TIME CMD3572 PTS/0 00:00:00 bash3770 pst0 00:00:32 loop3773 pst/0 00:00:00 ps testlocalhost 桌面$psPID TTY TIME CMD3572 PTS/0 00:00:00 bash3770 pst0 00:00:37 loop3774 pst/0 00:00:00 ps(二)进程控制1、设计一程序,父进程创建一子进程,子进程的功能是输出“helloworld!”,使用execl()

10、加载子进程的程序。程序代码如下:execl.c程序:#include#include#includemain()int p;p=fork();if(p0) printf(father is running!n);else printf(child is running!n); execl(./hello,hello,0);printf(child is running!n);hello.c程序:#includemain() printf(hello world!n);输出结果:testlocalhost 桌面$ gcc -o 5 5.ctestlocalhost 桌面$ ./5father i

11、s running!testlocalhost 桌面$ child is running!child is running!2、运行以下程序,分析程序执行结果。#include#includemain()intp;p=fork();if(p0)printf(thisisparent);elseprintf(thisischildfirstn”);printf(thisischildsecond”);_exit(0);实验步骤及结果:testlocalhost 桌面$ gcc -o 6 6.ctestlocalhost 桌面$ ./6hello world!注释:exit(0)表示进程正常终止。

12、(三)、进程的互斥1、利用catto_be_locked.txt查看下面程序的输出结果。#include#includemain()int p1,p2,i;int *fp;fp=fopen(to_be_locked.txt,w+);if(fp=NULL)printf(Fail to create file);exit(-1);while(p1=fork()=-1);/*创建子进程p1*/if(p1=0)lockf(*fp,1,0);/*加锁*/for(i=0;i10;i+) fprintf(fp,daughter%dn,i);lockf(*fp,0,0);/*解锁*/elsewhile(p2=

13、fork()=-1); /*创建子进程p2*/if(p2=0)lockf(*fp,1,0); /*加锁*/for(i=0;i10;i+) fprintf(fp,son%dn,i);lockf(*fp,0,0); /*解锁*/elsewait(NULL);lockf(*fp,1,0); /*加锁*/for(i=0;i10;i+) fprintf(fp,parent%dn,i);lockf(*fp,0,0); /*解锁*/fclose(fp);执行结果:实验步骤及结果:(该程序运行出错,注释lockf函数后才可正常运行)testlocalhost 桌面$ gcc o 4 4.ctestlocalh

14、ost 桌面$./4testlocalhost 桌面$cat to_be_lockde.txtdaughter0daughter1daughter2daughter3daughter4daughter5daughter6daughter7daughter8daughter9parent0parent1parent2parent3parent4parent5parent6parent7parent8parent9son0son1son2son3son4son5son6son7son8son9注释:程序开始定义了文件读写指针用于打开指定的文件。当文件不存在的时候则自动创建,然后创建了一个进程p1,

15、p1 获得处理机执行,给文件读写指针加锁,这样,即使p1失去处理机,其他获得处理机的进程也无法访问文件指针指向的文件。当p1再次获得处理机后继续执行直到进程p1解释并解锁。2、按以下步骤分析下面的程序:(1)查看程序执行的结果并估计程序执行所需要时间。(2)将程序中所有的lockf函数加上注释,再观察程序执行的结果和估算程序执行所需的时间。(3)分析这两次执行的结果与时间的区别。#include#includemain()intp1,p2,i;p1=fork();/*创建子进程p1*/if(p1=0)lockf(1,1,0);/*加锁,这里第一个参数为stdout(标准输出设备的描述符)*/f

16、or(i=0;i10;i+)printf(child1=%dn,i);sleep(1);lockf(1,0,0);/*解锁*/elsep2=fork();/*创建子进程p2*/if(p2=0)lockf(1,1,0);/*加锁*/for(i=0;i10;i+)printf(child2=%dn,i);sleep(1);lockf(1,0,0);/*解锁*/elselockf(1,1,0);/*加锁*/for(i=0;i10;i+)printf(parent%dn,i);sleep(1);lockf(1,0,0);/*解锁*/实验结果及步骤:testlocalhost 桌面$ gcc -o 11

17、 11.ctestlocalhost 桌面$ ./11 parent 0 parent 1 parent 2 parent 3 parent 4 parent 5 parent 6 parent 7 parent 8 parent 9child2= 0testlocalhost 桌面$ child2= 1child2= 2child2= 3child2= 4child2= 5child2= 6child2= 7child2= 8child2= 9child1=0child1=1child1=2child1=3child1=4child1=5child1=6child1=7child1=8chi

18、ld1=9 加注释的步骤及执行结果(把11.c里面的lockf函数全部注释重新执行):testlocalhost 桌面$gcc o 11 11.ctestlocalhost 桌面$./11Parent0Child1=0Child2=0Parent1Child1=1Child2=1Parent2Child1=2Child2=2Parent3Child1=3Child2=3Parent4Child1=4Child2=4Parent5Child1=5Child2=5Parent6Child1=6Child2=6Parent7Child1=7Child2=7Parent8Child1=8Child2=

19、8Parent9Child1=9Child2=9 注释:没有加注释时程序运行时间大约是30秒,注释后的程序运行时间大约是10秒。注释掉所有lockf()函数后,循环输出语句块没有被加锁。而当前进程失去处理机后,获得处理机的其他进程也可以继续输出。 3、通过活动,使学生养成博览群书的好习惯。B比率分析法和比较分析法不能测算出各因素的影响程度。C采用约当产量比例法,分配原材料费用与分配加工费用所用的完工率都是一致的。C采用直接分配法分配辅助生产费用时,应考虑各辅助生产车间之间相互提供产品或劳务的情况。错 C产品的实际生产成本包括废品损失和停工损失。C成本报表是对外报告的会计报表。C成本分析的首要程

20、序是发现问题、分析原因。C成本会计的对象是指成本核算。C成本计算的辅助方法一般应与基本方法结合使用而不单独使用。C成本计算方法中的最基本的方法是分步法。XD当车间生产多种产品时,“废品损失”、“停工损失”的借方余额,月末均直接记入该产品的产品成本 中。D定额法是为了简化成本计算而采用的一种成本计算方法。F“废品损失”账户月末没有余额。F废品损失是指在生产过程中发现和入库后发现的不可修复废品的生产成本和可修复废品的修复费用。F分步法的一个重要特点是各步骤之间要进行成本结转。()G各月末在产品数量变化不大的产品,可不计算月末在产品成本。错G工资费用就是成本项目。()G归集在基本生产车间的制造费用最

21、后均应分配计入产品成本中。对J计算计时工资费用,应以考勤记录中的工作时间记录为依据。()J简化的分批法就是不计算在产品成本的分批法。()J简化分批法是不分批计算在产品成本的方法。对 J加班加点工资既可能是直接计人费用,又可能是间接计人费用。J接生产工艺过程的特点,工业企业的生产可分为大量生产、成批生产和单件生产三种,XK可修复废品是指技术上可以修复使用的废品。错K可修复废品是指经过修理可以使用,而不管修复费用在经济上是否合算的废品。P品种法只适用于大量大批的单步骤生产的企业。Q企业的制造费用一定要通过“制造费用”科目核算。Q企业职工的医药费、医务部门、职工浴室等部门职工的工资,均应通过“应付工

22、资”科目核算。 S生产车间耗用的材料,全部计入“直接材料”成本项目。 S适应生产特点和管理要求,采用适当的成本计算方法,是成本核算的基础工作。()W完工产品费用等于月初在产品费用加本月生产费用减月末在产品费用。对Y“预提费用”可能出现借方余额,其性质属于资产,实际上是待摊费用。对 Y引起资产和负债同时减少的支出是费用性支出。XY以应付票据去偿付购买材料的费用,是成本性支出。XY原材料分工序一次投入与原材料在每道工序陆续投入,其完工率的计算方法是完全一致的。Y运用连环替代法进行分析,即使随意改变各构成因素的替换顺序,各因素的影响结果加总后仍等于指标的总差异,因此更换各因索替换顺序,不会影响分析的结果。()Z在产品品种规格繁多的情况下,应该采用分类法计算产品成本。对Z直接生产费用就是直接计人费用。XZ逐步结转分步法也称为计列半成品分步法。A按年度计划分配率分配制造费用,“制造费用”账户月末(可能有月末余额/可能有借方余额/可能有贷方余额/可能无月末余额)。A按年度计划分配率分配制造费用的方法适用于(季节性生产企业)

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服