进程与线程的区别

1.进程的简单了解

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

从不同角度来看:

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

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

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

2.线程的简单了解

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

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

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

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

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

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

3.进程与线程的区别

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

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

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

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

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

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

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

相关推荐
未济14 小时前
linux 配置环境变量
linux
傲世仙尊14 小时前
目录即文件-Ext文件系统收尾篇
linux·c语言
虎头金猫15 小时前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
_艾伦 耶格尔.16 小时前
进程间通信
linux
AI职业加油站16 小时前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
Liuqy-0517 小时前
Linux IO编程——静态库、动态库
linux
此冬歌咏17 小时前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
彧azz17 小时前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
-梅18 小时前
linux(8) 软硬链接
linux·运维·服务器
Wang's Blog18 小时前
Java 项目实战: 外卖平台-文件下载与ServletOutputStream回写浏览器
服务器·项目开发