- 博客(77)
- 资源 (1)
- 收藏
- 关注
原创 Linux内核是如何创建目录的
哈喽,我是子牙老师。今天咱们从ext4文件系统源码层面聊聊Linux内核是如何创建目录的,创建文件也差不多原理看这篇文章之前,建议你看下我之前写的《手写文件系统》,不然怕你看不懂当我们创建目录的时候,差不多这两种方式。本文会从这两个大方向进行分析以下,enjoy。
2024-07-24 09:20:17
615
原创 手写文件系统一条龙篇
哈喽,我是子牙老师。这篇文章聊聊文件系统是怎么写出来的,看完,你就可以自己去写文件系统了。本文以Linux的EXT系列文件系统为例进行讲解,理解了,其他的文件系统你就可以自行研究了。
2024-07-22 10:19:36
862
原创 如果你想手写Linux系统
哈喽,我是子牙老师。今天咱们聊聊这个话题吧,Linux作为当今科技世界的地基,我们越来越接近真理了,有木有?这个文章的角度,你可能全网都很难找到第二篇如此系统讲透这个问题的文章
2024-07-09 09:32:20
1048
原创 如果你想看懂任何代码
哈喽,我是子牙老师。今天咱们聊聊这个话题你是不是想不通:1. 为什么有的人学一门技术那么快,你花了很长时间没学明白的技术,人家一下子就学会了2. 为什么有的技术,有的人都没听过,但是你问他,他能给你讲得清清楚楚、明明白白3. 为什么有的代码你看不懂,别人不用看就知道脉络……
2024-06-27 08:38:28
620
原创 手写docker:你先玩转namespace再来吧
哈喽,我是子牙老师。今天咱们聊聊Linux namespace瓦特?你没听过namespace?那有必要科普一下了:namespace是Linux内核提供的一种软件性质的资源隔离机制。容器化技术,比如docker,就是基于这样的机制实现的。namespace,是docker依赖的最核心的技术。如果没有namespace,就没有容器化技术,也就没有云原生甚至可以说,如果没有namespace,云计算都将不复存在正文开始,enjoy。
2024-06-22 09:53:43
971
原创 全网整理最全的手写64位多核操作系统开发笔记+源码开源啦!
本篇文章就为大家分享一位大神整理的手写操作系统开发笔记+源码,可以帮助到大家在手写操作系统的学习中突飞猛进,那我们就一起来欣赏下开发过程吧。完整的笔记+源码获取方式放在文章末尾,也可以直接关注宫中号:【硬核子牙】,回复:操作系统,即可免费获取。手写一个操作系统可以说是很多程序员心中的一个白月光,不仅可以帮互助你在项目面中脱颖而出,手写操作系统的过程还需要理解计算机系统的各个层面,包括处理器架构、内存管理、进程调度、I/O 等,这都能够帮助程序员深入理解计算机系统的工作原理。
2024-03-12 21:45:39
372
原创 单步调试Linux内核论证水位线watermark
哈喽,我是子牙,一个很卷的硬核男人深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了这些课程:手写JVM、手写OS、带你用纯汇编写OS、手写64位多核OS、实战Linux内核…这篇文章给大家分享Linux内核内存模块一个很重要的知识点:水位线,就是这玩意这玩意干啥的呢?控制内存回收的。
2024-02-26 10:49:45
1070
原创 谁说常量字符串不可修改
哈喽,我是子牙,一个很卷的硬核男人深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了这些课程:手写JVM、手写OS、带你用纯汇编写OS、手写64位多核OS、实战Linux内核…问你一个问题:你觉得下面这个程序能正确运行吗?我大胆的预测,你的内心是这样子的哈哈,别别,我没疯,我来证明给你看看到没,我真的做到了!细心的小伙伴可能发现了,在修改常量字符串之前,好像执行了一段代码!
2024-02-23 09:39:06
608
原创 为什么说linux对于程序员无法取代
Linux系统的多用户支持是其强大而灵活的特性之一。每个用户在Linux系统中有自己的账户和权限,可以对自己的文件和设备有特殊的权利,这确保了各用户之间互不干扰。这种多用户的支持使得Linux在多用户环境中能够有效地分隔用户的操作,保障各用户的隐私和安全。每个用户有自己的家目录,只能访问自己的文件,而不能轻易干涉其他用户的数据。另外,在高配置硬件的情况下,Linux系统就更能够充分发挥多任务和多线程的优势。每个用户可以同时执行多个任务,多个线程可以并行工作,这显著提高了系统的效率和响应速度。
2024-01-24 17:19:45
940
原创 2024年linux内核开发会是程序员新的风口吗?
众所周知,linux操作系统一直靠着稳定,安全,开源等优势占据着80%以上的服务器市场。小至私人企业,大至世界百强,都离不开它的身影。以至于无论你擅长的是哪门语言,面试的时候都会或多或少的涉及linux的相关知识,如果你精通了linux,那发展前景肯定不用发愁。那如何精通linux呢?最重要的就是学习内核。Linux目前依旧是是最强大的操作系统之一,它在云计算、服务器管理、网络安全等领域占据了核心地位。
2024-01-18 16:58:17
10998
原创 JVM如何执行synchronized修饰的方法
我知道小伙伴们心理在想什么:我什么时候也能像子牙老师这样,哪里不懂就直接深入源码去寻找答案、工作腻了,我也想写一些自己感兴趣的算法……实话实话,底层这玩意学起来确实难。有时候遇到问老师就是红手题都找不到答案,甚至有时候百度都不知道怎么查…自己瞎学瞎报班,浪费钱浪费时间,还没有结果。操作系统内核我也是报班学的,自己学了一段时间,真心学不会。我的老师就是红手指的首席科学家唐老师,前瑞星杀毒的技术专家,虚拟化领域的TOP级人物。给大家看看我之前写的一些项目,证明下我不是在吹牛。
2024-01-09 10:30:38
643
原创 调用Java线程相关的API为什么能够控制操作系统线程?
今天我们解决Java线程的这五个问题:Java线程创建的完整流程Java的线程是何时与JVM线程绑定的JVM线程是何时与OS线程绑定的Java线程对应的OS线程有什么特殊的地方调用JavaAPI为什么能够操作OS线程对于任何支持多线程的计算机语言来说,深入理解线程及写好多线程程序,都是一个巨大的挑战。正因为难,才使得多线程一直是面试的重点难点。面试官刚一开口扯到多线程,有些小伙伴内心就升起了慢慢的恐惧感。
2024-01-08 14:23:12
893
原创 实战讲解Linux进程内存空间
本篇文章为大家分享了64位Linux进程的内存空间布局,并详细讲了进程的用户空间关于Linux进程的用户空间内存布局,Linux内核源码中是没有提供明确的答案的,不像内核空间内存布局,是有明确答案的我们通过阅读Linux内核源码,做实验,推导出了Linux进程的用户空间内存布局,并从ELF文件、运行时,详细讲解了每一层。并通过malloc分配内存讲到了面试中经常问到的问题最后,恭喜大家,这就是Linux进程用户空间内存布局的全部,你已经掌握了它!
2024-01-08 10:05:33
1021
原创 【JVM面试题】Java中的静态方法为什么不能调用非静态方法
昨晚京东大佬勇哥在群里分享了一道他新创的JVM面试题,我听完后觉得还挺有意思的,分享给大家小佬们先别急着看我的分析,先自己想想答案。
2024-01-04 14:32:03
650
原创 hotspot源码角度看OOP之类属性的底层实现
如果你每次都是因为native而对hotspot源码束手无策,如果你每次都是因为底层而无法深入研究下去,如果你深入骨子里的想成为技术大牛,欢迎跟着我学习,关注我的公众号,找我咨询课程。跟我学底层,一定不会踩坑,一定学有所得。
2024-01-04 14:10:45
1119
原创 【Hotspot源码】揭秘Java线程创建过程中的各种细节
总是听到小伙伴说:多线程好难学、多线程学不会、多线程没概念……为什么会这样呢?我觉得可能是这样:大多数小伙伴接触线程都是从高级语言开始的,比如Java。而高级语言的线程是基于操作系统的线程机制实现的,而小伙伴们没有学过操作系统应用层的学习机制,更不了解操作系统内核级的线程机制,所以学完多线程有一种似会非会的感觉。跟别人交流或者面试的时候,滥用应用态切内核态、线程调度等名词。写多线程程序更是惨不忍睹。我的手写JVM小班新增的内容就是以我所理解的方式让大家精通多线程。
2024-01-03 16:45:53
889
原创 JMM到底如何理解?JMM与MESI到底有没有关系?
今天给大家分享一篇对于理解Java的多线程,特别重要的一个知识点:JMM。在JVM中增加线程机制,首当其冲就是要实现JMM,即Java内存模型。JMM也是大家真正理解Java多线程的基础。但是大家对于JMM,可以说大多数小伙伴对其的理解是错误的。这篇文章我会从这几个方面讲JMM,让大家获得对JMM正确的、深刻的认识:1、市面上大家看到的资料是怎么介绍JMM的2、我会结合一个Linux多线程程序给大家分析,JMM与MESI没有半毛钱关系3、那为什么要有JMM?不要行不行?
2024-01-03 15:23:08
896
原创 内存编织技术,JVM对内存的又一次压榨
我是子牙老师,喜欢钻研底层,深入研究Windows、Linux内核、JVM。喜欢分享硬核知识,如果你也喜欢研究底层,喜欢硬核知识,关注我。
2024-01-02 15:31:41
961
原创 JVM是如何基于虚拟机栈运行的
我是子牙老师,喜欢钻研底层,深入研究Windows、Linux内核、JVM。喜欢分享硬核知识,如果你也喜欢研究底层,喜欢硬核知识,关注我。
2024-01-02 14:14:55
584
原创 不了解NUMA,就看不懂Linux内核
哈喽,我是子牙,一个很卷的硬核男人深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了这些课程:手写JVM、手写OS、带你用纯汇编写OS、手写64位多核OS、实战Linux内核…最近在备课《实战Linux内核》内存专题,把NUMA好好研究了一下,写成文章,Mark一下,顺便分享给有缘人NUMA是什么呢?一种内存访问架构,与它相对应的是SMP架构,它俩之间有什么区别呢?
2023-12-29 09:20:35
643
原创 Linux内核中,CPU是如何读写数据的
哈喽,我是子牙,一个很卷的硬核男人深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了这些课程:手写JVM、手写OS、带你用纯汇编写OS、手写64位多核OS、实战Linux内核…说个笑话:以前我在图灵讲课的时候,很多学员跟我说:子牙老师,别的老师的课不硬核,都是OS之上的,听起来没劲,看你骨骼清奇天赋异禀,能不能讲点硬的,最好能撕到硬件内部,让我长长见识……OK,安排。
2023-12-20 14:13:16
898
原创 揭秘Linux内核线程切换底层实现
比如线程函数长这样描绘一下场景:在本轮CPU时间片周期内,这个线程执行到i = 1233,这时候发生了时间片到期中断,这个线程就没有机会运行了,需要将CPU时间片让出去,当下次获得调度,能够从i = 1234位置接着运行,而不是从i = 0开始又从头运行什么是线程上下文呢?其实就是程序执行的时候,CPU内部寄存器中的值、线程栈当前使用的位置当发生中断,CPU进入中断处理例程的那一刻,就像给上一个运行的线程拍了张快照,这时候我们将寄存器中的值及线程栈当前使用的位置保存下来,就叫保存上下文。
2023-12-06 10:29:02
1006
原创 硬核子牙:我准备写一本《带你手写64位多核操作系统》的书!
开篇就讲到这里吧,相信从这篇文章里,你已经知道了,这将是一段特别有趣的旅程,我应该会写得很快乐!你是不是想问你能不能学得很快乐,哈哈,那应该不可能,学习总是痛苦的,不痛苦那就不是在学习,是在复习!因为痛苦,所以很多人不愿意学习,也就改变不了自己的命运,求而不得,最后生怨!何苦,何必…对了,如果你汇编、C语言不是很好,可以看看我讲课的视频,免费分享。
2023-10-24 09:37:13
425
原创 源码级揭秘Linux内核启动流程
哈喽,我是子牙,一个很卷的硬核男人。深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程今天这篇文章给大家分享一下Linux内核的启动流程。为什么要分享这个话题呢?所谓万丈高楼平地起,如果我们想玩转Linux内核,我们既要了解它的前世,又要了解它的今生,还要了解它的未来。启动流程就是Linux内核的前世,对于理解Linux内核,里面包含了太多太多关键信息其实也是在为后面出书做准备…Linux内核的重要性,我不必言说了。
2023-09-21 09:55:26
253
原创 这样才能玩转Linux内核之CPU篇
哈喽,我是子牙,一个很卷的硬核男人 深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了三个课程:手写JVM、手写OS及带你用纯汇编写OS、手写64位多核OS及Linux内核…,收到了很多小伙伴的反馈,表示自己研究Linux内核很迷茫,很多代码看不懂,不知道是干啥的,需要这样的文章指明方向。今天带来的是它的兄弟篇:CPU篇。
2023-08-24 12:24:47
261
原创 Linux内核这样学才能学会(内存篇)
哈喽,我是子牙,一个很卷的硬核男人深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了三个课程:手写JVM、手写OS及带你用纯汇编写OS、手写64位多核OS及Linux内核…事情是这样的,上篇文章我分享说到如果你想玩转Linux内核,你要具备这些基础。其中第二条说到你要了解核心硬件的工作原理,比如CPU、内存条、CPU+内存条…很多小伙伴看完后觉得没概念,让我展开说说。
2023-08-15 16:25:04
1671
1
原创 如何手写网络协议栈
我写的网络协议栈,除了可以与Linux socket模拟三次握手建立连接,建立全双工通道通信,还可以侵入正常的socket client与socket server建立的连接进行通信,意思就是我写的协议栈可以冒充客户端与服务端通信!说下应用场景,比如我们通过浏览器访问网页,大家都知道走的是http协议,http协议属于应用层协议,它是在TCP协议的基础上实现的,所以我们最终的问题还是落到,如何构建TCP包并发送。如果你也像我一样,喜欢研究计算机底层,并乐此不疲,无论多难,都不曾想过放弃,欢迎跟我学习。
2023-06-04 14:59:14
4517
1
原创 手写操作系统+手写网络协议栈,太硬核了
前面讲的可能看起来有点牛叉,不免会让有些人怀疑我是不是在吹牛,所以我准备给出有力的事实手写操作系统三期大纲三期课程相关的代码我已经全部写完实模式切入保护模式实现内存检测、物理内存管理模块、虚拟内存管理模块实现了输出模块。要知道你用Linux终端,它会自动翻页,这个功能你如果写内核都是要自己实现的实现了键盘中断。就是你键盘敲什么,屏幕就显示什么,为后面加入命令行做准备实现了时钟中断,通过时钟中断调度任务。与Windows、Linux一模一样实现了进程线程、任务切换、阻塞唤醒。
2023-05-25 15:39:28
11072
1
原创 手写操作系统必掌握基础:函数调用约定
正片开始,enjoy~因为要照顾不同基础的小伙伴,对于有基础的小伙伴可以略显啰嗦。那你可以:一,可以不用看这篇文章;二,可以跳到末尾看结论。
2023-05-24 14:45:59
793
原创 想自学写个操作系统,有哪些推荐看的书籍?
哈喽,我是子牙,一个很卷的硬核男人。喜欢研究底层,聚焦做那些大家想学没地方学的课程:手写操作系统、手写虚拟机、手写编程语言…今天我们将站在一个自学者的角度来聊聊如何实现自己的操作系统。并为大家推荐几本能够帮助你巩固知识,修炼内功的书籍,这些书籍涵盖了操作系统的核心概念、设计原理和实践技巧。如果你能够啃得下来,对于你的技术提升绝对是一个质的飞跃。同时我也为大家整理好了这些电子书的下载地址,以及开发操作系统的环境搭建打包文件,都一同贴在了文章末尾,希望能够帮助到梦想实现自己操作系统的技术人。
2023-05-22 14:04:19
10856
3
原创 手写操作系统+文件系统开源啦
哈喽,我是子牙,一个很卷的硬核男人。喜欢研究底层,聚焦做那些大家想学没地方学的课程:手写操作系统、手写虚拟机、手写模拟器、手写编程语言…今年是我创业的第二年,已经做了两个课程:手写JVM、手写操作系统。为了保证课程质量,一年左右出一个课程。今年的新课:Linux内核,将于九月份招生,十月份开课,带你以写驱动的方式实战学习。纯讲原理,假大空,是学不会内核的,也不是我的风格…我的课程,一定要超级硬核,学起来能够切实感受到自己在变得牛叉…
2023-03-06 12:53:17
1576
原创 计算机是如何把操作系统跑起来的
我是子牙老师,喜欢钻研底层,深入研究Windows、Linux内核、JVM。如果你也喜欢研究底层,欢迎关注我的公众号【硬核子牙】
2022-10-08 11:22:15
925
原创 开发操作系统内核环境搭建
哈喽,我是子牙,一个很卷的硬核男人闲来无事不是写了个操作系统吗,写完之后发了篇文章《圆梦,手写了个操作系统》,这一发倒好,一石激起千层浪,很多小伙伴跑来问我开发操作系统的环境如何搭建。既然这么多小伙伴想写操作系统,作为过来人,我就把我的环境搭建踩坑手册分享给大家如果人人都能写操作系统,国家计算机行业的兴旺指日可待呀
2022-09-19 13:55:17
1851
原创 为了学明白中断机制,我努力了
我是子牙老师,喜欢钻研底层,深入研究Windows、Linux内核、JVM。如果你也喜欢研究底层,欢迎关注我的公众号【硬核子牙】
2022-09-14 10:05:57
350
原创 字符串常量池,看这篇就够了(三)
哈喽,我是子牙。十余年技术生涯,一路披荆斩棘从技术小白到技术总监到JVM专家到创业。技术栈如汇编、C语言、C++、Windows内核、Linux内核。特别喜欢研究虚拟机底层实现,对JVM有深入研究。分享的文章偏硬核,很硬的那种。手撸过JVM、内存池、垃圾回收算法、synchronized、线程池、NIO、三色标记算法…这篇文章是专栏字符串常量池的第三篇。如果前两篇你还没看,墙裂都建议你回去看一下,再来看本篇本篇文章就从上篇文章留的问题切入,分享:什么情况字符串会写入常量池什么情况字符串不会写入
2022-04-20 09:28:25
936
原创 字符串常量池,看这篇就够了(二)
哈喽,我是子牙。十余年技术生涯,一路披荆斩棘从技术小白到技术总监到JVM专家到创业。技术栈如汇编、C语言、C++、Windows内核、Linux内核。特别喜欢研究虚拟机底层实现,对JVM有深入研究。分享的文章偏硬核,很硬的那种。手撸过JVM、内存池、垃圾回收算法、synchronized、线程池、NIO、三色标记算法…这篇文章是谈字符串常量池的第二篇。如果上一篇你还没看,建议先回去看一下,再来看本篇本篇文章的节奏会这样展开:首先会讲到两段Java代码创建的字符串在JVM中的存在形式,把涉及到的相关名
2022-04-19 10:29:42
1448
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人