进程和线程
Posted 小刘你最强
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程和线程相关的知识,希望对你有一定的参考价值。
进程和线程
进程
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配基本单位,是操作系统结构的基础。它的执行需要系统分配资源创建实体之后,才能进行。
对于操作系统来说,进程就是一个PCB,是一个程序的动态描述,通过PCB操作系统才能实现程序的运行调度管理。
在Linux下的PCB就是一个task_struct结构体
每运行一个程序,就是创建了一个进程,也就是PCB,由操作系统为它分配空间等必要的资源,在内核管理区为该进程创建管理节点,以便来控制和调度该任务。
线程
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是他可与同属一个进程的其他的线程共享进程所拥有的全部资源。
在Linux下是一个轻量级进程,Linux下的线程是通过PCB实现的,是程序运行的动态描述,通过这个描述实现程序运行的调度,这个线程相较于传统的PCB更加轻量化,因此也被称为轻量级进程。
区别
- 进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位;
- 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;
- 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见;
- 调度和切换:线程上下文切换比进程上下文切换要快得多。
进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。(进程是资源分配的最小单位)
线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的最小单位)
以上是关于进程和线程的主要内容,如果未能解决你的问题,请参考以下文章