每天学习一点点之进程与线程、并行与并发

🏰 计算机游乐园手册

一、进程与线程------旅行团与游客

🔧 核心设定

  • 操作系统 = 智能乐园云控中心(全局资源调度)
  • CPU核 = 游乐设施(过山车/旋转木马等)
  • 内存/磁盘 = 共享物资仓库

1. 进程 = 旅行团 🧳

  • 诞生:当你启动程序 → 云控中心创建新旅行团
  • 特权
    ✅ 领取资源大礼包(CPU体验券+内存零食车+磁盘储物柜)
    ❌ 不同旅行团之间有防盗门(进程隔离)
    👑 系统进程团 = 乐园维修队(穿OS制服,维护设施)
    👨‍💻 用户进程团 = 你组织的游客团(每个程序是一个团)

2. 线程 = 游客 👨👩👧👦 (CPU调度最小单位)

  • 轻装上阵 :只带三件套 →
    📍 程序计数器(地图) | 🧩 寄存器(零钱包) | 📚 栈(随身包)
  • 关键法则
    🔐 游客不能流浪!必须归属旅行团(线程依赖进程)
    🤝 同团游客共享零食车(线程共享进程资源)

二、CPU时间片轮转机制------公平体验闸机 ⚙️

智能设施规则

css 复制代码
[设施入口]  
   │  
   ▼  
自动闸机扫描游客票券 → 【3秒体验券】⏱️  
   │  
   ▼  
游客登设施游玩 → 券到期 → 闸机亮灯🟢 → 游客自动离场  
   │  
   ▼  
游客重回队尾 → 等待下次派券  
  • 云控中心从不指挥游客!只设定闸机算法
  • 线程切换 = 游客换乘时的"寄存包裹"(上下文切换)
  • 线程A在过山车上被闸机提醒:"您的体验时间已到,请重新排队~"

第三章:并发 vs 并行------设施魔法揭秘 🎩

▌ 并发(单核魔术)

"1个旋转木马服务100人?"

  • 动态轮换术
    游客A骑白马 → 3秒 → 换游客B骑独角兽 → 3秒 → 游客C坐马车
  • 肉眼幻觉 : 所有游客仿佛同时在马上欢笑(实际极速交替)
  • 计算机对应 : 单核CPU处理微信+音乐+下载:"我是闪电侠!"

▌ 并行(多核狂欢)

"过山车复制术启动!"

  • 物理扩建
    核1设施:线程A 🎢------------------
    核2设施:线程B 🚀------------------
    核3设施:线程C 🌊------------------
  • 土豪真相 : 多核CPU = 乐园扩建多条相同轨道

    线程真·同步推进(无切换损耗)


乐园全景运作图 🗺️

css 复制代码
                          [智能云控中心]  
                                │  
         分配资源包             ▼            派发体验券  
 [旅行团A(进程)] ──────→ [CPU设施集群] ←─────→ [游客(线程)]  
   ├─内存零食车                ├─🎢 核1过山车       │  
   ├─磁盘储物柜                ├─🎠 核2旋转木马     │  
   └─共享给团员───────────────► ├─🚤 核3激流勇进    │  
                                ├─🎪 核4魔术屋      │  
                                      ▲            │  
                                      └─ 闸机自动收券  

总结一下:

1、进程是程序运行资源分配的最小单位资源包括:CPU、内存空间、磁盘等。

2、线程是CPU调度的最小单位 ,必须依赖于进程而存在。

3、线程只拥有在运行中必不可少的资源(如程序计数 器,一组寄存器和栈), 但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

4、CPU时间片轮转机制也称RR调度,为每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。

5、并行与并发 并发:本质上靠1个CPU核心处理多任务,靠极速切换制造"同时进行"的假象,并行:多个cpu核心真·同时处理任务,任务被物理同步推进

相关推荐
洋洋技术笔记5 小时前
Spring Boot Web MVC配置详解
spring boot·后端
JxWang055 小时前
VS Code 配置 Markdown 环境
后端
navms5 小时前
搞懂线程池,先把 Worker 机制啃明白
后端
JxWang055 小时前
离线数仓的优化及重构
后端
Nyarlathotep01135 小时前
gin01:初探gin的启动
后端·go
JxWang055 小时前
安卓手机配置通用多屏协同及自动化脚本
后端
JxWang055 小时前
Windows Terminal 配置 oh-my-posh
后端
SimonKing5 小时前
OpenCode AI编程助手如何添加Skills,优化项目!
java·后端·程序员
Victor3565 小时前
MongoDB(24)如何对查询结果进行排序?
后端
怕浪猫6 小时前
第21章:微服务与分布式架构中的Go应用
后端·go·编程语言