进程和线程的区别

2020-02-26  本文已影响0人  乔四儿丶

线程和进程 链接

概念

进程是资源分配的最小单位,线程是CPU调度的最小单位

进程和线程都是一个时间段的描述,是CPU工作时间段的描述,不过是颗粒大小不同

进程的cpu时间段包括:t1 + cpu程序执行时间 + t2

注: 分配或回收资源(如内存空间、I/O 设备等),即cpu运行环境加载时间t1和cpu保存运行环境配置时间t2

线程的cpu时间段包括:进程的cpu程序执行时间的一部分

比如要实现程序A,实际分成 a,b,c等多个块组合而成,程序A得到CPU =》CPU加载上下文,开始执行程序A的a小段,然后执行A的b小段,然后再执行A的c小段,最后CPU保存A的上下文。这里a,b,c的执行是共享了A的上下文,CPU在执行的时候没有进行上下文切换的。这里的a,b,c就是线程,线程是共享了进程的上下文环境,的更为细小的CPU时间段。

区别

  1. 拥有资源

进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问隶属进程的资源

  1. 调度

线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换。

  1. 系统开销

由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O 设备等,所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置,而线程切换时只需保存和设置少量寄存器内容,开销很小。

  1. 通信方面

线程间可以通过直接读写同一进程中的数据进行通信,但是进程通信需要借助 IPC。

进程间通信方式(IPC)

  1. 管道

在内核中申请一块固定大小的缓冲区,半双工通信,程序拥有读写权限,包括匿名管道(只允许父子进程通信)和命名管道(所有进程都可以通信)

  1. 消息队列

拥有一个进程向另一个进程发送数据的方法。全双工通信

  1. 信号量

可以对临界资源进行保护

  1. 共享内存

关机数据消失

  1. socket
上一篇 下一篇

猜你喜欢

热点阅读