浏览器线程、进程

128 阅读2分钟
进程
  • 概念:操作系统资源分配的基本单位

  • 特性

    • 进程之间的地址空间和资源是相互独立
    • 一个进程崩溃不会影响其他进程
    • 进程可以包含多个线程(至少一个)
  • 进程间通信:匿名管道、命名管道、消息队列、共享内存、信号、信号量、socket

  • 孤儿进程:父进程退出,子进程仍在运行(确保父进程在退出前正确等待子进程终止)

  • 僵尸进程:子进程已经终止,但父进程未回收其资源(在父进程中调用 wait()waitpid() 来回收子进程的资源)

线程
  • 线程:CPU调度的最小单位(建立在进程基础上的程序运行单位)

  • 特性

    • 同一进程的线程共享该进程地址空间和资源
    • 一个线程崩溃,它所在进程也会崩溃
    • 一个CPU核心单位时间只能执行一个线程(可以并发执行多个线程)
浏览器进程
  • 早期浏览器为单进程应用

    • 线程崩溃会导致整个浏览器崩溃
    • 所有资源共享导致信息安全问题
    • 单一进程负责所有任务调度,可能造成卡顿
  • 现代浏览器为多进程应用

    • 浏览器主进程:负责除标签页外的内容,如前进、后退,地址栏、存储以及协调其他进程等

    • GPU进程:负责图形渲染、硬件加速、css动画、视频、3D等渲染

    • 网络进程:负责网络请求和响应,包括DNS解析、HTTP请求等

    • 渲染进程

      • 负责将 HTML、CSS 和 JavaScript 转换为用户可以交互的网页
      • 一般而言每个标签页会打开一个渲染进程
    • 插件进程:负责插件运行

  • 标签页之间通信:LocalStorage/SessionStorage、ShareWorker、postMessage等

浏览器渲染进程中的线程
  • GUI渲染线程:负责解析HTML和CSS
  • JS引擎线程:负责解析与执行JS(渲染进程中只有一个该线程,同时该线程与GUI线程不能同时执行)
  • 定时器线程:负责setInterval和setTimeOut执行
  • 异步请求线程
  • webWorker线程