首页 体系课 手写操作系统 小班教学招生(三期)
手写操作系统 小班教学招生(三期)
带你实现OS内核+网络协议栈,打通你的任督二脉
全程直播教学+录播复习+阶段练习,大牛带你亲手写代码
完整学习内核、软件、硬件知识体系,一课掌握三种操作系统
第3期 6月19日开课
12 课程内容
6 个月 教学服务期限
50 小时 视频时长
76 学习人数
满4800减1500 满6500减2000 满3800减1200 满2800减1000 满1800减600 满1500减400 满1200减300 满700减200 满400减100 满200减50

更多优惠券

12 课程内容
6 个月 教学服务期限
70000 手敲代码
2 企业及项目
16+ 实操案例
76 学习人数
活动到手价 ¥4099.00
¥5599
领券立减1500 立即购买
引进课程是慕课网为满足站内用户日异多样化的学习需求,面向行业严格筛选历经检验的精
品课程。引进课程在课程质量、售后服务、学习服务等环节均遵循慕课网的质量标准。课程
内容及服务均由课程提供方负责,由慕课网进行严格监督,以确保用户得到优质的服务。

小班教学,全程直播,早入手早受益

P8导师带你图梦,手写一个可运行的提作系统(已结班)
新增: 让你的操作系统有自己的文件系统(已结班)
新增:带你手写网络协议栈(开班时间6月19日)
新增:实现锁机制及IPC(开班时间待定)
超值
福利
免费 提供第一期课程视频
说明:每期直播授课3个月,讲师会调整新增模块。
新增内容只能随班学习,不赠送往期视频

通过亲手开发操作系统,掌握一系列硬核技能,搞懂计算机的本质!

为你的技术做背书
天天CRUD、空口谈架构,没办法让人看
到你的技术实力,写一个内核,震惊全场
打下深厚底层基础
技术市场竞争愈来愈激烈,通过操作系统的学
习打下深厚的底层基础,一眼看穿技术本质
搞懂计算机原理
你对计算机原理的一切疑惑,通过手写操
作系统,逐一解开
一次掌握三个内核
通过一个课程,掌握三个内核:Windows
内核、Linux内核、自己手写的内核

完整复现操作系统架构,带你突破技术瓶颈,完成从0到1的蜕变

八大专题循序渐进,由基础搭建到高阶操作,助你玩转操作系统

1、搭建操作系统框架,输出hello world
2、汇编篇一:先聊汇编全貌、再玩转寄存器
3、汇编篇二:手绘堆栈图,玩转系统执行流
4、汇编篇三:玩转函数,自构建执行流
5、让你的操作系统内核突破512字节
6、引入Makefile管理项目的编译链接
7、了解硬盘工作原理,编写硬盘驱动
8、为了扩展性,将硬盘作为操作系统启动盘
9、让所有虚拟机支持我们写的操作系统:bochs、gemu、VMware
课前:搭建windows内核双击调试环境
1、让我们的操作系统进入保护模式
2、深刻理解段选择子、段描述符、GDT表、LDT表
3、深刻理解CPL、RPL、DPL
4、单步调试windows内核,实战GDT表
5、用户态切内核态的秘密:中断门、调用门、任务门、陷阱门
6、实战调用门实现应用态切内核态再回应用态
1、编写代码进入保护模式,寻址突破1M瓶颈
2、配置环境,让我们的内核支持C语言开发与调试
3、带你玩转ELF文件、gcc、编译与链接
4、C语言基础与实战技巧
5、带你玩转指针
6、C语言如何开发项目
7、封装操作硬件的10接口
8、实现终端输出模块
9、实现字符串处理库string.h
10、实现可变参数、实现内核打印函数printk实现无限打印
11、C语言接管GDT,为后面更为方便地控制CPU权限做准备对应
的代码分支
1、玩转中断控制芯片,深刻理解硬中断与软中断
2、编码激活中断控制芯片,填充中断向量表,让我们的内核接管中断
3、编码实现键盘中断,为后面实现命令行做准备
4、编码实现时钟中断,为后面实现任务调度做准备
1、知根知底借助BIOS中断检测物理内存,获取内存条信息
2、仿linux实现物理内存管理模块
3、单步调试windows内核,深入理解101012分页
4、单步调试Windows内核,深入理解29912分页
5、仿linux实现虚拟内存管理模块
1、仿linux实现0号进程
2、实现由0号进程创建出1号进程、2号进程..
3、利用时钟中断与仿linux调度算法,实现多任务切换
4、加入任务优先级来控制任务调度频率、先后顺序
5、实现任务阻塞、睡眠、唤醒、退出
6、实现内核态的sleep函数
1、巧妙借助中断回到用户态
2、填充TSS,让系统完整进入用户态
3、构建中断门0x80,搭建系统调用框架
4、编码实现用户态输出函数write
5、编码实现printf,深刻理解系统调用
6、编码实现在用户态退出进程函数_exit
. Linux网络编程篇
1、教你写出稳定可靠的网络通信框架
2、教你手写实现I0多路复用器
. 手写网络协议栈
1、编码获取网卡信息,如Mac地址
2、编码与DHCP服务器通信,租赁IP地址
3、编码实现ARP、IP、TCP、UDP协议
4、编码实现网络数据包拦截、过滤、更改

