基础知识:进程和线程

进程:

进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源

分配和调度的一个独立单位,是应用程序运行的载体,也就是说进程是一个程序的运行实例。

程序启动的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任

务的主线程,这样的一个运行环境,就叫做一个进程。

线程:

线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基

本单位。

线程和进程之间的关系:

一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间(也就是所在进程的

内存空间)。

进程和线程的特点:

1、进程中的任意一线程执行出错,都会导致整个进程的崩溃

2、当一个进程关闭之后,操作系统会回收进程所占用的内存

3、进程之间的内容相互隔离

4、线程之间共享进程中的数据

进程和线程可以借助流水线来理解:

一个产品需要多条流水线组合操作。一个线程就像是一条流水线的操作环境,一个进程就像是一个产品生产的整体操作环境。线程并发处理就像是产品的有些零件可以单独生产,不受其他零件的影响。多个线程并发处理一些操作(多条流水线并行生产芯片),将结果交给最后的线程合并处理(将芯片交给组装流水线组装成产品)。

如何查找浏览器进程?

点击浏览器右上角的3个点,选中更多工具,然后点击任务管理器,就可以查看浏览器的相关进程。

可以看到浏览器打开了多个进程。

为什么浏览器使用多进程?

打开一个浏览器界面可能会涉及网络请求、页面渲染、Javascript处理、插件等流程,如果所有的流程都放在一个进程中,一旦一个进程卡顿或者崩溃,就会导致整个流程卡顿奔溃。假如Javascript中有一个无限循环的操作,那么就会导致整个界面都一直处于白屏状态中;再比如某个插件不稳定,运行时奔溃了,可能就导致整个浏览器奔溃。另外浏览器的资源都是从网络上下载的(包括HTML文件,css文件,js文件,图片资源,视频资源等),如果下载的运行脚本是恶意代码,就会有账号、密码等私密数据泄露的风险。

采用多进程就可以很好的避免以上问题。进程之间相互隔离,一个进程的崩溃只会影响当前进程,不会导致整个浏览器的奔溃。一段js代码陷入死循环,不会影响浏览器其他进程的运行。

采用多进程架构可以使用安全沙箱,你可以把沙箱看成是操作系统给进程上了一把锁,沙箱里面的程序可以运行,但是不能在你的硬盘上写入任何数据,也不能在敏感位置读取任何数据,例如你的文档和桌面。Chrome 把插件进程和渲染进程锁在沙箱里面,这样即使在渲染进程或者插件进程里面执行了恶意程序,恶意程序也无法突破沙箱去获取系统权限。

打开一个浏览器界面会开启哪些进程?

从上面浏览器任务管理器的截图可以看出,浏览器有浏览器进程、渲染进程、GPU进程等。其实浏览器包含1 个浏览器(Browser)主进程、1 个 GPU 进程、1 个网络(NetWork)进程、多个渲染进程和多个插件进程。

浏览器进程:

主要负责界面显示、用户交互、子进程管理,同时提供存储等功能。

渲染进程:

核心任务是将 HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页,排版引擎 Blink 和 JavaScript 引擎 V8 都是运行在该进程中,默认情况下,Chrome 会为每个 Tab 标签创建一个渲染进程。出于安全考虑,渲染进程都是运行在沙箱模式下。

GPU 进程:

其实,Chrome 刚开始发布的时候是没有GPU 进程的。而 GPU 的使用初衷是为了实现 3D CSS 的效果,只是随后网页、Chrome 的 UI 界面都选择采用 GPU 来绘制,这使得 GPU 成为浏览器普遍的需求。最后,Chrome 在其多进程架构上也引入了 GPU 进程。

网络进程:

主要负责页面的网络资源加载。

插件进程:

主要是负责插件的运行,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页面造成影响。

需要注意的是,虽然多进程模型提升了浏览器的稳定性、流畅性和安全性,但同样也带来了其他的一些问题:

1、更高的资源占用

因为每个进程都会包含公共基础结构的副本(如 JavaScript 运行环境),这就意味着浏览器会消耗更多的内存资源。

2、更复杂的体系架构

浏览器各模块之间耦合性、扩展性会在一定程度上影响浏览器对新需求的开发扩展。

