这门课解决什么问题

这套课程的核心是帮助学员理解X64架构与操作系统的底层原理。对于经常使用计算机但对其内部机制缺乏认知的开发者或技术爱好者来说,课程能填补知识空白。比如,在调试系统崩溃或优化性能时,了解中断处理、内存管理等概念至关重要。课程以IA-32e的64位模式为切入点,通过实例讲解中断门、异常服务例程等抽象概念,解决学员面对底层知识时“知道是什么”但“不理解为什么”的困境。它不局限于理论,而是将抽象机制与具体实现结合,比如通过“初始化8259中断控制器”等案例,让学员掌握硬件与软件交互的细节。对于想从应用层深入到系统层的学员,这门课能提供必要的认知框架,避免在解决底层问题时依赖“黑盒”操作。

课程内容如何对应实际工作场景

课程中关于内存管理的讲解,比如分段机制和分页机制,直接关系到Linux或Windows系统下的内存分配问题。在开发大型应用时,内存泄漏或碎片化往往源于对底层机制的忽视。通过“内核的文件组织与通用的中断和异常处理策略”等模块,学员能理解操作系统如何管理文件和响应硬件信号,这有助于排查类似“蓝屏”或“死机”的故障。中断处理的案例(如“创建通用中断处理过程的中断门”)则能解释系统如何在高并发场景下协调硬件资源,这对于优化多任务处理性能有直接帮助。课程还涉及GDT(全局描述符表)和栈区高端线性地址的设置,这对应着系统启动阶段的内存布局,是理解操作系统初始化过程的关键。学员通过学习这些内容,可以更精准地定位和解决系统级问题,而不仅是停留在代码层面的调试。

适合什么基础的人学习

这门课面向有一定编程基础,但对计算机底层原理陌生的学员。具体而言,适合以下三类人: 首先,熟悉C或C++语言,能编写简单可执行文件的开发者。课程涉及的汇编语言与高级语言紧密相关,没有语言基础难以理解寄存器操作和内存指令。其次,使用Linux或Windows系统多年,但仅停留在命令行操作的技术支持人员。课程会从实际系统(如64位Linux)出发,讲解中断控制器(如8259)的初始化过程,有助于理解系统启动逻辑。最后,对虚拟化技术(如VMware)有一定接触,但未深入过其底层原理的学生。课程会解释中断门和异常处理机制,这与虚拟机逃逸等安全问题直接相关。对于零基础学员,课程可能过难,但若能结合《深入理解计算机系统》等书籍自学,也能逐步跟上。

学习前需注意的几个前提

学员需具备两个核心能力:一是逻辑推理能力,因为底层知识涉及多层级关联(如CPU指令与内存映射的对应关系);二是耐心,课程中部分案例(如64位模式切换)需要反复调试理解。此外,课程强调理论与实践结合,学员需准备虚拟机环境,用QEMU或VirtualBox运行64位Linux,配合课程中的代码片段进行验证。比如,在学习“启用GDT和栈区高端线性”时,需手动编写汇编代码并观察内存映射变化。对于已有操作系统课程基础的学员,可以直接关注“中断处理”和“内存分页”模块,这两部分与课程目录中的[5.12]和[20.6 MB]等案例关联最紧密;其他学员则建议按顺序学习,因为底层知识环环相扣。

学完能独立做什么

完成课程后,学员能独立完成三项核心任务:第一,解释X64架构的运行机制,包括长模式切换、GDT/IDT的作用,以及64位系统如何通过分页机制管理内存。例如,能说明“通用异常服务例程的工作过程”中,EFLAGS寄存器如何传递CPU状态。第二,调试底层驱动或内核模块时的常见问题,如中断响应延迟或内存访问越界。课程中“初始化8259中断控制器”的案例会提供排查思路,比如检查中断向量表是否正确配置。第三,优化系统性能,通过理解中断优先级和内存对齐规则,调整内核参数或应用代码。比如,知道“64位模式下的第一条信息”如何通过BIOS中断打印,就能类比实现自定义日志输出。这些能力对系统开发、嵌入式开发或安全领域尤为关键。

如何利用资料包进行实践

资料包中的案例代码需结合虚拟机环境使用。以“通用异常服务例程的工作过程”为例,学员需在64位Linux中编写汇编函数,通过GDB单步跟踪验证EFLAGS的传递逻辑。这个过程能强化对“内核的文件组织与通用中断处理策略”的理解,因为例程通常驻留在内核段。对于“打印64位模式下的第一条信息”等简单任务,可直接运行课程提供的脚本,观察栈指针RSP的变化,从而印证“启用GDT和栈区高端线性”模块中的理论。更进阶的练习包括重写部分中断处理函数,或修改分页机制参数观察系统行为。建议学员每学习两章后,就用虚拟机复现一个案例,比如“创建通用中断处理过程的中断门”,通过编写和调试加深记忆。资料包中的汇编模板(如中断门结构)虽然不直接提供,但课程会教如何推导这些模板的生成原理,培养自主解决问题的能力。

