【操作系统】线程与进程

一、线程

1.定义

线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

2.特征

⑴轻型实体

线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。

线程的实体包括程序、数据和TCB。线程是动态概念,它的动态特性由线程控制块TCB(Thread Control Block)描述。TCB包括以下信息:

  1. 线程状态;
  2. 当线程不运行时,被保存的现场资源;
  3. 一组执行堆栈;
  4. 存放每个线程的局部变量主存区;
  5. 访问同一个进程中的主存和其它资源。

用于指示被执行指令序列的程序计数器、保留局部变量、少数状态参数和返回地址等的一组寄存器和堆栈。

⑵独立调度的基本单位

在多线程OS中,线程是能独立运行的基本单位,也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中的)。

⑶可并发执行

同一进程中的多个线程之间,可以并发执行,甚至允许在同一进程中所有线程都能并发执行;

不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。

⑷共享进程资源

在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:

所有线程都具有相同的地址空间(进程的地址空间),线程可以访问该地址空间的每一个虚地址;

可以访问进程所拥有的已打开文件、定时器、信号量机构等;

由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。

二、进程

1.定义

进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动;
它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
进程的概念主要有两点:
⑴进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量;
⑵进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。

2.特征

⑴动态性

进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。

⑵并发性

任何进程都可以同其他进程一起并发执行。

⑶独立性

进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。

⑷异步性

由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。

⑸结构特征

进程由程序、数据和进程控制块三部分组成;
多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。

三、线程与进程的区别和联系

1.区别

  • 进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位;
  • 进程开销大,线程开销小:每个进程都有独立的代码和数据空间,进程之间的切换会有较大的开销;线程可以看做轻量级的进程,同一组线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换的开销小;
  • 进程分配独立资源,线程组共享资源:系统在运行的时候会为每个进程分配不同的内存空间;线程共享系统资源,如虚拟地址空间,文件描述符信号处理等,拥有自己的调用栈,寄存器环境,本地线程存储。

 2.联系

  • 操作系统中可执行多个进程,进程中可执行多个线程;
  • 进程是线程的容器:如果进程内有多个线程,则很执行过程是多线程共同完成的。线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
原文地址:https://www.cnblogs.com/6970-9192/p/11724430.html