课程信息

网易云课堂《李术铜-从0手写自己的Linux x86操作系统》课程,由李术铜主讲,深入讲解从零开始手写Linux x86操作系统的全过程。课程涵盖引导加载器编写、内核开发、设备驱动、文件系统、网络支持等关键步骤,结合实战案例,帮助学员掌握操作系统设计与实现的核心技能,提升系统编程能力。

网易云课堂-李述铜 从0手写自己的Linux x86操作系统

课程目录

├── {1}--课前准备
│   ├── (1.2)--资料下载链接.pdf 0.78M
│   ├── (1.4)--常见问题.pdf 4.13M
│   ├── [1.1]--课程简介.mp4 35.83M
│   └── [1.3]--资料下载说明.mp4 27.31M
├── {2}--开发环境准备
│   ├── (2.2)--注意事项(必看!!!).pdf 1.21M
│   ├── [2.1]--开发工具总览.mp4 11.86M
│   ├── [2.3]--Windows平台.mp4 129.27M
│   ├── [2.4]--Linux平台(ubuntu).mp4 74.33M
│   └── [2.5]--Mac平台.mp4 49.44M
├── {3}--前置课(选学,介绍x86保护模式下的编程)
│   ├── (3.1)--课程说明.pdf 0.93M
│   ├── [3.2]--课程简介.mp4 34.66M
│   ├── [3.3]--开发环境安装(与前面部分内容有重复).mp4 47.27M
│   ├── [3.4]--工程组织结构.mp4 20.54M
│   ├── [3.5]--让计算机跑我们的操作系统.mp4 33.29M
│   ├── [3.6]--x86处理器编程模型(1).mp4 41.39M
│   ├── [3.7]--x86处理器编程模型(2).mp4 20.53M
│   ├── [3.8]--加载自己的剩余部分(1).mp4 15.20M
│   ├── [3.9]--加载自己的剩余部分(2).mp4 29.26M
│   ├── [3.10]--进入保护模式(1).mp4 53.83M
│   ├── [3.11]--进入保护模式(2).mp4 66.96M
│   ├── [3.12]--进入保护模式(3).mp4 47.35M
│   ├── [3.13]--打开分页机制(1).mp4 51.86M
│   ├── [3.14]--打开分页机制(2).mp4 52.62M
│   ├── [3.15]--打开分页机制(3).mp4 72.61M
│   ├── [3.16]--开启定时中断(1).mp4 48.73M
│   ├── [3.17]--开启定时中断(2).mp4 50.76M
│   ├── [3.18]--开启定时中断(3).mp4 68.81M
│   ├── [3.19]--切换至低特权级(1).mp4 30.29M
│   ├── [3.20]--切换至低特权级(2).mp4 68.50M
│   ├── [3.21]--切换至低特权级(3).mp4 40.11M
│   ├── [3.22]--两个任务的切换(1).mp4 29.74M
│   ├── [3.23]--两个任务的切换(2).mp4 104.06M
│   ├── [3.24]--两个任务的切换(3).mp4 57.80M
│   ├── [3.25]--增加系统调用(1)..mp4 25.65M
│   ├── [3.26]--增加系统调用(2)..mp4 64.94M
│   ├── [3.27]--增加系统调用(3)..mp4 96.82M
│   ├── [3.28]--使用LDT(1).mp4 57.31M
│   ├── [3.29]--使用LDT(2).mp4 83.82M
│   ├── [3.30]--使用LDT(3).mp4 16.68M
│   └── [3.31]--课程总结.mp4 56.56M
├── {4}--引导程序:接管控制权
│   ├── [4.1]--计算机启动流程简介.mp4 33.30M
│   ├── [4.2]--接管运行控制权.mp4 30.73M
│   ├── [4.3]--创建可引导的启动程序.mp4 53.21M
│   ├── [4.4]--初始化引导程序(1).mp4 19.63M
│   ├── [4.5]--初始化引导程序(2).mp4 14.47M
│   ├── [4.6]--使用BIOS中断显示字符.mp4 16.33M
│   ├── [4.7]--使用BIOS中断读取磁盘.mp4 38.87M
│   ├── [4.8]--进入C语言环境并跳到loader(1).mp4 23.37M
│   └── [4.9]--进入C语言环境并跳到loader(2).mp4 31.44M
├── {5}--加载器loader的实现
│   ├── [5.1]--利用内联汇编显示字符串.mp4 53.28M
│   ├── [5.2]--检测内存容量(1).mp4 29.02M
│   ├── [5.3]--检测内存容量(2).mp4 43.90M
│   ├── [5.4]--切换进保护模式(1)-1.mp4 23.45M
│   ├── [5.5]--切换进保护模式(1)-2.mp4 24.78M
│   ├── [5.6]--切换进保护模式(1)-3.mp4 22.29M
│   ├── [5.7]--切换进保护模式(2)-1.mp4 23.24M
│   ├── [5.8]--切换进保护模式(2)-2.mp4 31.36M
│   ├── [5.9]--使用LBA模式读取磁盘.mp4 51.81M
│   ├── [5.10]--创建内核工程.mp4 57.97M
│   ├── [5.11]--向内核传递启动信息(1).mp4 34.63M
│   ├── [5.12]--向内核传递启动信息(2).mp4 38.82M
│   ├── [5.13]--代码段数据段与链接脚本(1).mp4 44.31M
│   ├── [5.14]--代码段数据段与链接脚本(2).mp4 26.71M
│   ├── [5.15]--加载内核映像文件(1).mp4 40.42M
│   └── [5.16]--加载内核映像文件(2).mp4 83.65M
├── {6}--中断与异常处理
│   ├── [6.1]--创建GDT表及其表项(1).mp4 37.00M
│   ├── [6.2]--创建GDT表及其表项(2).mp4 51.09M
│   ├── [6.3]--保护模式下的内存管理简介.mp4 41.88M
│   ├── [6.4]--重新加载GDT(1).mp4 77.72M
│   ├── [6.5]--重新加载GDT(2).mp4 45.15M
│   ├── [6.6]--触发异常与异常简介.mp4 20.69M
│   ├── [6.7]--添加中断门描述符.mp4 35.98M
│   ├── [6.8]--初始化IDT表.mp4 29.85M
│   ├── [6.9]--捕获除0异常(1).mp4 42.31M
│   ├── [6.10]--捕获除0异常(2).mp4 36.12M
│   ├── [6.11]--解析异常栈信息(1).mp4 24.91M
│   ├── [6.12]--解析异常栈信息(2).mp4 39.68M
│   ├── [6.13]--利用宏重用异常处理代码(1).mp4 39.42M
│   ├── [6.14]--利用宏重用异常处理代码(2).mp4 43.79M
│   ├── [6.15]--处理其它类型的异常(1).mp4 34.56M
│   ├── [6.16]--处理其它类型的异常(2).mp4 67.82M
│   ├── [6.17]--初始化中断控制器(1).mp4 31.58M
│   ├── [6.18]--初始化中断控制器(2).mp4 49.38M
│   ├── [6.19]--中断的打开与关闭.mp4 23.23M
│   ├── [6.20]--启动定时器并开中断(1).mp4 18.74M
│   ├── [6.21]--启动定时器并开中断(2).mp4 46.48M
│   └── [6.22]--启动定时器并开中断(3).mp4 39.43M
├── {7}--日志与printf格式化输出
│   ├── [7.1]--创建日志输出接口.mp4 38.57M
│   ├── [7.2]--实现基本的信息输出.mp4 50.95M
│   ├── [7.3]--实现基本的信息输出(1).mp4 13.07M
│   ├── [7.4]--实现基本的信息输出(2).mp4 37.94M
│   ├── [7.5]--若干字符串和内存操作函数实现.mp4 46.63M
│   ├── [7.6]--实现字符串的格式化输出(1).mp4 49.34M
│   ├── [7.7]--实现字符串的格式化输出(2).mp4 22.24M
│   ├── [7.8]--支持整数的格式化(1).mp4 38.88M
│   ├── [7.9]--支持整数的格式化(2).mp4 40.20M
│   ├── [7.10]--在异常处理程序中打印信息..mp4 43.45M
│   └── [7.11]--利用assert辅助调试.mp4 50.67M
├── {8}--实现简单的进程切换
│   ├── [8.1]--创建两个小任务.mp4 24.64M
│   ├── [8.2]--添加任务状态段(1).mp4 33.80M
│   ├── [8.3]--添加任务状态段(2).mp4 28.44M
│   ├── [8.4]--任务的简单初始化(1).mp4 29.14M
│   ├── [8.5]--任务的简单初始化(2)-1.mp4 25.65M
│   ├── [8.6]--任务的简单初始化(2)-2.mp4 45.73M
│   ├── [8.7]--简单双任务相互切换(1).mp4 19.13M
│   ├── [8.8]--简单双任务相互切换(2).mp4 47.18M
│   ├── [8.9]--简单双任务相互切换(3).mp4 29.91M
│   ├── [8.10]--另一种任务切换方法(1).mp4 35.31M
│   └── [8.11]--另一种任务切换方法(2).mp4 44.86M
├── {9}--实现链表数据结构
│   ├── [9.1]--定义结点和链表.mp4 47.24M
│   ├── [9.2]--实现链表的查询函数.mp4 13.77M
│   ├── [9.3]--链表的两种插入.mp4 36.74M
│   ├── [9.4]--链表的两种删除.mp4 45.12M
│   ├── [9.5]--获取结点所在的结构(1).mp4 10.26M
│   └── [9.6]--获取结点所在的结构(2).mp4 40.90M
├── {10}--进程的管理与延时
│   ├── [10.1]--添加任务管理器.mp4 48.49M
│   ├── [10.2]--将任务加入就绪队列.mp4 37.90M
│   ├── [10.3]--进程主动放弃CPU.mp4 45.29M
│   ├── [10.4]--让进程按时间片运行(1).mp4 8.50M
│   ├── [10.6]--临界资源及简单的保护(1).mp4 20.47M
│   ├── [10.7]--临界资源及简单的保护(2).mp4 32.09M
│   ├── [10.8]--临界资源及简单的保护(3).mp4 24.02M
│   ├── [10.9]--让进程能够延时运行.mp4 68.76M
│   └── [10.10]--让所有进程都能延时.mp4 45.60M
├── {10}--进程的管理与延时
│   └── [10.5]--让进程按时间片运行(2).mp4 43.62M
├── {11}--进程间的同步与互斥
│   ├── [11.1]--计数信号量及其初始化.mp4 31.80M
│   ├── [11.2]--发送和等待信号.mp4 33.19M
│   ├── [11.3]--使用计数信号量.mp4 39.98M
│   ├── [11.4]--互斥锁及其初始化.mp4 16.63M
│   ├── [11.5]--互斥锁的加解锁.mp4 28.65M
│   └── [11.6]--应用互斥锁.mp4 30.98M
├── {12}--虚拟内存管理和保护模式
│   ├── [12.1]--内存管理问题.mp4 36.71M
│   ├── [12.2]--位图数据结构与初始化.mp4 28.70M
│   ├── [12.3]--位图位的分配(1).mp4 6.02M
│   ├── [12.4]--位图位的分配(2).mp4 39.39M
│   ├── [12.5]--创建地址分配结构(1).mp4 24.85M
│   ├── [12.6]--创建地址分配结构(2).mp4 33.75M
│   ├── [12.7]--规划内存空间的分配(1).mp4 8.22M
│   ├── [12.8]--规划内存空间的分配(2).mp4 34.45M
│   ├── [12.9]--规划内存空间的分配(3).mp4 33.51M
│   ├── [12.10]--内存分页机制介绍.mp4 24.74M
│   ├── [12.11]--开启内存分页机制(1).mp4 26.91M
│   ├── [12.12]--开启内存分页机制(2)-1.mp4 14.82M
│   ├── [12.13]--开启内存分页机制(2)-2.mp4 41.63M
│   ├── [12.14]--开启内存分页机制(2)-3.mp4 20.70M
│   ├── [12.15]--创建内核页表(1)-建立映射表(1).mp4 16.52M
│   ├── [12.16]--创建内核页表(1)-建立映射表(2).mp4 47.46M
│   ├── [12.17]--创建内核页表(2)-页目录和页表结构.mp4 50.76M
│   ├── [12.18]--创建内核页表(3)-建立映射表(1).mp4 22.05M
│   ├── [12.19]--创建内核页表(3)-建立映射表(2).mp4 49.96M
│   ├── [12.20]--创建内核页表(3)-建立映射表(3).mp4 50.14M
│   ├── [12.21]--创建内核页表(4)-添加权限处理.mp4 38.22M
│   ├── [12.22]--为进程创建页表(1).mp4 26.00M
│   └── [12.23]--为进程创建页表(2).mp4 76.70M
├── {13}--隔离操作系统与进程
│   ├── [13.1]--隔离操作系统与进程(1)-代码分离.mp4 75.22M
│   ├── [13.2]--隔离操作系统与进程(2)-地址分离.mp4 71.44M
│   ├── [13.3]--隔离操作系统与进程(3)-搬运代码.mp4 70.92M
│   ├── [13.4]--调整应用的特权级(1).mp4 36.70M
│   ├── [13.5]--调整应用的特权级(2).mp4 45.17M
│   ├── [13.6]--调整异常处理函数(1).mp4 37.10M
│   ├── [13.7]--调整异常处理函数(2).mp4 78.30M
│   ├── [13.8]--修改空闲任务的特权级.mp4 28.52M
│   ├── [13.9]--切换至应用进程的特权级为最低.mp4 54.78M
│   └── [13.10]--为进程添加特权级0的栈空间.mp4 86.38M
├── {14}--建立系统调用
│   ├── [14.1]--创建调用门.mp4 60.44M
│   ├── [14.2]--实现系统调用的调用和返回(1).mp4 56.26M
│   ├── [14.3]--实现系统调用的调用和返回(2).mp4 26.67M
│   ├── [14.4]--实现msleep系统调用(1).mp4 54.18M
│   ├── [14.5]--实现msleep系统调用(2).mp4 19.43M
│   ├── [14.6]--实现getid系统调用.mp4 63.59M
│   ├── [14.7]--实现pint_msg调用.mp4 22.85M
│   └── [14.8]--使用int$0x80实现系统调用.mp4 62.82M
├── {15}--新进程的加载与创建
│   ├── [15.1]--实现fork系统调用(1)-添加调用接口.mp4 38.38M
│   ├── [15.2]--实现fork系统调用(2)-分配任务块.mp4 33.19M
│   ├── [15.3]--实现fork系统调用(3)-初始化任务块.mp4 121.47M
│   ├── [15.4]--实现fork系统调用(4)-复制进程地址空间.mp4 107.83M
│   ├── [15.5]--实现exec系统调用(1)-创建一个空应用.mp4 69.54M
│   ├── [15.6]--实现exec系统调用(2)-增加空的exec调用.mp4 25.02M
│   ├── [15.7]--实现exec系统调用(3)-添加虚似文件访问接口.mp4 78.75M
│   ├── [15.8]--实现exec系统调用(4)-解析并加载elf文件.mp4 144.17M
│   ├── [15.9]--实现exec系统调用(5)-分配栈并进入进程执行.mp4 62.42M
│   ├── [15.10]--实现exec系统调用(6)-为进程传递参数(1).mp4 19.87M
│   ├── [15.11]--实现exec系统调用(6)-为进程传递参数(2).mp4 110.61M
│   └── [15.12]--添加sys_yield()系统调用.mp4 55.20M
├── {16}--使用c标准库中的printf输出
│   ├── [16.1]--增加文件系统调用(1).mp4 77.62M
│   ├── [16.2]--增加文件系统调用(2).mp4 32.85M
│   ├── [16.3]--导入newlibc并调用printf.mp4 70.67M
│   ├── [16.4]--为malloc实现sys_brk调用(1).mp4 8.94M
│   ├── [16.5]--为malloc实现sys_brk调用(2).mp4 114.52M
│   └── [16.6]--简单的printf调用实现.mp4 33.85M
├── {17}--使用控制台与键盘进行输入输出
│   ├── [17.1]--控制台简介与初始化(1).mp4 24.67M
│   ├── [17.2]--控制台简介与初始化(2).mp4 41.97M
│   ├── [17.3]--在控制台上显示字符串.mp4 83.54M
│   ├── [17.4]--处理换行和清屏.mp4 91.87M
│   ├── [17.5]--设置光标并重定向日志输出到显示器.mp4 47.15M
│   ├── [17.6]--有趣的转义字符串以及删除字符.mp4 46.84M
│   ├── [17.7]--保存并恢复光标位置.mp4 94.33M
│   ├── [17.8]--更新显示字体的颜色.mp4 91.49M
│   ├── [17.9]--移动光标位置及清屏.mp4 66.53M
│   ├── [17.10]--键盘初始化.mp4 44.86M
│   ├── [17.11]--借助按键映射表进行键值转换(1).mp4 29.85M
│   ├── [17.12]--借助按键映射表进行键值转换(2).mp4 80.06M
│   ├── [17.13]--处理caplock键.mp4 43.37M
│   └── [17.14]--处理其它特殊功能键.mp4 55.95M
├── {18}--设备管理与文件系统
│   ├── [18.1]--设备管理框架简介.mp4 37.49M
│   ├── [18.2]--增加tty设备.mp4 26.59M
│   ├── [18.3]--实现dev层接口操作.mp4 54.24M
│   ├── [18.4]--为tty设备添加结构描述.mp4 36.78M
│   ├── [18.5]--实现tty设备的打开.mp4 51.59M
│   ├── [18.6]--通过tty设备写显示数据(1).mp4 18.06M
│   ├── [18.7]--通过tty设备写显示数据(2).mp4 101.97M
│   ├── [18.8]--文件系统简介及初始化.mp4 43.63M
│   ├── [18.9]--为进程添加文件打开表.mp4 30.80M
│   ├── [18.10]--打开tty设备并向其写入数据.mp4 86.72M
│   ├── [18.11]--从tty读取键值字符串并显示.mp4 94.59M
│   ├── [18.12]--打开标准输出及错误输出文件.mp4 63.90M
│   ├── [18.13]--允许切换tty窗口(1).mp4 9.34M
│   ├── [18.14]--允许切换tty窗口(2).mp4 83.07M
│   └── [18.15]--为每个tty窗口创建进程并保护.mp4 66.32M
├── {19}--实现一个命令行解释器
│   ├── [19.1]--初始化命令行解释器.mp4 66.29M
│   ├── [19.2]--实现help命令的解析.mp4 79.74M
│   ├── [19.3]--执行echo命令并给输出加点颜色(1).mp4 52.66M
│   ├── [19.4]--执行echo命令并给输出加点颜色(2).mp4 57.08M
│   ├── [19.5]--为进程增加exit接口.mp4 69.83M
│   ├── [19.6]--为进程增加wait接口(1).mp4 39.38M
│   ├── [19.7]--为进程增加wait接口(2).mp4 77.26M
│   ├── [19.8]--为进程增加wait接口(3).mp4 22.60M
│   └── [19.9]--让子进程继承父进程已打开的文件.mp4 51.66M
├── {20}--使用文件系统管理硬件设备
│   ├── [20.1]--描述一个文件系统.mp4 57.79M
│   ├── [20.2]--挂载设备文件系统(1).mp4 12.49M
│   ├── [20.3]--挂载设备文件系统(2).mp4 41.04M
│   ├── [20.4]--挂载设备文件系统(3).mp4 72.58M
│   ├── [20.5]--打开devtty0文件(1)-只打开devfs中的文件.mp4 108.45M
│   ├── [20.6]--打开devtty0文件(2)-更通用的打开方式.mp4 74.19M
│   └── [20.7]--往devtty0读写数据.mp4 77.43M
├── {21}--磁盘与fat16文件系统
│   ├── [21.1]--磁盘基本特性简介.mp4 47.88M
│   ├── [21.2]--识别系统中已有的磁盘(1).mp4 16.97M
│   ├── [21.3]--识别系统中已有的磁盘(2).mp4 27.68M
│   ├── [21.4]--识别系统中已有的磁盘(3).mp4 41.26M
│   ├── [21.5]--识别系统中已有的磁盘(4).mp4 55.47M
│   ├── [21.6]--解析磁盘分区表(1).mp4 13.69M
│   ├── [21.7]--解析磁盘分区表(2).mp4 75.76M
│   ├── [21.8]--增加磁盘设备管理.mp4 66.42M
│   ├── [21.9]--实现磁盘的读取和写入(1).mp4 67.06M
│   ├── [21.10]--实现磁盘的读取和写入(2).mp4 42.61M
│   ├── [21.11]--FAT16文件系统简介(1).mp4 40.31M
│   ├── [21.12]--FAT16文件系统简介(2).mp4 39.79M
│   ├── [21.13]--挂载FAT16文件系统(1).mp4 58.55M
│   ├── [21.14]--挂载FAT16文件系统(2).mp4 58.17M
│   ├── [21.15]--挂载FAT16文件系统(3).mp4 36.75M
│   ├── [21.16]--遍历目录命令ls的实现(1)-添加系统调用接口.mp4 63.74M
│   ├── [21.17]--遍历目录命令ls的实现(2)-列出虚假的目录内容.mp4 61.19M
│   ├── [21.18]--遍历目录命令ls的实现(3)-列出真实的目录内容(1).mp4 39.48M
│   ├── [21.19]--遍历目录命令ls的实现(3)-列出真实的目录内容(2).mp4 41.50M
│   ├── [21.20]--遍历目录命令ls的实现(3)-列出真实的目录内容(3).mp4 82.70M
│   ├── [21.21]--文件查看命令less的实现(1)-打开文件.mp4 90.89M
│   ├── [21.22]--文件查看命令less的实现(2)-显示部分文件内容.mp4 80.79M
│   ├── [21.23]--文件查看命令less的实现(3)-显示全部文件内容.mp4 68.60M
│   ├── [21.24]--文件查看命令less的实现(4)-逐行显示文件内容.mp4 87.78M
│   ├── [21.25]--通过文件系统加载shell.mp4 82.59M
│   ├── [21.26]--让shell加载应用程序运行.mp4 62.10M
│   ├── [21.27]--应用运行异常时强制中断运行.mp4 47.13M
│   ├── [21.28]--文件复制命令cp的实现(1)-创建新文件.mp4 87.04M
│   ├── [21.29]--文件复制命令cp的实现(2)-删除文件.mp4 68.50M
│   ├── [21.30]--文件复制命令cp的实现(3)-文件写入(1).mp4 67.03M
│   ├── [21.31]--文件复制命令cp的实现(4)-文件写入(2).mp4 109.52M
│   └── [21.32]--最后的调整.mp4 40.56M
└── {22}--课程总结
    └── [22.1]--设计总结.mp4 35.27M
相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。