关于线程和进程的总结

本文总结了进程和线程的概念,强调了理论知识与实际应用结合的重要性。进程是资源分配基本单位,由程序、数据集合和进程控制块构成。线程是CPU调度基本单位,共享进程内存,用于实现同步等功能。线程创建销毁开销小于进程,适合频繁操作和大量计算。以Chrome浏览器为例,其采用多进程以保障安全。
摘要由CSDN通过智能技术生成

前言:

张罗张罗网上进程和线程的内容,在加上一些自己的理解,再放到实际应用中进行的操作。

通过腾讯的面试,我明白了理论知识光知道是不太行的,你要理解具体场景下,应该怎么具体使用,这种东西只能通过多写项目完成,别无他法。

定义:

进程

进程其实是一种抽象的概念,没有具体的定义,按照我的理解来说,进程就是具有一定功能的程序一次动态执行的过程,是系统资源分配和调度的基本单位。

进程由三部分构成:程序,数据集合和进程控制块。

程序:就是进程执行的功能,控制进程执行的指令集;

数据集合:进程执行时的数据和代码存储的地方;

进程控制块:包括进程的控制信息和描述信息,是进程存在的唯一标志。

 

线程

早期的操作系统中是没有线程的存在的,都是使用进程来完成系统的资源分配和调度执行,但是随着计算机系统的需求增大,进程的创建资源和分配与销毁相对麻烦,于是就有了线程的概念。

线程是依赖于进程而存在的,线程是帮助进程完成同步等功能的,线程共享了进程的内存空间。线程是CPU调度的基本单位。

 

区别

线程和进程的区别如下:

  1. 线程依赖于进程,线程是进程中代码的一个执行路段;一个进程可以拥有多个线程但至少要有一个线程;
  2. 进程拥有自己独立的内存空间,而线程是共享进程的内存空间,例如代码段,数据段,扩展段(堆储存区),但是线程拥有自己的栈段,也叫运行时段,存放临时变量和局部变量;
  3. 进程是资源分配的基本单位,线程是CPU调度的基本单位。怎么理解这两句话呢,我觉得创建进程是需要系统进行分配资源,而线程是共享进程的内存空间等资源,所以进程是资源分配的基本单位,而线程是帮助进程完成执行功能而存在的,比如同步通信,并发处理等,所以线程是CPU进程调度和分配的基本单位;
  4. 系统开销方面:在创建和销毁进程的时候,系统都要进程资源的分配和回收,例如内存空间、I/O设备等,因此创建进程的开销要远大于线程的开销,线程只需要进行共享进程的内存,只需要开辟少量的栈区空间等就可;相同的,还有进程切换的时候,涉及到整个当前进程的CPU环境的保存以及新被调度进程的CPU环境的设置,而线程只需要保存和设置少量寄存器的内容即可;
  5. 进行通信方面:由于线程共享了进程的内存空间,所以存在多数线程的具有相同的地址空间,这使得它们进行线程的通讯会更加容易;比如进程间通讯的时候,线程之间可以通过访问进程数据段,来进行通讯。

 

然后总结来说呢,进程可靠安全,调试简单,但是创建和销毁所需要的内存开销大

线程开销小,切换快,但是代码比较复杂,而且一但挂了,导致整个进程也会挂掉。

应用:

进程和线程的基本内容差不多说完了,接下来说说关于线程和进程实际使用中的例子

  1. 如果进行多次的创建和销毁操作,需要使用线程,因为进程创建销毁产生的开销过大;
  2. 如果使用了大量的计算,也是优先使用多线程,因为大量计算要频繁使用CPU调度,使用线程是最合适的;
  3. 举个例子:Chrome谷歌浏览器是采用多进程的方式,因为考虑到安全问题,防止一个网页的编码不规范导致另一个网页崩溃,或者一些网页的恶意代码窃取了另一个网页的敏感信息。

 

关于应用实例还有很多,鄙人才疏学浅部分例子目前不是很能理解,想要多了解请看:

https://blog.csdn.net/weixin_39731083/article/details/82015830

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值