家庭作业

家庭作业

家庭作业 8.9(★)

考虑四个具有如下开始和结束时间的进程:

进程 开始时间 结束时间
A 5 7
B 2 4
C 3 6
D 1 8

对于每对进程,指明它们是否是并发地运行的:

进程对 并发地?
AB
AC
AD
BC
BD
CD

家庭作业 8.10(★)

在这一章里,我们介绍了一些具有不寻常的调用和返回行为的函数:setjmplongjmpexecvefork。找到下列行为中和每个函数相匹配的一种:

A. 调用一次,返回两次。

B. 调用一次,从不返回。

C. 调用一次,返回一次或者多次。

家庭作业 8.11(★)

这个程序会输出多少个 "hello" 输出行?

#include "csapp.h"

int main()
{
    int i;

    for (i = 0; i < 2; i++)
        Fork();
    printf("hello\n");
    exit(0);
}

家庭作业 8.12(★)

这个程序会输出多少个 "hello" 输出行?

#include "csapp.h"

void doit()
{
    Fork();
    Fork();
    printf("hello\n");
    return;
}

int main()
{
    doit();
    printf("hello\n");
    exit(0);
}

家庭作业 8.13(★)

下面程序的一种可能的输出是什么?

#include "csapp.h"

int main()
{
    int x = 3;

    if (Fork() != 0)
        printf("x=%d\n", ++x);

    printf("x=%d\n", --x);
    exit(0);
}

家庭作业 8.14(★)

下面这个程序会输出多少个 "hello" 输出行?

#include "csapp.h"

void doit()
{
    if (Fork() == 0) {
        Fork();
        printf("hello\n");
        exit(0);
    }
    return;
}

int main()
{
    doit();
    printf("hello\n");
    exit(0);
}

家庭作业 8.15(★)

下面这个程序会输出多少个 "hello" 输出行?

#include "csapp.h"

void doit()
{
    if (Fork() == 0) {
        Fork();
        printf("hello\n");
        return;
    }
    return;
}

int main()
{
    doit();
    printf("hello\n");
    exit(0);
}