进程与线程的区别

1.进程的简单了解

进程是计算机中程序在某个数据集合上的一次运行活动,是操作系统进行资源分配和调度的基本单位。

从不同角度来看:

● 资源分配角度:进程拥有独立的内存地址空间、系统资源(如 CPU 时间、文件描述符等)。每个进程都像是一个独立的"小世界",在其中程序可以执行自己的任务而不被其他进程干扰。

● 运行状态角度:进程有不同的状态,如就绪、运行、阻塞等。当进程等待资源时处于阻塞状态,具备运行条件且等待被 CPU 调度时为就绪状态,正在被 CPU 执行时处于运行状态

● 调度角度:操作系统根据一定的调度算法,在多个进程之间分配 CPU 时间,以实现多任务的并发执行。

2.线程的简单了解

线程是进程中的一个执行单元。

从以下几个方面来理解线程:

● 资源共享:线程与同一进程中的其他线程共享进程的资源,如内存空间、文件描述符等。这使得线程之间的通信相对容易,因为它们可以直接访问共享的数据。

● 轻量级:线程比进程更轻量级,创建和销毁线程的开销通常比创建和销毁进程小得多。这使得在需要大量并发执行的场景中,使用线程可以提高系统的性能和响应速度。

● 独立执行:每个线程都有自己的执行路径,可以独立地执行任务。但由于它们共享进程的资源,所以需要注意线程之间的同步和互斥,以避免数据竞争和不一致性。

● 调度:操作系统通常以线程为单位进行调度,将 CPU 时间分配给不同的线程。这使得多个线程可以在同一进程中并发执行,提高了程序的并发性。

3.进程与线程的区别

● 根本区别:进程是操作系统资源分配的基础单位,而线程是处理器任务调度和执行的基本单位

● 量级区别:进程属于重量级的,而线程属于轻量级的

● 资源开销:每一个进程都有独立的代码和数据空间,程序之间的切换会有较大的开销;线程相当于轻量级的进程,线程共享进程的地址空间和资源,但是每个每个线程都有各自的程序计数器(PC)和栈空间,线程之间切换的开销较小。

● 上下文切换:进程的切换较大,需要操作系统的调度;线程的创建和销毁的开销较小,且比进程快

● 包含关系:如果一个进程中有多个线程,则进程的执行是由多个线程共同执行的;线程是进程的一部分,一个进程至少包含一个线程

● 内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的

● 影响关系:一个进程崩溃不会影响其他进程,但一个线程崩溃会影响该线程所在进程的其他线程甚至使整个进程崩溃。

相关推荐
疯狂吧小飞牛4 小时前
GPG基础指令
linux·服务器·网络
C++ 老炮儿的技术栈4 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
hjxu20165 小时前
【OpenClaw 龙虾养成笔记一】在远程服务器,使用Docker安装OpenClaw
服务器·笔记·docker
todoitbo6 小时前
用虚拟局域网打通 Win/Mac/Linux 三端:跨设备协作的实用方案
linux·运维·macos
源远流长jerry6 小时前
RDMA 基本操作类型详解:从双端通信到单端直访
linux·网络·tcp/ip·ip
Sylvia-girl7 小时前
Linux下的基本指令1
linux·运维·服务器
wyt5314297 小时前
Redis的安装教程(Windows+Linux)【超详细】
linux·数据库·redis
17(无规则自律)7 小时前
【Linux驱动实战】:字符设备之ioctl与mutex全解析
linux·c语言·驱动开发·嵌入式硬件
CDN3607 小时前
360CDN SDK 游戏盾:轻量化接入 + 强防护实测
运维·游戏·网络安全
Stewie121387 小时前
Docker 面试题
运维·docker·容器