Linux创建进程的方式有多奇葩? | Core Dumped

合集 · Core Dumped (28)

  1. 13:09
    为什么应用程序只能运行在特定操作系统上? | Core Dumped
  2. 19:36
    内核到底在哪结束?一个从未被解释清楚的问题 | Core Dumped
  3. 14:51
    为什么程序不能互相访问内存?硬件如何保护系统 | Core Dumped
  4. 13:04
    CPU里的隐藏绝技:位运算究竟如何工作? | Core Dumped
  5. 17:42
    编程术语的历史渊源:今天我们还在用的词从哪来? | Core Dumped
  6. 18:41
    硬件指令如何让多线程编程不再噩梦? | Core Dumped
  7. 22:08
    解析表达式的高效算法:Pratt Parsing详解 | Core Dumped
  8. 18:35
    信号机制:让Ctrl+C做任何你想做的事 | Core Dumped
  9. 13:36
    为什么Python正在移除GIL?并行编程的瓶颈即将消失 | Core Dumped
  10. 18:25
    为何底层项目里全是这种古怪代码? | Core Dumped
  11. 19:32
    为什么有些项目要同时使用多种编程语言? | Core Dumped
  12. 10:17
    那次我不得不使用链表 | Core Dumped
  13. 21:20
    底层探秘:ArrayList与LinkedList内存对决 | Core Dumped
  14. 19:05
    80年代的竞态条件避免算法,为何失败了? | Core Dumped
  15. 12:09
    计算机如何将字符串转换为数字?完整过程解析 | Core Dumped
  16. 13:15
    多任务时,硬件如何辅助软件切换上下文? | Core Dumped
  17. 17:53
    堆内存为何如此缓慢?深入剖析 | Core Dumped
  18. 17:51
    Linux创建进程的方式有多奇葩? | Core Dumped
  19. 14:22
    CPU的“前进”指令,竟是时钟在指挥? | Core Dumped
  20. 8:08
    程序≠进程:别再搞混了 | Core Dumped
  21. 19:49
    CPU是如何运行函数的?底层原理揭秘 | Core Dumped
  22. 16:58
    内存如何记住数据?晶体管层面的原理 | Core Dumped
  23. 45:02
    揭秘让电脑反应更丝滑的CPU调度算法 | Core Dumped
  24. 11:27
    多核CPU的线程是如何运作的? | Core Dumped
  25. 18:09
    电容存数据有多不靠谱?但DRAM还是这么干了 | Core Dumped
  26. 23:28
    CPU是如何与千奇百怪的设备交互的? | Core Dumped
  27. 14:28
    晶体管是如何执行代码的? | Core Dumped
  28. 19:51
    为什么Windows装软件需要安装程序,而macOS不用? | Core Dumped
Description
来源:https://www.youtube.com/watch?v=SwIPOf2YAgI
原标题:The Weird Way Linux Creates Processes
频道:Core Dumped
发布时间:2026-01-20

内容简介:
当你运行一个程序时,背后到底发生了什么?本期视频带你深入对比Windows和Linux两大操作系统在创建进程时的底层机制差异。Linux的fork方式为何被称为“诡异”?它如何用看似反直觉的逻辑实现高效的进程管理?视频将揭开从系统调用到进程诞生的神秘面纱,让你直击操作系统内核的运作原理。如果你想探索更底层的系统编程世界,不妨尝试自己动手实现Redis、Git、HTTP服务器或解释器等经典项目。

关注我的Twitter:@coredumpped
加入Discord社区:https://discord.gg/szyQsXfzuv
项目赞助:https://github.com/jdvillal
业务联系:contact.coredumped@gmail.com

Comments

丧彪彪彪 2026-06-05

Unix的问题是一直没有统一的用户态服务的API,导致的最基础的一个问题就是,创建进程过程中的一部分用户态代码没地方放(就是folk 和exec之间的那部分),最后只能放在父进程中(最常见的父进程就是shell,或者安卓的桌面管理器)。Unix本质上是个内核标准加上非常少的系统API,Linux更是个纯内核,各种GNU/Linux实际上都是API不是特别兼容的独立操作系统,就连systemD这种基础的服务现在都还存在争议,所以Linux根本就缺乏在用户态形成统一API的能力。

♥ 37 ↩ 7

那在终点之前 2026-08-11

fork 简直是计算机历史上最愚蠢的设计,在实际业务开发中,99.9%的场景下,启动新进程都是为了“干一件别的事”,而不是“让当前的事变成两个人干”;最经典的例子就是早期的JVM,因为它是多线程的,所以fork之后几乎总是会触发COW,导致8GB内存翻倍到16GB,然后内存爆掉;可我只是想简单地调用一个ffmpeg命令啊。很多早期linux程序不得不专门设计一个很小的stub进程,专门用来执行fork,这是典型的操作系统的愚蠢设计把成本转嫁给应用开发者。

♥ 6 ↩ 5

user1741 2026-06-19

不是为啥这样搞啊,这不是多一次复制的成本吗?

♥ 6 ↩ 7

Ginkoro_ 2026-06-05

撞车了 https://b23.tv/d6Gbs6S

♥ 6 ↩ 1

EEFox 2026-06-05

现在发现windows才奇葩[笑哭]create process远没有fork灵活多变

♥ 5 ↩ 27

Tnze 2026-06-05

那打开的文件fd怎么算?

♥ 5 ↩ 3

耐心是我的小可爱 2026-06-07

昨天刚学了这块内容就推送[doge]

♥ 4

水果是果水 2026-06-06

都用 rust 就没这么多事了[呲牙]

♥ 3 ↩ 7

狐白白白白白白白白白 2026-06-05

posix_spawn是?

♥ 2 ↩ 2

bili_93284905822 2026-06-22

没记错的话貌似安卓也是这样的,毕竟安卓的底层也是linux[脱单doge]

♥ 2

Mr_Chest 2026-06-13

记得 tsoding 说过 winapi 就像 创建窗口(宽度,高度,是否可关闭,要不要核爆我的房子)

♥ 2 ↩ 1

剩饭不吃剩饭 2026-06-05

@会沉思的鱼 总结

♥ 1 ↩ 1

爱编程的幽灵辣椒 2026-06-28

windows:创建一个新进程,然后执行特定代码 unix:我不能让用户态创建新进程,所以我要先复制,复制完了观察一下我是谁,发现我是子进程,哇哦!直~接切换