进程和线程之间的区别
内容
进程和线程本质上是相关联的。进程是程序的执行,而线程是进程环境驱动的程序的执行。
区分进程和线程的另一个主要点是进程彼此隔离,而线程彼此共享内存或资源。
- 比较表
- 定义
- 关键差异
- 结论
比较表
比较依据 | 处理 | 线 |
---|---|---|
基本的 | 程序正在执行。 | 轻量级过程或部分过程。 |
内存共享 | 完全隔离,不共享内存。 | 彼此共享内存。 |
资源消耗 | 更多 | 减 |
效率 | 与通讯环境中的过程相比效率较低。 | 增强通信效率。 |
创建所需的时间 | 更多 | 减 |
转换时间 | 需要更多时间。 | 消耗更少的时间。 |
不确定的终止 | 导致流程丢失。 | 可以回收线程。 |
终止所需时间 | 更多 | 减 |
工艺的定义
该过程是程序的执行并执行程序中指定的相关动作,或者是程序运行的执行单元。操作系统创建,调度和终止进程以供CPU使用。主进程创建的其他进程称为子进程。
借助于PCB(过程控制块)来控制过程操作可以视为过程的大脑,其中包含与过程有关的所有关键信息,例如过程ID,优先级,状态,PWS和内容CPU寄存器。
PCB还是基于内核的数据结构,它使用调度,分派和保存三种功能。
- 排程 –这是一种选择过程顺序的方法,简单来说就是选择必须首先在CPU中执行的过程。
- 派遣 –它为要执行的过程设置了环境。
- 骗子保存 –此功能可在恢复或阻止某个进程时保存有关该进程的信息。
流程生命周期中包含某些状态,例如就绪,运行,阻塞和终止。流程状态用于即时跟踪流程活动。
从程序员的角度来看,过程是实现程序并发执行的媒介。并发程序的主要进程创建一个子进程。主流程和子流程需要相互交互以实现一个共同的目标。
当一个进程中的I / O操作与另一进程中的计算活动重叠时,进程的交错操作可提高计算速度。
流程的属性:
- 每个进程的创建都包括分别针对每个进程的系统调用。
- 流程是一个隔离的执行实体,不共享数据和信息。
- 进程使用IPC(进程间通信)机制进行通信,这大大增加了系统调用的数量。
- 流程管理消耗更多的系统调用。
- 每个进程都有自己的堆栈和堆内存,指令,数据和内存映射。
线程的定义
线程是程序执行,它使用进程资源来完成任务。单个程序中的所有线程在逻辑上都包含在一个进程中。内核为每个线程分配一个堆栈和一个线程控制块(TCB)。在同一进程的线程之间切换时,操作系统仅保存堆栈指针和CPU状态。
线程以三种不同的方式实现。这些是内核级线程,用户级线程,混合线程。线程可以具有三种状态:运行,就绪和阻塞。它仅包括计算状态,不包括资源分配和通信状态,从而减少了交换开销。它增强了并发性(并行性),因此速度也增加了。
多线程也有缺点,多线程并不会增加复杂性,但它们之间的交互却会增加复杂性。
当有多个线程处于活动状态时,线程必须具有优先级属性。在同一进程中,与其他活动线程分别执行所需的时间由线程的优先级指定。
线程的属性:
- 只有一个系统调用可以创建多个线程(轻量级进程)。
- 线程共享数据和信息。
- 线程共享指令,全局区域和堆区域,但具有自己的单独堆栈和寄存器。
- 线程管理不消耗或减少系统调用,因为可以使用共享内存来实现线程之间的通信。
- 进程的隔离属性在资源消耗方面增加了开销。
- 程序的所有线程在逻辑上都包含在进程中。
- 进程权重重,而线程权重。
- 程序是一个隔离的执行单元,而线程不是隔离的,而是共享内存。
- 线程不能有单独的存在。它附加到一个进程。另一方面,一个过程可以单独存在。
- 在线程到期时,可以恢复其关联的堆栈,因为每个线程都有自己的堆栈。相反,如果进程死亡,则所有线程(包括该进程)都会死亡。
结论
进程用于以并发和顺序方式实现程序的执行。线程是程序执行单元,它使用进程环境,而许多线程使用同一进程的环境时,它们需要共享其代码,数据和资源。操作系统使用此事实来减少开销并改善计算。