网易云课堂《李术铜-从0手写自己的Linux x86操作系统》课程,由李术铜主讲,深入讲解从零开始手写Linux x86操作系统的全过程。课程涵盖引导加载器编写、内核开发、设备驱动、文件系统、网络支持等关键步骤,结合实战案例,帮助学员掌握操作系统设计与实现的核心技能,提升系统编程能力。 李述铜 从0手写自己的Linux x86操作系统 ├─ {9}--实现链表数据结构 │ ├─
李述铜 从0手写自己的Linux x86操作系统12.26GB
{1}--课前准备68.05MB
(1.2)--资料下载链接.pdf795.36KB
(1.4)--常见问题.pdf4.13MB
[1.1]--课程简介.mp435.83MB
[1.3]--资料下载说明.mp427.31MB
{2}--开发环境准备266.11MB
(2.2)--注意事项(必看!!!).pdf1.21MB
[2.1]--开发工具总览.mp411.86MB
[2.3]--Windows平台.mp4129.27MB
[2.4]--Linux平台(ubuntu).mp474.33MB
[2.5]--Mac平台.mp449.44MB
{3}--前置课(选学,介绍x86保护模式下的编程)1.45GB
(3.1)--课程说明.pdf951.42KB
[3.2]--课程简介.mp434.66MB
[3.3]--开发环境安装(与前面部分内容有重复).mp447.27MB
[3.4]--工程组织结构.mp420.54MB
[3.5]--让计算机跑我们的操作系统.mp433.29MB
[3.6]--x86处理器编程模型(1).mp441.39MB
[3.7]--x86处理器编程模型(2).mp420.53MB
[3.8]--加载自己的剩余部分(1).mp415.2MB
[3.9]--加载自己的剩余部分(2).mp429.26MB
[3.10]--进入保护模式(1).mp453.83MB
[3.11]--进入保护模式(2).mp466.96MB
[3.12]--进入保护模式(3).mp447.35MB
[3.13]--打开分页机制(1).mp451.86MB
[3.14]--打开分页机制(2).mp452.62MB
[3.15]--打开分页机制(3).mp472.61MB
[3.16]--开启定时中断(1).mp448.73MB
[3.17]--开启定时中断(2).mp450.76MB
[3.18]--开启定时中断(3).mp468.81MB
[3.19]--切换至低特权级(1).mp430.29MB
[3.20]--切换至低特权级(2).mp468.5MB
[3.21]--切换至低特权级(3).mp440.11MB
[3.22]--两个任务的切换(1).mp429.74MB
[3.23]--两个任务的切换(2).mp4104.06MB
[3.24]--两个任务的切换(3).mp457.8MB
[3.25]--增加系统调用(1)..mp425.65MB
[3.26]--增加系统调用(2)..mp464.94MB
[3.27]--增加系统调用(3)..mp496.82MB
[3.28]--使用LDT(1).mp457.31MB
[3.29]--使用LDT(2).mp483.82MB
[3.30]--使用LDT(3).mp416.68MB
[3.31]--课程总结.mp456.56MB
{4}--引导程序:接管控制权261.36MB
[4.1]--计算机启动流程简介.mp433.3MB
[4.2]--接管运行控制权.mp430.73MB
[4.3]--创建可引导的启动程序.mp453.21MB
[4.4]--初始化引导程序(1).mp419.63MB
[4.5]--初始化引导程序(2).mp414.47MB
[4.6]--使用BIOS中断显示字符.mp416.33MB
[4.7]--使用BIOS中断读取磁盘.mp438.87MB
[4.8]--进入C语言环境并跳到loader(1).mp423.37MB
[4.9]--进入C语言环境并跳到loader(2).mp431.44MB
{5}--加载器loader的实现629.64MB
[5.1]--利用内联汇编显示字符串.mp453.28MB
[5.2]--检测内存容量(1).mp429.02MB
[5.3]--检测内存容量(2).mp443.9MB
[5.4]--切换进保护模式(1)-1.mp423.45MB
[5.5]--切换进保护模式(1)-2.mp424.78MB
[5.6]--切换进保护模式(1)-3.mp422.29MB
[5.7]--切换进保护模式(2)-1.mp423.24MB
[5.8]--切换进保护模式(2)-2.mp431.36MB
[5.9]--使用LBA模式读取磁盘.mp451.81MB
[5.10]--创建内核工程.mp457.97MB
[5.11]--向内核传递启动信息(1).mp434.63MB
[5.12]--向内核传递启动信息(2).mp438.82MB
[5.13]--代码段数据段与链接脚本(1).mp444.31MB
[5.14]--代码段数据段与链接脚本(2).mp426.71MB
[5.15]--加载内核映像文件(1).mp440.42MB
[5.16]--加载内核映像文件(2).mp483.65MB
{6}--中断与异常处理876.79MB
[6.1]--创建GDT表及其表项(1).mp437MB
[6.2]--创建GDT表及其表项(2).mp451.09MB
[6.3]--保护模式下的内存管理简介.mp441.88MB
[6.4]--重新加载GDT(1).mp477.72MB
[6.5]--重新加载GDT(2).mp445.15MB
[6.6]--触发异常与异常简介.mp420.69MB
[6.7]--添加中断门描述符.mp435.98MB
[6.8]--初始化IDT表.mp429.85MB
[6.9]--捕获除0异常(1).mp442.31MB
[6.10]--捕获除0异常(2).mp436.12MB
[6.11]--解析异常栈信息(1).mp424.91MB
[6.12]--解析异常栈信息(2).mp439.68MB
[6.13]--利用宏重用异常处理代码(1).mp439.42MB
[6.14]--利用宏重用异常处理代码(2).mp443.79MB
[6.15]--处理其它类型的异常(1).mp434.56MB
[6.16]--处理其它类型的异常(2).mp467.82MB
[6.17]--初始化中断控制器(1).mp431.58MB
[6.18]--初始化中断控制器(2).mp449.38MB
[6.19]--中断的打开与关闭.mp423.23MB
[6.20]--启动定时器并开中断(1).mp418.74MB
[6.21]--启动定时器并开中断(2).mp446.48MB
[6.22]--启动定时器并开中断(3).mp439.43MB
{7}--日志与printf格式化输出431.95MB
[7.1]--创建日志输出接口.mp438.57MB
[7.2]--实现基本的信息输出.mp450.95MB
[7.3]--实现基本的信息输出(1).mp413.07MB
[7.4]--实现基本的信息输出(2).mp437.94MB
[7.5]--若干字符串和内存操作函数实现.mp446.63MB
[7.6]--实现字符串的格式化输出(1).mp449.34MB
[7.7]--实现字符串的格式化输出(2).mp422.24MB
[7.8]--支持整数的格式化(1).mp438.88MB
[7.9]--支持整数的格式化(2).mp440.2MB
[7.10]--在异常处理程序中打印信息..mp443.45MB
[7.11]--利用assert辅助调试.mp450.67MB
{8}--实现简单的进程切换363.79MB
[8.1]--创建两个小任务.mp424.64MB
[8.2]--添加任务状态段(1).mp433.8MB
[8.3]--添加任务状态段(2).mp428.44MB
[8.4]--任务的简单初始化(1).mp429.14MB
[8.5]--任务的简单初始化(2)-1.mp425.65MB
[8.6]--任务的简单初始化(2)-2.mp445.73MB
[8.7]--简单双任务相互切换(1).mp419.13MB
[8.8]--简单双任务相互切换(2).mp447.18MB
[8.9]--简单双任务相互切换(3).mp429.91MB
[8.10]--另一种任务切换方法(1).mp435.31MB
[8.11]--另一种任务切换方法(2).mp444.86MB
{9}--实现链表数据结构194.03MB
[9.1]--定义结点和链表.mp447.24MB
[9.2]--实现链表的查询函数.mp413.77MB
[9.3]--链表的两种插入.mp436.74MB
[9.4]--链表的两种删除.mp445.12MB
[9.5]--获取结点所在的结构(1).mp410.26MB
[9.6]--获取结点所在的结构(2).mp440.9MB
{10}--进程的管理与延时331.12MB
[10.1]--添加任务管理器.mp448.49MB
[10.2]--将任务加入就绪队列.mp437.9MB
[10.3]--进程主动放弃CPU.mp445.29MB
[10.4]--让进程按时间片运行(1).mp48.5MB
[10.6]--临界资源及简单的保护(1).mp420.47MB
[10.7]--临界资源及简单的保护(2).mp432.09MB
[10.8]--临界资源及简单的保护(3).mp424.02MB
[10.9]--让进程能够延时运行.mp468.76MB
[10.10]--让所有进程都能延时.mp445.6MB
{10}--进程的管理与延时43.62MB
[10.5]--让进程按时间片运行(2).mp443.62MB
{11}--进程间的同步与互斥181.23MB
[11.1]--计数信号量及其初始化.mp431.8MB
[11.2]--发送和等待信号.mp433.19MB
[11.3]--使用计数信号量.mp439.98MB
[11.4]--互斥锁及其初始化.mp416.63MB
[11.5]--互斥锁的加解锁.mp428.65MB
[11.6]--应用互斥锁.mp430.98MB
{12}--虚拟内存管理和保护模式752.23MB
[12.1]--内存管理问题.mp436.71MB
[12.2]--位图数据结构与初始化.mp428.7MB
[12.3]--位图位的分配(1).mp46.02MB
[12.4]--位图位的分配(2).mp439.39MB
[12.5]--创建地址分配结构(1).mp424.85MB
[12.6]--创建地址分配结构(2).mp433.75MB
[12.7]--规划内存空间的分配(1).mp48.22MB
[12.8]--规划内存空间的分配(2).mp434.45MB
[12.9]--规划内存空间的分配(3).mp433.51MB
[12.10]--内存分页机制介绍.mp424.74MB
[12.11]--开启内存分页机制(1).mp426.91MB
[12.12]--开启内存分页机制(2)-1.mp414.82MB
[12.13]--开启内存分页机制(2)-2.mp441.63MB
[12.14]--开启内存分页机制(2)-3.mp420.7MB
[12.15]--创建内核页表(1)-建立映射表(1).mp416.52MB
[12.16]--创建内核页表(1)-建立映射表(2).mp447.46MB
[12.17]--创建内核页表(2)-页目录和页表结构.mp450.76MB
[12.18]--创建内核页表(3)-建立映射表(1).mp422.05MB
[12.19]--创建内核页表(3)-建立映射表(2).mp449.96MB
[12.20]--创建内核页表(3)-建立映射表(3).mp450.14MB
[12.21]--创建内核页表(4)-添加权限处理.mp438.22MB
[12.22]--为进程创建页表(1).mp426MB
[12.23]--为进程创建页表(2).mp476.7MB
{13}--隔离操作系统与进程584.52MB
[13.1]--隔离操作系统与进程(1)-代码分离.mp475.22MB
[13.2]--隔离操作系统与进程(2)-地址分离.mp471.44MB
[13.3]--隔离操作系统与进程(3)-搬运代码.mp470.92MB
[13.4]--调整应用的特权级(1).mp436.7MB
[13.5]--调整应用的特权级(2).mp445.17MB
[13.6]--调整异常处理函数(1).mp437.1MB
[13.7]--调整异常处理函数(2).mp478.3MB
[13.8]--修改空闲任务的特权级.mp428.52MB
[13.9]--切换至应用进程的特权级为最低.mp454.78MB
[13.10]--为进程添加特权级0的栈空间.mp486.38MB
{14}--建立系统调用366.24MB
[14.1]--创建调用门.mp460.44MB
[14.2]--实现系统调用的调用和返回(1).mp456.26MB
[14.3]--实现系统调用的调用和返回(2).mp426.67MB
[14.4]--实现msleep系统调用(1).mp454.18MB
[14.5]--实现msleep系统调用(2).mp419.43MB
[14.6]--实现getid系统调用.mp463.59MB
[14.7]--实现pint_msg调用.mp422.85MB
[14.8]--使用int$0x80实现系统调用.mp462.82MB
{15}--新进程的加载与创建866.45MB
[15.1]--实现fork系统调用(1)-添加调用接口.mp438.38MB
[15.2]--实现fork系统调用(2)-分配任务块.mp433.19MB
[15.3]--实现fork系统调用(3)-初始化任务块.mp4121.47MB
[15.4]--实现fork系统调用(4)-复制进程地址空间.mp4107.83MB
[15.5]--实现exec系统调用(1)-创建一个空应用.mp469.54MB
[15.6]--实现exec系统调用(2)-增加空的exec调用.mp425.02MB
[15.7]--实现exec系统调用(3)-添加虚似文件访问接口.mp478.75MB
[15.8]--实现exec系统调用(4)-解析并加载elf文件.mp4144.17MB
[15.9]--实现exec系统调用(5)-分配栈并进入进程执行.mp462.42MB
[15.10]--实现exec系统调用(6)-为进程传递参数(1).mp419.87MB
[15.11]--实现exec系统调用(6)-为进程传递参数(2).mp4110.61MB
[15.12]--添加sys_yield()系统调用.mp455.2MB
{16}--使用c标准库中的printf输出338.45MB
[16.1]--增加文件系统调用(1).mp477.62MB
[16.2]--增加文件系统调用(2).mp432.85MB
[16.3]--导入newlibc并调用printf.mp470.67MB
[16.4]--为malloc实现sys_brk调用(1).mp48.94MB
[16.5]--为malloc实现sys_brk调用(2).mp4114.52MB
[16.6]--简单的printf调用实现.mp433.85MB
{17}--使用控制台与键盘进行输入输出842.48MB
[17.1]--控制台简介与初始化(1).mp424.67MB
[17.2]--控制台简介与初始化(2).mp441.97MB
[17.3]--在控制台上显示字符串.mp483.54MB
[17.4]--处理换行和清屏.mp491.87MB
[17.5]--设置光标并重定向日志输出到显示器.mp447.15MB
[17.6]--有趣的转义字符串以及删除字符.mp446.84MB
[17.7]--保存并恢复光标位置.mp494.33MB
[17.8]--更新显示字体的颜色.mp491.49MB
[17.9]--移动光标位置及清屏.mp466.53MB
[17.10]--键盘初始化.mp444.86MB
[17.11]--借助按键映射表进行键值转换(1).mp429.85MB
[17.12]--借助按键映射表进行键值转换(2).mp480.06MB
[17.13]--处理caplock键.mp443.37MB
[17.14]--处理其它特殊功能键.mp455.95MB
{18}--设备管理与文件系统805.1MB
[18.1]--设备管理框架简介.mp437.49MB
[18.2]--增加tty设备.mp426.59MB
[18.3]--实现dev层接口操作.mp454.24MB
[18.4]--为tty设备添加结构描述.mp436.78MB
[18.5]--实现tty设备的打开.mp451.59MB
[18.6]--通过tty设备写显示数据(1).mp418.06MB
[18.7]--通过tty设备写显示数据(2).mp4101.97MB
[18.8]--文件系统简介及初始化.mp443.63MB
[18.9]--为进程添加文件打开表.mp430.8MB
[18.10]--打开tty设备并向其写入数据.mp486.72MB
[18.11]--从tty读取键值字符串并显示.mp494.59MB
[18.12]--打开标准输出及错误输出文件.mp463.9MB
[18.13]--允许切换tty窗口(1).mp49.34MB
[18.14]--允许切换tty窗口(2).mp483.07MB
[18.15]--为每个tty窗口创建进程并保护.mp466.32MB
{19}--实现一个命令行解释器516.51MB
[19.1]--初始化命令行解释器.mp466.29MB
[19.2]--实现help命令的解析.mp479.74MB
[19.3]--执行echo命令并给输出加点颜色(1).mp452.66MB
[19.4]--执行echo命令并给输出加点颜色(2).mp457.08MB
[19.5]--为进程增加exit接口.mp469.83MB
[19.6]--为进程增加wait接口(1).mp439.38MB
[19.7]--为进程增加wait接口(2).mp477.26MB
[19.8]--为进程增加wait接口(3).mp422.6MB
[19.9]--让子进程继承父进程已打开的文件.mp451.66MB
{20}--使用文件系统管理硬件设备443.98MB
[20.1]--描述一个文件系统.mp457.79MB
[20.2]--挂载设备文件系统(1).mp412.49MB
[20.3]--挂载设备文件系统(2).mp441.04MB
[20.4]--挂载设备文件系统(3).mp472.58MB
[20.5]--打开devtty0文件(1)-只打开devfs中的文件.mp4108.45MB
[20.6]--打开devtty0文件(2)-更通用的打开方式.mp474.19MB
[20.7]--往devtty0读写数据.mp477.43MB
{21}--磁盘与fat16文件系统1.83GB
[21.1]--磁盘基本特性简介.mp447.88MB
[21.2]--识别系统中已有的磁盘(1).mp416.97MB
[21.3]--识别系统中已有的磁盘(2).mp427.68MB
[21.4]--识别系统中已有的磁盘(3).mp441.26MB
[21.5]--识别系统中已有的磁盘(4).mp455.47MB
[21.6]--解析磁盘分区表(1).mp413.69MB
[21.7]--解析磁盘分区表(2).mp475.76MB
[21.8]--增加磁盘设备管理.mp466.42MB
[21.9]--实现磁盘的读取和写入(1).mp467.06MB
[21.10]--实现磁盘的读取和写入(2).mp442.61MB
[21.11]--FAT16文件系统简介(1).mp440.31MB
[21.12]--FAT16文件系统简介(2).mp439.79MB
[21.13]--挂载FAT16文件系统(1).mp458.55MB
[21.14]--挂载FAT16文件系统(2).mp458.17MB
[21.15]--挂载FAT16文件系统(3).mp436.75MB
[21.16]--遍历目录命令ls的实现(1)-添加系统调用接口.mp463.74MB
[21.17]--遍历目录命令ls的实现(2)-列出虚假的目录内容.mp461.19MB
[21.18]--遍历目录命令ls的实现(3)-列出真实的目录内容(1).mp439.48MB
[21.19]--遍历目录命令ls的实现(3)-列出真实的目录内容(2).mp441.5MB
[21.20]--遍历目录命令ls的实现(3)-列出真实的目录内容(3).mp482.7MB
[21.21]--文件查看命令less的实现(1)-打开文件.mp490.89MB
[21.22]--文件查看命令less的实现(2)-显示部分文件内容.mp480.79MB
[21.23]--文件查看命令less的实现(3)-显示全部文件内容.mp468.6MB
[21.24]--文件查看命令less的实现(4)-逐行显示文件内容.mp487.78MB
[21.25]--通过文件系统加载shell.mp482.59MB
[21.26]--让shell加载应用程序运行.mp462.1MB
[21.27]--应用运行异常时强制中断运行.mp447.13MB
[21.28]--文件复制命令cp的实现(1)-创建新文件.mp487.04MB
[21.29]--文件复制命令cp的实现(2)-删除文件.mp468.5MB
[21.30]--文件复制命令cp的实现(3)-文件写入(1).mp467.03MB
[21.31]--文件复制命令cp的实现(4)-文件写入(2).mp4109.52MB
[21.32]--最后的调整.mp440.56MB
{22}--课程总结35.27MB
[22.1]--设计总结.mp435.27MB
网站声明:
1. 该网盘资源的安全性和完整性需要您自行判断,点击下载地址直接跳转到网盘官方页面。本站链接通过程序自动收集互联网公开分享链接,本站不储存、复制、传播任何网盘文件,也不提供下载服务。
2. 本站遵守相关法律法规,坚决杜绝一切违规不良信息,如您发现任何涉嫌违规的网盘信息,请立即向网盘官方网站举报,并及时反馈给我们进行屏蔽删除。
3. 本站高度重视知识产权保护和个人隐私保护,如有网盘链接侵犯您的合法权益,请立即向网盘官方网站举报,并参见本站《版权说明》提供书面材料联系我们屏蔽删改。
1. 该网盘资源的安全性和完整性需要您自行判断,点击下载地址直接跳转到网盘官方页面。本站链接通过程序自动收集互联网公开分享链接,本站不储存、复制、传播任何网盘文件,也不提供下载服务。
2. 本站遵守相关法律法规,坚决杜绝一切违规不良信息,如您发现任何涉嫌违规的网盘信息,请立即向网盘官方网站举报,并及时反馈给我们进行屏蔽删除。
3. 本站高度重视知识产权保护和个人隐私保护,如有网盘链接侵犯您的合法权益,请立即向网盘官方网站举报,并参见本站《版权说明》提供书面材料联系我们屏蔽删改。