线程(thread) 与进程(process)是操作系统中两个非常重要的概念,也经常出现在技术类岗位面试中,并且根据面试者的回答侧重点如内存结构,线程通信等等进行展开。
关于二者的概念与区别,相关的书籍博客进行了各类阐述,较为繁杂。(下图显示了其中一部分)

本文从底层结构中去分析二者的区别,进而可以轻松理解二者在宏观上的差别。
进程结构

进程与进程之间相互独立,是操作系统进行资源分配与调度的独立单位,包含独立的逻辑内存空间(如32位操作系统,每个进程逻辑内存大小为4G),若干线程和线程间共享的文件与句柄。
线程结构

线程是程序实际运行的单元,内部包含栈(用于存储运行时数据,调用函数,返回地址等等),PC(存储运行指令或下一条指令的地址,指向内存)以及TLS(线程独立的存储空间,不与其它线程共享)。
因此,线程是程序实际运行的方式。进程是一个容器,将若干线程组合到一起,为多个线程分配共享的逻辑内存和资源,进行调度。线程与线程之间相互独立,不能直接交互。

本文详细解析了进程和线程的概念与区别,强调进程是操作系统资源分配的基本单位,而线程作为程序运行的基本单元,是进程内的子任务。文章深入探讨了两者在底层结构上的差异,以及它们如何共同作用于程序的执行。
1071

被折叠的 条评论
为什么被折叠?



