当前位置: 首页 > news >正文

多线程(一) ~ 进程与线程的区别

文章目录

  • 一. 计算机简单介绍
    • (一) 结构
    • (二) CPU
    • (三) GPU
    • (四) 操作系统内核进程管理功能
  • 二. 进程(process)
    • (一)定义
    • (二)PCB
  • 三. 线程(Thread)
  • 四. 进程与线程的区别

一. 计算机简单介绍

(一) 结构

计算机的基本结构冯诺依曼体系结构
冯诺依曼体系结构是现代计算机的基础架构,由数学家冯·诺依曼于1945年提出,其核心包括二进制逻辑、程序存储执行及计算机五大组成部分(运算器、控制器、存储器、输入设备、输出设备)。

(二) CPU

又称为中央处理器,是计算机的核心部分,现代CPU为多核CPU,有计算与存储功能
CPU的寄存器比内存储存速度更快,空间比内存更小,是计算的主要工具

(三) GPU

GPU全称图形处理器,是显卡的核心组件,负责处理图像渲染、几何计算等图形相关任务。它通过大规模并行处理提升计算效率,与CPU(中央处理器)形成互补

(四) 操作系统内核进程管理功能

操作系统内核是操作系统的核心部分,负责管理计算机的硬件资源和提供基础服务,是应用程序与硬件之间的中间层。其功能复杂且关键,对于进程管理主要可分为以下几大核心功能:

  1. 进程创建与销毁:内核负责启动新进程(如用户双击应用程序)、终止无用进程(如用户关闭程序),并管理进程的状态(就绪、运行、阻塞等)
  2. 进程调度:通过调度算法(如时间片轮转、优先级调度、多级反馈队列等),决定哪个进程获得 CPU 资源,实现多任务并发执行(宏观上多个程序同时运行)
  3. 线程管理:现代内核支持线程(轻量级进程),负责线程的创建、调度和同步,减少进程切换的开销

二. 进程(process)

(一)定义

在操作系统中一段程序运行起来就叫做进程
进程的属性由进程控制块PCB组织起来,是一个很大的结构体,这是因为大多操作系统是由C语言写的
进程是操作系统资源分配的基本单位

(二)PCB

属性:

  1. PID: 一段进程的身份标识符,每个进程都拥有独特的PID
    在这里插入图片描述
  2. 内存指针: 进程运行过程中需要内存资源,所以要知道对应的指令位置及指令数据所存储的地址
  3. 文件描述符表:进程运行过程中需要和各种资源来打交道(硬盘,网卡等),操作系统会把这些资源的数据以文件的形式来组织
  4. 状态:进程状态分为两种->
    就绪状态:进程正在CPU运行或者已准备好随时都可以去CPU运行的状态
    阻塞状态:CPU切换运行该进程受阻,该状态下进程不能到CPU上运行
  5. 优先级:每个进程都有对应的优先级,由操作系统来决定
  6. 上下文:现代CPU是靠切换形式来实现多进程的并发执行,所以每次该进程的指令运行一部分后,将执行状态从寄存器写入内存中保存,接着切换到另一进程执行另一进程的指令,等待一段时间后切换到该进程时,要从内存中读取该进程上一次执行状态到寄存器,然后从该位置继续执行
  7. 记账信息:记录每个进程使用CPU的时间和资源大小,确保不会让某一进程长时间吃不到CPU资源

三. 线程(Thread)

线程相比于进程是一个轻量级进程
每个线程相当于进程中的一段运行指令
线程与线程之间会相互影响,引起线程安全问题
一个进程中,多个线程共用创建进程时分配的资源,省去了调用资源与分配资源及销毁资源的过程
线程中拥有与调度相关的属性:状态优先级上下文记账信息
线程是操作系统调度执行的基本单位
一个进程包含多个线程

四. 进程与线程的区别

进程线程
操作系统资源分配的基本单位操作系统调度执行的基本单位
进程与进程之间串行执行互不影响线程与线程之间可能会相互影响
一个进程包含可能包含多个线程,开辟进程与销毁进程CPU开销比较大线程的创建会共享进程的资源配置(内存/网络),是一个轻量级进程
一个进程就是一个程序一个线程就是一段运行指令
进程包含线程线程属于进程的一部分
进程有⾃⼰的内存地址空间线程只独享指令流执⾏的必要资源,如寄存器和栈
http://www.dtcms.com/a/311018.html

相关文章:

  • 深入 Go 底层原理(五):内存分配机制
  • 基于ELK Stack的实时日志分析与智能告警实践指南
  • 【vue】创建响应式数据ref和reactive的区别
  • React ahooks——副作用类hooks之useDebounceFn
  • Coze Studio 概览(六)--知识库管理
  • FreeRTOS源码分析一:task启动(RISCV架构)
  • 再见!三层框架开发
  • 【无标题】根据11维拓扑量子色动力学模型的严格计算宇宙轮回次数:
  • 谈谈WebAssembly、PWA、Web Workers的作用和场景
  • 论文阅读笔记:Dataset Condensation with Gradient Matching
  • 2023年影响重大的网络安全典型案例
  • OAuth 2.0 的安全升级版授权协议 OAuth 2.1 详解
  • 企业级单点登录(SSO)技术详解:从原理到安全实践
  • 华为核心交换机S7700的内存OID
  • k8s使用 RBAC 鉴权
  • 最新Windows11系统镜像,23H2 64位ISO镜像
  • Kafka——关于Kafka动态配置
  • 【MATLAB】(五)向量与多项式
  • 能力显著性向量:验证损失与下游能力的缩放定律
  • fastGEO v1.7.0 大更新,支持PCA、差异分析、火山图、热图、差异箱线图、去批次等分析
  • 二叉树算法之【Z字型层序遍历】
  • Lock 接口及实现类详解:从 ReentrantLock 到并发场景实践
  • Java web(02)
  • Javascript面试题及详细答案150道之(016-030)
  • kong网关集成Safeline WAF 插件
  • 排序算法大全:从插入到快速排序
  • 通过解决docker network connect实现同一个宿主机不同网络的容器间通信
  • 深入理解 Docker 容器网络:为什么用 host 网络模式能解决连通性问题?
  • DockerFile文件执行docker bulid自动构建镜像
  • 前端手撕题总结篇(算法篇——来自Leetcode牛客)