进程和线程的区别
1. 基本概念:
进程是程序的一次执行过程,是系统进行资源分配的最小单元。 线程是进程中可执行的最小单位,是CPU调度的基本单位。一个进程中可以并发多个线程,每条线程并行执行不同的任务。
线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发;线程是操作系统可识别的最小执行和调度单位。每个线程都独自占用一个虚拟处理器:独自的寄存器组,指令计数器和处理器状态。每个线程完成不同的任务,但是共享同一地址空间(也就是同样的动态内存,映射文件,目标代码等等),打开的文件队列和其他内核资源。
2. 区别:
| 特性 | 进程 (Process) | 线程 (Thread) |
|---|---|---|
| 资源 | 拥有独立的内存空间(如文件句柄、堆、全局变量)。进程之间资源独立,相互不影响。 | 共享进程的内存空间和资源。但每个线程有独立的栈和程序计数器。 |
| 调度 | 是操作系统进行资源分配和调度的基本单位。 | 是CPU调度的基本单位。 |
| 开销 | 创建、销毁、切换开销大(因为需要分配/释放独立资源)。 | 创建、销毁、切换开销小(因为共享资源,只需分配少量私有资源)。 |
| 独立性 | 独立性强。一个进程崩溃不会影响其他进程。 | 独立性弱。一个线程崩溃可能导致整个进程崩溃。 |
| 并行性 | 进程间可以并行执行。 | 同一进程内的多个线程也可以并行执行(在多核CPU上)。 |
| 创建一个新的进程,需要复制整套内存结构,切换成本高 | 在同一个进程中创建新的线程,只需要分配一个新的栈,切换成本低 |
3. 引入线程的优势:
- 共享地址空间与可用数据:线程能够直接访问共享数据,无需通过操作系统内核进行中转,从而显著提升了运行效率。
- 更轻量级:研究表明,现代操作系统环境下创建线程所需的时间仅为创建进程耗时的1/10至1/100。此外,相关实验数据表明,线程的上下文切换和终止操作在时间效率上同样显著优于进程操作。
协程是什么?
协程是一种比线程更加轻量级的执行单元,它由程序员在用户空间控制调度,而不是由操作系统内核调度。
转载了
进程、线程、协程、虚拟线程,傻傻分不清楚前言 最近虚拟线程火了。 但有些小伙伴对进程、线程、协程、虚拟线程之间的区别和联 - 掘金
浏览器有哪些进程呢?
一开始浏览器是单进程,如果在一个页面写了死循环就会导致其他页面也挂掉
打开 1 个页面至少要包括以下前四个进程,除此之外还有插件进程
-
浏览器进程(它是主进程)
各个页面的管理,创建,销毁
前进,后退
下载资源
-
GPU进程
复杂动画的绘制,比如3D动画
-
渲染进程
页面渲染
JS脚本执行,事件循环也在渲染进程
-
网络进程
负责网络资源的加载
-
插件进程
主要是负责插件的运行,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页面造成影响。