We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
进程=火车,线程=车厢,一个进程由一个或多个线程组成。 要想了解进程与线程的话,需要先了解 并行处理 ,并行处理是程序在同一时间处理多个任务,处理一个就是 单线程 ,处理多个就是 多线程 。 而进程则是用来启动和管理线程。
并行处理
单线程
多线程
早期的浏览器(比如早期的火狐),所有的模块都运行再同一个进程里的就是单线程浏览器。这会带来一些问题,比如:
将之前单线程优化成 浏览器主进程 、 插件进程 和 渲染进程 (同一个浏览上下文组内的同一站点会共用一个渲染进程,否则是另启动一个渲染进程),这样做的好处:
浏览器主进程
插件进程
渲染进程
最新的 Chrome 浏览器包括:1 个 浏览器(Browser)主进程 、1 个 GPU 进程 、1 个 网络(NetWork)进程 、多个 渲染进程 和多个 插件进程 。
浏览器(Browser)主进程
GPU 进程
网络(NetWork)进程
GPU进程
网络进程
GUI线程
JS线程
事件触发线程
定时触发器线程
异步http请求线程
2016 年,Chrome 官方团队使用“面向服务的架构”(Services Oriented Architecture,简称 SOA)的思想设计了新的 Chrome 架构。原来的各种模块会被重构成独立的服务(Service),每个服务(Service)都可以在独立的进程中运行,这样做的好处是降低耦合性,不像之前的多进程,可能很多进程之间的服务不能通用,同时降低系统资源占用率。
深入理解浏览器中的进程与线程 线程和进程的区别是什么? - biaodianfu的回答 - 知乎
The text was updated successfully, but these errors were encountered:
No branches or pull requests
什么是进程与线程
进程=火车,线程=车厢,一个进程由一个或多个线程组成。
要想了解进程与线程的话,需要先了解
并行处理
,并行处理是程序在同一时间处理多个任务,处理一个就是单线程
,处理多个就是多线程
。而进程则是用来启动和管理线程。
单进程浏览器
早期的浏览器(比如早期的火狐),所有的模块都运行再同一个进程里的就是单线程浏览器。这会带来一些问题,比如:
多进程浏览器
1. 早期多进程(2008年Chrome 发布时的进程架构)
将之前单线程优化成
浏览器主进程
、插件进程
和渲染进程
(同一个浏览上下文组内的同一站点会共用一个渲染进程,否则是另启动一个渲染进程),这样做的好处:2. 目前多进程( Chrome )
最新的 Chrome 浏览器包括:1 个
浏览器(Browser)主进程
、1 个GPU 进程
、1 个网络(NetWork)进程
、多个渲染进程
和多个插件进程
。浏览器主进程
主要负责界面显示、用户交互、子进程管理,同时提供存储等功能。
GPU进程
3D绘制、加速渲染等
网络进程
网络资源加载
渲染进程
核心任务是将 HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页,排版引擎 Blink 和 JavaScript 引擎 V8 都是运行在该进程中,一般情况下,Chrome 会为每个 Tab 标签创建一个渲染进程。出于安全考虑,渲染进程都是运行在沙箱模式下。
GUI线程
:HTML、CSS的解析以及网页渲染,与JS线程互斥JS线程
:负责解析运行JS,一个渲染进程中只有一个,是单进程。与GUI渲染线程互斥事件触发线程
:也就是JS的事件池,用来管理一个JS引擎线程内的事件执行,将所有待处理事件添加到待处理队列的队尾。定时触发器线程
:由于JS引擎是单线程,所以setInterval 与 setTimeout 需要单独的进程,计时完毕会将事件放到待处理的队列队尾(这一步也导致了两个事件的执行时间可能不是设置好的时间)。异步http请求线程
:XMLHttpRequest在连接后是通过浏览器新开一个线程请求,将检测到状态变更时,如果设置有回调函数,异步线程就产生状态变更事件,将这个回调再放入事件队列中。插件进程
插件运行的进程,多个插件会启用多个。
3. 多进程浏览器的缺点
未来浏览器展望
2016 年,Chrome 官方团队使用“面向服务的架构”(Services Oriented Architecture,简称 SOA)的思想设计了新的 Chrome 架构。原来的各种模块会被重构成独立的服务(Service),每个服务(Service)都可以在独立的进程中运行,这样做的好处是降低耦合性,不像之前的多进程,可能很多进程之间的服务不能通用,同时降低系统资源占用率。
参考
深入理解浏览器中的进程与线程
线程和进程的区别是什么? - biaodianfu的回答 - 知乎
The text was updated successfully, but these errors were encountered: