四个进程
??? 这里要注意, 这是四个进程
!!!答: 计算机中的并⾏处理就是同⼀时刻处理多个任务,⽐如咱们要计算下⾯这三个表达式的值,并显⽰出结果。浏览器
A = 1+2 B = 20/5 C = 7\*8
在编写代码的时候,咱们能够把这个过程拆分为四个任务:安全
正常状况下程序可使⽤单线程来处理,也就是分四步按照顺序分别执⾏这四个任务。网络
多线程会怎么处理呢? 就两步:多线程
第一步: 同时执行任务1,2,3 第二部: 最后执行任务4
哇哦,这样子会节省不少时间啊,大大滴提高了咱们的性能架构
哈哈哈,是的,多线程会大大滴提高性能,可是 线程不可能独立存在,它是由进程来启动管理的, 那进程是啥???性能
一个进程就是一个程序运行的实例。 就是启动一个程序的时候, 操做系统会为该程序建立一块内存, 用来存放代码、运⾏中的数据和⼀个执⾏任务的主线程,
咱们把这样的运行环境
,叫作进程
学习
从图中能够看到,线程是依附于进程的,而进程中使用多线程并行处理能提高运算效率spa
总结来讲吧,进程和线程有以下四个特色:
1. 进程中的任意一个线程
执行出错,都会致使整个进程
崩溃操作系统
2. 线程
之间共享进程
中的数据插件
从上图能够看出,线程一、线程二、线程3分别把执行的结果写⼊A、B、C中,而后线程2继续从A、B、C中读 取数据,用来显示执行结果。
3. 当一个进程关闭以后,操做系统就会回收进程所占用的内存
当一个进程退出的时候,操做系统就会回收该进程所申请的全部资源。好比,关闭Chrome浏览器的页面,那该页面所占用的资源就会被系统回收
注意: 即便其中任意的线程由于操做的不当,从而致使内存泄漏,这些内存也会被回收
4. 进程之间的内容是相互隔离的
一个A进程与一个B进程,两个进程是相互隔离,没法访问的,若是你须要进程之间进行数据通讯,这时候要使用进程间的通讯机制(IPC)
为啥要改架构呢?确定是由于时代在进步啦....
你这不废话, 额..., 那这么说, 他更改架构确定是没法知足一个阶段内的用户需求, 大家可能没经历过, 可是我经历过, 不是Chrome浏览器, 是IE.....
当我打开许多页面的时候, 其中的一个页面崩溃了, 但是却致使整个浏览器凉凉...., WTM.....心态炸了啊, 搞个球啊...., 哈哈哈, 那时候就是这样------那时就是单进程浏览器时代
他把全部的进程模块都运行在了一个进程里面, 你想一想一下, 我打开了5个页面, 这些页面都是同一个进程, 那我一个页面崩溃了, 确定带动了其余页面啊, 那为啥当时没感受啥呢, 仍是能忍受, 唉, 一言难尽, 没有对比就没有伤害呗!!!
那咱们来根据以前的架构对比一下:
问题1: 不稳定
很明显,以前的浏览器非常不稳定,具体来讲,以前的浏览器实现Web视频、Wab游戏等要借助于插件来实现,插件这个东西自己就不稳定, 你还运行在浏览器里, 一个插件崩溃了, 哦也....集体凉凉,对吧!!!
那就不会吧插件作稳定点啊, 好插件稳定了, 渲染引擎模块也是不稳定的, 这...., 这点工资很难实现这个需求啊, 哈哈哈
问题2: 不流畅
咋会不流畅呢?很简单,我写了一个无限循环的脚本, 放进浏览器中, 哈哈哈 ,只要你打开了我这个页面, 你浏览器就凉凉, 额..., 操做挺骚啊~~
除了这个,想一想一下, JS代码运行在这个进程中之外, 还有插件...., 你保证你不遍历了? 额....,TMD。哈哈哈,这时候开始心态就崩了?早了点!!TM还有啥? 页面的内存泄漏
他咋会...., 有问题的页面关了不就好了? 不行, 首先浏览器的内核很是复杂, 运行一个复杂点的页面, 会存在内存不能彻底回收的状况, 这个须要理解, 可是随着使用时间越长, 内存占用越高, 浏览器愈来愈慢,啊....上天,这东西能用???哈哈哈,别急,还有问题....没结束呢!!!
问题3: 不安全
若是, 一个插件释放了病毒, 或者一个页面释放了病毒, 窃取了你的帐号密码,诶嘿,那你想一想,同一进程下的其它页面吧..., 卧槽,我登陆的传奇啊, 个人贪玩蓝月啊, 咋一夜装备都被卖了啊...., 哈哈哈,TMD...我想起被盗号的时候了...
特色1: 解决不稳定性
进程是相互隔离的, 你的其中一个页面进程崩溃, 诶?浏览器没事,哈哈哈,这个页面关闭,再打开就行
特色2: 解决不流畅
一个页面死循环,千千万个页面没咋地,哈哈哈, 那我这个页面内存泄露了咋整? 别慌啊, 关闭这个页面, 回传都会被系统回收,nice,NB!!!
特色3: 安全问题
这里有一个名词, 你们应该听过, 安全沙箱, 具备问题的地方,都会被放到沙箱里面, 恶意程序没法突破沙箱获取系统权限,哦吼?盗号?不存在滴....
如今你应该明白了, 问啥打开一个Chrmoe页面有四个进程了, 至少须要1个网络进程, 1个浏览器进程, 1个GPU进程, 1个渲染进程; 若是运行了插件, 还会有1个插件进程
那如今的多进程架构就没啥缺点?
想啥呢, 没缺点还要需求干吗, 哈哈哈
缺点1: 更高的资源占用
每一个进程都会包含公共基础结构的副本(JS的运行环境), 这就意味着消耗更多的内存资源, 换个128G的内存,哈哈哈....
缺点2: 更复杂的体系架构
浏览器各模块之间耦合性高, 扩展性差等问题, 这样会致使如今的架构很难适应新的需求, 时代变化没法预测呀, 开发人员也很不容易滴
为了解决如上的问题, 在2016年,Chrome团队使用面向服务架构, 我擦,2016年就这么高大上了???
这样就把原来的各类模块从构成独立的服务, 每一个服务都会在独立的进程中运行, 访问服务必须定义好接口, 经过IPC来通讯, 这样就构建了一个更加内聚、松耦合、易于维护的扩展的系统
这里就再也不多阐述了
好啦, 就聊到这里, 关注一下, 避免迷路, 每周不定时,不定量更新!!!
谢谢你们支持!!!