硬核子牙:我准备写一本《带你手写64位多核操作系统》的书!
哈喽,我是子牙,一个很卷的硬核男人
深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了三个课程:手写JVM、手写OS及带你用纯汇编写OS、手写64位多核OS及Linux内核…
没错!如标题所说,我准备写书了!你一定很想知道我为什么突然决定开始写书了吧,毕竟这几年那么多小伙伴建议我写书我都以忙推辞了…
原因一呢,当真盛情难却了!好几个出版社找我约书,有的出版社隔一阵子就来问一下,我实在不忍心拒绝了…
原因二呢,经过了两年半的奋斗,公司总算过了生存线,也有相对充足的现金流应对可能出现的突发情况,可以腾出点身心去好好写一本大家需要的、通俗易懂的书
你一定又想知道我准备写什么书吧?
你一定还想知道那么多书可以写,我偏偏选了这本吧
因为你只有手写一个64位多核操作系统,你才能将计算机专业课融会贯通:汇编、C语言、C++、数据结构、机组、计网、存储原理、数据库、操作系统…有了这个底子,那计算机世界于你,就通了,天高任鸟飞!基本你想写什么就写什么,想研究什么都可以去研究:Linux内核、Windows内核、病毒、外挂、Java虚拟机、MySQL源码、嵌入式…
还有一个原因,这本书刚好是我的新课【实战Linux内核】中的课程内容,比较熟,写起来比较快!当然,书肯定没有听课来得那么直观,所以学起来有困难又想拿下os的小伙伴,可以考虑加入我的直播课
这本书的内容还是非常多的,我给自己的目标是一周写2-3篇,争取明年年底能够出版,我一定可以做到的!我会先把写出来的内容放公众号【硬核子牙】供大家学习,为即将出版的书攒点人气。如果大家觉得有收获,希望大家帮我转发一下,不然到时候出版没人买,哎呀,那就老尴尬了呀~
本篇是开篇,我给大家整体讲一下这本书会讲哪些内容,大家看完,能学到哪些东西
01 关于本书
本书第一版是基于x64多核架构,后续版本会加入目前主流的CPU架构如:ARM、MIPS、RISC-V。有兴趣写书的、有实力的小伙伴可以加我微信【ziyaos】,备注【写书+CPU架构】,到时一起
你是不是想问:我不是搞x64架构的,我适合看吗?当然!其实对于一个os内核来说,体系架构相关的代码只占整个内核代码的10%可能都不到,绝大多数代码都是与架构无关的,比如:内存管理、进程线程、IPC、ITC、网络…当然,它们依托体系架构提供的机制才能运行,所以那10%是不可或缺的!
相对来说,x64架构是最复杂的,所以多学一种体系架构,多学一种最复杂的体系架构,对于后续的学习,价值是巨大的!不要恐惧学习,学的东西多了,掌握的思想多了,才能练出对某个行业的直觉,接受新知识新思想的能力才会更强!本人亲身经历如此!
本书是一本实战类书籍,即不是光看懂就可以的,你得跟着做,你得写出一个你自己的操作系统才算真正学会!关于学习环境,我之前写过一篇文章,需要的自取 传送门
那大家看完以后,能有哪些收获呢:
-
(最重要的)将汇编、C语言、OS融会贯通
-
深入理解汇编语言,尤其是执行流,能够熟练使用汇编语言编程
-
深入理解C语言,能脑补出C语言编译后的汇编代码及运行时的内存图
-
熟练使用汇编语言操控硬件,汇编、C语言之间的互调及开发时的调试
-
深刻理解CPU运行模式、CPU寻址、用户态内核态之间的互切
-
深刻理解屏幕驱动底层实现,printf、printk底层实现
-
深刻理解物理内存、虚拟内存、CPU的段页机制、CPU的运行逻辑
-
深刻理解中断的底层实现,键盘中断、时钟中断底层实现
-
深刻理解任务切换、线程上下文、系统调用
-
64位CPU的段页门机制、多核中断控制芯片APIC、多核任务切换机制……
我们在Linux平台上开发服务器端程序,我们是面向Linux提供的API编程;我们在Windows平台上开发给用户使用的程序,我们是面向Windows提供的API编程……那我们开发操作系统呢?是面向谁提供的API(机制)编程?是面向核心硬件如主板、CPU、内存、硬盘等提供的机制开发出来的
接下来给大家讲讲,操作系统是如何基于核心硬件提供的机制开发出来的
02 主板
最重要的肯定是主板了。我这里说主板重要不是因为CPU、内存条、硬盘、网卡…都插在上面,当然这也很重要!从手写os的角度来说,还有其他原因
其一,所有的os最开始肯定都是在硬盘中的,有的人可能会说:不是由boot loader将os载入内存的吗?是的,那是谁把boot loader运行起来的呢?对,就是主板!准确地说,是存储在主板上一个被称为【SPI Flash】的芯片中的程序。这里面存储的程序,以前叫BIOS程序,是配套MBR磁盘结构使用的,这套组合已经过时了。现在这里面存储的,就是鼎鼎大名的UEFI程序,当然也可以配套MBR磁盘结构使用,这样就有点大材小用了,它是配套GPT磁盘结构使用的
内存管理在os中是非常非常重要的,但是初始应该是你得先知道你的内存容量才能谈管理。那我们写os的时候,如何知道内存容量呢?当然方式有多种,但是最常见的就是使用BIOS提供的0x15号中断。这就引出了说主板是最重要的第二个原因,主板会为你填充初始的底层硬件中断处理例程,如果没有它,boot loader想将os载入内存是不可能做到的!
可以这样说,主板是os的母体,除了核心硬件,很多总线也非常重要,比如你可能听过这些:地址总线、数据总线、控制总线、PCIe…
忘了提主板上一个很重要的芯片:中断控制芯片。比如单核中断可编程控制芯片8259a、多核中断高级可编程控制芯片APIC
所有这些,都是写一个os必备的,也是我们这本书会重点讲的。我会告诉你如何用汇编去操控激活它们、操控它们,为你所用!期待不?
03 CPU
关于CPU,我之前已经写过一篇文章,建议大家一定要看看 传送门
所有的核心硬件里,CPU的东西是最多的,也是最难理解的,这是从学的角度。如果从教的角度,也是最难讲得通俗易懂的知识点,因为它本身就很抽象。从研究的角度来说,那简直是折磨,几乎没有资料,只能啃这玩意
Intel开发手册!!我口语不行,看英文文档贼溜,就是这么练出来的!看了好多好多英文文档了,感觉都形成惯性了…
04 内存
关于内存,我之前也写过一篇,建议大家一定要看看 传送门
其实从硬件角度来说,内存是没什么东西的,就是通过0x15号中断,或者UEFI提供的函数GetMemoryMap,或者通过解析ACPI表,来获取到内存信息,就没了。对了,还有一个,CPU的页机制,就是大家所熟知的虚拟内存。如果你听过CPU有段机制,是的,对内存也有一定的影响。但是这些都是非常简单的
但是很明显大家在研究Linux的内存管理的时候,发现远远比这个要复杂N倍,这个复杂度是os带来的,比如Linux中的伙伴算法、slab、VMA、缺页管理、页面回收、反向映射…这些东西你为什么很难理解呢?其实还是欠缺基础造成的。这些基础,都在这本书里!
任何行业,学习节奏是非常重要的,节奏对,事半功倍,节奏不对,事倍功半。其次重要的就是答疑,在答疑的过程中给你做知识串联。这也是学习要找名师的原因所在!
enjoy·结语
开篇就讲到这里吧,相信从这篇文章里,你已经知道了,这将是一段特别有趣的旅程,我应该会写得很快乐!你是不是想问你能不能学得很快乐,哈哈,那应该不可能,学习总是痛苦的,不痛苦那就不是在学习,是在复习!
因为痛苦,所以很多人不愿意学习,也就改变不了自己的命运,求而不得,最后生怨!何苦,何必…
对了,如果你汇编、C语言不是很好,可以看看我讲课的视频,免费分享
相关文章:

