进程与线程、以及浏览器进程

88 阅读3分钟

进程和线程的区别

1. 基本概念:

进程是程序的一次执行过程,是系统进行资源分配的最小单元。 线程是进程中可执行的最小单位,是CPU调度的基本单位。一个进程中可以并发多个线程,每条线程并行执行不同的任务。

线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发;线程是操作系统可识别的最小执行和调度单位。每个线程都独自占用一个虚拟处理器:独自的寄存器组,指令计数器和处理器状态。每个线程完成不同的任务,但是共享同一地址空间(也就是同样的动态内存,映射文件,目标代码等等),打开的文件队列和其他内核资源。

2. 区别:

特性进程 (Process)线程 (Thread)
资源拥有独立的内存空间(如文件句柄、堆、全局变量)。进程之间资源独立,相互不影响。共享进程的内存空间和资源。但每个线程有独立的程序计数器
调度是操作系统进行资源分配和调度的基本单位是CPU调度的基本单位
开销创建、销毁、切换开销大(因为需要分配/释放独立资源)。创建、销毁、切换开销小(因为共享资源,只需分配少量私有资源)。
独立性独立性强。一个进程崩溃不会影响其他进程。独立性弱。一个线程崩溃可能导致整个进程崩溃。
并行性进程间可以并行执行。同一进程内的多个线程也可以并行执行(在多核CPU上)。
创建一个新的进程,需要复制整套内存结构,切换成本高在同一个进程中创建新的线程,只需要分配一个新的栈,切换成本低

3. 引入线程的优势:

  1. 共享地址空间与可用数据:线程能够直接访问共享数据,无需通过操作系统内核进行中转,从而显著提升了运行效率。
  2. 更轻量级:研究表明,现代操作系统环境下创建线程所需的时间仅为创建进程耗时的1/10至1/100。此外,相关实验数据表明,线程的上下文切换和终止操作在时间效率上同样显著优于进程操作。

协程是什么?

协程是一种比线程更加轻量级的执行单元,它由程序员在用户空间控制调度,而不是由操作系统内核调度。

image.png

image.png 转载了 进程、线程、协程、虚拟线程,傻傻分不清楚前言 最近虚拟线程火了。 但有些小伙伴对进程、线程、协程、虚拟线程之间的区别和联 - 掘金

浏览器有哪些进程呢?

一开始浏览器是单进程,如果在一个页面写了死循环就会导致其他页面也挂掉

打开 1 个页面至少要包括以下前四个进程,除此之外还有插件进程

  • 浏览器进程(它是主进程)

    各个页面的管理,创建,销毁

    前进,后退

    下载资源

  • GPU进程

    复杂动画的绘制,比如3D动画

  • 渲染进程

    页面渲染

    JS脚本执行,事件循环也在渲染进程

  • 网络进程

    负责网络资源的加载

  • 插件进程

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

参考资料

mp.weixin.qq.com/s/TA0BBpop7…