【英语原声】没有人解释的问题:内核的边界在哪里?
合集 · 直观理解计算机技术【CoreDumped】 (68)
-
代码中指定变量类型为何如此重要?
11:03
-
栈为何如此之快?
13:46
-
堆为何如此之慢?
17:53
-
动态数组的内部机制(ArrayList VS LinkedList)
19:56
-
探索计算机并发与多任务处理的历史
15:37
-
晶体管是如何运行代码的?
12:54
-
晶体管是如何记忆数据的?
16:12
-
制作一个CPU来运行程序
18:47
-
计算机如何将字符串转换为数字
11:23
-
动态随机存取存储器(DRAM)的工作原理
17:18
-
计算机处理器是如何运行条件和循环的?
16:05
-
一个程序不是一个进程
6:51
-
深入理解进程,如何进行上下文切换?计算机科学中最深刻和最成功的想法之一。
14:52
-
处理器内部的单个位如何保护操作系统的完整性?
20:20
-
计算的心跳:时钟如何推动 CPU 前进?
13:14
-
英语原声版-计算的心跳:时钟如何推动 CPU 前进?
14:22
-
(英语原声)进程间通信:共享内存或发送消息
14:15
-
(中文配音)进程间通信:共享内存或发送消息
12:29
-
(中文配音)为什么单核处理器需要线程?
14:59
-
(英语原声)为什么单核处理器需要线程?
16:07
-
(中文配音)多核系统上的线程
9:26
-
(英语原声)多核系统上的线程
11:27
-
(中文配音)为什么应用程序是特定于操作系统的?
11:52
-
(英语原声)为什么应用程序是特定于操作系统的?
13:09
-
(英语原声)硬件如何在多任务处理中协助软件?
13:15
-
(中文配音)硬件如何在多任务处理中协助软件?
11:29
-
链表的一个实际应用
20:34
-
让你的电脑运行更流畅的奇妙算法
45:02
-
(流畅中文配音)让你的电脑运行更流畅的奇妙算法
43:38
-
(原声双语字幕)当程序调用 sleep() 时会发生什么?
19:41
-
(流畅中文配音)当程序调用 sleep() 时会发生什么?
17:57
-
这个简单算法驱动了真正的解释器:Pratt Parsing
20:40
-
(双语字幕)编程中最难以捉摸的Bug:竞态条件
18:19
-
(流畅中文配音)编程中最难以捉摸的Bug:竞态条件
19:23
-
(中文配音)阻止内存攻击的底层电路
16:02
-
(英语原声)阻止内存攻击的底层电路
14:51
-
为什么有些项目会使用多种编程语言?
18:04
-
为什么有些项目会使用多种编程语言?
19:32
-
别再杀进程了!让 Ctrl+C 变成“喵”……(用信号实现)
17:15
-
别再杀进程了!让 Ctrl+C 变成“喵”...(用信号实现)
19:23
-
80 年代避免竞态条件的算法(以及它为何失败)
19:05
-
80 年代避免竞态条件的算法(以及它为何失败)
19:43
-
CPU如何与众多不同设备交互?
22:10
-
(中文配音)CPU如何与众多不同设备交互?
23:52
-
(中文配音)你每天都在用的奇特CPU操作
14:04
-
你每天都在用的奇特CPU操作
13:04
-
(中文配音)历史如何塑造了我们今天仍在使用的编程术语?
18:04
-
(英语原声)历史如何塑造了我们今天仍在使用的编程术语?
17:42
-
为什么有些底层项目里会充满这种奇怪的代码?
16:41
-
(中文配音)为什么有些底层项目里会充满这种奇怪的代码?
16:39
-
编译与解释代码如何共处同一程序中?
21:35
-
(英语原声)编译与解释代码如何共处同一程序中?
21:30
-
【双语字幕】Core Dumped 常见问题的集中回答
17:09
-
【双语字幕】90年代的设计决策阻碍了Python并行化
13:36
-
【中文配音】90年代的设计决策阻碍了Python并行化
12:01
-
Linux创建进程的奇怪方式
17:51
-
【中文配音】Linux创建进程的奇怪方式
18:14
-
CPU如何运行函数?
19:49
-
【中文配音】CPU如何运行函数?
19:38
-
没有人解释的问题:内核的边界在哪里?
17:15
-
【英语原声】没有人解释的问题:内核的边界在哪里?
19:36
-
硬件如何让线程问题不再那么棘手?
35:49
-
为什么在macOS、Windows和Linux上安装应用程序如此不同?
19:47
-
游戏公司真的能破坏你的电脑吗?
24:00
-
一个视频说透“架构”:为什么你的程序换个CPU就可能跑不了?
10:43
-
CPU如何执行有符号和无符号运算?
14:45
-
简单指令, 奇妙算法
19:11
-
当CPU遇到它不认识的指令,会发生什么?😱【底层原理】
9:26
Description
https://www.youtube.com/watch?v=ZmPIxfCggFw 视频总结 本视频解释了“Linux只是内核而不是完整操作系统”这句话的真正含义。核心线索从进程创建机制出发,通过追溯Linux系统中的进程树,一直追到所有用户进程的祖先——PID为1的init进程。Linux中的用户进程并不是由内核直接创建的,而是通过“进程自我克隆再替换程序”的机制,由已有进程不断派生形成树状结构。系统启动时,内核首先被加载到内存并运行在CPU的特权模式中,负责直接与硬件交互以及提供系统调用接口。当内核完成初始化后,会在启动代码中硬编码执行一个程序,即init进程,这是系统中唯一一个不是由其他用户进程创建的用户进程。 视频进一步解释了用户空间与内核空间的区别。CPU通过受限模式和特权模式将普通程序与内核隔离,普通应用只能通过系统调用请求内核访问硬件资源。内核本身只负责底层资源管理,例如内存管理、设备驱动、中断处理等,并不知道窗口、按钮或桌面等高级概念。图形界面、桌面环境、显示服务器、网络管理器、包管理器、SSH服务等组件实际上都是运行在用户空间中的普通进程,它们共同构成了我们日常使用的操作系统体验。 由于Linux项目只提供内核,而不同发行版会在其上组合不同的用户空间服务与程序,例如不同的init实现(systemd、sysv-init、openrc等)、不同桌面环境(GNOME、KDE等),因此不存在唯一的“标准Linux系统”。发行版之间的差异主要来自这些用户空间组件的组合方式。 视频最后讨论了另一个更模糊的问题:如果操作系统的大部分组件都只是普通用户进程,那么操作系统与普通应用程序之间的边界在哪里。一个可能的定义是由init进程自动启动的核心服务,但这个定义仍然不完美,因为很多基础工具只在用户调用时运行。由此得出的结论是:内核与用户空间之间的界线非常清晰,但操作系统与普通应用之间的界线往往是模糊且带有主观性的。
Comments
回归主线
♥ 4 ↩ 3
大白话就是 Linux是内核 Ubuntu才是操作系统 但是操作系统需要内核才能驱动 不同的操作系统可以在同一内核上运行 比如安卓可以在Linux内核上运行 但不同的内核驱动不了同一个操作系统 比如windownt内核就不能驱动Ubuntu [呲牙][呲牙][呲牙][呲牙]
♥ 3 ↩ 2
有图形界面才叫操作系统
♥ 2 ↩ 24
能够自行 创建/删除 进程,支持用户IO输入,以及任意方式输出 的才算操作系统吧[思考][思考]毕竟内核只负责提供 创建/删除的 API 甚至不提供这类API 需要自行实现。然后我的理解就是能够针对于用户输入,提供对应输出,中能够执行对应操作的(即响应用户输入)才叫操作系统[思考][思考]
♥ 2 ↩ 6
十万粉大v,技术flow先生[doge_金箍]
♥ 1 ↩ 3
00:11:45
@有趣的程序员 总结
↩ 1