资源简介
大家好,这是我历时大概两年准备、开发完成的课程。课程采用从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
冲冲冲冲冲冲冲冲冲
感谢分享
看看她的套路
谢谢分享
谢谢分享
谢谢分享
看起来很高大上
学习linux
感谢分享
试一下啊啊啊
感谢分享
这个有意思 感谢分享
有意思
感谢分享
学习一下
学习一下
谢谢分享
感谢分享
谢谢分享
谢谢分享
谢谢分享
感谢分享
谢谢分享
看起来很牛
看起来就是学不会的
感谢分享
学习一下
感谢分享
感谢分享
厉害
看起来很高大上
,看看怎么样
收藏
这个看起来很牛逼
谢谢分享
谢谢分享
越学越厉害
谢谢分享
看起来很高大上看起来很高大上
感谢分享
谢谢分享,感谢
看起来很牛逼
谢谢分享 感谢
谢谢分享
学习一下
感谢分享
学习
看起来很高大上
666啊
谢谢分享
看起来很高大上