联系

从0手写自己的Linux x86操作系统

内容简介

从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

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注