自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

子牙老师

深入研究JVM、Linux内核、Redis、MySQL。手写过JVM、NIO、线程池…运营公众号:硬核子牙

  • 博客(106)
  • 资源 (1)
  • 收藏
  • 关注

原创 ext4文件系统与jbd2

本文深入解析了ext4文件系统的日志机制jbd2。通过创建一个目录的完整过程,详细讲解了ext4为何需要将操作封装成事务:目录创建涉及多次磁盘写入(inode位图、inode表、块位图等),若中途断电会导致元数据不一致。jbd2通过日志记录事务,确保操作的原子性。文章还通过实验展示了mount和mkdir操作生成的jbd2日志结构,分析日志超级块和事务数据块的内容。最后指出,要彻底理解ext4源码,必须掌握jbd2机制。文中包含大量实战分析,包括磁盘块内容对比和日志结构解析,是学习Linux内核和文件系统的

2025-11-14 13:28:02 896

原创 存储核心:EXT文件系统

哈喽,我是子牙老师,一个手写过操作系统、编程语言、Java虚拟机、docker、Ubuntu系统,玩透Windows内核、Linux内核…的硬核男人。今天写一篇文章分享下存储核心:EXT文件系统

2025-11-11 10:08:53 967

原创 硬盘第一关:MBR VS GPT

哈喽,我是子牙老师,最近在备课《实战Linux内核》四期,刚好到Linux内核中的EXT4源码这块,想着很多人没底子看不懂这块代码,把我研究的成果写成文章分享给大家。本篇文章分享的底子之一就是MBR与GPT

2025-11-10 10:22:11 991

原创 gdb调试多线程底层实现原理

现实中,我们写的程序一般都是多线程程序。如果多线程程序出问题了,就需要用到gdb的多线程调试功能,非常方便,直接通过thread tid切到可能存在问题的线程,单步执行,看堆栈、寄存器、内存,很快就能找到错误原因这么强大的功能背后,底层实现原理是什么呢?我们自己写调试器,该如何实现呢?本篇文章为你全方位揭晓!本篇文章看完,gdb远程调试的all,你就过关了!

2025-11-06 09:54:34 567

原创 好多年没过双11了

哈喽,我是子牙老师,一个手写过操作系统、编程语言、Java虚拟机、docker、Ubuntu系统,玩透Windows内核、Linux内核…的硬核男人

2025-11-05 10:06:43 713

原创 gdb的放过去是怎么做到的

哈喽,我是子牙老师,一个手写过操作系统、编程语言、Java虚拟机、docker、Ubuntu系统,玩透Windows内核、Linux内核的…硬核男人。今天写一篇文章分享下gdb的放过去是怎么做到的。

2025-10-26 11:02:37 611

原创 gdb单步调试底层实现原理

关于gdb调试器,我已经写了三篇硬核文章了《从零手写gdb调试器》《调试器是如何让代码停下来的》《gdb调试器底层实现原理》,今天开启它的第四篇:gdb单步调试代码的底层实现原理

2025-10-24 09:28:09 471

原创 gdb调试器底层实现原理

前几天写了两篇调试器相关的文章《从零手写gdb调试器》《调试器是如何让代码断下来的》,在多个学员群里引发了大家的讨论。没想到大家对调试器这么有热情!今天再来把大家讨论比较多的话题写成文章分享:gdb调试器的底层实现原理

2025-10-23 10:24:26 928

原创 调试器是怎么让代码停下来的

我,子牙老师,一个手写过操作系统、编程语言、Java虚拟机、docker、Ubuntu系统,玩透Windows内核、Linux内核的…硬核男人,这篇文章分享下调试器是怎么让代码停下来的。

2025-10-21 10:06:09 485

原创 从零手写gdb调试器

我,子牙老师,一个手写过操作系统、编程语言、Java虚拟机、docker、Ubuntu系统,玩透Windows内核、Linux内核的…硬核男人最近一段时间一直在玩调试器,发现好多小伙伴对调试器感兴趣,那就写篇文章,带大家撸一个最简单的调试器,如何?

2025-10-17 16:28:04 965

原创 我以后就不用gdb了

