1、精品文档
实验作业10
【实验步骤】
【任务1】上机测试程序。给出程序的功能及运行结果。(截图显示)
功能:此程序模仿ps程序的执行。父进程打印控制菜单并接收命令,创建子进程。子进程处理任务。此处模拟有两个功能:
命令:ps –a
命令:ps x
【任务2】
答案:
①:pid
②:"/bin/ps","ps","-a",NULL
③:NULL
【任务3】
(红色部分为添加或修改的代码)
#include
#include
#include
#include
2、
#include
int main()
{
pid_t pid;
int n;
pid_t child_pid;
int exit_code;
pid=fork();
switch(pid)
{
case -1:
perror("fork failed!");
exit(EXIT_FAILURE);
break;
case 0:
n=5;
for(;n>0;n--){
printf("child process
3、 PID is %d.\n", getpid() );sleep(1);}
exit_code=88;/*此处值是随便写的,没有实际意义,下同。*/
break;
default:
n=3;
for(;n>0;n--){
printf("parent process PID is %d.\n", getpid() );sleep(1);}
exit_code=66;
}
/*父进程等待子进程完成*/
if(pid!=0)
{
child_pid=wait(&exit_code);
4、 printf("child has finished: PID=%d\n",child_pid);
if(WIFEXITED(exit_code))
printf("child exited with code %d\n",WEXITSTATUS(exit_code));
else
printf("child terminated abnormally\n");
}
exit(exit_code);/*子进程终止时会用该函数将值带回给父进程*/
}
执行效果:
【问题与思考】
1、进程间的互斥与同步表示了
5、各进程间的( )
A.竞争与协作 B.相互独立与相互制约
C.临界区调度原则 D.动态性与并发性
2、若执行信号量S操作的进程数为3,信号量S初值为2,当前值为-1,表示有( )个等待相关临界资源的进程。
A.0 B.1 C.2 D.3
3、由于并发进程执行的随机性,一个进程对另一个进程的影响是不可预测的,甚至造成结果的不正确,( )。
A.造成不正确的因素与时间有关
B.造成不正确的因素只与进程占用的处理机有关
C.造成不正确的因素与执行速度无关
D.造成不正确的因素只与外界的影响有关
4、进程间的基本关系
6、为( )
A.相互独立 B.同步与互斥
C.信息传递与信息缓冲 D.并行执行与资源共享
5、操作系统中P、V操作是一种( )。
A.系统调用 B.进程通信原语
C.控制命令 D.软件模块
6、并发性是指若干事件在( )发生。
A.同一时刻 B.同一时间间隔内
C.不同时刻 D.不同时间间隔内
7、两个进程合作完成一个任务,在并发执行中,一个进程要等待其合作伙伴发来信息或者建立某个条件后再向前执行,这种关系是进程间的( )关系。
A.同步 B.互斥 C.竞争 D.合作
8、一段不能由多处进程同时执行的代码称为( )。
A.临界区 B.临界资源 C.锁操作 D.信号量操作
9、临界区是指并发进程中( )。
A.用于实现进程互斥的程序段 B.用于实现进程同步的程序段
C.用于实现进程通信的程序段 D.与互斥的共享资源有关的程序段
10、如果系统只有一个临界资源,同时有很多进程要竞争该资源,那么系统( )发生死锁。
A.一定会 B.一定不会 C.不一定会 D.由进程数量决定
精品文档