浏览器的运行机制—1.进程与线程
2018-04-09 本文已影响93人
YINdevelop
1.什么是进程和线程
查阅百度定义。
-
进程:是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
-
线程:程序执行流的最小单元。
What?什么意思,我不理解。那么直接看例子。平常我们在使用电脑过程中,假如我想登录微信,那么我双击微信图标登录即可。从表面上看,桌面打开了微信界面。实际上,系统也相应的开启了一个进程(一个程序可能会有多个进程,比如qq主进程,qq辅助进程等)。系统会给进程分配相应的cpu资源以及内存资源来保证进程运行。
我们来打开任务管理器
image我事先已经打开了谷歌浏览器,相应任务管理器也会有相对应的进程,以及该进程的cpu占用率、内存占用资源。
现在应该理解进程是什么意思了吧,那么线程又是什么鬼?
实际我们一个程序对应一个进程(这里直接按对应一个来举例),进程也可以细分即线程。比如我通过微信正在聊天,我想看看朋友圈,相应的微信进程会分配朋友圈线程来执行。即进程是种类,线程是种类下的具体列表。进程管理着线程。
理解了进程和线程,我们来看浏览器的进程。
2.浏览器是多进程的
通过上面我们了解了操作系统通过进程控制着程序的运行。实际浏览器也会有自己的进程。
我们在浏览器打开一个个tab页,就相当于创建了一个独立的浏览器tab进程。类似windows的任务管理器,我们可以打开谷歌的进程管理器。
image我们可以看到和windows的任务管理器一样,每个tab页都会对应一个自己的进程。
注意:在这里浏览器应该也有自己的优化机制,有时候打开多个tab页后,可以在Chrome任务管理器中看到,有些进程被合并了,譬如打开多个空白标签页后,会发现多个空白标签页被合并成了一个进程。
(所以每一个Tab标签对应一个进程并不一定是绝对的)
在上图中我们可以看到有个浏览器进程、GPU进程等非tab页面进程,这个是什么?接着往下看。