我,子牙老师,一个手写过操作系统、编程语言、Java虚拟机、docker、Ubuntu系统,玩透Windows内核、Linux内核的…硬核男人最近的我,有点销声匿迹的感觉,就有小伙伴跑来问我在折腾什么。在写自己的gdb调试器。已经写完了,写篇文章介绍下。

2025-10-16 09:58:13 812

原创 gdb图形界面调试Linux内核

Linux内核调试环境如何搭建?我给你全网最简单便捷的吧,gdb+clion,图形界面

2025-09-16 14:30:04 876

原创 mount藏着的Linux内核的秘密

我,子牙老师,一个手写过操作系统、编程语言、Java虚拟机、docker、Ubuntu系统,玩透Windows内核、Linux内核的…硬核男人众所周知,我最近在更新《实战Linux内核》四期的视频。更到mount底层原理的时候,想到可能大家对这块应该挺感兴趣的,写篇文章分享一下

2025-09-15 14:37:26 944

原创 为Linux内核写一个文件系统

我,子牙老师,一个手写过操作系统、编程语言、Java虚拟机、docker、Ubuntu系统,玩透Windows内核、Linux内核的…硬核男人。本篇文章借着给Linux内核写一个文件系统,让你搞明白Linux内核、文件系统之间的关系

2025-08-27 07:58:20 374

原创 Python虚拟机内存机制底层

本文深入解析了CPython内存管理机制的核心原理。首先介绍了CPython的三种内存分配域(Raw Domain、Object Domain、Mem Domain),重点分析了启用pymalloc时Object Domain的工作机制。详细阐述了pymalloc的三层管理结构(arena、pool、block),包括256KB的arena包含64个4KB的pool,以及不同大小的block分配策略。文章还深入解读了usedpools的环形哑链表设计原理,并通过源码分析展示了内存分配的具体流程(pymall

2025-08-02 17:33:03 819

原创 gcc编译器眼中的C语言

编程语言一般分为编译期、运行期有的编程语言是编译期与运行期合并在一起的,比如Python、PHP…即解释型语言有的则是编译期与运行期分开的,比如C、C++、Java…即编译型语言。今天咱们深入聊聊编译期的C语言

2025-06-17 10:42:28 936

原创 带你速通编译原理

子牙老师以实战视角解析编译原理全流程:1)词法分析将代码转为token流;2)语法分析构建AST;3)语义分析校验逻辑正确性;4)中间代码生成(栈式IR/三地址码);5)最终生成机器码。课程特色在于全程手写实现各模块(含词法分析器、AST、IR生成器),配合flex/bison工具原理剖析。通过Python实例展示token生成、AST构建到字节码转换的全过程,揭示Java/Python虚拟机运作机制。核心观点:理解编译原理的最佳方式是动手实现,而非单纯理论学习。

2025-06-16 09:35:37 755

原创 这绝对是全网最细的手写操作系统环境搭建教程!

硬核开发者子牙老师分享手写操作系统环境搭建教程,提供完整的开发工具链配置方案。环境基于VMware虚拟机运行Ubuntu16系统,集成qemu、bochs虚拟机及clion IDE,支持SMP/NUMA架构操作系统开发,可实现C语言和汇编代码的单步调试,并能观察CPU内部状态变化。教程包含详细安装步骤和配置方法,并提供配套学习资源获取方式。该环境不仅适用于自主开发操作系统,还能用于Linux内核研究和各类底层系统开发,为开发者提供了强大的底层编程工具支持。

2025-06-11 16:43:43 1140

原创 【值得收藏】看懂Linux内核需要的全部CPU知识

哈喽,我是子牙老师。今天想写篇文章聊聊我对CPU的全部认识,你可以看看,里面有很多东西是你平时听过但不理解的,也有你没听过的

2025-05-26 14:23:56 825

原创 耗时8年时间!手写编程语言有结果了

坦白说,手写一门编程语言还是挺难的,因为市面上没有任何资料教你如何手写一门编程语言,所有的东西都需要自己去钻研。而且手写编程语言核心涉及到的词法分析器、语法分析器、抽象语法树AST、内存池、垃圾回收算法、执行引擎、编译器优化、运行时优化,都是非常难理解的,更别说把它写出来了。另外一方面就是我给自己的定位是做大家想学没地方学的课程,手写编程语言在国内就是一片空白,不知道是因为太难还是市场需求不大,没有人做,但是我都不care,做了就当填补中国计算机底层市场的空白了。下一步,手写一门自己的编程语言。