课程目录

📁 {5}--进入IA-32e的64位模式执行 [5.12]--创建通用中断处理过程的中断门.mp4
 [20.6 MB] [5.10]--通用异常服务例程的工作过程.mp4
 [24.8 MB] [5.15]--初始化8259中断控制器.mp4
 [17.0 MB] [5.9]--内核的文件组织与通用的中断和异常处理策略.mp4
 [22.5 MB] [5.16]--打印64位模式下的第一条信息.mp4
 [22.1 MB] [5.4]--启用GDT和栈区的高端线性地址.mp4
 [22.7 MB] [5.11]--加载有效地址指令LEA.mp4
 [18.2 MB] [5.3]--准备让内核工作在线性地址空间的高端.mp4
 [15.7 MB] [5.13]--在IDT内安装前32个与异常有关的中断门.mp4
 [23.1 MB] [5.6]--让处理器转到内核程序对应的高端位置继续执行.mp4
 [15.5 MB] [5.1]--在IA-32e的兼容模式下显示文本信息.mp4
 [26.7 MB] [5.17]--在虚拟机上观察内核的运行情况.mp4
 [12.7 MB] [5.8]--IA-32e模式下的中断处理过程.mp4
 [17.2 MB] [5.14]--在IDT内安装剩余的中断门并加载IDTR.mp4
 [18.1 MB] [5.7]--IA-32e模式下的中断门和陷阱门.mp4
 [15.3 MB] [5.2]--通过远返回方式进入64位模式的内核.mp4
 [35.8 MB] [5.5]--使用RIP相对寻址将内核的起始线性地址改为高端地址.mp4
 [19.2 MB] 📁 {2}--X64基本架构和执行环境 [2.33]--64位模式的RIP相对寻址方式.mp4
 [15.6 MB] [2.6]--第一次阶段性巩固和测试.mp4
 [47.6 MB] [2.3]--物理地址、有效地址和线性地址.mp4
 [13.0 MB] [2.30]--X64架构下的标志寄存器和指令指针寄存器.mp4
 [29.5 MB] [2.34]--64位模式下的指令变化情况.mp4
 [18.9 MB] [2.31]--X64架构下传统模式的寻址方式.mp4
 [14.4 MB] [2.28]--X64架构下的LDT描述符和LDTR.mp4
 [11.1 MB] [2.35]--IA-32e模式下的中断和异常处理概述.mp4
 [16.0 MB] [2.8]--X64架构新增加的通用寄存器.mp4
 [9.4 MB] [2.4]--X64架构的工作模式.mp4
 [11.7 MB] [2.5]--IA-32e模式及其子模式.mp4
 [9.9 MB] [2.11]--X64架构下传统模式的内存访问.mp4
 [8.4 MB] [2.7]--X64架构对通用寄存器的扩展.mp4
 [18.0 MB] [2.9]--X64架构的通用寄存器访问规则.mp4
 [20.7 MB] [2.10]--X86处理器的物理地址空间.mp4
 [19.8 MB] [2.25]--X64架构下的系统表和系统描述符.mp4
 [12.9 MB] [2.2]--X64架构的由来.mp4
 [16.5 MB] [2.16]--传统模式下的32位PAE-4KB分页技术.mp4
 [46.8 MB] [2.24]--X64架构下的4级和5级分页简介.mp4
 [16.9 MB] [2.29]--X64架构下的TSS描述符和TR.mp4
 [10.1 MB] [2.32]--X64架构下IA-32e模式的寻址方式.mp4
 [23.4 MB] [2.19]--扩高地址的特点和处理器检查.mp4
 [15.7 MB] [2.18]--X64架构的线性地址空间.mp4
 [18.7 MB] [2.13]--传统模式下如何利用超过4GB的物理内存.mp4
 [11.7 MB] [2.1]--有关本章内容学习的重要提示.mp4
 [20.4 MB] [2.15]--传统模式下的32位PAE分页技术.mp4
 [9.2 MB] [2.26]--X64架构下的GDTR.mp4
 [18.3 MB] [2.20]--X64架构下IA-32e模式的内存访问.mp4
 [15.9 MB] [2.21]--X64架构的段寄存器.mp4
 [13.8 MB] [2.23]--X64架构下的数据段描述符.mp4
 [9.5 MB] [2.14]--传统模式下的32位4MB分页技术.mp4
 [34.4 MB] [2.17]--传统模式下的32位PAE-2MB分页技术.mp4
 [17.1 MB] [2.12]--传统模式下的32位4KB分页技术.mp4
 [9.3 MB] [2.22]--X64架构下的代码段描述符.mp4
 [14.1 MB] [2.27]--X64架构下的IDTR.mp4
 [19.4 MB] 📁 {1}--内容提要及课程相关说明 [1.1]--内容提要及课程相关说明.mp4
 [10.4 MB] 📁 {6}--单处理器环境下的多任务管理和调度 [6.47]--将64位二进制数转换为十进制字符串.mp4
 [15.0 MB] [6.41]--执行任务切换.mp4
 [22.9 MB] [6.45]--用户任务的结构和功能.mp4
 [23.0 MB] [6.43]--通过系统调用获取当前时间.mp4
 [17.2 MB] [6.42]--通过系统调用获取屏幕上可用的显示行坐标.mp4
 [20.3 MB] [6.39]--快速系统调用的返回和指令的REX前缀.mp4
 [19.2 MB] [6.8]--快速系统调用时的RFLAGS和栈切换.mp4
 [13.1 MB] [6.44]--在外壳任务中显示当前时间.mp4
 [11.5 MB] [6.9]--动态内存分配和内核空间的分配策略.mp4
 [15.0 MB] [6.46]--当前任务标识的获取和用户程序例程库的介绍.mp4
 [20.4 MB] [6.48]--在每一轮相加中将结果和加数转换为字符串.mp4
 [23.1 MB] [6.19]--安装与指定线性地址对应的页目录项、页表项和页面.mp4
 [20.4 MB] [6.28]--切换到新任务的地址空间并清空4级头表的前半部分.mp4
 [15.3 MB] [6.29]--为新任务分配0特权级使用的栈空间.mp4
 [22.1 MB] [6.10]--内核可用线性地址的获取和更新.mp4
 [23.8 MB] [6.2]--快速系统调用概述.mp4
 [12.7 MB] [6.4]--准备在GDT中安装新的描述符.mp4
 [24.7 MB] [6.14]--页面分配与页映射位串.mp4
 [17.3 MB] [6.37]--系统调用指令SYSCALL和SYSRET.mp4
 [24.8 MB] [6.36]--以中断返回的方式进入外壳任务的局部空间执行.mp4
 [22.2 MB] [6.38]--根据功能号计算内核例程的线性地址.mp4
 [28.0 MB] [6.18]--分配页目录表并安装与线性地址对应的页目录指针项.mp4
 [15.0 MB] [6.6]--为快速系统调用准备段选择子.mp4
 [13.8 MB] [6.30]--为新任务分配3特权级使用的栈空间.mp4
 [22.8 MB] [6.34]--将新任务的PCB添加到PCB链表中.mp4
 [16.0 MB] [6.50]--用户任务的终止.mp4
 [32.1 MB] [6.40]--准备在时钟中断的处理中执行任务切换.mp4
 [31.4 MB] [6.12]--计算本次内存分配涉及的线性地址范围.mp4
 [14.1 MB] [6.21]--创建和安装64位的TSS描述符并加载任务寄存器TR.mp4
 [27.2 MB] [6.35]--64位的任务状态段TSS和中断栈表IST.mp4
 [22.3 MB] [6.5]--为快速系统调用安装段描述符.mp4
 [25.6 MB] [6.3]--型号专属寄存器IA32_STAR.mp4
 [25.5 MB] [6.49]--字符串的连接和显示.mp4
 [18.2 MB] [6.17]--检查与指定线性地址对应的页目录指针项是否存在.mp4
 [11.6 MB] [6.26]--将指定的线性地址映射到指定的物理页.mp4
 [27.2 MB] [6.23]--准备创建外壳任务.mp4
 [20.9 MB] [6.7]--设置快速系统调用的入口点.mp4
 [14.3 MB] [6.51]--任务切换频次对用户体验的影响.mp4
 [40.4 MB] [6.27]--复制当前活动4级头表的内容给新任务的4级头表.mp4
 [16.1 MB] [6.25]--为新任务创建4级头表.mp4
 [23.9 MB] [6.1]--单处理器环境下的多任务概述.mp4
 [24.4 MB] [6.22]--实时时钟中断的安装和系统外壳任务简介.mp4
 [29.9 MB] [6.15]--页映射位串的定义和空闲页的查找.mp4
 [23.7 MB] [6.24]--为新任务创建任务控制块PCB.mp4
 [18.1 MB] [6.13]--获取与指定线性地址对应的4级头表项的线性地址.mp4
 [27.1 MB] [6.31]--从硬盘上加载用户程序.mp4
 [19.5 MB] [6.20]--64位LDT和TSS描述符的格式.mp4
 [15.6 MB] [6.16]--获取与指定线性地址对应的页目录指针项的线性地址.mp4
 [26.8 MB] [6.11]--立即数在64位模式下的长度限制.mp4
 [13.6 MB] [6.32]--生成任务标识.mp4
 [19.8 MB] [6.33]--双向PCB链表概述.mp4
 [18.5 MB] 📁 {4}--为进入IA-32e模式准备4级分页 [4.7]--创建指向4级头表自身的4级头表项.mp4
 [14.2 MB] [4.3]--4级头表项的格式.mp4
 [21.1 MB] [4.5]--页目录项和页表项的格式.mp4
 [10.0 MB] [4.1]--4级分页的结构和原理.mp4
 [16.6 MB] [4.9]--在4级分页中使用2MB的物理页.mp4
 [9.5 MB] [4.10]--创建与低端2MB物理内存对应的4级头表项和页目录指针表.mp4
 [18.9 MB] [4.4]--页目录指针项的格式.mp4
 [17.4 MB] [4.20]--型号专属寄存器IA32_EFER的设置和分页的开启.mp4
 [25.4 MB] [4.16]--在内核的4级头表内安装254个表项并清空相关的页目录指针表.mp4
 [22.4 MB] [4.18]--控制寄存器CR3的内容格式.mp4
 [10.6 MB] [4.13]--将物理内存低端的2MB映射到线性地址空间的高端.mp4
 [20.2 MB] [4.12]--创建与低端2MB物理内存对应的页目录项.mp4
 [10.2 MB] [4.8]--准备映射物理内存的低端2MB空间.mp4
 [33.2 MB] [4.2]--2MB和1GB页面的4级分页方式.mp4
 [12.0 MB] [4.17]--进程上下文标识PCID.mp4
 [20.8 MB] [4.14]--为多任务环境准备必要的4级头表项.mp4
 [14.1 MB] [4.6]--4级头表的创建和初始化.mp4
 [12.9 MB] [4.15]--为内核的4级分页系统预分配254个页目录指针表.mp4
 [15.6 MB] [4.19]--设置控制寄存器CR3并开启物理地址扩展功能.mp4
 [9.8 MB] [4.11]--创建与低端2MB物理内存对应的页目录指针项和页目录表.mp4
 [15.0 MB] 📁 {3}--准备进入IA-32e模式 [3.3]--主引导程序和NASM的文件包含功能.mp4
 [25.4 MB] [3.10]--调用BIOS例程显示字符串.mp4
 [20.1 MB] [3.2]--本章的目标及源程序的组织.mp4
 [25.6 MB] [3.13]--转入内核加载器执行.mp4
 [80.4 MB] [3.23]--读取内核程序的第一个扇区.mp4
 [20.3 MB] [3.20]--进入保护模式.mp4
 [46.4 MB] [3.12]--准备读取内核加载器程序的剩余部分.mp4
 [20.7 MB] [3.14]--检测处理器是否支持IA-32e模式.mp4
 [24.9 MB] [3.1]--进入IA-32e模式的方法.mp4
 [10.5 MB] [3.9]--通过数据段访问栈中的数据结构.mp4
 [8.9 MB] [3.11]--读磁盘失败后的错误处理.mp4
 [24.8 MB] [3.19]--为进入保护模式准备全局描述符表.mp4
 [17.9 MB] [3.5]--编写主引导程序的一般性建议.mp4
 [10.7 MB] [3.8]--内核加载器程序的有效标志和长度.mp4
 [14.4 MB] [3.4]--如何避免文件被重复包含.mp4
 [23.4 MB] [3.21]--在保护模式下显示字符串.mp4
 [82.6 MB] [3.15]--位测试指令BT.mp4
 [35.0 MB] [3.18]--显示处理器的地址尺寸信息.mp4
 [142.9 MB] [3.16]--获取和显示处理器商标信息.mp4
 [25.6 MB] [3.24]--将内核程序完全加载到内存中.mp4
 [26.7 MB] [3.6]--用BIOS硬盘扩展读加载内核加载器.mp4
 [16.5 MB] [3.22]--有关内核程序及其如何加载的说明.mp4
 [21.6 MB] [3.7]--在程序中使用NASM运算符和表达式.mp4
 [16.2 MB] [3.17]--获取和保存处理器的地址尺寸数据.mp4
 [18.9 MB] 适合人群 计算机专业学生 系统架构师 底层开发人员 学习收获 掌握X64架构原理 理解操作系统工作原理 提升系统开发能力 祝您学习愉快! 学有所成,前程似锦!