不需要具备过高的技术基础,只要你有兴趣,就可以学!

课程由子牙老师亲自提供服务,每个人都能享受1V1私教般的答疑

子牙 技术专家
前阿里P8架构师,十余年技术经验,三年以上讲师经验,资深创业者。喜欢钻研各类高阶技术,对
Windows内核、Linux内核、Hotspot源码有很深的研究,拥有爆款课《手写JVM》等,深受学员的喜爱。
课程会在合适的节点穿插讲解操作系统内核知识、汇编、C语言,所以,你只要感兴趣,都可以学!如果
你对Windows内核、Linux内核有一定的了解,学起来会更加轻松!

一期学员真实评价,一门让你打通“任督二脉”的课程

适合人群
所有计算机行业从业人员
对OS、逆向等底层感兴趣的小伙伴
想成为技术大牛,掌握技术本质
技术要求
汇编、C、硬件、OS理论零基础入门
Windows内核、Linux有基本了解
环境参数
虚拟机环境VMware+ubuntu16
开发IDE用clion
运行环境qemu+bochs
其他如OD+CE+VS2013

课程大纲及学习周期安排 (详细版)

为保证课程内容紧跟市场变化,课程章节逐步开放,直至课程完结

阶段一: 玩转CPU实模式、软盘,实现微内核
  • 第1周
  • 第2周
由浅入深掌握汇编,实现微内核

本周会带大家写一个微内核,让大家找到学习本门课程的乐趣。对于没有汇编基础的小伙伴,我会从零开始教。【购买后,访问第1周第1章第8节获取课程群】

课程安排:
  1. tips:【购买后,访问第1周第1章第8节获取课程群】
  2. 一、开卷,实现操作系统微内核
  3. 1、写操作系统到底写什么?
  4. 2、精讲CPU两种运行模式:实模式、保护模式
  5. 3、借助BIOS中断操控屏幕
  6. 4、你写的内核如何运行?
  7. 5、实战:带你手写微内核
  8. 6、实战:使用bochs调试内核
  9. 7、NASM汇编脚本怎么写
  10. 二、汇编篇一:认识汇编全貌,玩转CPU寄存器
  11. 1、汇编、CPU架构、硬编码之间的关系
  12. 2、汇编、C语言、C++、Java之间的关系
  13. 3、MASM、NASM、ATT之间的关系
  14. 4、寄存器、CPU缓存、内存之间的关系
  15. 5、熟练掌握及使用CPU的三组寄存器
  16. 6、实战:在逆向工具OD上练习汇编
  17. 三、汇编篇二:手绘堆栈图,玩转系统执行流
  18. 1、实战:汇编语言实现while循环
  19. 2、while(true)的本质
  20. 3、深入理解系统执行流
  21. 4、破坏执行流:ROP技术
  22. 5、深入理解系统栈指令本质
  23. 6、手写执行堆栈图
  24. 7、实战:通过汇编实现ROP
