当前位置: 首页 > ds >正文

【Linux】(1)—进程概念-③Linux进程概念与PCB

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、Linux进程概念与PCB

前言


提示:以下是本篇文章正文内容,下面案例可供参考

什么是进程?

进程可以理解为"正在执行的程序",它是程序的一次动态执行过程。与静态的程序不同,进程具有生命周期,会经历创建、运行、等待和终止等不同阶段。

从内核角度看,进程是分配系统资源(CPU时间、内存等)的实体。操作系统通过进程来管理和调度程序的执行,使多个程序能够"同时"运行(并发执行)。

进程控制块(PCB)

操作系统要管理进程,首先需要描述进程。Linux内核通过一个称为进程控制块(Process Control Block, PCB)的数据结构来记录进程的所有信息。在Linux中,PCB的具体实现是task_struct结构体。

task_struct结构体

task_struct是Linux内核中非常复杂的一个数据结构,定义在include/linux/sched.h头文件中。它包含了管理一个进程所需的全部信息,会被装载到内存(RAM)中。

task_struct的主要内容包括:

  1. 标识符(PID):唯一标识进程的ID,用于区分不同进程

  2. 状态:记录进程当前状态(运行、睡眠、停止等)

  3. 优先级:进程调度的优先级

  4. 程序计数器:下一条要执行的指令地址

  5. 内存指针:指向程序代码和进程相关数据的指针

  6. 上下文数据:进程执行时CPU寄存器的数据

  7. I/O状态信息:进程使用的I/O设备和文件列表

  8. 记账信息:CPU使用时间、时钟数等统计信息

进程的组织方式

Linux内核中所有运行的进程都以task_struct链表的形式存在。内核维护着一个进程链表,每个task_struct都包含指向链表前驱和后继的指针:

c

复制

下载

struct task_struct {//...struct list_head tasks;  // 进程链表//...
};

这种组织方式使得内核能够高效地遍历和管理所有进程。此外,Linux还使用红黑树等数据结构来加速进程查找。

进程状态

在Linux内核中,进程可能处于以下几种主要状态:

  • R (Running):进程正在运行或在运行队列中等待

  • S (Sleeping):可中断的睡眠状态,等待事件完成

  • D (Disk sleep):不可中断的睡眠状态,通常等待I/O操作

  • T (Stopped):进程被信号暂停执行

  • Z (Zombie):僵尸进程,已终止但未被父进程回收

  • X (Dead):进程完全终止,等待被清除

这些状态定义在内核源代码的task_state_array数组中:

c

复制

下载

static const char *const task_state_array[] = {"R (running)",        /* 0 */"S (sleeping)",       /* 1 */"D (disk sleep)",     /* 2 */"T (stopped)",        /* 4 */"t (tracing stop)",   /* 8 */"X (dead)",           /* 16 */"Z (zombie)",         /* 32 */
};
http://www.xdnf.cn/news/10016.html

相关文章:

  • 重温经典算法——选择排序
  • 从“刚性扩容”到“弹性供给”:移动充电服务重构配电网边际成本
  • Node.js 中 require 源码解析
  • 从零起步认知微内核操作系统(AGI)
  • JavaScript 循环语句总结
  • Linux浅谈
  • VMware安装esd格式系统镜像
  • Java实现命令行图书管理系统(附完整源码)
  • 使用 C/C++ 和 OpenCV 调用摄像头
  • Java打包在加载外面的yaml文件
  • 2025LitCTF 复现
  • 【SQL】关键字
  • 【笔记】suna部署之获取 Supabase API key 和 project URL
  • 【笔记】suna部署之获取 Tavily API key
  • 第42节:模型优化与部署:Web服务部署(Flask, FastAPI)
  • Arduino LCD 1602液晶显示器2(I2C总线)
  • ubuntu 22.04 编译安装nignx 报错 openssl 问题
  • 【VMware Workstation 17 Pro许可证密钥】
  • 如何站在指标体系之巅看智能数据建模产品(GAI)
  • 使用k8s服务进行端口代理
  • 3D拟合测量水杯半径
  • C++ 模板参数包展开方式
  • 微服务架构设计规范
  • 详解GPU
  • 湖北理元理律师事务所观察:债务优化如何成为民生安全网
  • APM32微控制器键盘PCB设计实战教程
  • Docker 本地化部署FireCrawl
  • 《Pytorch深度学习实践》ch1-线性模型
  • Axure RP11安装、激活、汉化
  • ubuntu24.04与ubuntu22.04比,有什么新特性?