浏览器构架
单进程架构:
所有模块运行在同一个进程里,包含网络、插件、JavaScript运行环境等
多进程架构:
主进程、网络进程、渲染进程、GPU进程、插件进程
面向服务架构:
将原来的UI、数据库、文件、设备、网络等,作为一个独立的基础服务
任务管理器
在多进程浏览器架构中,任务管理器是一个非常重要的组件。任务管理器负责监控、管理和分配浏览器的各个进程,确保整个浏览器系统的稳定性和性能。
(1)进程监控:
任务管理器可以实时查看浏览器中的各个进程,包括标签页进程、插件进程和扩展进程等。它可以展示各个进程的资源使用情况,如内存占用、CPU使用率和网络活动等。
(2)进程管理:
任务管理器负责启动和关闭浏览器的进程。当用户打开一个新的标签页或启动一个插件时,任务管理器会创建相应的进程。当标签页被关闭或插件停止运行时,任务管理器会结束相应的进程,以释放系统资源。
(3)资源分配:
任务管理器根据各个进程的资源需求,动态地分配系统资源。例如,对于需要大量CPU资源的进程,任务管理器会分配更多的CPU时间片。同时,任务管理器还可以确保关键进程(如用户界面进程)始终获得足够的资源,从而保证整个浏览器的流畅运行。
(4)进程隔离:
为了提高浏览器的安全性,任务管理器会对各个进程进行隔离。这意味着一个进程无法直接访问另一个进程的内存空间。进程隔离可以防止潜在的安全漏洞影响到整个浏览器系统。
(5)异常处理:
任务管理器负责检测和处理进程中的异常情况。当某个进程发生崩溃或无响应时,任务管理器会尝试自动恢复该进程。如果无法恢复,任务管理器会提示用户关闭相应的标签页或插件,以防止整个浏览器崩溃。
多进程分工
浏览器(主进程):
主要负责页面展示逻辑,用户交互,子进程管理;包括地址栏、书签、前进、后退、收藏夹等
GPU进程:
负责UI绘制,包含整个浏览器全部UI
网络进程:
网络服务进程,负责网络资源加载
标签页:
控制tab内的所有内容,将HTML、CSS和JavaScript转换为用户可交互的页面
插件进程:
控制网站运行的插件,比如flash、ModHeader等
其他进程:
如上图所示:适用程序Storage/Network/Audio Service等