进程与线程相关

2016-12-15  本文已影响22人  学不好语文的LJ码农

以下内容整理自互联网,仅用于个人学习


1. 进程

1.1 进程的定义

  • 进程是程序运行的一次执行过程。

为了使参与并发执行的程序(含数据)能独立的运行,必须为之配置一个专门的数据结构,称为进程控制块(Process Control Block,PCB)。系统利用PCB来描述进程的基本情况和运行状态,进而控制和管理进程。相应地,由程序段、相关数据段和PCB三部分过程了进程映像(进程实体)。所谓创建进程,实质上是创建进程映像中的PCB;而撤销进程实质上是撤销进程的PCB。值得注意的是,进程映像是静态的,进程则是动态的

PCB是进程存在的唯一标识!

引入进程实体的概念后,我们可以把传统操作系统中的进程定义为:
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。

1.2 进程状态转换

  • 运行状态:进程正在处理机上运行。但处理机环境下,每一时刻最多只有一个进程处于运行状态。
进程状态转换.jpg

2. 线程

引入进程的目的,是为了使多道程序并发执行,以提高资源利用率和系统吞吐量;而引入线程,则是为了减少程序在并发执行时所付出的时空开销,提高操作系统的并发性能。

线程就是"轻量级进程",它是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成。线程自己不拥有系统资源,只拥有在运行中必不可少的资源,但与其他线程共享进程所拥有的全部资源。

线程也有 就绪阻塞运行 三种基本状态。

引入线程后,进程的内涵发送了改变:进程只作为除CPU以外系统资源
的分配单元,线程则作为处理机分配单元。

3. 进程与线程比较

3.1 调度

在传统操作系统中,用于资源和独立调度的基本单位都是进程。在引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本单位。统一进程中,线程的切换不会引起进程切换。在不同进程中的线程切换,如从一个进程内的线程切换到另一个进程的线程时,会引起进程切换。

3.2 资源

不论是传统操作系统还是设有线程的操作系统,进程都是拥有资源的基本单位,而线程不拥有系统资源(也有一点必不可少的资源),但线程可以访问其隶属进程的系统资源。

3.3 并发性

在引入线程的操作系统中,不仅进程之间可以并发执行,而且多个线程之间也可以并发执行,从而使操作系统具有更好的并发性,提高系统的吞吐量。

3.4 系统开销

由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O设备等,因此操作系统所付出的开销远大于创建或撤销线程时的开销。

类似的,在进行进程切换时,涉及当前执行进程CPU环境的保存以及新调度到进程CPU环境的设置,而线程切换只需保存和设置少量寄存器内容,开销很小。

此外,由于同一个进程内的多个线程共享进程的地址空间,因此,这些线程之间的同步与通信非常容易实现,甚至无需操作系统的干预。

3.5 地址空间和其他资源(如打开文件)

进程的地址空间之间相互独立,同一进程的各线程间共享进程的资源,某进程内的线程对于其他进程不可见。

3.6 通信

进程间通信(IPC)需要进程同步和互斥手段辅助,以保证数据的一致性,而线程间可以直接读写进程数据段(如全局变量)来进行通信。

上一篇 下一篇

猜你喜欢

热点阅读