进程与线程的区别

1.进程的简单了解

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

从不同角度来看:

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

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

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

2.线程的简单了解

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

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

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

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

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

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

3.进程与线程的区别

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

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

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

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

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

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

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

相关推荐
wuminyu1 天前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
海宇AI1 天前
零信任架构实战:基于海宇个人风险报告构建自动化分期商城信用额度初审网关
运维·人工智能·架构·自动化
IMPYLH1 天前
Linux 的时间为什么会被拨回去
linux·运维·服务器
2601_963282771 天前
寒地窄带通信工程实践:黑龙江哈尔滨对讲机选型、组网与合规运维总结
运维·服务器·网络
叼烟扛炮1 天前
[Git 实战] 学习笔记:从生成 SSH 密钥到解决 TortoiseGit 推送报错全指南
linux·运维·笔记·git·学习
xbzb1 天前
OpenStack 网络管理(理论):Linux 网络虚拟化是 Neutron 的地基
linux·服务器·网络·openstack·network·neutron
我要见SA姐11 天前
GitHub Actions 自动化:5 个真实运维提效案例
运维·数据库·机器学习·oracle·回归
Android系统攻城狮1 天前
Linux FFmpeg深度解析之avcodec_flush_buffers调用流程与实战(十九)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频进阶
水饺编程1 天前
第2章:Linux 基础,解压缩【.tar.bz2】压缩包文件
linux·c语言·汇编
Y3815326621 天前
用 httpx 写 SerpBase 异步客户端:连接池与超时配置
运维·服务器·数据库