2025-05-19 17:22:43 332

原创 glibc库是如何写出来的

哈喽,我是子牙老师。今天咱们聊聊鼎鼎大名的glibc库是如何写出来的瓦特?你不知道glibc库是什么?你学C语言的第一句代码#include <stdio.h>,这个stdio.h就是glibc库中的。还有你经常用的函数printf、open、read、write…以下,enjoy。

2025-04-07 11:28:02 811

原创 sudo底层实现原理

哈喽,我是子牙老师关于sudo,想必大家不陌生了,给我们最直观的感受就是以root权限执行后面的命令,那你是否好奇它底层是如何实现的呢?最近正好备课把这个问题深入研究了一下,分享给大家以下,enjoy。

2025-03-28 10:59:50 386

原创 我为Linux内核写了个文件系统

哈喽,我是子牙老师。又又又做出新东西了:为Linux内核写了个文件系统,Linux内核可正常识别

2025-02-28 10:19:49 924

原创 真机上运行我写的Linux发行版

哈喽,我是子牙老师。在我的不懈折腾下,我写的Linux发行版终于可以在真机上运行了。想不想知道我是怎么做到的?

2025-02-27 09:09:10 278

原创 基于Linux内核手写Linux系统

第一次接触Linux系统的时候,我就感叹:这玩意太难用了,比Windows差远了!但是培训班老师告诉我Linux系统是程序员必学的,而且要学得很深,因为服务器几乎都是用它。后来入行久了,走得高了,才发现,哪里只是服务器用它?是基于PAM组件实现的,与所有的Linux系统是一模一样的。这件事情应该是我非常喜欢的,因为每天早上眼睛一睁开,我就想爬起来敲代码。

2025-01-02 10:28:51 303

原创 这样解决CFS不公平,Linux之父高度赞扬

Linux内核中有五种调度器,按优先级从高到低依次是:停机调度器、限期调度器、实时调度器、公平调度器、空闲调度器,与我们息息相关的是公平调度器CFSCFS中的调度实体,可以是进程,也可以是进程组。你可能疑惑,怎么没提到线程?其实Linux内核层面没有线程的概念,线程的本质是轻量级进程,所以线程在Linux内核中也是task_struct,所以机制是一样的基本上来说,你把我写得这两篇文章完全吃透,CFS源码你就可以轻轻松松读懂。CFS还剩边缘的知识,下一篇文章会全部讲到。

2024-11-30 09:47:48 880

原创 天呐!我能算出调度哪个进程

本篇文章,我们讲了CPU、CFS调度器、进程三者之间的关系又讲了vruntime的计算方法,并对其中的三要素进行了详细的讲解后又延伸讲到某个进程能够得到的CPU时间片的运算方式这就是CFS调度普通进程的全部。如果CFS只能调度普通进程,则会带来不公平,所以后来引入了CFS组调度,下篇文章分享。

2024-11-29 10:03:33 766

原创 一口气精通C语言

哈喽,我是子牙老师。今天我想通过一篇文章带你精通C语言,你信不信我能做到?好吧,问题不是我能不能做到,是你能不能学会。那咱们试试?

2024-10-21 09:53:00 1120

原创 谁能跟我比操作系统?

总有学员问:你做的课程,《手写操作系统》、《实战Linux内核》、《手写Linux内核》,跟你后面要做的《手写Linux》,有什么区别呢?每次解释也麻烦,一两句话也讲不清,写篇短文详细说下吧

2024-10-10 11:12:21 1126

原创 Linux内核是如何创建目录的

哈喽,我是子牙老师。今天咱们从ext4文件系统源码层面聊聊Linux内核是如何创建目录的,创建文件也差不多原理看这篇文章之前,建议你看下我之前写的《手写文件系统》,不然怕你看不懂当我们创建目录的时候,差不多这两种方式。本文会从这两个大方向进行分析以下,enjoy。

2024-07-24 09:20:17 899

原创 手写文件系统一条龙篇

哈喽,我是子牙老师。这篇文章聊聊文件系统是怎么写出来的,看完,你就可以自己去写文件系统了。本文以Linux的EXT系列文件系统为例进行讲解,理解了,其他的文件系统你就可以自行研究了。

2024-07-22 10:19:36 1180

