进程和线程的联系与区别

进程和线程的联系与区别

定义

1.进程:进程是程序的一次执行过程,是程序在执行过程中分配和管理的基本单位。
2.线程:CPU调度和分配的基本单位,它可与同属一个进程的其他线程共享进程所拥有的全部资源。

区别

1.操作系统将一块物理内存映射到进程地址空间上,这块内存就属于该进程,进程内的所有线程均可访问这块内存,其他进程访问不了。进程为线程提供了场地和资源。
2.所谓线程的运行,就是在CPU和资源同时准备好的情况下,执行的过程。线程的运行状态是由CPU寄存器表示的。通过寄存器可知:(1).程序当前运行的位置以及下一步操作。(2).函数的调用栈,现在运行在哪个函数中,函数调用完成后应该返回哪里。线程的运行就是CPU一次一次的执行指令的过程。
所谓调度,就是把当前线程对应的寄存器换出去,换另一套进程,暂停当前线程,继续另一线程的过程。

举例

就拿我打开记事本输入这个事来说,此操作对应电脑内部的独立物理地址,开启了相应的进程(程序开始执行)。记事本需要监听我打字输入的状态,还需要每隔一定时间对草稿进行自动保存。假设如果这个进程只有一个线程的话,那么当对草稿进行保存时,因为此时需要访问硬盘,而访问硬盘的时间线程是阻塞状态的,这时我的任何输入都会没有响应,这种用户体验是无法接受的,或许我们可以通过键盘或者鼠标的输入去中断保存草稿的过程,但这种方案也并不讨好。而使用多线程,每个线程仅仅需要处理自己那一部分应该完成的任务,而不用去关心和其它线程的冲突。因此简化了编程模型。如图所示。
进程和线程的联系与区别

转载

谢谢让我自己懂得的各位大佬文章
[1]:https://www.cnblogs.com/CareySon/archive/2012/05/04/ProcessAndThread.html
[2]: https://www.zhihu.com/question/44087187
[3]: https://www.cnblogs.com/y112102/p/4950659.html