进程与线程的区别

1.进程的简单了解

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

从不同角度来看:

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

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

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

2.线程的简单了解

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

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

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

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

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

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

3.进程与线程的区别

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

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

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

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

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

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

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

相关推荐
EricFRQ3 小时前
devops自动化容器化部署
运维·自动化·devops
白云~️3 小时前
uniappx 打包配置32位64位x86安装包
运维·服务器·github
在河之洲木水4 小时前
现代多核调度器的本质 调度三重奏
linux·服务器·系统架构
文牧之4 小时前
PostgreSQL的扩展 pgcrypto
运维·数据库·postgresql
程序员JerrySUN4 小时前
驱动开发硬核特训 · Day 22(下篇): # 深入理解 Power-domain 框架:概念、功能与完整代码剖析
linux·开发语言·驱动开发·嵌入式硬件
白总Server4 小时前
多智能体系统的中间件架构
linux·运维·服务器·中间件·ribbon·架构·github
未来会更好yes5 小时前
Centos 7.6安装redis-6.2.6
linux·redis·centos
二猛子5 小时前
Linux(Centos版本)中安装Docker
linux·docker·centos
浪裡遊6 小时前
跨域问题(Cross-Origin Problem)
linux·前端·vue.js·后端·https·sprint
Johny_Zhao7 小时前
OpenStack 全套搭建部署指南(基于 Kolla-Ansible)
linux·python·信息安全·云计算·openstack·shell·yum源·系统运维