Linux教程

Linux编程知识点2:进程

本文主要是介绍Linux编程知识点2:进程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 前言
  • 1. 进程控制块
  • 2. 三个特殊的进程
  • 3. 进程的状态
  • 总结
  • 参考文献


前言

今天跟大家分享Linux中进程的相关知识。


1. 进程控制块

进程控制块(Process Control Block, PCB)是对并发进程进行控制和管理的数据结构,在Linux内核中由task_struct结构体定义的。PCB中存放了描述进程和控制进程运行的所有信息,部分信息如下:
(1)进程标识符
(2)进程当前状态
(3)进程的程序和数据地址
(4)进程资源清单
(5)进程优先级
(6)CPU现场保护区
(7)用于实现进程间通信所需信息
(8)其他信息:父进程的PID, 有效用户ID,有效组ID, 进程占用CPU的时间,进程退出码、当前目录节点,执行文件节点等

Linux内核将所有进程控制块组织成指针数组形式:

struct task_struct *task[NR_TASK];

上述指针数组即为Linux维护的进程表,每个指针指向一个PCB。NR_TASK规定了最多可同时运行进程的个数。

2. 三个特殊的进程

(1)PID为0的调度进程,是内核的一部分,又称为交换进程或系统进程;
(2)PID为1的init 进程。该进程是在系统自举过程(自举过程:即上电自检,内核检查PC都有哪些硬件,加载硬件驱动,并运行第一个进程)结束时由内核调用,对应的程序文件为/sbin/init。init进程是由内核启动并运行的第一个用户进程。init进程绝不会终止,是一个普通的用户进程,但是以超级用户特权运行。
(3)PID为2de kthreadd内核进程,也是一个内核线程。内核线程是独立运行在内核空间的标准进程,和普通进程间的区别在于内核线程没有独立的地址空间,从不会切换到用户空间。

PID为0的进程是其他所有进程的祖先进程;
init进程是所有其他用户进程的祖先进程;
kthreadd内核线程是其他所有内核线程的父进程。

使用“pstree”和“”ps ax -o pid, ppid, command”命令查看进程间的父子关系。


3. 进程的状态

在这里插入图片描述

总结

关于进程的知识点就介绍到这里,上面描述如有问题,还请指正!

参考文献

《Linux环境编程》

这篇关于Linux编程知识点2:进程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!