进程和线程的区别与关系

进程、线程原理图

二者区别

1、首先是定义

进程:是执行中一段程序,即一旦程序被载入到内存中并准备执行,它就是一个进程。进程是表示资源分配的的基本概念,又是调度运行的基本单位,是系统中的并发执行的单位。

线程:单个进程中执行中每个任务就是一个线程。线程是进程中执行运算的最小单位。

2、一个线程只能属于一个进程,但是一个进程可以拥有多个线程。多线程处理就是允许一个进程中在同一时刻执行多个任务。

3、线程是一种轻量级的进程,与进程相比,线程给操作系统带来侧创建、维护、和管理的负担要轻,意味着线程的代价或开销比较小。

4、线程没有地址空间,线程包含在进程的地址空间中。线程上下文只包含一个堆栈、一个寄存器、一个优先权,线程文本包含在他的进程 的文本片段中,进程拥有的所有资源都属于线程。所有的线程共享进程的内存和资源。 同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段, 寄存器的内容,栈段又叫运行时段,用来存放所有局部变量和临时变量。

5、父和子进程使用进程间通信机制,同一进程的线程通过读取和写入数据到进程变量来通信。

6、进程内的任何线程都被看做是同位体,且处于相同的级别。不管是哪个线程创建了哪一个线程,进程内的任何线程都可以销毁、挂起、恢复和更改其它线程的优先权。线程也要对进程施加控制,进程中任何线程都可以通过销毁主线程来销毁进程,销毁主线程将导致该进程的销毁,对主线程的修改可能影响所有的线程。

7、子进程不对任何其他子进程施加控制,进程的线程可以对同一进程的其它线程施加控制。子进程不能对父进程施加控制,进程中所有线程都可以对主线程施加控制。

相同点:

进程和线程都有ID/寄存器组、状态和优先权、信息块,创建后都可更改自己的属性,都可与父进程共享资源、都不鞥直接访问其他无关进程或线程的资源。

线程和进程的关系:

处理多线程就是异步,单线程就是同步
同步是阻塞模式,异步是非阻塞模式

从一定意义上讲,进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,而线程是进程中的一部分,进程包含多个线程在运行;程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,
我们称其为 进程

多线程的好处
多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定。线程的运行中需要
使用计算机的内存资源和CPU

进程间相互独立,同一个进程的各线程间共享。某进程内的线程在其他进程不可见
线程是进程的一个实体,是CPU调度和 分派的基本单位,它是比进程更小的能独立运行的基本表单位。线程自己基本上不可拥有系统资源

1.进程拥有独立的堆栈空间和数据段,所以每当启动一个进程时必须分配给他一个独立的地址空间,建立众多的数据表来维护代码段,堆栈段和数据段,系统开销大 线程也拥有自己独立的堆栈空间,但共享代码段,他们彼此之间使用相同的地址空间,共享大部分数据,比进程更节俭,开销小,切换速度也比进程快,效率高。 因为进程是独立的,所有他的安全性比较高,当一个进程崩溃的时候,不会影响其他进程,而线程是进程的一个不同的执行路径。一个线程死掉,就等于一个进程死掉

2.通信机制: 因为进程是相互独立的,互不干扰,所以进程的通信机制相对会复杂,譬如管道,消息,消息队列,共享内存,套接字等通信机制,而线程由于共享字段,所以通信会很方便

3.属于同一进程的所有线程共享该进程的所有资源

4.线程被称为轻量级进程,进程有进程控制块,线程有线程控制块

5.线程只属于一个进程,而一个进程至少有一个线程

选择线程还是进程的取决条件:
1、需要频繁销毁和创建的使用线程,进程的创建和销毁代价太大
2、线程的切换速度比较快,所以需要大量计算或频繁切换时用线程,还有耗时的操作使用线程,可提高程序的响应速度
3、在堆CPU的使用效率上线程更占优势,发展多机分布时用进程,多核分布用线程
4、并行操作使用线程
5、需要更安全时,使用进程,速度更快,使用线程  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章