价格: 59 学币

分类: C

发布时间: 2023-07-01 14:11:27

最近更新: 2023-07-01 14:11:27

资源类型: VIP

优惠: 开通VIP/SVIP免费获取此资源

开通VIP享受更多优惠 网盘下载地址

课程介绍

网易云课堂从0手写自己的Linux x86操作系统视频教程,由优库it资源网整理发布,云盘无密分享。本课程采用从0行代码编写的方式,教你如何写一个类似(非相同)Linux 0.11的x86操作系统,从而深入掌握操作系统的工作原理。本操作系统目前已经支持网络协议栈,并提供socket套接字编程接口,支持同时运行多个网络应用程序。

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

课程特色

逐行编写、循序渐进、逐步迭代
从0行开始编写,非源码分析,通过从0开始编写,清晰地展示一个操作系统,从无到有的完整过程
不到300行汇编,其余全部为C代码,极少量的汇编将大大降低学习难度,让关注点回到操作系统本身的实现上
支持MAC/Linux/Windows平台,简单易用的开发环境,一键支持编译和调试。无需复杂的开发环境配置

资源目录

.
├── 2-开发环境准备/
│   ├── [ 12M]  2.1-开发工具总览.mp4
│   ├── [1.2M]  2.2-注意事项(必看!!!).pdf
│   ├── [129M]  2.3-Windows平台.mp4
│   ├── [ 74M]  2.4-Linux平台(ubuntu).mp4
│   └── [ 49M]  2.5-Mac平台.mp4
├── 3-前置课(选学,介绍x86保护模式下的编程)/
│   ├── [951K]  3.1-课程说明.pdf
│   ├── [ 35M]  3.2-课程简介.mp4
│   ├── [ 47M]  3.3-开发环境安装(与前面部分内容有重复).mp4
│   ├── [ 21M]  3.4-工程组织结构.mp4
│   ├── [ 33M]  3.5-让计算机跑我们的操作系统.mp4
│   ├── [ 41M]  3.6-x86处理器编程模型(1).mp4
│   ├── [ 21M]  3.7-x86处理器编程模型(2).mp4
│   ├── [ 15M]  3.8-加载自己的剩余部分(1).mp4
│   ├── [ 29M]  3.9-加载自己的剩余部分(2).mp4
│   ├── [ 54M]  3.10-进入保护模式(1).mp4
│   ├── [ 67M]  3.11-进入保护模式(2).mp4
│   ├── [ 47M]  3.12-进入保护模式(3).mp4
│   ├── [ 52M]  3.13-打开分页机制(1).mp4
│   ├── [ 53M]  3.14-打开分页机制(2).mp4
│   ├── [ 73M]  3.15-打开分页机制(3).mp4
│   ├── [ 49M]  3.16-开启定时中断(1).mp4
│   ├── [ 51M]  3.17-开启定时中断(2).mp4
│   ├── [ 69M]  3.18-开启定时中断(3).mp4
│   ├── [ 30M]  3.19-切换至低特权级(1).mp4
│   ├── [ 69M]  3.20-切换至低特权级(2).mp4
│   ├── [ 40M]  3.21-切换至低特权级(3).mp4
│   ├── [ 30M]  3.22-两个任务的切换(1).mp4
│   ├── [104M]  3.23-两个任务的切换(2).mp4
│   ├── [ 58M]  3.24-两个任务的切换(3).mp4
│   ├── [ 26M]  3.25-增加系统调用(1)..mp4
│   ├── [ 65M]  3.26-增加系统调用(2)..mp4
│   ├── [ 97M]  3.27-增加系统调用(3)..mp4
│   ├── [ 57M]  3.28-使用LDT(1).mp4
│   ├── [ 84M]  3.29-使用LDT(2).mp4
│   ├── [ 17M]  3.30-使用LDT(3).mp4
│   └── [ 57M]  3.31-课程总结.mp4
├── 4-引导程序:接管控制权/
│   ├── [ 33M]  4.1-计算机启动流程简介.mp4
│   ├── [ 31M]  4.2-接管运行控制权.mp4
│   ├── [ 53M]  4.3-创建可引导的启动程序.mp4
│   ├── [ 20M]  4.4-初始化引导程序(1).mp4
│   ├── [ 14M]  4.5-初始化引导程序(2).mp4
│   ├── [ 16M]  4.6-使用BIOS中断显示字符.mp4
│   ├── [ 39M]  4.7-使用BIOS中断读取磁盘.mp4
│   ├── [ 23M]  4.8-进入C语言环境并跳到loader(1).mp4
│   └── [ 31M]  4.9-进入C语言环境并跳到loader(2).mp4
├── 5-加载器loader的实现/
│   ├── [ 53M]  5.1-利用内联汇编显示字符串.mp4
│   ├── [ 29M]  5.2-检测内存容量(1).mp4
│   ├── [ 44M]  5.3-检测内存容量(2).mp4
│   ├── [ 23M]  5.4-切换进保护模式(1)-1.mp4
│   ├── [ 25M]  5.5-切换进保护模式(1)-2.mp4
│   ├── [ 22M]  5.6-切换进保护模式(1)-3.mp4
│   ├── [ 23M]  5.7-切换进保护模式(2)-1.mp4
│   ├── [ 31M]  5.8-切换进保护模式(2)-2.mp4
│   ├── [ 52M]  5.9-使用LBA模式读取磁盘.mp4
│   ├── [ 58M]  5.10-创建内核工程.mp4
│   ├── [ 35M]  5.11-向内核传递启动信息(1).mp4
│   ├── [ 39M]  5.12-向内核传递启动信息(2).mp4
│   ├── [ 44M]  5.13-代码段数据段与链接脚本(1).mp4
│   ├── [ 27M]  5.14-代码段数据段与链接脚本(2).mp4
│   ├── [ 40M]  5.15-加载内核映像文件(1).mp4
│   └── [ 84M]  5.16-加载内核映像文件(2).mp4
├── 6-中断与异常处理/
│   ├── [ 37M]  6.1-创建GDT表及其表项(1).mp4
│   ├── [ 51M]  6.2-创建GDT表及其表项(2).mp4
│   ├── [ 42M]  6.3-保护模式下的内存管理简介.mp4
│   ├── [ 78M]  6.4-重新加载GDT(1).mp4
│   ├── [ 45M]  6.5-重新加载GDT(2).mp4
│   ├── [ 21M]  6.6-触发异常与异常简介.mp4
│   ├── [ 36M]  6.7-添加中断门描述符.mp4
│   ├── [ 30M]  6.8-初始化IDT表.mp4
│   ├── [ 42M]  6.9-捕获除0异常(1).mp4
│   ├── [ 36M]  6.10-捕获除0异常(2).mp4
│   ├── [ 25M]  6.11-解析异常栈信息(1).mp4
│   ├── [ 40M]  6.12-解析异常栈信息(2).mp4
│   ├── [ 39M]  6.13-利用宏重用异常处理代码(1).mp4
│   ├── [ 44M]  6.14-利用宏重用异常处理代码(2).mp4
│   ├── [ 35M]  6.15-处理其它类型的异常(1).mp4
│   ├── [ 68M]  6.16-处理其它类型的异常(2).mp4
│   ├── [ 32M]  6.17-初始化中断控制器(1).mp4
│   ├── [ 49M]  6.18-初始化中断控制器(2).mp4
│   ├── [ 23M]  6.19-中断的打开与关闭.mp4
│   ├── [ 19M]  6.20-启动定时器并开中断(1).mp4
│   ├── [ 46M]  6.21-启动定时器并开中断(2).mp4
│   └── [ 39M]  6.22-启动定时器并开中断(3).mp4
├── 7-日志与printf格式化输出/
│   ├── [ 39M]  7.1-创建日志输出接口.mp4
│   ├── [ 51M]  7.2-实现基本的信息输出.mp4
│   ├── [ 13M]  7.3-实现基本的信息输出(1).mp4
│   ├── [ 38M]  7.4-实现基本的信息输出(2).mp4
│   ├── [ 47M]  7.5-若干字符串和内存操作函数实现.mp4
│   ├── [ 49M]  7.6-实现字符串的格式化输出(1).mp4
│   ├── [ 22M]  7.7-实现字符串的格式化输出(2).mp4
│   ├── [ 39M]  7.8-支持整数的格式化(1).mp4
│   ├── [ 40M]  7.9-支持整数的格式化(2).mp4
│   ├── [ 43M]  7.10-在异常处理程序中打印信息..mp4
│   └── [ 51M]  7.11-利用assert辅助调试.mp4
├── 8-实现简单的进程切换/
│   ├── [ 25M]  8.1-创建两个小任务.mp4
│   ├── [ 34M]  8.2-添加任务状态段(1).mp4
│   ├── [ 28M]  8.3-添加任务状态段(2).mp4
│   ├── [ 29M]  8.4-任务的简单初始化(1).mp4
│   ├── [ 26M]  8.5-任务的简单初始化(2)-1.mp4
│   ├── [ 46M]  8.6-任务的简单初始化(2)-2.mp4
│   ├── [ 19M]  8.7-简单双任务相互切换(1).mp4
│   ├── [ 47M]  8.8-简单双任务相互切换(2).mp4
│   ├── [ 30M]  8.9-简单双任务相互切换(3).mp4
│   ├── [ 35M]  8.10-另一种任务切换方法(1).mp4
│   └── [ 45M]  8.11-另一种任务切换方法(2).mp4
├── 9-实现链表数据结构/
│   ├── [ 47M]  9.1-定义结点和链表.mp4
│   ├── [ 14M]  9.2-实现链表的查询函数.mp4
│   ├── [ 37M]  9.3-链表的两种插入.mp4
│   ├── [ 45M]  9.4-链表的两种删除.mp4
│   ├── [ 10M]  9.5-获取结点所在的结构(1).mp4
│   └── [ 41M]  9.6-获取结点所在的结构(2).mp4
├── 10-进程的管理与延时/
│   ├── [ 48M]  10.1-添加任务管理器.mp4
│   ├── [ 38M]  10.2-将任务加入就绪队列.mp4
│   ├── [ 45M]  10.3-进程主动放弃CPU.mp4
│   ├── [8.5M]  10.4-让进程按时间片运行(1).mp4
│   ├── [ 44M]  10.5-让进程按时间片运行(2).mp4
│   ├── [ 20M]  10.6-临界资源及简单的保护(1).mp4
│   ├── [ 32M]  10.7-临界资源及简单的保护(2).mp4
│   ├── [ 24M]  10.8-临界资源及简单的保护(3).mp4
│   ├── [ 69M]  10.9-让进程能够延时运行.mp4
│   └── [ 46M]  10.10-让所有进程都能延时.mp4
├── 11-进程间的同步与互斥/
│   ├── [ 32M]  11.1-计数信号量及其初始化.mp4
│   ├── [ 33M]  11.2-发送和等待信号.mp4
│   ├── [ 40M]  11.3-使用计数信号量.mp4
│   ├── [ 17M]  11.4-互斥锁及其初始化.mp4
│   ├── [ 29M]  11.5-互斥锁的加解锁.mp4
│   └── [ 31M]  11.6-应用互斥锁.mp4
├── 12-虚拟内存管理和保护模式/
│   ├── [ 37M]  12.1-内存管理问题.mp4
│   ├── [ 29M]  12.2-位图数据结构与初始化.mp4
│   ├── [6.0M]  12.3-位图位的分配(1).mp4
│   ├── [ 39M]  12.4-位图位的分配(2).mp4
│   ├── [ 25M]  12.5-创建地址分配结构(1).mp4
│   ├── [ 34M]  12.6-创建地址分配结构(2).mp4
│   ├── [8.2M]  12.7-规划内存空间的分配(1).mp4
│   ├── [ 34M]  12.8-规划内存空间的分配(2).mp4
│   ├── [ 34M]  12.9-规划内存空间的分配(3).mp4
│   ├── [ 25M]  12.10-内存分页机制介绍.mp4
│   ├── [ 27M]  12.11-开启内存分页机制(1).mp4
│   ├── [ 15M]  12.12-开启内存分页机制(2)-1.mp4
│   ├── [ 42M]  12.13-开启内存分页机制(2)-2.mp4
│   ├── [ 21M]  12.14-开启内存分页机制(2)-3.mp4
│   ├── [ 17M]  12.15-创建内核页表(1)-建立映射表.mp4
│   ├── [ 47M]  12.16-创建内核页表(1)-建立映射表.mp4
│   ├── [ 51M]  12.17-创建内核页表(2)-页目录和页表结构.mp4
│   ├── [ 22M]  12.18-创建内核页表(3)-建立映射表(1).mp4
│   ├── [ 50M]  12.19-创建内核页表(3)-建立映射表(2).mp4
│   ├── [ 50M]  12.20-创建内核页表(3)-建立映射表(3).mp4
│   ├── [ 38M]  12.21-创建内核页表(4)-添加权限处理.mp4
│   ├── [ 26M]  12.22-为进程创建页表(1).mp4
│   └── [ 77M]  12.23-为进程创建页表(2).mp4
├── 13-隔离操作系统与进程/
│   ├── [ 75M]  13.1-隔离操作系统与进程(1)-代码分离.mp4
│   ├── [ 71M]  13.2-隔离操作系统与进程(2)-地址分离.mp4
│   ├── [ 71M]  13.3-隔离操作系统与进程(3)-搬运代码.mp4
│   ├── [ 37M]  13.4-调整应用的特权级(1).mp4
│   ├── [ 45M]  13.5-调整应用的特权级(2).mp4
│   ├── [ 37M]  13.6-调整异常处理函数(1).mp4
│   ├── [ 78M]  13.7-调整异常处理函数(2).mp4
│   ├── [ 29M]  13.8-修改空闲任务的特权级.mp4
│   ├── [ 55M]  13.9-切换至应用进程的特权级为最低.mp4
│   └── [ 86M]  13.10-为进程添加特权级0的栈空间.mp4
├── 14-建立系统调用/
│   ├── [ 60M]  14.1-创建调用门(1).mp4
│   ├── [ 60M]  14.1-创建调用门.mp4
│   ├── [ 56M]  14.2-实现系统调用的调用和返回(1).mp4
│   ├── [ 27M]  14.3-实现系统调用的调用和返回(2).mp4
│   ├── [ 54M]  14.4-实现msleep系统调用(1).mp4
│   ├── [ 19M]  14.5-实现msleep系统调用(2).mp4
│   ├── [ 64M]  14.6-实现getid系统调用.mp4
│   ├── [ 23M]  14.7-实现pint_msg调用.mp4
│   └── [ 63M]  14.8-使用int$0x80实现系统调用.mp4
├── 15-新进程的加载与创建/
│   ├── [ 38M]  15.1-实现fork系统调用(1)-添加调用接口.mp4
│   ├── [ 33M]  15.2-实现fork系统调用(2)-分配任务块.mp4
│   ├── [121M]  15.3-实现fork系统调用(3)-初始化任务块.mp4
│   ├── [108M]  15.4-实现fork系统调用(4)-复制进程地址空间.mp4
│   ├── [ 70M]  15.5-实现exec系统调用(1)-创建一个空应用.mp4
│   ├── [ 25M]  15.6-实现exec系统调用(2)-增加空的exec调用.mp4
│   ├── [ 79M]  15.7-实现exec系统调用(3)-添加虚似文件访问接口.mp4
│   ├── [144M]  15.8-实现exec系统调用(4)-解析并加载elf文件.mp4
│   ├── [ 62M]  15.9-实现exec系统调用(5)-分配栈并进入进程执行.mp4
│   ├── [ 20M]  15.10-实现exec系统调用(6)-为进程传递参数(1).mp4
│   ├── [111M]  15.11-实现exec系统调用(6)-为进程传递参数(2).mp4
│   └── [ 55M]  15.12-添加sys_yield()系统调用.mp4
├── 16-使用c标准库中的printf输出/
│   ├── [ 78M]  16.1-增加文件系统调用(1).mp4
│   ├── [ 33M]  16.2-增加文件系统调用(2).mp4
│   ├── [ 71M]  16.3-导入newlibc并调用printf.mp4
│   ├── [8.9M]  16.4-为malloc实现sys_brk调用(1).mp4
│   ├── [115M]  16.5-为malloc实现sys_brk调用(2).mp4
│   └── [ 34M]  16.6-简单的printf调用实现.mp4
├── 17-使用控制台与键盘进行输入输出/
│   ├── [ 25M]  17.1-控制台简介与初始化(1).mp4
│   ├── [ 42M]  17.2-控制台简介与初始化(2).mp4
│   ├── [ 84M]  17.3-在控制台上显示字符串.mp4
│   ├── [ 92M]  17.4-处理换行和清屏.mp4
│   ├── [ 47M]  17.5-设置光标并重定向日志输出到显示器.mp4
│   ├── [ 47M]  17.6-有趣的转义字符串以及删除字符.mp4
│   ├── [ 94M]  17.7-保存并恢复光标位置.mp4
│   ├── [ 91M]  17.8-更新显示字体的颜色.mp4
│   ├── [ 67M]  17.9-移动光标位置及清屏.mp4
│   ├── [ 45M]  17.10-键盘初始化.mp4
│   ├── [ 30M]  17.11-借助按键映射表进行键值转换(1).mp4
│   ├── [ 80M]  17.12-借助按键映射表进行键值转换(2).mp4
│   ├── [ 43M]  17.13-处理caplock键.mp4
│   └── [ 56M]  17.14-处理其它特殊功能键.mp4
├── 18-设备管理与文件系统/
│   ├── [ 37M]  18.1-设备管理框架简介.mp4
│   ├── [ 27M]  18.2-增加tty设备.mp4
│   ├── [ 54M]  18.3-实现dev层接口操作.mp4
│   ├── [ 37M]  18.4-为tty设备添加结构描述.mp4
│   ├── [ 52M]  18.5-实现tty设备的打开.mp4
│   ├── [ 18M]  18.6-通过tty设备写显示数据(1).mp4
│   ├── [102M]  18.7-通过tty设备写显示数据(2).mp4
│   ├── [ 44M]  18.8-文件系统简介及初始化.mp4
│   ├── [ 31M]  18.9-为进程添加文件打开表.mp4
│   ├── [ 87M]  18.10-打开tty设备并向其写入数据.mp4
│   ├── [ 95M]  18.11-从tty读取键值字符串并显示.mp4
│   ├── [ 64M]  18.12-打开标准输出及错误输出文件.mp4
│   ├── [9.3M]  18.13-允许切换tty窗口(1).mp4
│   ├── [ 83M]  18.14-允许切换tty窗口(2).mp4
│   └── [ 66M]  18.15-为每个tty窗口创建进程并保护.mp4
├── 19-实现一个命令行解释器/
│   ├── [ 66M]  19.1-初始化命令行解释器.mp4
│   ├── [ 80M]  19.2-实现help命令的解析.mp4
│   ├── [ 53M]  19.3-执行echo命令并给输出加点颜色(1).mp4
│   ├── [ 57M]  19.4-执行echo命令并给输出加点颜色(2).mp4
│   ├── [ 70M]  19.5-为进程增加exit接口.mp4
│   ├── [ 39M]  19.6-为进程增加wait接口(1).mp4
│   ├── [ 77M]  19.7-为进程增加wait接口(2).mp4
│   ├── [ 23M]  19.8-为进程增加wait接口(3).mp4
│   └── [ 52M]  19.9-让子进程继承父进程已打开的文件.mp4
├── 20-使用文件系统管理硬件设备/
│   ├── 【认准一手完整 www.ukoou.com】Linux x86操作系统
│   ├── [ 58M]  20.1-描述一个文件系统.mp4
│   ├── [ 12M]  20.2-挂载设备文件系统(1).mp4
│   ├── [ 41M]  20.3-挂载设备文件系统(2).mp4
│   ├── [ 73M]  20.4-挂载设备文件系统(3).mp4
│   ├── [108M]  20.5-打开devtty0文件(1)-只打开devfs中的文件.mp4
│   ├── [ 74M]  20.6-打开devtty0文件(2)-更通用的打开方式.mp4
│   └── [ 77M]  20.7-往devtty0读写数据.mp4
├── 21-磁盘与fat16文件系统/
│   ├── [ 48M]  21.1-磁盘基本特性简介.mp4
│   ├── [ 17M]  21.2-识别系统中已有的磁盘(1).mp4
│   ├── [ 28M]  21.3-识别系统中已有的磁盘(2).mp4
│   ├── [ 41M]  21.4-识别系统中已有的磁盘(3).mp4
│   ├── [ 55M]  21.5-识别系统中已有的磁盘(4).mp4
│   ├── [ 14M]  21.6-解析磁盘分区表(1).mp4
│   ├── [ 76M]  21.7-解析磁盘分区表(2).mp4
│   ├── [ 66M]  21.8-增加磁盘设备管理.mp4
│   ├── [ 67M]  21.9-实现磁盘的读取和写入(1).mp4
│   ├── [ 43M]  21.10-实现磁盘的读取和写入(2).mp4
│   ├── [ 40M]  21.11-FAT16文件系统简介(1).mp4
│   ├── [ 40M]  21.12-FAT16文件系统简介(2).mp4
│   ├── [ 59M]  21.13-挂载FAT16文件系统(1).mp4
│   ├── [ 58M]  21.14-挂载FAT16文件系统(2).mp4
│   ├── [ 37M]  21.15-挂载FAT16文件系统(3).mp4
│   ├── [ 64M]  21.16-遍历目录命令ls的实现(1)-添加系统调用接口.mp4
│   ├── [ 61M]  21.17-遍历目录命令ls的实现(2)-列出虚假的目录内容.mp4
│   ├── [ 39M]  21.18-遍历目录命令ls的实现(3)-列出真实的目录内容(1).mp4
│   ├── [ 42M]  21.19-遍历目录命令ls的实现(3)-列出真实的目录内容(2).mp4
│   ├── [ 83M]  21.20-遍历目录命令ls的实现(3)-列出真实的目录内容(3).mp4
│   ├── [ 91M]  21.21-文件查看命令less的实现(1)-打开文件.mp4
│   ├── [ 81M]  21.22-文件查看命令less的实现(2)-显示部分文件内容.mp4
│   ├── [ 69M]  21.23-文件查看命令less的实现(3)-显示全部文件内容.mp4
│   ├── [ 88M]  21.24-文件查看命令less的实现(4)-逐行显示文件内容.mp4
│   ├── [ 83M]  21.25-通过文件系统加载shell.mp4
│   ├── [ 62M]  21.26-让shell加载应用程序运行.mp4
│   ├── [ 47M]  21.27-应用运行异常时强制中断运行.mp4
│   ├── [ 87M]  21.28-文件复制命令cp的实现(1)-创建新文件.mp4
│   ├── [ 69M]  21.29-文件复制命令cp的实现(2)-删除文件.mp4
│   ├── [ 67M]  21.30-文件复制命令cp的实现(3)-文件写入(1).mp4
│   ├── [110M]  21.31-文件复制命令cp的实现(4)-文件写入(2).mp4
│   └── [ 41M]  21.32-最后的调整.mp4
└── 22-课程总结/
    └── [ 35M]  22.1-设计总结.mp4

资源目录截图

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