为什么现在没人读Linux源码了?

《Linux 源码趣读》的读书笔记-第1部分 总的来说,以上就是我对第一部分的所思所想,未来有了新的想法,再基于这个更新。 阅读详情

每个程序员都有一个操作系统梦,而操作系统也是每个程序员的心结。

很粗糙地了解一点操作系统的理论知识,一知半解,已经无法满足当下程序员的口味和需求了。

但要说深入剖析操作系统,又是大部分程序员都很惶恐的一件事。那如果是要读一遍操作系统源码,即便是代码量很少的 Linux 0.11 版本,那也跟要了命一样。

当然,很多优秀的操作系统书籍都是以 Linux 0.11 这个经典版本为研究对象进行讲解的,比如《Linux 内核设计的艺术》、《Linux 内核完全注释》等。但这些书往往一上来就试图梳理整个宏观脉络,其实对于新手来说,并不能很好地消化这些宏观的抽象的概念,到最后可能又陷入了一知半解的死循环。

那是否有一本可以深入到操作系统源码细节,又可以像讲故事一样生动形象地展现操作系统如何从第一行代码开始逐步建立起整个大厦的书籍呢?

闪客最近出了一本新书,叫做《Linux 源码趣读》,很好地完成了这个使命。

本书共 400 多页,250 多张精美的图解,五大部分,从头到尾像小说一样把 Linux 0.11 全部核心代码讲述的一清二楚。

07b88e39fd94f8c35efef657f2e40b75.jpeg

10b009d4138f256d9d9a70c39a6a7950.jpeg

f20b8553788966b0bef2ddce41e42ffd.png

下面简要介绍一下五个部分的内容,并且每个部分挑选出一张精美的图片,带你快速感受一下本书的魅力所在。

第一部分:进入内核前的苦力活。覆盖开机到 Linux 下的 main 方法的关键流程解析,并帮你清晰认识 Intel CPU 的体系结构。

a92975e4d875732f86d54f53a4daa236.png

第二部分:大战前期的初始化工作。讲述 main 方法中的各种初始化函数,这些函数是操作系统各个模块的交互桥梁,为理解后续操作系统各个模块的运作原理打好基础。

d6da9a0a151f5005649e26d1c252ebe2.png

第三部分:一个新进程的诞生。讲述从内核态切换至用户态,并建立起第一个用户进程的全部过程。学完这部分,你将会理解一个多进程的操作系统是如何建立和运作的。

f78c8d4e1c6d0df7da59d249b712fef3.png

第四部分:shell 程序的到来。主要讨论如何将磁盘中存储的 shell 程序加载到内存中来,并最终交给 CPU 去执行。通过这个过程你会看清一个程序从硬盘到最终被执行的全部过程。

a4845b5c7cc35442985288e030f69dd6.png

第五部分:一条 shell 程序的执行。跟着一条 shell 程序“走南闯北”,从用户输入给电脑一个字符串开始,一直讲到该程序的最终执行,此时整个操作系统的启动流程与运作原理,将会生动形象地浮现在你的脑海中。

ed9a6305e3f55325f6b5de77f100ef7d.png

------

整本书读起来非常轻松,而且容易上头,最终你会不知不觉地发现,原来整个操作系统的体系就这样一点一点建立起来了!原来操作系统源码不过如此,就是这么个破玩意而已!

本书刚刚上架,前期开启了 5 折优惠,原价 158 元,限时半价只要 79 元,想入手的可以尽快以最低价入手。

