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

🏰 计算机游乐园手册

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

🔧 核心设定

  • 操作系统 = 智能乐园云控中心(全局资源调度)
  • 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核心真·同时处理任务,任务被物理同步推进

相关推荐
聆风吟º24 分钟前
远程录制新体验:Bililive-go与cpolar的无缝协作
开发语言·后端·golang
野犬寒鸦1 小时前
从零起步学习Redis || 第四章:Cache Aside Pattern(旁路缓存模式)以及优化策略
java·数据库·redis·后端·spring·缓存
Terio_my1 小时前
Spring Boot 缓存技术详解
spring boot·后端·缓存
豆浆whisky2 小时前
netpoll性能调优:Go网络编程的隐藏利器|Go语言进阶(8)
开发语言·网络·后端·golang·go
蓝天白云下遛狗2 小时前
go环境的安装
开发语言·后端·golang
@大迁世界2 小时前
Go 会成为“老生态”的新引擎吗?
开发语言·后端·golang
Absinthe_苦艾酒2 小时前
golang基础语法(六)Map
开发语言·后端·golang
-睡到自然醒~2 小时前
Golang 中的字符串:常见错误和最佳实践
开发语言·后端·golang
予非池物2 小时前
ubuntu安装go
开发语言·后端·golang
文心快码BaiduComate2 小时前
用Zulu轻松搭建国庆旅行4行诗网站
前端·javascript·后端