硬核子牙:我准备写一本《带你手写64位多核操作系统》的书!
哈喽,我是子牙,一个很卷的硬核男人 深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了三个课程:手写JVM、手写OS…...
c++访问修饰符与继承关系
前言 C提供了三个修饰符来限定类成员的被访问权限,分别是public、protected、private。通过限定访问权限,可以达到程序编写者想要解决的安全问题和权限问题。这种权限的设置对于安全是非常必要的。 不同修饰下的类成员被访问权限 类成员默认访问权限为…...

【RTOS学习】事件组 | 任务通知
🐱作者:一只大喵咪1201 🐱专栏:《RTOS学习》 🔥格言:你只管努力,剩下的交给时间! 事件组 | 任务通知 🚁事件组🛴大概原理🛴使用事件组的函数同步…...

【TES605】基于Virtex-7 FPGA的高性能实时信号处理平台
板卡概述 TES605是一款基于Virtex-7 FPGA的高性能实时信号处理平台,该平台采用1片TI的KeyStone系列多核DSP TMS320C6678作为主处理单元,采用1片Xilinx的Virtex-7系列FPGA XC7VX690T作为协处理单元,具有2个FMC子卡接口,各个处理节…...
Java Azure开发 使用已有token字符串创建GraphServiceClient
一、背景说明 在已有的项目中,已经获取到了Graph的AccessToken并保存在内存里面。所以不希望再通过client secret或者certificate去创建GraphServiceClient对象。希望使用现有的token字符串来创建初始化创建GraphServiceClient从而来实现Graph其他API功能。 二、具体…...

