1. 第一章讲的是浏览的线程和进程,讲了什么是线程,是一个程序的运行实例,其中对于“程序”这个概念不是很明确,什么叫做程序,是指一个网站或者一个页面程序就是一个进程吗?打开浏览器任务管理器,可以看到会有网络, gpu ,渲染进程等,有时候一个网站下的多个页面会属于同一个进程,但是有时候同一个网站的不同页面分属于两个进程?
其次还介绍了线程和进程的关系
1. 进程中的任意一线程执行出错,都会导致整个进程的崩溃
例如: 我在看bilibili 直播时,页面突然崩溃了,会导致我打开的其他bilibili网页也一起崩溃了,但是浏览器打开的其他网站页面没有问题.
2. 线程之间共享进程中的数据
这也是为什么现代浏览器需要开发多进程的原因之一.
3. 当一个进程关闭之后,操作系统会回收进程中所占用的内存
可以避免任意线程银操作不当导致内存泄漏,关闭了线程没有被正确回收的问题
4. 进程之间的内容相互隔离
进程隔离是为了保护操作系统中进程互不干扰的技术,每个进程只能访问自己占有的数据,也避免出现A进程写入B进程的问题.例如每个网站的cookie,seesionStorage都是互相隔离的,互不影响的.
其次介绍了单进程浏览器的问题和导致这些问题的原因
- 不稳定 === 任意一线程崩溃,整个浏览器就全都崩了
- 不流畅 === 程序堵塞,内存泄漏
- 不安全 === 最后介绍多线程浏览器是如何解决上述问题的 目前浏览器的多线程架构,将浏览器进程,渲染进程,GPU进程,网络进程,音频进程,插件进程等基础进程独立出来 带来的问题:
- 更高的资源占用, 每个进程都会包含公共基础结构的副本(例如js运行环境),所以会消耗更多的内存资源
- 更复杂的体系架构.
2016年chrome官方团队是用来 “面向服务的架构”[我还不懂这是什么], 但是目的是为了构建一个更内聚,松耦合,易于维护和拓展的系统.进程模型图如下:
其中目前主要还是不太理解进程这一块,似懂非懂中,希望后期通过反复学习,和知识面的扩展能够解答今天自己的疑惑ß