突破512字节,让内核可以自由发挥

本周实现让我们的内核突破512字节,为后面开发强大的内核扫清阻碍。

课程安排:
  1. 一、汇编篇三:玩转调用约定,自构建执行流
  2. 1、实战:使用汇编实现标准执行流
  3. 2、汇编是如何处理形参与实参的?
  4. 3、汇编是如何处理局部变量的?
  5. 4、汇编是如何处理返回值的?
  6. 5、实战:演示不同平台的调用约定
  7. 6、实战:演示内联汇编与裸函数
  8. 二、玩转硬盘,让你的OS尽情发挥
  9. 1、聊聊CMOS、BIOS、UEFI、MBR、GPT、GRUB
  10. 2、了解软盘读写原理,实战读写软盘
  11. 3、实战:让你的OS突破512字节
  12. 4、了解硬盘工作原理、硬盘寻址方式
  13. 5、编写硬盘驱动,实现硬盘启动OS
  14. 6、如何实现硬盘异步读写、硬盘预读?
阶段二: 进入保护模式,实现真正意义上的内核
  • 第3周
  • 第4周
进入保护模式,支持C语言开发内核与调试

本周目标是让我们的内核进入保护模式,开启强大功能的能力。

课程安排:
  1. 一、带你玩转GDT表、LDT表
  2. 1、带你深入理解GDT表、LDT表
  3. 2、单步调试内核,让你看看GDT长啥样
  4. 3、带你深入理解段描述符
  5. 4、操作系统如何使用GDT表
  6. 5、实战:手动构建GDT表
  7. 6、单步调试OS内核环境如何搭建
  8. 二、编码进入保护模式
  9. 1、进入保护模式代码怎么写
  10. 2、如何用C语言开发内核
  11. 3、如何调试内核中的C代码
  12. 4、如何实现汇编、C语言互调
  13. 5、带你了解ELF,手写ELF文件解析器
  14. 6、带你了解gcc、编译、链接
  15. 7、实战:编码让OS进入保护模式
  16. 三、带你玩转C语言
  17. 1、如何精通C语言?
  18. 2、带你结合内存理解数据类型
  19. 3、带你从应用角度理解数组
  20. 4、带你从应用角度理解字符串
  21. 5、带你从应用角度理解函数
  22. 6、带你玩转多级指针
深刻理解C语言,实现终端输出模块

本周带你深入理解C语言的指针,然后实现内核的第一个模块:打印输出模块。

课程安排:
  1. 一、带你玩转指针,C、汇编、内容融会贯通
  2. 1、带你深入理解结构体、联合体、宏
  3. 2、带你全面理解指针
  4. 3、指针常量与常量指针
  5. 4、指针与函数、数组、字符串
  6. 5、指针与结构体
  7. 6、结构体与硬编码
  8. 二、实现内核打印函数printk
  9. 1、保护模式下如何控制硬件
  10. 2、如何实现汇编与C语言的互调?
  11. 3、封装硬件操作接口
  12. 4、自实现可变参数stdarg
  13. 5、自实现字符串处理库string.h
  14. 6、自实现内核打印函数printk
阶段三: 实现任务切换,进阶完整操作系统内核
  • 第5周
  • 第6周
中断机制、物理与虚拟内存管理

本周目标是让我们的内核有自己的中断机制、物理内存管理模块、虚拟内存管理模块。