浏览器原理学习笔记1-浏览器进程相关推荐

  1. 计算机 运行新ie 命令,(新)计算机应用基础IE浏览器设置学习笔记——精品.doc

    计算机应用基础IE浏览器设置学习笔记 一.IE浏览器设置简介 Internet Explorer浏览器(简称IE浏览器)是能够接收用户的请求信息,并到相应网站获取网页内容的专用软件.IE浏览器的使用和 ...

  2. 计算机应用基础IE浏览器设置,计算机应用基础IE浏览器设置学习笔记

    IE浏览器的基本设置 计算机应用基础IE浏览器设置学习笔记 一.IE浏览器设置简介 Internet Explorer浏览器(简称IE浏览器)是能够接收用户的请求信息,并到相应网站获取网页内容的专用软 ...

  3. 计算机应用基础IE浏览器设置,(计算机应用基础IE浏览器设置学习笔记.doc

    (计算机应用基础IE浏览器设置学习笔记 计算机应用基础IE浏览器设置学习笔记 一.IE浏览器设置简介 Internet Explorer浏览器(简称IE浏览器)是能够接收用户的请求信息,并到相应网站获 ...

  4. Spring5底层原理 学习笔记(二)AOP篇

    文章目录 AOP实现之ajc编译器 AOP实现之agent类加载 AOP实现之动态代理 jdk动态代理 演示 模拟实现动态代理 动态生成代理类需要使用到asm的api,这里就不展开了 Jdk对于反射调 ...

  5. 操作系统原理学习笔记(二十一)-对换

    文章首发及后续更新:https://mwhls.top/1350.html 新的更新内容请到mwhls.top查看. 无图/无目录/格式错误/更多相关请到上方的文章首发页面查看. 操作系统原理学习笔记 ...

  6. MOOC人工智能原理学习笔记1

    人工智能原理学习笔记1 The Foundations of AI: Philosophy Mathematics Economics Neuroscience Psychology Computer ...

  7. 自控原理学习笔记-反馈控制系统的动态模型(4)-频率特性函数Nyquist图及Bode图

    自控原理学习笔记 自控原理学习笔记专栏 文章目录 1.频率特性函数 1.1 图形表示方法: 1.2 零极点位置和暂态增益图 1.2.1 复轨迹曲线 1.2.3 例子 1.3 计算系统响应 2.开环频率 ...

  8. 自控原理学习笔记-系统稳定性分析(2)-环路分析及Nyquist-Bode判据

    自控原理学习笔记 自控原理学习笔记专栏 文章目录 3. 环路分析 3.1环路分析基本思想: 3.2 稳定程度的性能指标(相对稳定) 3.3 环路整形 4.Nyquist判据 4.1 与幅角原理关系 4 ...

  9. Golang底层原理学习笔记(一)

    LCY~~Golang底层原理学习笔记 1 源码调试 go源代码地址:GitHub - golang/go: The Go programming language 1.1 源码编译 现在的go语言大 ...

  10. [编译原理学习笔记2-2] 程序语言的语法描述

    [编译原理学习笔记2-2] 程序语言的语法描述 文章目录 [编译原理学习笔记2-2] 程序语言的语法描述 [2.3.1] 上下文无关文法 [2.3.2] 语法分析树与二义性 [2.3.3] 形式语言鸟 ...

最新文章

  1. matlab中给图像加几个矩形框_在图像中画矩形框(matlab)
  2. 第十章 优先级队列 (b1)完全二叉堆:结构
  3. zabbix-3.0.1结合grafana绘图
  4. linux compress参数,compress命令_Linux compress 命令用法详解:使用Lempress-Ziv编码压缩数据文件...
  5. DateTimeToUnix/UnixToDateTime 对接时间转换
  6. 秦九韶算法matlab程序,数值分析matlab程序实例.doc
  7. Linux下MySQL5.6的修改字符集编码为UTF8
  8. 操作系统OS进程(一)初识
  9. php strcmp函数用法,php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)...
  10. rsyslogd以及日志轮替logrotate的梳理
  11. 仿土豆网显示隐藏遮罩案例(HTML、CSS)
  12. 图像分割(三)--Grab Cut
  13. android手机 联系人迁移,有什么软件能快速将手机通讯录的联系人传到另一个手机上...
  14. 码云 zheng 项目部署过程记录 eclispe部署过程
  15. 程序员的终极幻想(三):做一只小小的蜗牛
  16. SICP习题2.6 题目理解
  17. 身份证中出生年月的提取
  18. Javascript中的作用域,作用域链
  19. VMware 网络环境配置(win7系统)
  20. SQL Server基础操作(此随笔仅作为本人学习进度记录五 !--数据类型)

热门文章

  1. Kepserver如何连接InTouch
  2. 学业奖惩系统c语言,c语言成绩管理系统(完整).doc
  3. Testbench编写方法
  4. ftp服务器文件查找,ftp服务器中查找文件
  5. 三星android+l,高配原生安卓!移动定制版三星I9008L评测
  6. 【 地图系列 】 中国各省市县级 JSON 文件
  7. 同台同时多开DELPHI2007的解决办法
  8. VMware虚拟机安装Windows 7
  9. [转]PDF在线阅读开发经验(FlexPaper+SWFTools+SaveAsPDFandXPS)
  10. 数学、物理、化学、生物、地理常用软件介绍(草稿)