手写x64多核,实战Linux内核,吃透OS本质(二期)
从0到1带你手写x86单核OS,x64多核OS,实战Linux内核内存机制
助力练就远超普通工程师的核心竞争力
技术专家亲授+小班直播教学+录播复习+阶段练习+贴心答疑服务
第2期 2月26日开课
不限期 视频有效期
12 课程内容
6 个月 教学服务期限
60 小时 视频时长
16 学习人数
12 课程内容
6 个月 教学服务期限
70000 手敲代码
2 企业及项目
16+ 实操案例
16 学习人数

¥5899

7天未学可退

加购物车 立即购买
点我免费体验
阶段一
阶段二
阶段三
阶段四
阶段五
阶段六
阶段一:【开课前试听视频】
开课前试听   直播试听课
通过观看试看视频,了解子牙老师的技术实力与教学风格
课程安排:
实战Linux内核课程介绍
1-1、汇编学到什么程度才能熟练使用
1-2、汇编、CPU架构、指令集、硬编码之间的关系
1-3、MASM、NASM、ATT、ARM之间的关系
1-4、寄存器、CPU缓存、内存之间的关系
2-1、如何创建内核项目(上)
2-2、实战常用汇编指令及伪指令
2-3、如何创建内核项目(下)
3-1、如何学习才能玩转执行流
3-2、带你深入理解栈指令本质
3-3、实战:画堆栈图与构建执行流
3-4、QA与作业
4-1、汇编知识点回顾
4-2、如何用汇编编写带参数的执行流
4-3、C语言的传参,汇编层面是如何实现的
5-1、如何精通C语言
5-2、结合内存理解数据类型
5-3、从应用角度理解数组
阶段二:玩转CPU实模式、硬盘,实现微内核
第一周   由浅入深掌握汇编,实现微内核
本周会带大家写一个微内核,让大家找到学习本门课程的乐趣。对于没有汇编基础的小伙伴,我会从零开始教【购买后,访问第1周第1章第3节获取课程群】
课程安排:
tips:【购买后,访问第1周第1章第3节获取课程群】
一、汇编篇一:认识汇编全貌,玩转CPU寄存器
1、汇编、CPU架构、硬编码之间的关系
2、汇编、C语言、C++、Java之间的关系
3、MASM、NASM、ATT之间的关系
4、寄存器、CPU缓存、内存之间的关系
5、熟练掌握及使用CPU的三组寄存器
6、实战:在逆向工具OD上练习汇编
二、开卷,实现操作系统微内核
1、写操作系统到底写什么
2、精讲CPU两种运行模式:实模式、保护模式
3、借助BIOS中断操控屏幕
4、你写的内核如何运行?
5、实战:带你手写微内核
6、实战:使用bochs调试内核
7、NASM汇编脚本怎么写
三、汇编篇二:手绘堆栈图,玩转系统执行流
1、实战:汇编语言实现while循环
2、while(true)的本质
3、深入理解系统执行流
4、破坏执行流:ROP技术
5、深入理解系统栈指令本质
6、手写执行堆栈图
7、实战:通过汇编实现ROP
第二周   突破512字节,让内核可以自由发挥
本周实现让我们的内核突破512字节,为后面开发强大的内核扫清阻碍
课程安排:
一、汇编篇三:玩转调用约定,自构建执行流
1、实战:使用汇编实现标准执行流
2、汇编是如何处理形参与实参的
3、汇编是如何处理局部变量的
4、汇编是如何处理返回值的
5、实战演示不同平台的调用约定
6、实战演示内联汇编与裸函数
二、玩转硬盘,让你的OS尽情发挥
1、聊聊CMOS、BIOS、UEFI、MBR、GPT、GRUB
2、了解软盘读写原理,实战读写软盘
3、实战:让你的OS突破512字节
4、了解硬盘工作原理、硬盘寻址方式
5、编写硬盘驱动,实现硬盘启动OS
6、如何实现硬盘异步读写、硬盘预读
阶段三:进入保护模式,实现真正意义上的内核
第三周   编码进入保护模式支持C语言开发内核&调试
本周目标是让我们的内核进入保护模式,开启强大功能的能力
课程安排:
一、带你玩转CPU的段机制
1、带你深入理解GDT表、LDT表
2、单步调试内核,让你看看GDT长啥样
3、带你深入理解段描述符
4、操作系统如何使用GDT表
5、实战:手动构建GDT表
6、单步调试OS内核环境如何搭建
二、编码进入保护模式
1、进入保护模式代码怎么写
2、如何用C语言开发内核
3、如何调试内核中的C代码
4、如何实现汇编、C语言互调
5、带你了解ELF,手写ELF文件解析器
6、带你了解gcc、编译、链接
7、实战:编码让OS进入保护模式
三、带你玩转C语言
1、如何精通C语言
2、结合内存理解数据类型
3、从应用角度理解数组
4、从应用角度理解字符串
5、从应用角度理解函数
6、玩转多级指针
第四周   深刻理解C语言,实现屏幕驱动
本周带你深入理解C语言的指针,然后实现内核的第一个模块:打印输出模块
课程安排:
一、带你玩转指针,C、汇编、内容融会贯通
1、带你深入理解结构体、联合体、宏
2、带你全面理解指针
3、指针常量与常量指针
4、指针与函数、数组、字符串
5、指针与结构体
6、结构体与硬编码
二、实现内核打印函数printk
1、保护模式下如何控制硬件
2、如何实现汇编与C语言的互调
3、封装硬件操作接口
4、自实现可变参数stdarg
5、自实现字符串处理库string.h
6、自实现内核打印函数printk
阶段四:进入64位模式,实现任务切换
第五周   进入64位模式实现物理内存及虚拟内存管理
本周目标是让我们的内核进入64位模式,实现物理内存管理模块、虚拟内存管理模块
课程安排:
一、让CPU进入64位长模式
1、如何让CPU进入64位模式
2、64位CPU的寄存器变化
3、64位模式下的段机制变化
4、如何知道CPU是否支持64位模式
5、编码让CPU进入64位模式
6、实现C语言开发与调试64位内核
二、检测内存,实现物理内存管理模块
1、操作系统是如何知道内存条的大小的
2、如何编码实现对内存条的控制
3、如何实现对物理内存的管理
4、实战:编码实现物理内存管理模块
5、物理内存的局限,分页虚拟内存诞生
6、实战:10-10-12分页模式
三、实现4-level paging虚拟内存管理
1、细讲自实现内核的内存结构
2、32-bit paging分页模式细讲
3、带你深入理解PAE paging分页模式
4、实战:编码实现4-level paging虚拟内存
5、如何将内核映射到虚拟内存的高端地址
6、实战:编码实现虚拟内存管理模块
第六周   实现64位模式下的任务切换
本周带你实现中断机制、任务切换,深入理解主流OS系统调度的底层原理
课程安排:
一、让我们的OS有自己的中断处理机制
1、中断在操作系统中的应用
2、CPU响应中断的流程
3、实战:编码激活中断控制芯片
4、实战:编码实现键盘中断
5、实战:编码实现时钟中断
6、实战:编码获取系统时间
二、实现任务切换(一)
1、如何正确理解进程、线程、协程、纤程
2、实现一套完整任务机制的完美节奏
3、操作系统是如何实现线程切换的
4、操作系统是如何实现进程切换的
5、实战:实现任务切换
6、实战:借助时钟中断实现任务调度
阶段五:实现多核任务切换(录播)
第六周   控制多核中断控制器,实现多核任务切换
本周教你如何控制多核中断控制器,在此基础上实现多核任务切换。助你深刻理解多核环境下的Linux多线程底层实现
课程安排:
一、实现任务切换(二)
1、实战:让线程运行在自己的栈里
2、实战:实现任务的退出
3、实战:引入优先级及时间片控制任务调度
4、实战:实现任务的sleep
5、实战:实现任务的wakeup
6、揭秘:Linux中的fork函数是如何实现的
二、带你玩转多核控制器:APIC
1、筑基:ACPI机制
2、筑基:APIC机制
3、实战:获取APIC操作地址
4、实战:虚拟映射APIC地址
5、筑基:多处理器初始化协议
6、实战:激活AP核
三、实现多核任务切换(一)
1、测量local APIC的时钟周期
2、实战:为每个CPU设置专属数据区
3、实战:通过local APIC调度任务
4、实战:通过IO APIC调度任务
5、实战:让每个线程在自己的栈中运行
6、实现多核任务切换框架
第六周   进入用户态,实现shell,实现系统调用
本周带你实现多核环境下的任务切换后半部分,进入用户态,实现shell、系统调用
课程安排:
一、实现多核任务切换(二)
1、实现多核环境下的任务调度
2、实战:引入锁控制并发
3、实战:引入时间片控制任务调度
4、实现多核环境下任务的阻塞与唤醒
5、实现多核环境下任务的退出
6、实现内核线程
二、进入用户态,实现系统调用,完成态切换
1、如何让CPU由内核态进入用户态
2、如何让CPU由用户态进入内核态
3、实战:编码实现CPU进入用户态
4、实战:编码实现中断门跨态
5、实战:编码实现syscall跨态
6、实战:编码实现系统调用及printf
阶段六:带你玩转Linux内核内存模块
第七周   编写Linux内核驱动,实战虚拟内存分页
本周带你学会Linux驱动开发,在此基础上,在实战中理解Linux内核的虚拟内存映射机制及内存管理机制
课程安排:
一、Linux驱动开发
1、搭建单步调试Linux5.4内核环境
2、筑基:字符设备理论
3、实战:创建字符设备
4、实战:自动创建设备节点
5、筑基:vfs工作原理
6、如何在Linux内核源码中增加模块
二、Linux内核内存管理之混沌初开
1、Linux内核如何借助e820获取内存信息
2、拓展:memblock分配器
3、如何理解ZONE_DMA、ZONE_DMA32、ZONE_HIGHMEM
4、筑基:伙伴系统算法
5、筑基:slab算法
6、实战及源码级讲解alloc_pages
三、玩转Linux内核之虚拟内存
1、实战:遍历进程页表
2、实战:解析页描述符
3、实战:模拟MMU工作机制
4、实战:打破规则,让不可执行的内存可以执行
5、实战:打破规则,让不可读写的内存可以读写
6、实战:通过内存映射,跨进程读写物理内存
第八周   在实战中深刻理解Linux内核内存管理
本周带你源码级理解Linux内存模块的核心函数,让你玩转Linux内核内存管理
课程安排:
一、玩转Linux内核内存管理
1、Linux用户进程之内存空间机制
2、实战讲解kmallc源码实现
3、实战讲解mmap源码实现
4、实战讲解Linux内核大页机制
5、从用户态到内核态,源码级分析malloc
6、从用户态到内核态,源码级分析free

学习咨询

选课、学习遇到问题?
扫码添加指导老师 1V1 帮助你!

扫码加顾问老师 立即咨询

意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师