前言
本篇主要对进程和线程的概念进行分析,kernel中的进程、线程模型,涉及进程、用户态线程、内核态线程、轻量级进程(LWP),在分析之前,需要阅读What are threads?,该文章有便于理解操作系统中线程、用户态线程和内核态线程的对应关系。
不同操作系统对线程和进程的理解及对应关系稍有不同(M:N、N:1、1:1),本篇只针对Linux操作系统。
本篇文章是阅读ULK3及网上相应文章后的个人总结笔记,加上了我的理解,这部分内容会加以标识,如有错误,欢迎指正。
进程
根据ULK3上对进程的定义:“进程是程序执行时的一个实例”、“一个运行程序的执行上下文”、“是系统分配资源的最小单位”。
描述一个进程
当我们谈论进程时,我们在谈论什么?
众所周知,kernel中用进程描述符task_struct来定义一个进程:
关于task_struct即各个成员的含义,属于老生常谈,这里就不讨论了,但是从上图可以看出一个进程的基本组成如下:<