进程与线程

tech2022-09-14  97

并行处理 计算机中的并行处理就是可以同一时刻处理多个任务,比如我们要计算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)