原创 如果你想手写Linux系统

哈喽,我是子牙老师。今天咱们聊聊这个话题吧,Linux作为当今科技世界的地基,我们越来越接近真理了,有木有?这个文章的角度,你可能全网都很难找到第二篇如此系统讲透这个问题的文章

2024-07-09 09:32:20 1416

原创 奇葩的linux进程线程设计

哈喽,我是子牙老师。今天咱们聊聊linux的进程线程设计,会讲到很多很多曾经困惑着你,或一直折磨着你的东东

2024-07-02 11:24:37 1126

原创 如果你想看懂任何代码

哈喽,我是子牙老师。今天咱们聊聊这个话题你是不是想不通:1. 为什么有的人学一门技术那么快,你花了很长时间没学明白的技术,人家一下子就学会了2. 为什么有的技术,有的人都没听过,但是你问他,他能给你讲得清清楚楚、明明白白3. 为什么有的代码你看不懂,别人不用看就知道脉络……

2024-06-27 08:38:28 799

原创 手写docker:你先玩转namespace再来吧

哈喽,我是子牙老师。今天咱们聊聊Linux namespace瓦特?你没听过namespace?那有必要科普一下了:namespace是Linux内核提供的一种软件性质的资源隔离机制。容器化技术,比如docker,就是基于这样的机制实现的。namespace,是docker依赖的最核心的技术。如果没有namespace,就没有容器化技术,也就没有云原生甚至可以说,如果没有namespace,云计算都将不复存在正文开始,enjoy。

2024-06-22 09:53:43 1109

原创 全网整理最全的手写64位多核操作系统开发笔记+源码开源啦!

本篇文章就为大家分享一位大神整理的手写操作系统开发笔记+源码,可以帮助到大家在手写操作系统的学习中突飞猛进,那我们就一起来欣赏下开发过程吧。完整的笔记+源码获取方式放在文章末尾,也可以直接关注宫中号:【硬核子牙】,回复:操作系统,即可免费获取。手写一个操作系统可以说是很多程序员心中的一个白月光,不仅可以帮互助你在项目面中脱颖而出,手写操作系统的过程还需要理解计算机系统的各个层面,包括处理器架构、内存管理、进程调度、I/O 等,这都能够帮助程序员深入理解计算机系统的工作原理。

2024-03-12 21:45:39 1986

原创 单步调试Linux内核论证水位线watermark

哈喽,我是子牙,一个很卷的硬核男人深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了这些课程:手写JVM、手写OS、带你用纯汇编写OS、手写64位多核OS、实战Linux内核…这篇文章给大家分享Linux内核内存模块一个很重要的知识点:水位线,就是这玩意这玩意干啥的呢?控制内存回收的。

2024-02-26 10:49:45 1423

原创 谁说常量字符串不可修改

哈喽,我是子牙,一个很卷的硬核男人深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了这些课程:手写JVM、手写OS、带你用纯汇编写OS、手写64位多核OS、实战Linux内核…问你一个问题:你觉得下面这个程序能正确运行吗?我大胆的预测,你的内心是这样子的哈哈,别别,我没疯,我来证明给你看看到没,我真的做到了!细心的小伙伴可能发现了,在修改常量字符串之前,好像执行了一段代码!

2024-02-23 09:39:06 830

原创 还能这样学Linux内核,非我族类!

性价比超高,可全网比价!感兴趣的小伙伴别错过超大优惠上车哦~

2024-01-29 09:22:41 1518

原创 为什么说linux对于程序员无法取代

Linux系统的多用户支持是其强大而灵活的特性之一。每个用户在Linux系统中有自己的账户和权限,可以对自己的文件和设备有特殊的权利,这确保了各用户之间互不干扰。这种多用户的支持使得Linux在多用户环境中能够有效地分隔用户的操作,保障各用户的隐私和安全。每个用户有自己的家目录,只能访问自己的文件,而不能轻易干涉其他用户的数据。另外,在高配置硬件的情况下,Linux系统就更能够充分发挥多任务和多线程的优势。每个用户可以同时执行多个任务,多个线程可以并行工作,这显著提高了系统的效率和响应速度。

2024-01-24 17:19:45 1482

VC6.0代码补全插件(实测可用)

有了这个插件,开发效率指数级提升

2017-06-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除