进程与线程

并行处理
计算机中的并行处理就是可以同一时刻处理多个任务,比如我们要计算1-2,2-3,3+5这三个表达式并输出。建立任务时可以拆为4个任务,第一个1-2,第二个2-3,第三个3+5,第四个,输出上述结果。
在单线程中,我们需要一步一步执行上述结果,总共要执行4步。再多线程中,我们可以使用三个线程将前面三步同时执行,然后再执行最后一步,这样的话我们只需要两步就可以完成。这里我们就能看出来,并行处理能大大提升我们的执行效率。
多线程可以提升效率,但是线程不能单独存在,它依赖于进程,由进程进行启动与管理。
进程是什么?
进程就是程序的运行实例。详细来说就是系统打开一个程序的时候,操作系统就会为其划分一个内存,用来存放代码,运行中的数据和执行任务的主线程,这样的运行环境我们就叫为进程。
线程与进程的关系?
线程依赖于进程,进程中使用多线程能有效提升效率。
进程中任一线程出错,进程都会奔溃。
线程间共享进程的数据。
进程关闭后系统会回收进程占用的内存,哪怕线程操作不当有内存泄漏,也会被回收。
进程间的内容相互隔离。进程之间数据绝对隔离,一个进程的奔溃不会影响到另外的进程。进程间需要数据通信的时候就需要进程通信机制(IPC)。
单进程浏览器(2007年之前)
这种浏览器,就是所有的功能都在一个进程内,包括网络、插件、javascript运行环境、渲染引擎等。单进程也就意味着有一个功能奔溃则进程就会奔溃。这么多的功能都在一个进程就导致浏览器不稳定,不流畅,不安全。
早起的浏览器会使用视频、音频等各种插件,插件奔溃就会导致浏览器崩溃,所以不稳定。
早期浏览器的渲染板块、javascript运行环境、插件都在一个线程中,意味着同时只能有一个执行,一个阻塞则其他的无法完成导致不流畅。
安全问题,因为都是运行在主进程,意味着脚本可以恶意操作浏览器来获取权限得到你电脑的数据,或者一些c语言编写的插件可以直接操作到你的操作系统,从而获取你的各种数据。

多进程浏览器(2008年以后)
除了主进程,新增了多插件进程、渲染进程。页面的页面运行在渲染进程中,插件运行在插件进程中,这样,页面或者插件崩溃时只会影响到对应的进程,不会影响到其他的页面与主进程。
当页面的javascript脚本执行缓慢时,也只会影响到当前页面的渲染,不会影响到其他渲染进程中的页面渲染。
多进程还可以额外新增一个安全沙箱,就是给进程加了一个锁,你可以运行,但不能读取或操作锁之外的东西,比如桌面数据。这样哪怕有恶意插件或者脚本,也不能突破沙箱执行,也就不会有安全问题。

chrome的多进程架构
一个浏览器进程 负责界面显示,数据存储,用户交互,子进程管理。
一个GPU进程 刚开始没有GPU进程的。GPU是为了css 3D效果设计的,后来网页跟浏览器UI都放在GPU来渲染,就单独引入了GPU进程。
一个网络进程 负责页面的网络资源加载
多个渲染进程 将html,css,javascript转换为用户可操作的页面,排版引擎Blink跟javascript v8都在该进程中。该进程都在沙箱模式下。
多个插件进程 负责页面的插件处理,也是沙箱模式下。

多进程问题
更高的内存占用,更复杂的架构体系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值