课程安排:
  1. 一、接管BIOS中断,C语言实现时钟、键盘中断及异常
  2. 1、什么是操作系统层面的中断?
  3. 2、中断在操作系统中的用途
  4. 3、实战:编码激活中断控制芯片
  5. 4、实战:编码实现键盘中断
  6. 5、实战:编码实现时钟中断
  7. 6、实战:编码改变中断频率
  8. 二、检测内存,实现物理内存管理模块
  9. 1、操作系统是如何知道内存条的大小的?
  10. 2、如何编码实现对内存条的控制?
  11. 3、如何实现对物理内存的管理
  12. 4、实战:编码实现物理内存管理模块
  13. 5、物理内存的局限,分页虚拟内存诞生
  14. 6、实战:10-10-12分页模式
  15. 三、开启分页,实现虚拟内存管理模块
  16. 1、细讲CPU的四种分页模式
  17. 2、如何开启分页模式支持虚拟内存?
  18. 3、精讲10-10-12分页模式
  19. 4、精讲2-9-9-12分页模式
  20. 5、实战:编码实现页目录表
  21. 6、实战:编码实现虚拟内存管理模块
实现任务切换,系统调用模块

本周带你实现任务切换、深入理解主流OS系统调度的底层原理,然后让我们的操作系统进入用户态,实现系统调用模块。

课程安排:
  1. 一、带你手写协程,深入理解任务切换
  2. 1、如果让你实现协程你会怎么做?
  3. 2、实战:如何实现第一个协程
  4. 3、实战:给协程执行流传参
  5. 4、实战:手动调度多个协程
  6. 5、实战:模拟实现中断调度协程
  7. 6、实战:引入时间片控制调度顺序及频率
  8. 二、一切就绪,实现Linus当年的辉煌时刻:任务切换
  9. 1、如何让我们的内核支持任务切换
  10. 2、实战:实现任务的创建、调度、睡眠、退出
  11. 3、实战:引入linux同款调度算法,控制调度任务的顺序与频率
  12. 4、如何让我们的内核回到用户态
  13. 5、精讲系统调用的底层实现
  14. 6、实战:利用中断门实现系统调用
阶段四: 继续进阶:手写网络协议栈
  • 第7周
手写网络协议栈

本周通过带大家手写网络协议栈,让大家清晰地知道一个数据包是如何封装发出的,又是如何接收并解包的。

课程安排:
  1. 一、【Linux网络编程篇】教你写出稳定可靠的网络通信框架
  2. 1、socket的地位
  3. 2、先理解TCP/IP协议
  4. 3、再谈三次握手、四次挥手
  5. 4、抓包论证
  6. 5、敲代码实战
  7. 6、编写网络程序常见的坑及解决方案
  8. 二、【Linux网络编程篇】教你手写实现I0多路复用器
  9. 1、支持高并发的网络模型实现思路
  10. 2、实战演示多线程网络模型及问题
  11. 3、自己动手实现IO多路复用器
  12. 4、分析自实现多路复用器的缺点
  13. 5、在此基础上理解select、poll、epoll
  14. 6、实战select、epoll实现高并发服务端
  15. 7、epoll底层实现原理
  16. 三、【手写网络协议栈】编码搭建网络通信框架
  17. 1、编写网卡驱动,获取Mac地址
  18. 2、解析及构建以太网包头
  19. 3、解析及构建DHCP请求包、回应包,获取本机IP地址
  20. 4、解析及构建ARP请求包、回应包,获取目标机器Mac地址
  21. 5、解析及构建IP包,实现检验和算法
  22. 四、【手写网络协议栈】编码实现IP、TCP、UDP协议
  23. 1、解析及构建TCP协议,实现校验和算法
  24. 2、编码实现TCP三次握手
  25. 3、编码实现TCP四次挥手
  26. 4、实现我们自实现的协议与Linux网络程序通信
  27. 5、解析及构建UDP协议
学习目标
技术架构
课程安排
讲师介绍
课程大纲
返回顶部
常见问题

学习咨询

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

扫码加顾问老师 立即咨询

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

在线咨询

领取优惠

免费试听

领取大纲

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