进程与线程

三个问题

1、进程与线程的基本概念

2、为什么要有进程线程?区别在哪里?

3、各自如何同步的?

答:进程是对运行时程序的封装,是系统进行资源调度和分配的基本单位,实现了操作系统的并发;
线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发。
线程是操作系统的最小执行和调度单元。每个线程都独自占用一个虚拟处理器;独自的寄存器组,指令计数器和处理器状态。每个线程完成不同的任务,
共享同一地址空间(也即是同样的动态内存,映射文件。目标代码等),打开的文件队列和其他内核资源。

区别:

1、一个线程只能属于一个进程,而一个进程可以有多个线程,但是至少一个线程。线程依赖于进程而存在。
2、进程在执行过程中拥有独立的内存单元,而多个线程共享进程的内存。(资源分配给进程,同一进程的所有线程共享该进程的所有资源。同一进程中的多个线程共享代码段,数据段,扩展段。但是每个线程拥有自己的栈段(用来存放所有局部变量和临时变量)。
3、进程是资源分配 的最小单位,线程是CPU调度的最小单位。
4、系统开销:由于在创建或者撤销进程时,系统都要为之分配或回收资源,如内存空间,I/O设备等。因此,操作系统所付出的开销大于创建或撤销线程时的开销 。另外,在进行线程切换时,涉及CPU环境的保存以及新调度运行的进程的CPU环境设置。而线程切换中须保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。可见,进程切换的开销也远大于线程切换的开销。
5、通信:同一进程中的多个线程具有相同的地址空间,致使他们之间的同步和通信的实现,也比较容易。进程通过系统IPC,管道,套接字socket.线程直接读写进程数据段(如全局变量)。
6、进程间不会相互影响;线程一个线程挂掉,整个进程都会挂掉。
转载于:https://m.nowcoder.com/tutorial/93/156e55e0579d4a678e857b34d572c278?&headNav=www

学习让我快乐,工作让我快乐。学习和工作都是为了更好的生活!
原文地址:https://www.cnblogs.com/xyuanzi/p/13190709.html