第1章 课程概述 第2章 开发环境搭建 第3章 基本概念和原理 第4章 整体结构设计 第5章 调试信息输出 第6章 设计通用的链表结构 第7章 定长内存块管理 第8章 定长消息队列的实现 第9章 网络数据包结构设计 第10章 网络接口层设计 第11章 支持以太网协议 第12章 定时器的实现 第13章 支持ARP协议 第14章 初步支持IP协议 第15章 支持ICMP协议 第16章 IP数据报的分片与重组 第17章 设计自己的ping命令 第18章 原始套接字 RAW Socket接口实现 第19章 允许通过路由访问Internet 第20章 支持UDP协议 第21章 TCP协议之建立基本的第…...
1.课前准备 2.开发环境准备 3.前置课(选学,介绍x86保护模式下的编程) 4.引导程序:接管控制权 5.加载器loader的实现 6.中断与异常处理 7.日志与printf格式化输出 8.实现简单的进程切换 9.实现链表数据结构 10.进程的管理与延时 11.进程间的同步与互斥 12.虚拟内存管理和保护模式 13.隔离操作系统与进程 14.建立系统调用 15.新进程的加载与创建 16.使用c标准库中的printf输出 17.使用控制台与键盘进行输入输出 18.设备管理与文件系统 19.实现一个命令行解释器 20.使用文件系统管理硬件设备 21.磁盘与fat16文件系统 22.课程总结
📢 以下文件由夸克网盘用户于2025-07-17分享(文件数量过多时仅展示部分文件)
李述铜从0手写自己的Linux x86操作系统12.26GB
1.课前准备68.05MB
(1.2)--资料下载链接.pdf795.36KB
(1.4)--常见问题.pdf4.13MB
[1.1]--课程简介.mp435.83MB
[1.3]--资料下载说明.mp427.31MB
2.开发环境准备266.11MB
(2.2)--注意事项(必看!!!).pdf1.21MB
[2.1]--开发工具总览.mp411.86MB
[2.3]--Windows平台.mp4129.27MB
[2.4]--Linux平台(ubuntu).mp474.33MB
[2.5]--Mac平台.mp449.44MB
3.前置课(选学,介绍x86保护模式下的编程)1.45GB
(3.1)--课程说明.pdf951.42KB
[3.2]--课程简介.mp434.66MB
[3.3]--开发环境安装(与前面部分内容有重复).mp447.27MB
[3.4]--工程组织结构.mp420.54MB
[3.5]--让计算机跑我们的操作系统.mp433.29MB
[3.6]--x86处理器编程模型(1).mp441.39MB
[3.7]--x86处理器编程模型(2).mp420.53MB
[3.8]--加载自己的剩余部分(1).mp415.2MB
[3.9]--加载自己的剩余部分(2).mp429.26MB
[3.10]--进入保护模式(1).mp453.83MB
[3.11]--进入保护模式(2).mp466.96MB
[3.12]--进入保护模式(3).mp447.35MB
[3.13]--打开分页机制(1).mp451.86MB
[3.14]--打开分页机制(2).mp452.62MB
[3.15]--打开分页机制(3).mp472.61MB
[3.16]--开启定时中断(1).mp448.73MB
[3.17]--开启定时中断(2).mp450.76MB
[3.18]--开启定时中断(3).mp468.81MB
[3.19]--切换至低特权级(1).mp430.29MB
[3.20]--切换至低特权级(2).mp468.5MB
[3.21]--切换至低特权级(3).mp440.11MB
[3.22]--两个任务的切换(1).mp429.74MB
[3.23]--两个任务的切换(2).mp4104.06MB
[3.24]--两个任务的切换(3).mp457.8MB
[3.25]--增加系统调用(1)..mp425.65MB
[3.26]--增加系统调用(2)..mp464.94MB
[3.27]--增加系统调用(3)..mp496.82MB
[3.28]--使用LDT(1).mp457.31MB
[3.29]--使用LDT(2).mp483.82MB
[3.30]--使用LDT(3).mp416.68MB
[3.31]--课程总结.mp456.56MB
4.引导程序:接管控制权261.36MB
[4.1]--计算机启动流程简介.mp433.3MB
[4.2]--接管运行控制权.mp430.73MB
[4.3]--创建可引导的启动程序.mp453.21MB
[4.4]--初始化引导程序(1).mp419.63MB
[4.5]--初始化引导程序(2).mp414.47MB
[4.6]--使用BIOS中断显示字符.mp416.33MB
[4.7]--使用BIOS中断读取磁盘.mp438.87MB
[4.8]--进入C语言环境并跳到loader(1).mp423.37MB
[4.9]--进入C语言环境并跳到loader(2).mp431.44MB
5.加载器loader的实现629.64MB
[5.1]--利用内联汇编显示字符串.mp453.28MB
[5.2]--检测内存容量(1).mp429.02MB
[5.3]--检测内存容量(2).mp443.9MB
[5.4]--切换进保护模式(1)-1.mp423.45MB
[5.5]--切换进保护模式(1)-2.mp424.78MB
[5.6]--切换进保护模式(1)-3.mp422.29MB
[5.7]--切换进保护模式(2)-1.mp423.24MB
[5.8]--切换进保护模式(2)-2.mp431.36MB
[5.9]--使用LBA模式读取磁盘.mp451.81MB
[5.10]--创建内核工程.mp457.97MB
[5.11]--向内核传递启动信息(1).mp434.63MB
[5.12]--向内核传递启动信息(2).mp438.82MB
[5.13]--代码段数据段与链接脚本(1).mp444.31MB
[5.14]--代码段数据段与链接脚本(2).mp426.71MB
[5.15]--加载内核映像文件(1).mp440.42MB
[5.16]--加载内核映像文件(2).mp483.65MB
6.中断与异常处理876.79MB
[6.1]--创建GDT表及其表项(1).mp437MB
[6.2]--创建GDT表及其表项(2).mp451.09MB
[6.3]--保护模式下的内存管理简介.mp441.88MB
[6.4]--重新加载GDT(1).mp477.72MB
[6.5]--重新加载GDT(2).mp445.15MB
[6.6]--触发异常与异常简介.mp420.69MB
[6.7]--添加中断门描述符.mp435.98MB
[6.8]--初始化IDT表.mp429.85MB
[6.9]--捕获除0异常(1).mp442.31MB
[6.10]--捕获除0异常(2).mp436.12MB
[6.11]--解析异常栈信息(1).mp424.91MB
[6.12]--解析异常栈信息(2).mp439.68MB
[6.13]--利用宏重用异常处理代码(1).mp439.42MB
[6.14]--利用宏重用异常处理代码(2).mp443.79MB
[6.15]--处理其它类型的异常(1).mp434.56MB
[6.16]--处理其它类型的异常(2).mp467.82MB
[6.17]--初始化中断控制器(1).mp431.58MB
[6.18]--初始化中断控制器(2).mp449.38MB
[6.19]--中断的打开与关闭.mp423.23MB
[6.20]--启动定时器并开中断(1).mp418.74MB
[6.21]--启动定时器并开中断(2).mp446.48MB
[6.22]--启动定时器并开中断(3).mp439.43MB
7.日志与printf格式化输出431.95MB
[7.1]--创建日志输出接口.mp438.57MB
[7.2]--实现基本的信息输出.mp450.95MB
[7.3]--实现基本的信息输出(1).mp413.07MB
[7.4]--实现基本的信息输出(2).mp437.94MB
[7.5]--若干字符串和内存操作函数实现.mp446.63MB
[7.6]--实现字符串的格式化输出(1).mp449.34MB
[7.7]--实现字符串的格式化输出(2).mp422.24MB
[7.8]--支持整数的格式化(1).mp438.88MB
[7.9]--支持整数的格式化(2).mp440.2MB
[7.10]--在异常处理程序中打印信息..mp443.45MB
[7.11]--利用assert辅助调试.mp450.67MB
8.实现简单的进程切换363.79MB
[8.1]--创建两个小任务.mp424.64MB
[8.2]--添加任务状态段(1).mp433.8MB
[8.3]--添加任务状态段(2).mp428.44MB
[8.4]--任务的简单初始化(1).mp429.14MB
[8.5]--任务的简单初始化(2)-1.mp425.65MB
[8.6]--任务的简单初始化(2)-2.mp445.73MB
[8.7]--简单双任务相互切换(1).mp419.13MB
[8.8]--简单双任务相互切换(2).mp447.18MB
[8.9]--简单双任务相互切换(3).mp429.91MB
[8.10]--另一种任务切换方法(1).mp435.31MB
[8.11]--另一种任务切换方法(2).mp444.86MB
9.实现链表数据结构194.03MB
[9.1]--定义结点和链表.mp447.24MB
[9.2]--实现链表的查询函数.mp413.77MB
[9.3]--链表的两种插入.mp436.74MB
[9.4]--链表的两种删除.mp445.12MB
[9.5]--获取结点所在的结构(1).mp410.26MB
[9.6]--获取结点所在的结构(2).mp440.9MB
10.进程的管理与延时374.73MB
[10.1]--添加任务管理器.mp448.49MB
[10.2]--将任务加入就绪队列.mp437.9MB
[10.3]--进程主动放弃CPU.mp445.29MB
[10.4]--让进程按时间片运行(1).mp48.5MB
[10.5]--让进程按时间片运行(2).mp443.62MB
[10.6]--临界资源及简单的保护(1).mp420.47MB
[10.7]--临界资源及简单的保护(2).mp432.09MB
[10.8]--临界资源及简单的保护(3).mp424.02MB
[10.9]--让进程能够延时运行.mp468.76MB
[10.10]--让所有进程都能延时.mp445.6MB
11.进程间的同步与互斥181.23MB
[11.1]--计数信号量及其初始化.mp431.8MB
[11.2]--发送和等待信号.mp433.19MB
[11.3]--使用计数信号量.mp439.98MB
[11.4]--互斥锁及其初始化.mp416.63MB
[11.5]--互斥锁的加解锁.mp428.65MB
[11.6]--应用互斥锁.mp430.98MB
12.虚拟内存管理和保护模式752.23MB
[12.1]--内存管理问题.mp436.71MB
[12.2]--位图数据结构与初始化.mp428.7MB
[12.3]--位图位的分配(1).mp46.02MB
[12.4]--位图位的分配(2).mp439.39MB
[12.5]--创建地址分配结构(1).mp424.85MB
[12.6]--创建地址分配结构(2).mp433.75MB
[12.7]--规划内存空间的分配(1).mp48.22MB
[12.8]--规划内存空间的分配(2).mp434.45MB
[12.9]--规划内存空间的分配(3).mp433.51MB
[12.10]--内存分页机制介绍.mp424.74MB
[12.11]--开启内存分页机制(1).mp426.91MB
[12.12]--开启内存分页机制(2)-1.mp414.82MB
[12.13]--开启内存分页机制(2)-2.mp441.63MB
[12.14]--开启内存分页机制(2)-3.mp420.7MB
[12.15]--创建内核页表(1)-建立映射表(1).mp416.52MB
[12.16]--创建内核页表(1)-建立映射表(2).mp447.46MB
[12.17]--创建内核页表(2)-页目录和页表结构.mp450.76MB
[12.18]--创建内核页表(3)-建立映射表(1).mp422.05MB
[12.19]--创建内核页表(3)-建立映射表(2).mp449.96MB
[12.20]--创建内核页表(3)-建立映射表(3).mp450.14MB
[12.21]--创建内核页表(4)-添加权限处理.mp438.22MB
[12.22]--为进程创建页表(1).mp426MB
[12.23]--为进程创建页表(2).mp476.7MB
13.隔离操作系统与进程584.52MB
[13.1]--隔离操作系统与进程(1)-代码分离.mp475.22MB
[13.2]--隔离操作系统与进程(2)-地址分离.mp471.44MB
[13.3]--隔离操作系统与进程(3)-搬运代码.mp470.92MB
[13.4]--调整应用的特权级(1).mp436.7MB
[13.5]--调整应用的特权级(2).mp445.17MB
[13.6]--调整异常处理函数(1).mp437.1MB
[13.7]--调整异常处理函数(2).mp478.3MB
[13.8]--修改空闲任务的特权级.mp428.52MB
[13.9]--切换至应用进程的特权级为最低.mp454.78MB
[13.10]--为进程添加特权级0的栈空间.mp486.38MB
14.建立系统调用366.24MB
[14.1]--创建调用门.mp460.44MB
[14.2]--实现系统调用的调用和返回(1).mp456.26MB
[14.3]--实现系统调用的调用和返回(2).mp426.67MB
[14.4]--实现msleep系统调用(1).mp454.18MB
[14.5]--实现msleep系统调用(2).mp419.43MB
[14.6]--实现getid系统调用.mp463.59MB
[14.7]--实现pint_msg调用.mp422.85MB
[14.8]--使用int$0x80实现系统调用.mp462.82MB
15.新进程的加载与创建866.45MB
[15.1]--实现fork系统调用(1)-添加调用接口.mp438.38MB
[15.2]--实现fork系统调用(2)-分配任务块.mp433.19MB
[15.3]--实现fork系统调用(3)-初始化任务块.mp4121.47MB
[15.4]--实现fork系统调用(4)-复制进程地址空间.mp4107.83MB
[15.5]--实现exec系统调用(1)-创建一个空应用.mp469.54MB
[15.6]--实现exec系统调用(2)-增加空的exec调用.mp425.02MB
[15.7]--实现exec系统调用(3)-添加虚似文件访问接口.mp478.75MB
[15.8]--实现exec系统调用(4)-解析并加载elf文件.mp4144.17MB
[15.9]--实现exec系统调用(5)-分配栈并进入进程执行.mp462.42MB
[15.10]--实现exec系统调用(6)-为进程传递参数(1).mp419.87MB
[15.11]--实现exec系统调用(6)-为进程传递参数(2).mp4110.61MB
[15.12]--添加sys_yield()系统调用.mp455.2MB
16.使用c标准库中的printf输出338.45MB
[16.1]--增加文件系统调用(1).mp477.62MB
[16.2]--增加文件系统调用(2).mp432.85MB
[16.3]--导入newlibc并调用printf.mp470.67MB
[16.4]--为malloc实现sys_brk调用(1).mp48.94MB
[16.5]--为malloc实现sys_brk调用(2).mp4114.52MB
[16.6]--简单的printf调用实现.mp433.85MB
17.使用控制台与键盘进行输入输出842.48MB
[17.1]--控制台简介与初始化(1).mp424.67MB
[17.2]--控制台简介与初始化(2).mp441.97MB
[17.3]--在控制台上显示字符串.mp483.54MB
[17.4]--处理换行和清屏.mp491.87MB
[17.5]--设置光标并重定向日志输出到显示器.mp447.15MB
[17.6]--有趣的转义字符串以及删除字符.mp446.84MB
[17.7]--保存并恢复光标位置.mp494.33MB
[17.8]--更新显示字体的颜色.mp491.49MB
[17.9]--移动光标位置及清屏.mp466.53MB
[17.10]--键盘初始化.mp444.86MB
[17.11]--借助按键映射表进行键值转换(1).mp429.85MB
[17.12]--借助按键映射表进行键值转换(2).mp480.06MB
[17.13]--处理caplock键.mp443.37MB
[17.14]--处理其它特殊功能键.mp455.95MB
18.设备管理与文件系统805.1MB
[18.1]--设备管理框架简介.mp437.49MB
[18.2]--增加tty设备.mp426.59MB
[18.3]--实现dev层接口操作.mp454.24MB
[18.4]--为tty设备添加结构描述.mp436.78MB
[18.5]--实现tty设备的打开.mp451.59MB
[18.6]--通过tty设备写显示数据(1).mp418.06MB
[18.7]--通过tty设备写显示数据(2).mp4101.97MB
[18.8]--文件系统简介及初始化.mp443.63MB
[18.9]--为进程添加文件打开表.mp430.8MB
[18.10]--打开tty设备并向其写入数据.mp486.72MB
[18.11]--从tty读取键值字符串并显示.mp494.59MB
[18.12]--打开标准输出及错误输出文件.mp463.9MB
[18.13]--允许切换tty窗口(1).mp49.34MB
[18.14]--允许切换tty窗口(2).mp483.07MB
[18.15]--为每个tty窗口创建进程并保护.mp466.32MB
19.实现一个命令行解释器516.51MB
[19.1]--初始化命令行解释器.mp466.29MB
[19.2]--实现help命令的解析.mp479.74MB
[19.3]--执行echo命令并给输出加点颜色(1).mp452.66MB
[19.4]--执行echo命令并给输出加点颜色(2).mp457.08MB
[19.5]--为进程增加exit接口.mp469.83MB
[19.6]--为进程增加wait接口(1).mp439.38MB
[19.7]--为进程增加wait接口(2).mp477.26MB
[19.8]--为进程增加wait接口(3).mp422.6MB
[19.9]--让子进程继承父进程已打开的文件.mp451.66MB
20.使用文件系统管理硬件设备443.98MB
[20.1]--描述一个文件系统.mp457.79MB
[20.2]--挂载设备文件系统(1).mp412.49MB
[20.3]--挂载设备文件系统(2).mp441.04MB
[20.4]--挂载设备文件系统(3).mp472.58MB
[20.5]--打开devtty0文件(1)-只打开devfs中的文件.mp4108.45MB
[20.6]--打开devtty0文件(2)-更通用的打开方式.mp474.19MB
[20.7]--往devtty0读写数据.mp477.43MB
21.磁盘与fat16文件系统1.83GB
[21.1]--磁盘基本特性简介.mp447.88MB
[21.2]--识别系统中已有的磁盘(1).mp416.97MB
[21.3]--识别系统中已有的磁盘(2).mp427.68MB
[21.4]--识别系统中已有的磁盘(3).mp441.26MB
[21.5]--识别系统中已有的磁盘(4).mp455.47MB
[21.6]--解析磁盘分区表(1).mp413.69MB
[21.7]--解析磁盘分区表(2).mp475.76MB
[21.8]--增加磁盘设备管理.mp466.42MB
[21.9]--实现磁盘的读取和写入(1).mp467.06MB
[21.10]--实现磁盘的读取和写入(2).mp442.61MB
[21.11]--FAT16文件系统简介(1).mp440.31MB
[21.12]--FAT16文件系统简介(2).mp439.79MB
[21.13]--挂载FAT16文件系统(1).mp458.55MB
[21.14]--挂载FAT16文件系统(2).mp458.17MB
[21.15]--挂载FAT16文件系统(3).mp436.75MB
[21.16]--遍历目录命令ls的实现(1)-添加系统调用接口.mp463.74MB
[21.17]--遍历目录命令ls的实现(2)-列出虚假的目录内容.mp461.19MB
[21.18]--遍历目录命令ls的实现(3)-列出真实的目录内容(1).mp439.48MB
[21.19]--遍历目录命令ls的实现(3)-列出真实的目录内容(2).mp441.5MB
[21.20]--遍历目录命令ls的实现(3)-列出真实的目录内容(3).mp482.7MB
[21.21]--文件查看命令less的实现(1)-打开文件.mp490.89MB
[21.22]--文件查看命令less的实现(2)-显示部分文件内容.mp480.79MB
[21.23]--文件查看命令less的实现(3)-显示全部文件内容.mp468.6MB
[21.24]--文件查看命令less的实现(4)-逐行显示文件内容.mp487.78MB
[21.25]--通过文件系统加载shell.mp482.59MB
[21.26]--让shell加载应用程序运行.mp462.1MB
[21.27]--应用运行异常时强制中断运行.mp447.13MB
[21.28]--文件复制命令cp的实现(1)-创建新文件.mp487.04MB
[21.29]--文件复制命令cp的实现(2)-删除文件.mp468.5MB
[21.30]--文件复制命令cp的实现(3)-文件写入(1).mp467.03MB
[21.31]--文件复制命令cp的实现(4)-文件写入(2).mp4109.52MB
[21.32]--最后的调整.mp440.56MB
22.课程总结35.27MB
[22.1]--设计总结.mp435.27MB
共268个文件,合计:12.26GB


5积分
