操作系统学习笔记(二) ---进程

本文详细探讨了操作系统中的进程概念,包括进程与程序的区别、进程的状态(如新建、运行、等待、就绪、终止)、PCB(进程控制块)的内容、进程生命期原理以及进程间的通信。通过实例解析了进程的创建、执行、资源分配和结束,并介绍了相关系统调用如fork、exec、wait等,以及进程状态的转换。
摘要由CSDN通过智能技术生成

目录

Chapter 3 Process

例题:

概念部分

进程与程序

进程的状态

PCB(进程控制块)

进程的生命期原理(对进程的相关操作)

进程间通讯


Chapter 3 Process

例题:

1.Using the program shown in Figure 3.30, explain what the output will be at LINE A.

Answer:

输出为5

分析:创建了一个子进程,子进程复制了父进程的栈、堆等信息。

全局变量在子进程中改变不影响其在父进程中的值。(全局变量存储在数据段,属于初始化数据,子进程会复制父进程的初始化数据,两个进程是相互独立的)

 

2.Including the initial parentprocess,how many processesarecreated by the program shown in Figure 3.31?

 

Answer:

子进程创建过程如图,最终有8个进程。

 

3.When a process creates a new process using the fork() operation,

which of the following states is shared between the parent process and the child process?

a. Stack

b. Heap

c. Shared memory segments (内存段)

Answer:

只有Shared memory segments(共享内存段)是共享的,子进程将复制父进程的栈、堆、数据段。复制不等同于共享,如第一题,对各自的变量进行赋值等操作不会影响另一个进程。

 

Construct a process tree similar to Figure 3.8. To obtain process information for the UNIX or Linux system, use the command ps -ael.

Answer:

 

execlp()函数:从PATH环境变量中查找文件并执行。

execlp()会从PATH 环境变量所指的目录中查找符合参数file的文件名, 找到后便执行该文件, 然后将第二个以后的参数当做该文件的argv[0]、argv[1]……, 最后一个参数必须用空指针(NULL)作结束。

execlp("/bin/ls","ls",NULL)  这行的意思应该是调用bin目录下的ls命令(用该命令覆盖子进程地址空间)

这个函数执行后程序当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其 main函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。有六种不同的exec函数可供使用,它们常常被统称为exec函数。这些exec函数都是UNIX进程控制原语。

所以直接执行该程序并不会打印”LINE J”,除非不执行execlp()函数。

我们将execlp("/bin/ls","ls",NULL)替换成execlp("/bin/ps","ps","-ael",NULL);可以在运行时得到如下结果(部分图示)

可以得进程树

4.Using the program in Figure 3.34,identify the values of pid at lines A,B, C, and D. (Assume that the actual pids of the parent and child are 2600 and 2603, respectively.)

Answer:

getpid()函数:返回当前进程pid

getppid()函数:返回父进程pid

A行:pid1 = 子进程pid (0)

         pid = 创建子进程时的pid值---父进程pid

所以A行打印0

B行打印2600

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值