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. TCP协议是安全的吗?

    2024-04-01 13:42:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-01 13:42:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-01 13:42:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-01 13:42:01       18 阅读

热门阅读

  1. 英国生物数据库的申请流程

    2024-04-01 13:42:01       13 阅读
  2. flask+uwsgi+云服务器 部署服务端

    2024-04-01 13:42:01       22 阅读
  3. 【微服务篇】分布式事务方案以及原理详解

    2024-04-01 13:42:01       16 阅读
  4. 多线程(24)Future接口

    2024-04-01 13:42:01       15 阅读
  5. 设计模式之策略模式

    2024-04-01 13:42:01       12 阅读
  6. Spark数据倾斜解决方案

    2024-04-01 13:42:01       16 阅读