从0手写自己的Linux x86操作系统
内容简介
大家好,这是我历时大概两年准备、开发完成的课程。课程采用从0行代码编写的方式,教你如何写一个类似(非相同)Linux 0.11的x86操作系统,从而深入掌握操作系统的工作原理。
资源目录
——/计算机教程QTDLG/10-网易云课堂/085-从0手写自己的Linux x86操作系统/
{01}课前准备
(1.2)资料下载链接.pdf 795.36kb
(1.4)常见问题.pdf 4.13M
[1.1]课程简介.mp4 35.83M
[1.3]资料下载说明.mp4 27.31M
{02}开发环境准备
(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
{03}前置课(选学,介绍x86保护模式下的编程)
(3.1)课程说明.pdf 951.42kb
[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.2]课程简介.mp4 34.66M
[3.30]使用LDT(3).mp4 16.68M
[3.31]课程总结.mp4 56.56M
[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
{04}引导程序:接管控制权
[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
{05}加载器loader的实现
[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
[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
{06}中断与异常处理
[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.1]创建GDT表及其表项(1).mp4 37.00M
[6.20]启动定时器并开中断(1).mp4 18.74M
[6.21]启动定时器并开中断(2).mp4 46.48M
[6.22]启动定时器并开中断(3).mp4 39.43M
[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
{07}日志与printf格式化输出
[7.10]在异常处理程序中打印信息..mp4 43.45M
[7.11]利用assert辅助调试.mp4 50.67M
[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
{08}实现简单的进程切换
[8.10]另一种任务切换方法(1).mp4 35.31M
[8.11]另一种任务切换方法(2).mp4 44.86M
[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
{09}实现链表数据结构
[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.10]让所有进程都能延时.mp4 45.60M
[10.1]添加任务管理器.mp4 48.49M
[10.2]将任务加入就绪队列.mp4 37.90M
[10.3]进程主动放弃CPU.mp4 45.29M
[10.4]让进程按时间片运行(1).mp4 8.50M
[10.5]让进程按时间片运行(2).mp4 43.62M
[10.6]临界资源及简单的保护(1).mp4 20.47M
[10.7]临界资源及简单的保护(2).mp4 32.09M
[10.8]临界资源及简单的保护(3).mp4 24.02M
[10.9]让进程能够延时运行.mp4 68.76M
{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.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.1]内存管理问题.mp4 36.71M
[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
[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
{13}隔离操作系统与进程
[13.10]为进程添加特权级0的栈空间.mp4 86.38M
[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
{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.10]实现exec系统调用(6)-为进程传递参数(1).mp4 19.87M
[15.11]实现exec系统调用(6)-为进程传递参数(2).mp4 110.61M
[15.12]添加sys_yield()系统调用.mp4 55.20M
[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
{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.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
[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
{18}设备管理与文件系统
[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
[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
{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.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.1]磁盘基本特性简介.mp4 47.88M
[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.2]识别系统中已有的磁盘(1).mp4 16.97M
[21.30]文件复制命令cp的实现(3)-文件写入(1).mp4 67.03M
[21.31]文件复制命令cp的实现(4)-文件写入(2).mp4 109.52M
[21.32]最后的调整.mp4 40.56M
[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
{22}课程总结
[22.1]设计总结.mp4 35.27M