【操作系统不挂科】<创建进程(5)>选择题&分析填空题(带答案与解析)

前言

大家好吖,欢迎来到 YY 滴操作系统不挂科 系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁
本博客主要内容,收纳了一部门基本的操作系统题目,供yy应对期中考试复习。大家可以参考

一.<创建进程>选择题

1.以下关于父进程和子进程的叙述中,正确的是( )

A.父进程创建了子进程,因此父进程运行完了,子进程才能运行
B.父进程和子进程可以并发执行
C.撤销子进程时,应该同时撤销父进程
D.撤销父进程时,应该同时撤销子进程

  • 正确答案:B

2.当进程采用操作fork()创建新的进程时,父进程和子进程之间共享了以下哪些状态?(多选题)

A.堆栈
B.堆
C.共享内存段
D.代码段

  • 正确答案:D
  • fork共享代码段
  • 数据段、堆和栈:尽管子进程在创建时会得到父进程数据段、堆和栈的副本,但这些副本在物理内存中是分开的。也就是说,子进程拥有自己独立的数据空间、堆和栈,对它们的修改不会影响到父进程中的相应部分。

二.<创建进程>分析填空题

1.请问下面的程序一共输出( )个“-”?

在这里插入图片描述

  • 正确答案:6
  • 第一次循环(i = 0),fork() 调用后,有两个进程:父进程和子进程
  • 这两个进程都会执行 printf(“-\n”);结果:输出两个 -
  • 第二次循环(i = 1),有四个进程:原始父进程、第一次循环创建的子进程、第二次循环父进程创建的子进程(孙子进程 1)、和第一次循环创建的子进程在第二次循环中创建的子进程(孙子进程 2)这四个进程都会执行 printf(“-\n”);结果:再输出四个 -
  • 一共结果是6个

如果去掉\n,结果是输出8个。相关解释跳转下方传送门

2.采用下列的程序,说明第A行的输出结果

在这里插入图片描述

  • 正确答案:PARENT:value=5
  • fork共享代码段,不共享数据段;全局变量value在数据段,不受影响

3.下图所示程序,创建了多少进程(包括初始父进程)?

在这里插入图片描述

  • 正确答案:8
  • 2的三次方
    在这里插入图片描述

4.如下图程序所示的程序创建了多少个进程(包括初始的父进程)?

在这里插入图片描述

  • 正确答案:16
  • 2的4次方
    在这里插入图片描述

5.对下图所示的标记为printf(“LINE J”)的行所能执行的环境,请解释一下

在这里插入图片描述

  • 正确答案:
  • 1)因执行函数exec(),将可能替代当前程序的地址空间的代码,替代者由参数指令(即ls程序)。
    2)如果exec()成功执行,则新的代码将执行,不会返回执行printf(“LINE J”)语句。
    3)如果exec()调用出错(如未找到参数指令的程序),则会执行printf(“LINE J”)语句。

6.下图所示的程序,确定行A、B、C、D中的pid的值。(假定父进程和子进程的pid分别为2600和2603)

在这里插入图片描述

  • 正确答案:
  • A:pid=0; //fork后子进程返回0
    B:pid1=2603; //getpid()获取当前进程的ID
    C:pid=2603; //fork后父进程对应接收到的是子进程的ID
    D:pid1=2600; //getpid()获取当前父进程的ID

7.使用下图(原图3-35)所示的程序,请解释一下行X和Y的输出是什么?

在这里插入图片描述

  • 正确答案:
  • X行输出:0,-1,-4,-9,-16
    Y行输出:0,1,2,3,4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YY的秘密代码小屋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值