【Qt】消息机制和事件
文章目录 事件event()事件过滤器案例:检测鼠标事件案例:定时器 事件 事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事…...
爬虫模拟用户登录
使用爬虫模拟用户登录过程一般包括以下几个步骤: 导入所需的库:一般需要导入requests和BeautifulSoup库来发送HTTP请求和解析HTML。 import requestsfrom bs4 import BeautifulSoup 发送GET请求获取登录页面:使用requests库发送GET请求&#…...

asp.net企业招聘管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio计算机毕业设计
一、源码特点 asp.net 企业招聘管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语 言开发 asp.net企业招聘管理系统 二、功…...
艾泊宇产品战略:假如中国禁止直播带货,网红和店家该如何应对?
近日,印尼宣布将禁止直播带货,这一消息引起了广泛关注。有人欢喜有人忧,很多人为此拍手叫好,但也有很多人为此感到担忧。 今天,我们就来做一个战略推演,假设中国也禁止直播带货,入局直播带货者…...

C#调用C/C++从零深入讲解
C#调用非托管DLL从零深入讲解 一、结构对齐 结构对齐是C#调用非托管DLL的必备知识。 在没有#pragma pack声明下结构体内存对齐的规则为: 第一个成员的偏移量为0,每个成员的首地址为自身大小的整数倍子结构体的第一个成员偏移量应当是子结构体最大成员的整数倍结构体总大小…...

MyBatis篇---第五篇
系列文章目录 文章目录 系列文章目录一、MyBatis 中见过什么设计模式?二、MyBatis 中比如 UserMapper.java 是接口,为什么没有实现类还能调用? 一、MyBatis 中见过什么设计模式? 二、MyBatis 中比如 UserMapper.java 是接口&#…...

十三水中各种牌型判断LUA版
近期回归程序行业,由于业务需求需要做十三水游戏,什么是十三水就不在多讲,下面是判断十三水牌型的方法(带大小王) GetSSSPaiType {}; local this GetSSSPaiType; local huaseTable {}; local numTable {}; functi…...

2023.10.19 关于设计模式 —— 单例模式
目录 引言 单例模式 饿汉模式 懒汉模式 懒汉模式线程安全问题 分析原因 引言 设计模式为编写代码的 约定 和 规范 阅读下面文章前建议点击下方链接明白 对象 和 类对象 对象和类对象 单例模式 单个实例(对象)在某些场景中有特定的类,…...
4个鲜为人知的Python迭代过滤函数
在Python中,迭代器可以帮助你编写更多Pythonic的代码,并在处理长序列时提高效率,内置的itertools模块提供了几个有用的函数来创建迭代器。 当你只需要遍历迭代器、检索序列中的元素并对其进行处理,而无需将它们存储在内存中时&am…...

使用logger.error(“自定义错误信息描述“,e)将错误信息输出到日志文件上
之前一直用e.getMessage()来获取错误信息 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController public class ClassF…...

音乐的数字未来:虚拟演唱会与TikTok的巅峰融合
在数字时代,音乐产业正在经历着革命性的变革。虚拟演唱会与TikTok的融合正引领着音乐的数字未来,为艺术家、粉丝和创作者带来了前所未有的互动性和娱乐体验。本文将深入探讨这一巅峰融合,以揭示音乐产业的新前景。 虚拟演唱会的崛起 虚拟演唱…...

基于图像识别的跌倒检测算法 计算机竞赛
前言 🔥 优质竞赛项目系列,今天要分享的是 基于图像识别的跌倒检测算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/…...

NSS [SWPUCTF 2021 新生赛]PseudoProtocols
NSS [SWPUCTF 2021 新生赛]PseudoProtocols 先看题目,题目要求我们先找到hint.php。 看这个get请求头,我们先用php://filter协议读一波 得到提示,让我们前往/test2222222222222.php 源码如下 <?php ini_set("max_execution_time&qu…...

字节码进阶之JVM Attach API详解
字节码进阶之JVM Attach API详解 文章目录 字节码进阶之JVM Attach API详解附加到虚拟机加载代理和获取信息分离虚拟机 使用Attach API的基本步骤1. **获取虚拟机实例**:2. **附加到虚拟机**:3. **加载代理或获取信息**4. **从虚拟机分离**:…...

Kubernetes 部署 kubeflow1.6.1
前言 安装前请注意捋清楚版本关系,如kubeflow版本对应的K8S版本及其相关工具版本等等 我们此处使用的是是kubeflow-1.6.1和K8s-v1.22.8 单机部署 部署K8S 初始化Linux 1.关闭selinux setenforce 0 && sed -i "s/SELINUXenforcing/SELINUXdisable…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
《Offer来了:Java面试核心知识点精讲》大纲
文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...