Linux进程概念

大家好,我是knight-n。本篇文章我将为大家介绍进程的概念。

什么是进程

进程是程序的基本执行实体,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。通俗的说进程就是运行的程序。

PCB

进程是运行的程序。既然它在操作系统上运行,那么它一定会占用系统资源。所以操作系统就要对进程进行管理。PCB就是操作系统中用于描述和管理进程的数据结构。包含了进程的管理和控制信息,是进程管理和控制的最重要的数据结构。

每个正在运行的进程都有一个对应的进程PCB,它在进程创建时建立,伴随进程运行的全过程,直到进程撤销而撤销。Linux操作系统下的PCB是: task_struct。

task_struct中的内容可分为以下几类:

标示符: 描述本进程的唯一标示符,用来区别其他进程。

状态: 任务状态,退出代码,退出信号等。

优先级: 相对于其他进程的优先级。

程序计数器: 程序中即将被执行的下一条指令的地址。

内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针

上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。

I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。

记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。

其他信息

进程标识符 

进程标识符简称PID是唯一标识进程的数值。在操作系统中,每个进程都有一个唯一的进程标识符,用于区分不同的进程。和PCB相同在进程创建时由操作系统分配,并在进程终止时回收。PID就是进程的身份证号。我们可以通过系统调用获取当前进程的PID。

getpid()用来取得目前进程的进程识别码即PID。返回值类型是pid_t ,返回当前进程的pid。我们编写一段程序来帮助大家理解。

我们运行这段程序

所以当前进程的PID是13225。

子进程 

子进程是由父进程创建的进程。在Linux中,子进程是父进程的一个副本,它会继承父进程的许多属性,如环境变量、打开的文件描述符和信号处理方式等。子进程有自己的PID,是一个独立的实体,可以独立于父进程运行。

进程创建

在Linux下我们可以使用fork()系统调用来创建当前进程的子进程。

fork()会为当前进程创建一个子进程。返回值是pid_t,和普通函数不同,fork()有两个返回值。当创建成功时会为子进程返回0,为父进程返回子进程的pid。当创建失败时fork()返回一个负值。

下面是一个简单的示例代码:

运行结果: 

以上就是本文的全部内容,感谢观看!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

knight-n

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

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

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

打赏作者

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

抵扣说明:

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

余额充值