反思任务:进程与线程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liuyizhou95/article/details/82184510

问题参考:1.进程和线程的区别——https://blog.csdn.net/zhou753099943/article/details/51771220

                  2.进程和线程的区别?什么时候用进程?什么时候用线程?——

                                                                    https://www.cnblogs.com/renzhuang/articles/6733461.html

                  3.进程和线程定义,概念,区别详解——https://blog.csdn.net/albenxie/article/details/77870656

                  4.为什么要在操作系统中引入线程?——https://blog.csdn.net/wangshihui512/article/details/9897607

一.what?什么是线程,什么是进程?

进程可以理解为一个正在运行的程序,程序一旦运行就是进程。进程也是资源分配的最小单位

线程是进程的一个执行流。线程是程序执行的最小单位,是CPU调度分排的基本单位。可以认为线程就是轻量级的进程

  • A进程中   任务1  和  任务2  执行的时候 任务1阻塞了,可以派遣一个 B进程 去完成 进程A 中的 任务2,那么进程B就要对进程A的很大一部分资源(代码,数据)都要进行一部分拷贝,这就造成了在这些数据在内存中的重复,浪费了空间,而A进程可以派一个线程去执行任务2,无需拷贝
  • 这里有一个比喻:就好比是将军和士兵。将军是执行赏赐的最小单位,士兵是执行命令的最小单位。
  • A将军需要完成任务1 和 任务2  任务1耽误了,可以摆脱 B将军 帮忙完成任务2,但是需要完成任务的交割,军情情报,兵权粮饷等一系列的移交工作(执行任务时粮饷多),而作为A将军手下的其他士兵,自然知晓这些任务与军情情报,A将军完全可以派遣其他士兵去执行任务2

二.why?为什么要有线程和进程?

本质上是为了节省时间与空间。

由于进程是资源的拥有者,所以在创建、撤销、切换操作中需要较大的时空开销,限制了并发程度的进一步提高。为减少进程切换的开销,把进程作为资源分配单位调度单位这两个属性分开处理,即进程还是作为资源分配的基本单位,但是不作为调度的基本单位(很少调度或切换),把调度执行与切换的责任交给“线程”。这样做的好处不但可以提高系统的并发度,还能适应新的对称多处理机(SMP)环境的运行,充分发挥其性能。

  • 同样适用上述比喻:将军A将军B如果分别执行任务1与任务2,那么他们将会带领其各自手下的士兵执行对应的任务,但这些任务往往比较简单,可能很多士兵并不需要去执行任务(处于闲置状态)。将任务1,2同时交给将军A,他会将士兵分为两部分分别执行任务1和2。在任务完成的时间上可能与两个进程同时执行相同,但在消息军情的管理上以及粮饷的分配上将会大大降低。

三.how?如何区分二者?

第一:因为进程拥有独立的堆栈空间和数据段,所以每当启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这对于多进程来说十分“奢侈”,系统开销比较大,而线程不一样,线程拥有独立的堆栈空间,但是共享数据段,它们彼此之间使用相同的地址空间,共享大部分数据,比进程更节俭,开销比较小,切换速度也比进程快,效率高,但是正由于进程之间独立的特点,使得进程安全性比较高,也因为进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。一个线程死掉就等于整个进程死掉。

第二:体现在通信机制上面,正因为进程之间互不干扰,相互独立,进程的通信机制相对很复杂,譬如管道,信号,消息队列,共享内存,套接字等通信机制,而线程由于共享数据段所以通信机制很方便。

第三:属于同一个进程的所有线程共享该进程的所有资源,包括文件描述符。而不同过的进程相互独立。线程又称为轻量级进程,进程有进程控制块,线程有线程控制块;线程必定也只能属于一个进程,而进程可以拥有多个线程而且至少拥有一个线程;

第四:体现在程序结构上,举一个简明易懂的列子:当我们使用进程的时候,我们不自主的使用if else嵌套来判断pid,使得程序结构繁琐,但是当我们使用线程的时候,基本上可以甩掉它,当然程序内部执行功能单元需要使用的时候还是要使用,所以线程对程序结构的改善有很大帮助。

猜你喜欢

转载自blog.csdn.net/liuyizhou95/article/details/82184510
今日推荐