mktime.c----Linux源码自读          最近刚看完了>,认真学习了下GCC里的内嵌汇编这部分,有学习了MAKEFILE的写法,现在及以后就要专心阅读LINUX的源码了.由于INTEL保护模式编程以前看过,LINUX的启动引导部分以前也看过了,就都不看了.只是大概有个理解.今天看了下mktime.c这个文件,比较简单的部分,也算给自己点信心吧.:-)        下面是我的理解及注释:00001 /*000 阅读详情

相关推荐

Apache,PHP,MySQL为什么要在Linux上搭建

1、Apache,PHP,MySQL为什么要在Linux上搭建?   1)他们的在Linux上的运行效率相对于Windows会更高   2)某些模块只是针对Linux进行开发的   3)这些软件最早也是在Linux/UNIX上发展起来的   2、为什么不选用最新的软件?   因为最新的软件不一定就是企业在用的,企业用的大多是最稳定的版本!   3、为什么选用源码包安装?   因为二进

wetgsg的专栏 688

极客时间《Linux0.11源码趣读》学习笔记day2

Linux0.11最开始的代码是用汇编语言写的bootsect.s,位于boot文件夹下。该文件通过编译后(被编译成二进制文件),存放在启动区的第一扇区当我们把操作系统代码编译好后存放在硬盘的启动区中,开机后,BIOS 程序就会将代码搬运到内存的 0x7c00 位置,而 CPU 也会从这个位置开始,一条一条指令不断地往后执行这里需要注意,BIOS只把启动区的512字节加载到内存,但操作系统代码并不是这512字节,操作系统的代码还在硬盘的其他扇区,这些就需要我们自己来处理。

m0_52682586的博客 1577

《Linux源码趣读》读书笔记001

是 1981 年 IBM 设计初代 PC 时,人为写死在 BIOS 固件里的【行业标准约定】,为了内存布局合理、避开关键区域、兼容旧 DOS,从此所有电脑全盘继承,沿用 40 多年。,哪怕最新主板、Linux7.0、Windows11,传统 BIOS 启动依旧遵守这个规则。分区干净、无碎片、不用复杂内存管理,适配当年低配电脑。放到高地址:挤占显存、ROM、IO 区域,读写异常;段码规整,早期汇编代码极好写,降低系统开发难度。硬盘只负责读扇区,读到内存任意地址都可以,全部失效,寻址错乱,系统无法启动。

skylijf的专栏 49

《Linux0.11源码趣读》学习笔记day6

到上次记录,整个操作系统的全部代码就已经从硬盘加载到内存中了,然后这些代码又通过jmpi跳转到0x90200处,即硬盘第二个扇区开始处的内容这些内容就是第二个操作系统源代码文件setup.s不过现在先来看一下操作系统的编译过程。

m0_52682586的博客 1531

为什么要阅读linux内核源码以及如何阅读Linux内核源码

目的:为了更好地编写驱动程序,对自己写的程序有更深入的理解,并且自己的岗位定位在底层。 阅读linux内核,常用下面两种方法: 1.bochs+linux0.11+书(linux内核完全注释、linux内核完全剖析、linux内核设计的艺术) 2.sourcesinsight+linx2.X+书(linux内核情景分析) 阅读源码分为纵向阅读和横向阅读。纵向就是跟着内核的执行流程来读,横向就是按照...

qq_38769551的博客 4031

Linux源代码下载(1).pdf

Linux源代码下载(1).pdf

《Linux 源码趣读》学习

《Linux 源码趣读》学习

青少年趣味编程 2721

读《Linux源码趣读》的个人笔记

个人笔记记录书中的重点。

像小说一样趣读 Linux 源码

每个程序员都有一个操作系统梦,而操作系统也是每个程序员的心结。很粗糙地了解一点操作系统的理论知识,一知半解,已经无法满足当下程序员的口味和需求了。但要说深入剖析操作系统,又是大部分程序员都很惶恐的一件事。那如果是要读一遍操作系统源码,即便是代码量很少的 Linux 0.11 版本,那也跟要了命一样。当然,很多优秀的操作系统书籍都是以 Linux 0.11 这个经典版本为研究对象进行讲解的,比如《L...

weixin_41385912的博客 1810

ET篇:Google.Protobuf的学习(理解基本的使用流程)

据我目前所知,ET使用的数据交换协议是Google.Protobuf,所以今天就来学习一下,但是网上许多人都是以高下立判的方式讲解的,对新手小白很不友好,所以我今天就以纯小白的视角和大家一起学习 学习环境: .NET Core2.2 .NET Framework 4.7.2 Rider protobuf-csharp-3.7.0-rc-2 Google.Protobuf简介 prot...

设计师养成记 3564

用Python turtle库 绘制皮卡丘

Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。 turtle基础知识参考: https://gitchat.blog.youkuaiyun.com/article/details/90696190 https://blog.csdn.ne...

qq_36295856的博客 2万+

linux内核源码怎么读,linux内核源码阅读工具

一 linux内核源码阅读工具windows下当然首选source insight, 但是linux下就没有sourceinsight这么优秀的工具了,但是也有不少的替代品,但觉绝对部分人会选择vim+ctags+cscope的组合,还有部分人或选择wine中的sourceinsight或选择navigatror,当然对于代码阅读来说vim+ctags+cscope的组合还是比较好的一个选择方案,...

weixin_35725389的博客 244

从工业夹爪到Shadow Hand:一文看懂机器人灵巧手的硬件进化史(附避坑指南)

本文详细解析了机器人灵巧手从工业夹爪到Shadow Hand的硬件进化历程,涵盖刚性夹持器、自适应夹持器到多指灵巧手的技术突破。文章还提供了选购指南与技术避坑策略,帮助读者根据操作复杂度和环境结构化程度选择最适合的解决方案,适用于制造业、医疗和服务业等多个领域。

weixin_29074409的博客 484

Linux rpmsg源码分析

RPMsg是利用通道进行数据通信,先用 /dev/rpmsg_ctrl0 设备通过ioctrl生成端点,然后使用生成的端点进行通讯名称服务,VIRTIO_RPMSG_F_NS 宏,不开启就不使用名称服务,使用就需要m核心先发送信息才可以注册设备m核心LinuxRPMsg内核驱动框架涉及到RPMsg框架、virtio框架、remoteproc子系统和mailbox子系统mailbox,驱动开发者可自我注册client生成设备提供APP层直接进行核间通信分析物理层,创建virtio dev。

小伟的博客 1532

PRIDE PPP-AR软件实战:从ZTD解算到PWV反演的全流程避坑指南

本文详细解析了使用PRIDE PPP-AR软件进行GNSS数据处理的全流程,重点涵盖从ZTD解算到PWV反演的关键步骤与精度评估。文章深入剖析了软件部署、数据准备、参数配置中的常见“坑点”,并提供了与IGS ZTD及ERA5产品进行交叉验证的实用方法,旨在帮助用户高效、准确地获取高精度大气可降水量产品。

p8q9r0的博客 606

GEE开发之Landsat8计算MNDWI和数据分析

上一篇博客介绍了landsat8计算NDWI以及数据的获取,这次介绍MNDWI(改进的归一化差异水体指数)。

等待着冬天的风的博客 8440

如何读jdk源码以及查找linux本地方法,例如DefaultSelectorProvider

下载openjdk源码

weixin_44371237的博客 1476

符合DO-178C和DO-331的机载软件研制体系

DO-178C的核心要求软件开发生命周期:DO-178C定义了软件开发的生命周期过程,包括需求获取、设计、实现、验证和确认等。它为机载软件开发提供了一套系统化的指导,确保在开发过程中考虑安全性和可靠性。安全等级(DAL):根据系统的重要性,DO-178C将软件划分为不同的开发保障等级(DAL A到E),DAL A的要求最为严格,适用于关键安全功能,而DAL E的要求较低,适用于非关键功能。DO-178C在非基于模型软件开发中的应用。

qq_41854911的博客 980

idt源码是linux下的吗,怎样读Linux内核源代码.pdf

您所在位置:网站首页 > 海量文档&nbsp>&nbsp计算机&nbsp>&nbsplinux/Unix相关怎样读Linux内核源代码.pdf19页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。 下载提示1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。2.该文档...

weixin_39518840的博客 136

超十万字解读Spring AI实战:开篇

大模型技术正以惊人的速度改变世界,2025年的人工智能已不再是科幻,而是现实。大模型如ChatGPT等,正在重塑各行各业,降低技术门槛,使专业能力普及化。SpringAI的出现为Java开发者提供了桥梁,使其能在企业级系统中稳定运行AI,同时保持工程化思维。尽管SpringAI在生态、学习成本和性能上存在不足,但其企业级基因和国产化适配能力使其成为Java开发者的重要工具。本系列文章旨在介绍SpringAI的功能与特性,鼓励更多Java开发者参与AI实践,共同探索AI时代的无限可能。

liaokailin的专栏 1577

11、RK3566/3568 Android11切割屏幕 长条屏 显示

在使用 RK3566 平台进行 Android 11 开发时,遇到切割屏(长条屏)显示画面不全。本文将详细介绍如何配置,以及如何修改 HWComposer 来调整显示区域,解决图像缩放问题。我这边屏幕是lvds接口的,分辨率1920 1080实际的屏物理尺寸是1920x463。

qq_39451352的博客 252

【精通内核】Linux内核自旋锁实现原理与源码解析

不管是普通自旋锁还是读写自旋锁都是通过原子性命令来加减操作的;而对于读写锁而言,可通过将 lock 变量变为 0x01000000 值,然后后将第六位作为写锁标志位来使用。

小明的Java问道之路 3228

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Linux 源码】进程

首先进行了进程由来的讲解,在之后进行源码级别的深入先简单展示了下进程结构体的源码,以及任务状态段的源码,然后进行linux主函数进行进程创建的源码分析。🚀进程创建:通过特权级切换,切换到用户态,之后的代码都在用户态执行,切换的目的是程序代码保证不越级,造成未知的问题。之后进行fork父进程寻找未使用的pid & 判断是否是没有被使用的拷贝父进程的数据 & 设置当前程序所需的元数据信息做完这些后,会判断是否是子父进程,从而进行init子进程操作,还是pause父进程操作。

学习学习学习学习 1644

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

linux源码编译

语法结构command1command2target:要生成的文件(如program或.o对象文件)。:生成target所需的文件(如.c源文件)。command:生成target的具体命令(如示例设置编译器、优化选项等:CC = gcc。

xie__jin__cheng的博客 1818

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

开源项目实例源码_今年我读了四个开源项目的源码,来分享下心得

今年来看了 RocketMQ、Kafka、Dubbo 、Tomcat 的源码,之前也有读者询问过如何读源码,索性就来分享一下。其实还看了一点点 Linux、Redis、jdk8,这几个阅读的目的和上面几个是不同的,下面会提到。相信通过今天的分享你不会被源码轻易劝退,其实没什么,不就是代码吗?而且你一直在看源码,可能你没意识到,你看别人的代码不就是源码?你新入职一个公司要熟悉代码的时候不就...

weixin_31421613的博客 291
上一篇: 日本人的操作系统,差点儿统治世界
下一篇: 漫画 | 忍不了了!JavaScript实在太烂了!
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值