手写操作系统 小班教学招生(二期)
解开你对计算机原理的疑惑,获得震慑全场的技术力
全程直播教学+录播复习+阶段练习,大牛带你亲手写代码
完整学习内核、软件、硬件知识体系,一课掌握三种操作系统

针对0基础用户开发,对标大厂前端工程师能力水平

从入门到全栈开发到项目构建,系统提升开发能力

针对大厂需求量身定制,一次性满足就业标准

第2期 2月6日开课
12 课程内容
6 个月 教学服务期限
50 小时 视频时长
65 学习人数
100% 好评度
12 课程内容
6 个月 教学服务期限
70000 手敲代码
2 企业及项目
16+ 实操案例
65 学习人数

¥4500

立即购买
阶段一
阶段二
阶段三
阶段四
阶段一:玩转CPU实模式、软盘,实现微内核
第1周   由浅入深掌握汇编,实现微内核
本周会带大家写一个微内核,让大家找到学习本门课程的乐趣。对于没有汇编基础的小伙伴,我会从零开始教。【购买后,访问第1周第1章第8节获取课程群】
课程安排:
tips:【购买后,访问第1周第1章第8节获取课程群】
一、开卷,实现操作系统微内核
1、写操作系统到底写什么?
2、精讲CPU两种运行模式:实模式、保护模式
3、借助BIOS中断操控屏幕
4、你写的内核如何运行?
5、实战:带你手写微内核
6、实战:使用bochs调试内核
7、NASM汇编脚本怎么写
二、汇编篇一:认识汇编全貌,玩转CPU寄存器
1、汇编、CPU架构、硬编码之间的关系
2、汇编、C语言、C++、Java之间的关系
3、MASM、NASM、ATT之间的关系
4、寄存器、CPU缓存、内存之间的关系
5、熟练掌握及使用CPU的三组寄存器
6、实战:在逆向工具OD上练习汇编
三、汇编篇二:手绘堆栈图,玩转系统执行流
1、实战:汇编语言实现while循环
2、while(true)的本质
3、深入理解系统执行流
4、破坏执行流:ROP技术
5、深入理解系统栈指令本质
6、手写执行堆栈图
7、实战:通过汇编实现ROP
第2周   突破512字节,让内核可以自由发挥
本周实现让我们的内核突破512字节,为后面开发强大的内核扫清阻碍。
课程安排:
一、汇编篇三:玩转调用约定,自构建执行流
1、实战:使用汇编实现标准执行流
2、汇编是如何处理形参与实参的?
3、汇编是如何处理局部变量的?
4、汇编是如何处理返回值的?
5、实战:演示不同平台的调用约定
6、实战:演示内联汇编与裸函数
二、玩转硬盘,让你的OS尽情发挥
1、聊聊CMOS、BIOS、UEFI、MBR、GPT、GRUB
2、了解软盘读写原理,实战读写软盘
3、实战:让你的OS突破512字节
4、了解硬盘工作原理、硬盘寻址方式
5、编写硬盘驱动,实现硬盘启动OS
6、如何实现硬盘异步读写、硬盘预读?
阶段二:进入保护模式,实现真正意义上的内核
第3周   进入保护模式,支持C语言开发内核与调试
本周目标是让我们的内核进入保护模式,开启强大功能的能力。
课程安排:
一、带你玩转GDT表、LDT表
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、带你玩转多级指针
第4周   深刻理解C语言,实现终端输出模块
本周带你深入理解C语言的指针,然后实现内核的第一个模块:打印输出模块。
课程安排:
一、带你玩转指针,C、汇编、内容融会贯通
1、带你深入理解结构体、联合体、宏
2、带你全面理解指针
3、指针常量与常量指针
4、指针与函数、数组、字符串
5、指针与结构体
6、结构体与硬编码
二、实现内核打印函数printk
1、保护模式下如何控制硬件
2、如何实现汇编与C语言的互调?
3、封装硬件操作接口
4、自实现可变参数stdarg
5、自实现字符串处理库string.h
6、自实现内核打印函数printk
阶段三:实现任务切换,进阶完整操作系统内核
第5周   中断机制、物理与虚拟内存管理
本周目标是让我们的内核有自己的中断机制、物理内存管理模块、虚拟内存管理模块。
课程安排:
一、接管BIOS中断,C语言实现时钟、键盘中断及异常
1、什么是操作系统层面的中断?
2、中断在操作系统中的用途
3、实战:编码激活中断控制芯片
4、实战:编码实现键盘中断
5、实战:编码实现时钟中断
6、实战:编码改变中断频率
二、检测内存,实现物理内存管理模块
1、操作系统是如何知道内存条的大小的?
2、如何编码实现对内存条的控制?
3、如何实现对物理内存的管理
4、实战:编码实现物理内存管理模块
5、物理内存的局限,分页虚拟内存诞生
6、实战:10-10-12分页模式
三、开启分页,实现虚拟内存管理模块
1、细讲CPU的四种分页模式
2、如何开启分页模式支持虚拟内存?
3、精讲10-10-12分页模式
4、精讲2-9-9-12分页模式
5、实战:编码实现页目录表
6、实战:编码实现虚拟内存管理模块
第6周   实现任务切换,系统调用模块
本周带你实现任务切换、深入理解主流OS系统调度的底层原理,然后让我们的操作系统进入用户态,实现系统调用模块。
课程安排:
一、带你手写协程,深入理解任务切换
1、如果让你实现协程你会怎么做?
2、实战:如何实现第一个协程
3、实战:给协程执行流传参
4、实战:手动调度多个协程
5、实战:模拟实现中断调度协程
6、实战:引入时间片控制调度顺序及频率
二、一切就绪,实现Linus当年的辉煌时刻:任务切换
1、如何让我们的内核支持任务切换
2、实战:实现任务的创建、调度、睡眠、退出
3、实战:引入linux同款调度算法,控制调度任务的顺序与频率
4、如何让我们的内核回到用户态
5、精讲系统调用的底层实现
6、实战:利用中断门实现系统调用
阶段四:继续进阶,让我们的OS有自己的文件系统
第7周   仿Linux EXT实现一个文件系统
本周带你仿Linux EXT文件系统底层实现与算法实现一个文件系统,并在此基础上实现虚拟内存的换入换出。
课程安排:
一、实现类linux EXT的文件系统
1、如何实现一个文件系统
2、识别硬盘,编写硬盘驱动
3、如何实现超级块、挂载分区
4、如何实现inode机制
5、如何实现缓冲区
二、实现文件IO
1、如何实现文件描述符机制
2、如何实现文件的open、close
3、如何实现目录操作相关API
4、如何实现文件操作相关API
5、如何抽象实现VFS
三、实现内存页的换入换出
1、深入理解缺页异常
2、如何利用缺页异常实现页换入换出
3、实战:利用缺页异常实现页换入换出

学习咨询

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

扫码加顾问老师 立即咨询

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

在线咨询

领取优惠

免费试听

领取大纲

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