getfromcode

X64架构汇编语言和操作系统基础

测试运维
课程简介

底层视角的操作系统内核重构 在软件开发领域,许多工程师对操作系统的理解往往局限于系统调用或高级语言 API 的封装层面。这种表层的知识储备,导致开发者在面对复杂的并发 Bug、内存泄漏或性能瓶颈时,缺乏精准的定位能力与底层直觉。本课程旨在彻底打破这一局限,它不依赖任何高级语言的抽象外衣,而是直接切入硬件层级,使用汇编语言深入剖析操作系统的核心运行机制。课程…

已有 26 人浏览 发布 2025-12-20 更新 2026-09-22

底层视角的操作系统内核重构

在软件开发领域,许多工程师对操作系统的理解往往局限于系统调用或高级语言 API 的封装层面。这种表层的知识储备,导致开发者在面对复杂的并发 Bug、内存泄漏或性能瓶颈时,缺乏精准的定位能力与底层直觉。本课程旨在彻底打破这一局限,它不依赖任何高级语言的抽象外衣,而是直接切入硬件层级,使用汇编语言深入剖析操作系统的核心运行机制。课程主要涵盖单处理器与多处理器的多任务切换机制、多线程环境下的数据竞争问题、以及信号量、互斥锁和内存屏障等关键同步原语的底层实现。这种基于汇编的硬核讲解方式,能够让读者清晰地看到 CPU 指令、寄存器状态与内核调度算法之间的紧密耦合,从而建立起透彻且清晰的系统观。

前置门槛与系统化学习路径

本课程具有明确的技术门槛,不适合计算机零基础的用户。学习者必须已经熟练掌握 x86 处理器的保护模式,建议先完成《x86汇编语言:从实模式到保护模式》的学习,或观看同名视频课程以补齐前置知识。在进入核心章节前,首要任务是夯实 X64 架构基础,重点理解处理器的物理地址空间布局、传统模式下的 32 位内存访问方式以及分页机制中的地址翻译过程。这是后续所有并发与同步概念的地基。随后,应按照从单核到多核的逻辑顺序推进:先解析单处理器的上下文切换流程,再深入探讨多处理器环境下的任务调度,最后聚焦于多线程同步中最为棘手的内存屏障与缓存一致性难题。整个学习过程需要极大的专注力,因为每一处汇编代码都对应着真实的硬件行为。

工程产出与资料配合实践指南

完成本课程的学习后,开发者应具备独立剖析复杂并发场景底层行为的能力,能够从零开始编写自定义的调度器原型,并能手写实现线程同步原语。为了将理论转化为真正的工程能力,读者绝不能仅停留在视频观看层面。资料包中包含了丰富的可执行代码示例,建议在学习每个知识点后,立即对照源码进行编译和调试。通过修改汇编代码并观察执行结果,你可以直观地验证内存屏障的作用、理解锁的细粒度优化以及看清上下文切换时的栈栈帧变化。这种“阅读源码—动手复现—对比差异”的闭环练习,是掌握这门硬核课程唯一有效的途径,也能让你在未来进行系统级编程时,拥有超越常人的技术深度。

【资源介绍】:

适用人群
具有计算机的使用经验,学过并熟悉x86处理器保护模式的内容。建议先学习《x86汇编语言:从实模式到保护模式》一书或者本讲师的同名视频课程。

介绍64位x86处理器的硬件架构、以及与操作系统相关的内容,包括:单处理器的多任务切换、多处理器的多任务切换和多线程切换、数据竞争、信号量、锁、线程同步和内存屏障等。注意:我们是用汇编语言来讲,而不是用高级语言!!!用汇编语言在硬件层级上讲上述内容,更透彻、更清晰!!!

【资源目录】:

├──{1}–内容提要及课程相关说明
| └──[1.1]–内容提要及课程相关说明.mp4 10.44M
├──{2}–X64基本架构和执行环境
| ├──[2.10]–X86处理器的物理地址空间.mp4 19.79M
| ├──[2.11]–X64架构下传统模式的内存访问.mp4 8.35M
| ├──[2.12]–传统模式下的32位4KB分页技术.mp4 9.28M
| ├──[2.13]–传统模式下如何利用超过4GB的物理内存.mp4 11.70M
| ├──[2.14]–传统模式下的32位4MB分页技术.mp4 34.40M
| ├──[2.15]–传统模式下的32位PAE分页技术.mp4 9.18M
| ├──[2.16]–传统模式下的32位PAE-4KB分页技术.mp4 46.83M
| ├──[2.17]–传统模式下的32位PAE-2MB分页技术.mp4 17.15M
| ├──[2.18]–X64架构的线性地址空间.mp4 18.70M
| ├──[2.19]–扩高地址的特点和处理器检查.mp4 15.73M
| ├──[2.1]–有关本章内容学习的重要提示.mp4 20.35M
| ├──[2.20]–X64架构下IA-32e模式的内存访问.mp4 15.89M
| ├──[2.21]–X64架构的段寄存器.mp4 13.84M
| ├──[2.22]–X64架构下的代码段描述符.mp4 14.07M
| ├──[2.23]–X64架构下的数据段描述符.mp4 9.52M
| ├──[2.24]–X64架构下的4级和5级分页简介.mp4 16.92M
| ├──[2.25]–X64架构下的系统表和系统描述符.mp4 12.91M
| ├──[2.26]–X64架构下的GDTR.mp4 18.29M
| ├──[2.27]–X64架构下的IDTR.mp4 19.36M
| ├──[2.28]–X64架构下的LDT描述符和LDTR.mp4 11.14M
| ├──[2.29]–X64架构下的TSS描述符和TR.mp4 10.13M
| ├──[2.2]–X64架构的由来.mp4 16.53M
| ├──[2.30]–X64架构下的标志寄存器和指令指针寄存器.mp4 29.54M
| ├──[2.31]–X64架构下传统模式的寻址方式.mp4 14.41M
| ├──[2.32]–X64架构下IA-32e模式的寻址方式.mp4 23.38M
| ├──[2.33]–64位模式的RIP相对寻址方式.mp4 15.61M
| ├──[2.34]–64位模式下的指令变化情况.mp4 18.89M
| ├──[2.35]–IA-32e模式下的中断和异常处理概述.mp4 16.04M
| ├──[2.3]–物理地址、有效地址和线性地址.mp4 12.99M
| ├──[2.4]–X64架构的工作模式.mp4 11.67M
| ├──[2.5]–IA-32e模式及其子模式.mp4 9.91M
| ├──[2.6]–第一次阶段性巩固和测试.mp4 47.60M
| ├──[2.7]–X64架构对通用寄存器的扩展.mp4 17.97M
| ├──[2.8]–X64架构新增加的通用寄存器.mp4 9.38M
| └──[2.9]–X64架构的通用寄存器访问规则.mp4 20.69M
├──{3}–准备进入IA-32e模式
| ├──[3.10]–调用BIOS例程显示字符串.mp4 20.12M
| ├──[3.11]–读磁盘失败后的错误处理.mp4 24.81M
| ├──[3.12]–准备读取内核加载器程序的剩余部分.mp4 20.66M
| ├──[3.13]–转入内核加载器执行.mp4 80.36M
| ├──[3.14]–检测处理器是否支持IA-32e模式.mp4 24.89M
| ├──[3.15]–位测试指令BT.mp4 35.02M
| ├──[3.16]–获取和显示处理器商标信息.mp4 25.63M
| ├──[3.17]–获取和保存处理器的地址尺寸数据.mp4 18.93M
| ├──[3.18]–显示处理器的地址尺寸信息.mp4 142.90M
| ├──[3.19]–为进入保护模式准备全局描述符表.mp4 17.90M
| ├──[3.1]–进入IA-32e模式的方法.mp4 10.48M
| ├──[3.20]–进入保护模式.mp4 46.41M
| ├──[3.21]–在保护模式下显示字符串.mp4 82.57M
| ├──[3.22]–有关内核程序及其如何加载的说明.mp4 21.62M
| ├──[3.23]–读取内核程序的第一个扇区.mp4 20.29M
| ├──[3.24]–将内核程序完全加载到内存中.mp4 26.75M
| ├──[3.2]–本章的目标及源程序的组织.mp4 25.58M
| ├──[3.3]–主引导程序和NASM的文件包含功能.mp4 25.38M
| ├──[3.4]–如何避免文件被重复包含.mp4 23.41M
| ├──[3.5]–编写主引导程序的一般性建议.mp4 10.71M
| ├──[3.6]–用BIOS硬盘扩展读加载内核加载器.mp4 16.55M
| ├──[3.7]–在程序中使用NASM运算符和表达式.mp4 16.23M
| ├──[3.8]–内核加载器程序的有效标志和长度.mp4 14.36M
| └──[3.9]–通过数据段访问栈中的数据结构.mp4 8.94M
├──{4}–为进入IA-32e模式准备4级分页
| ├──[4.10]–创建与低端2MB物理内存对应的4级头表项和页目录指针表.mp4 18.94M
| ├──[4.11]–创建与低端2MB物理内存对应的页目录指针项和页目录表.mp4 15.04M
| ├──[4.12]–创建与低端2MB物理内存对应的页目录项.mp4 10.18M
| ├──[4.13]–将物理内存低端的2MB映射到线性地址空间的高端.mp4 20.25M
| ├──[4.14]–为多任务环境准备必要的4级头表项.mp4 14.07M
| ├──[4.15]–为内核的4级分页系统预分配254个页目录指针表.mp4 15.65M
| ├──[4.16]–在内核的4级头表内安装254个表项并清空相关的页目录指针表.mp4 22.36M
| ├──[4.17]–进程上下文标识PCID.mp4 20.80M
| ├──[4.18]–控制寄存器CR3的内容格式.mp4 10.59M
| ├──[4.19]–设置控制寄存器CR3并开启物理地址扩展功能.mp4 9.77M
| ├──[4.1]–4级分页的结构和原理.mp4 16.55M
| ├──[4.20]–型号专属寄存器IA32_EFER的设置和分页的开启.mp4 25.42M
| ├──[4.2]–2MB和1GB页面的4级分页方式.mp4 12.03M
| ├──[4.3]–4级头表项的格式.mp4 21.10M
| ├──[4.4]–页目录指针项的格式.mp4 17.43M
| ├──[4.5]–页目录项和页表项的格式.mp4 10.00M
| ├──[4.6]–4级头表的创建和初始化.mp4 12.94M
| ├──[4.7]–创建指向4级头表自身的4级头表项.mp4 14.20M
| ├──[4.8]–准备映射物理内存的低端2MB空间.mp4 33.21M
| └──[4.9]–在4级分页中使用2MB的物理页.mp4 9.54M
├──{5}–进入IA-32e的64位模式执行
| ├──[5.10]–通用异常服务例程的工作过程.mp4 24.81M
| ├──[5.11]–加载有效地址指令LEA.mp4 18.25M
| ├──[5.12]–创建通用中断处理过程的中断门.mp4 20.55M
| ├──[5.13]–在IDT内安装前32个与异常有关的中断门.mp4 23.06M
| ├──[5.14]–在IDT内安装剩余的中断门并加载IDTR.mp4 18.09M
| ├──[5.15]–初始化8259中断控制器.mp4 17.01M
| ├──[5.16]–打印64位模式下的第一条信息.mp4 22.09M
| ├──[5.17]–在虚拟机上观察内核的运行情况.mp4 12.70M
| ├──[5.1]–在IA-32e的兼容模式下显示文本信息.mp4 26.72M
| ├──[5.2]–通过远返回方式进入64位模式的内核.mp4 35.80M
| ├──[5.3]–准备让内核工作在线性地址空间的高端.mp4 15.67M
| ├──[5.4]–启用GDT和栈区的高端线性地址.mp4 22.69M
| ├──[5.5]–使用RIP相对寻址将内核的起始线性地址改为高端地址.mp4 19.16M
| ├──[5.6]–让处理器转到内核程序对应的高端位置继续执行.mp4 15.54M
| ├──[5.7]–IA-32e模式下的中断门和陷阱门.mp4 15.31M
| ├──[5.8]–IA-32e模式下的中断处理过程.mp4 17.22M
| └──[5.9]–内核的文件组织与通用的中断和异常处理策略.mp4 22.55M
└──{6}–单处理器环境下的多任务管理和调度
| ├──[6.10]–内核可用线性地址的获取和更新.mp4 23.81M
| ├──[6.11]–立即数在64位模式下的长度限制.mp4 13.63M
| ├──[6.12]–计算本次内存分配涉及的线性地址范围.mp4 14.09M
| ├──[6.13]–获取与指定线性地址对应的4级头表项的线性地址.mp4 27.09M
| ├──[6.14]–页面分配与页映射位串.mp4 17.28M
| ├──[6.15]–页映射位串的定义和空闲页的查找.mp4 23.66M
| ├──[6.16]–获取与指定线性地址对应的页目录指针项的线性地址.mp4 26.83M
| ├──[6.17]–检查与指定线性地址对应的页目录指针项是否存在.mp4 11.64M
| ├──[6.18]–分配页目录表并安装与线性地址对应的页目录指针项.mp4 15.03M
| ├──[6.19]–安装与指定线性地址对应的页目录项、页表项和页面.mp4 20.36M
| ├──[6.1]–单处理器环境下的多任务概述.mp4 24.38M
| ├──[6.20]–64位LDT和TSS描述符的格式.mp4 15.63M
| ├──[6.21]–创建和安装64位的TSS描述符并加载任务寄存器TR.mp4 27.18M
| ├──[6.22]–实时时钟中断的安装和系统外壳任务简介.mp4 29.93M
| ├──[6.23]–准备创建外壳任务.mp4 20.94M
| ├──[6.24]–为新任务创建任务控制块PCB.mp4 18.12M
| ├──[6.25]–为新任务创建4级头表.mp4 23.92M
| ├──[6.26]–将指定的线性地址映射到指定的物理页.mp4 27.19M
| ├──[6.27]–复制当前活动4级头表的内容给新任务的4级头表.mp4 16.13M
| ├──[6.28]–切换到新任务的地址空间并清空4级头表的前半部分.mp4 15.35M
| ├──[6.29]–为新任务分配0特权级使用的栈空间.mp4 22.05M
| ├──[6.2]–快速系统调用概述.mp4 12.74M
| ├──[6.30]–为新任务分配3特权级使用的栈空间.mp4 22.76M
| ├──[6.31]–从硬盘上加载用户程序.mp4 19.54M
| ├──[6.32]–生成任务标识.mp4 19.76M
| ├──[6.33]–双向PCB链表概述.mp4 18.52M
| ├──[6.34]–将新任务的PCB添加到PCB链表中.mp4 15.96M
| ├──[6.35]–64位的任务状态段TSS和中断栈表IST.mp4 22.33M
| ├──[6.36]–以中断返回的方式进入外壳任务的局部空间执行.mp4 22.22M
| ├──[6.37]–系统调用指令SYSCALL和SYSRET.mp4 24.77M
| ├──[6.38]–根据功能号计算内核例程的线性地址.mp4 27.96M
| ├──[6.39]–快速系统调用的返回和指令的REX前缀.mp4 19.22M
| ├──[6.3]–型号专属寄存器IA32_STAR.mp4 25.51M
| ├──[6.40]–准备在时钟中断的处理中执行任务切换.mp4 31.38M
| ├──[6.41]–执行任务切换.mp4 22.94M
| ├──[6.42]–通过系统调用获取屏幕上可用的显示行坐标.mp4 20.27M
| ├──[6.43]–通过系统调用获取当前时间.mp4 17.18M
| ├──[6.44]–在外壳任务中显示当前时间.mp4 11.53M
| ├──[6.45]–用户任务的结构和功能.mp4 23.01M
| ├──[6.46]–当前任务标识的获取和用户程序例程库的介绍.mp4 20.43M
| ├──[6.47]–将64位二进制数转换为十进制字符串.mp4 15.01M
| ├──[6.48]–在每一轮相加中将结果和加数转换为字符串.mp4 23.08M
| ├──[6.49]–字符串的连接和显示.mp4 18.22M
| ├──[6.4]–准备在GDT中安装新的描述符.mp4 24.68M
| ├──[6.50]–用户任务的终止.mp4 32.08M
| ├──[6.51]–任务切换频次对用户体验的影响.mp4 40.36M
| ├──[6.5]–为快速系统调用安装段描述符.mp4 25.62M
| ├──[6.6]–为快速系统调用准备段选择子.mp4 13.84M
| ├──[6.7]–设置快速系统调用的入口点.mp4 14.27M
| ├──[6.8]–快速系统调用时的RFLAGS和栈切换.mp4 13.13M
| └──[6.9]–动态内存分配和内核空间的分配策略.mp4 14.98M

课程目录

课程目录256 集
  • {1}--课程
  • {10}--数据竞争和互斥锁
  • [10.1]--本章内容提要_ev.mp4
  • [10.2]--线程休眠及其实现机制_ev.mp4
  • [10.3]--执行线程休眠的系统调用_ev.mp4
  • {1}--内容提要及课程相关说明
  • [1.1]--内容提要及课程相关说明_ev.mp4
  • {2}--X64基本架构和执行环境
  • [2.10]--X86处理器的物理地址空间_ev.mp4
  • [2.11]--X64架构下传统模式的内存访问_ev.mp4
  • [2.12]--传统模式下的32位4KB分页技术_ev.mp4
  • [2.13]--传统模式下如何利用超过4GB的物理内存_ev.mp4
  • [2.14]--传统模式下的32位4MB分页技术_ev.mp4
  • [2.15]--传统模式下的32位PAE分页技术_ev.mp4
  • [2.16]--传统模式下的32位PAE-4KB分页技术_ev.mp4
  • [2.17]--传统模式下的32位PAE-2MB分页技术_ev.mp4
  • [2.18]--X64架构的线性地址空间_ev.mp4
  • [2.19]--扩高地址的特点和处理器检查_ev.mp4
  • [2.1]--有关本章内容学习的重要提示_ev.mp4
  • [2.20]--X64架构下IA-32e模式的内存访问_ev.mp4
  • [2.21]--X64架构的段寄存器_ev.mp4
  • [2.22]--X64架构下的代码段描述符_ev.mp4
  • [2.23]--X64架构下的数据段描述符_ev.mp4
  • [2.24]--X64架构下的4级和5级分页简介_ev.mp4
  • [2.25]--X64架构下的系统表和系统描述符_ev.mp4
  • [2.26]--X64架构下的GDTR_ev.mp4
  • [2.27]--X64架构下的IDTR_ev.mp4
  • [2.28]--X64架构下的LDT描述符和LDTR_ev.mp4
  • [2.29]--X64架构下的TSS描述符和TR_ev.mp4
  • [2.2]--X64架构的由来_ev.mp4
  • [2.30]--X64架构下的标志寄存器和指令指针寄存器_ev.mp4
  • [2.31]--X64架构下传统模式的寻址方式_ev.mp4
  • [2.32]--X64架构下IA-32e模式的寻址方式_ev.mp4
  • [2.33]--64位模式的RIP相对寻址方式_ev.mp4
  • [2.34]--64位模式下的指令变化情况_ev.mp4
  • [2.35]--IA-32e模式下的中断和异常处理概述_ev.mp4
  • [2.3]--物理地址、有效地址和线性地址_ev.mp4
  • [2.4]--X64架构的工作模式_ev.mp4
  • [2.5]--IA-32e模式及其子模式_ev.mp4
  • [2.6]--第一次阶段性巩固和测试_ev.mp4
  • [2.7]--X64架构对通用寄存器的扩展_ev.mp4
  • [2.8]--X64架构新增加的通用寄存器_ev.mp4
  • [2.9]--X64架构的通用寄存器访问规则_ev.mp4
  • {3}--准备进入IA-32e模式
  • [3.10]--调用BIOS例程显示字符串_ev.mp4
  • [3.11]--读磁盘失败后的错误处理_ev.mp4
  • [3.12]--准备读取内核加载器程序的剩余部分_ev.mp4
  • [3.13]--转入内核加载器执行_ev.mp4
  • [3.14]--检测处理器是否支持IA-32e模式_ev.mp4
  • [3.15]--浣嶆祴璇曟寚浠T_ev.mp4
  • [3.16]--获取和显示处理器商标信息_ev.mp4
  • [3.17]--获取和保存处理器的地址尺寸数据_ev.mp4
  • [3.18]--显示处理器的地址尺寸信息_ev.mp4
  • [3.19]--为进入保护模式准备全局描述符表_ev.mp4
  • [3.1]--进入IA-32e模式的方法_ev.mp4
  • [3.20]--进入保护模式_ev.mp4
  • [3.21]--在保护模式下显示字符串_ev.mp4
  • [3.22]--有关内核程序及其如何加载的说明_ev.mp4
  • [3.23]--读取内核程序的第一个扇区_ev.mp4
  • [3.24]--将内核程序完全加载到内存中_ev.mp4
  • [3.2]--本章的目标及源程序的组织_ev.mp4
  • [3.3]--主引导程序和NASM的文件包含功能_ev.mp4
  • [3.4]--如何避免文件被重复包含_ev.mp4
  • [3.5]--编写主引导程序的一般性建议_ev.mp4
  • [3.6]--用BIOS硬盘扩展读加载内核加载器_ev.mp4
  • [3.7]--在程序中使用NASM运算符和表达式_ev.mp4
  • [3.8]--内核加载器程序的有效标志和长度_ev.mp4
  • [3.9]--通过数据段访问栈中的数据结构_ev.mp4
  • {4}--为进入IA-32e模式准备4级分页
  • [4.10]--创建与低端2MB物理内存对应的4级头表项和页目录指针表_ev.mp4
  • [4.11]--创建与低端2MB物理内存对应的页目录指针项和页目录表_ev.mp4
  • [4.12]--创建与低端2MB物理内存对应的页目录项_ev.mp4
  • [4.13]--将物理内存低端的2MB映射到线性地址空间的高端_ev.mp4
  • [4.14]--为多任务环境准备必要的4级头表项_ev.mp4
  • [4.15]--为内核的4级分页系统预分配254个页目录指针表_ev.mp4
  • [4.16]--在内核的4级头表内安装254个表项并清空相关的页目录指针表_ev.mp4
  • [4.17]--进程上下文标识PCID_ev.mp4
  • [4.18]--控制寄存器CR3的内容格式_ev.mp4
  • [4.19]--设置控制寄存器CR3并开启物理地址扩展功能_ev.mp4
  • [4.1]--4级分页的结构和原理_ev.mp4
  • [4.20]--型号专属寄存器IA32_EFER的设置和分页的开启_ev.mp4
  • [4.2]--2MB和1GB页面的4级分页方式_ev.mp4
  • [4.3]--4级头表项的格式_ev.mp4
  • [4.4]--页目录指针项的格式_ev.mp4
  • [4.5]--页目录项和页表项的格式_ev.mp4
  • [4.6]--4级头表的创建和初始化_ev.mp4
  • [4.7]--创建指向4级头表自身的4级头表项_ev.mp4
  • [4.8]--准备映射物理内存的低端2MB空间_ev.mp4
  • [4.9]--在4级分页中使用2MB的物理页_ev.mp4
  • {5}--进入IA-32e的64位模式执行
  • [5.10]--通用异常服务例程的工作过程_ev.mp4
  • [5.11]--加载有效地址指令LEA_ev.mp4
  • [5.12]--创建通用中断处理过程的中断门_ev.mp4
  • [5.13]--在IDT内安装前32个与异常有关的中断门_ev.mp4
  • [5.14]--在IDT内安装剩余的中断门并加载IDTR_ev.mp4
  • [5.15]--初始化8259中断控制器_ev.mp4
  • [5.16]--打印64位模式下的第一条信息_ev.mp4
  • [5.17]--在虚拟机上观察内核的运行情况_ev.mp4
  • [5.1]--在IA-32e的兼容模式下显示文本信息_ev.mp4
  • [5.2]--通过远返回方式进入64位模式的内核_ev.mp4
  • [5.3]--准备让内核工作在线性地址空间的高端_ev.mp4
  • [5.4]--启用GDT和栈区的高端线性地址_ev.mp4
  • [5.5]--使用RIP相对寻址将内核的起始线性地址改为高端地址_ev.mp4
  • [5.6]--让处理器转到内核程序对应的高端位置继续执行_ev.mp4
  • [5.7]--IA-32e模式下的中断门和陷阱门_ev.mp4
  • [5.8]--IA-32e模式下的中断处理过程_ev.mp4
  • [5.9]--内核的文件组织与通用的中断和异常处理策略_ev.mp4
  • {6}--单处理器环境下的多任务管理和调度
  • [6.10]--内核可用线性地址的获取和更新_ev.mp4
  • [6.11]--立即数在64位模式下的长度限制_ev.mp4
  • [6.12]--计算本次内存分配涉及的线性地址范围_ev.mp4
  • [6.13]--获取与指定线性地址对应的4级头表项的线性地址_ev.mp4
  • [6.14]--页面分配与页映射位串_ev.mp4
  • [6.15]--页映射位串的定义和空闲页的查找_ev.mp4
  • [6.16]--获取与指定线性地址对应的页目录指针项的线性地址_ev.mp4
  • [6.17]--检查与指定线性地址对应的页目录指针项是否存在_ev.mp4
  • [6.18]--分配页目录表并安装与线性地址对应的页目录指针项_ev.mp4
  • [6.19]--安装与指定线性地址对应的页目录项、页表项和页面_ev.mp4
  • [6.1]--单处理器环境下的多任务概述_ev.mp4
  • [6.20]--64位LDT和TSS描述符的格式_ev.mp4
  • [6.21]--创建和安装64位的TSS描述符并加载任务寄存器TR_ev.mp4
  • [6.22]--实时时钟中断的安装和系统外壳任务简介_ev.mp4
  • [6.23]--准备创建外壳任务_ev.mp4
  • [6.24]--为新任务创建任务控制块PCB_ev.mp4
  • [6.25]--为新任务创建4级头表_ev.mp4
  • [6.26]--将指定的线性地址映射到指定的物理页_ev.mp4
  • [6.27]--复制当前活动4级头表的内容给新任务的4级头表_ev.mp4
  • [6.28]--切换到新任务的地址空间并清空4级头表的前半部分_ev.mp4
  • [6.29]--为新任务分配0特权级使用的栈空间_ev.mp4
  • [6.2]--快速系统调用概述_ev.mp4
  • [6.30]--为新任务分配3特权级使用的栈空间_ev.mp4
  • [6.31]--从硬盘上加载用户程序_ev.mp4
  • [6.32]--生成任务标识_ev.mp4
  • [6.33]--双向PCB链表概述_ev.mp4
  • [6.34]--将新任务的PCB添加到PCB链表中_ev.mp4
  • [6.35]--64位的任务状态段TSS和中断栈表IST_ev.mp4
  • [6.36]--以中断返回的方式进入外壳任务的局部空间执行_ev.mp4
  • [6.37]--系统调用指令SYSCALL和SYSRET_ev.mp4
  • [6.38]--根据功能号计算内核例程的线性地址_ev.mp4
  • [6.39]--快速系统调用的返回和指令的REX前缀_ev.mp4
  • [6.3]--型号专属寄存器IA32_STAR_ev.mp4
  • [6.40]--准备在时钟中断的处理中执行任务切换_ev.mp4
  • [6.41]--执行任务切换_ev.mp4
  • [6.42]--通过系统调用获取屏幕上可用的显示行坐标_ev.mp4
  • [6.43]--通过系统调用获取当前时间_ev.mp4
  • [6.44]--在外壳任务中显示当前时间_ev.mp4
  • [6.45]--用户任务的结构和功能_ev.mp4
  • [6.46]--当前任务标识的获取和用户程序例程库的介绍_ev.mp4
  • [6.47]--将64位二进制数转换为十进制字符串_ev.mp4
  • [6.48]--在每一轮相加中将结果和加数转换为字符串_ev.mp4
  • [6.49]--字符串的连接和显示_ev.mp4
  • [6.4]--准备在GDT中安装新的描述符_ev.mp4
  • [6.50]--用户任务的终止_ev.mp4
  • [6.51]--任务切换频次对用户体验的影响_ev.mp4
  • [6.5]--为快速系统调用安装段描述符_ev.mp4
  • [6.6]--为快速系统调用准备段选择子_ev.mp4
  • [6.7]--设置快速系统调用的入口点_ev.mp4
  • [6.8]--快速系统调用时的RFLAGS和栈切换_ev.mp4
  • [6.9]--动态内存分配和内核空间的分配策略_ev.mp4
  • {7}--多处理器和APIC的初始化
  • [7.10]--多处理器的初始化过程和MP规范_ev.mp4
  • [7.11]--高级的配置和电源接口(ACPI)规范_ev.mp4
  • [7.12]--本章代码清单_ev.mp4
  • [7.13]--ACPI的数据结构和表_ev.mp4
  • [7.14]--E820功能调用和内存地址范围结构_ev.mp4
  • [7.15]--查询和保存物理地址映射数据_ev.mp4
  • [7.16]--获取ACPI申领的物理内存地址范围_ev.mp4
  • [7.17]--准备映射ACPI申领的内存_ev.mp4
  • [7.18]--映射ACPI申领的内存到当前分页系统_ev.mp4
  • [7.19]--根系统描述指针结构_ev.mp4
  • [7.1]--多处理器环境概述_ev.mp4
  • [7.20]--搜索根系统描述指针结构_ev.mp4
  • [7.21]--系统描述表的层次结构和表头格式_ev.mp4
  • [7.22]--扩展的系统描述表XSDT_ev.mp4
  • [7.23]--通过XSDT搜索多APIC描述表MADT_ev.mp4
  • [7.24]--根系统描述表RSDT_ev.mp4
  • [7.25]--通过RSDT搜索多APIC描述表MADT_ev.mp4
  • [7.26]--多APIC描述表MADT的格式_ev.mp4
  • [7.27]--准备遍历中断控制器结构列表_ev.mp4
  • [7.28]--从中断控制器结构内提取处理器和APIC信息_ev.mp4
  • [7.29]--鏄犲皠APIC鍦板潃_ev.mp4
  • [7.2]--同时多线程和INTEL超线程技术_ev.mp4
  • [7.30]--Local APIC瀹氭椂鍣╛ev.mp4
  • [7.31]--Local APIC定时器的精度_ev.mp4
  • [7.32]--APIC定时器的本地向量表寄存器及其设置_ev.mp4
  • [7.33]--设置CMOS RTC以测量Local APIC定时器_ev.mp4
  • [7.34]--测量Local APIC定时器在1ms内经历的时钟周期数_ev.mp4
  • [7.35]--多处理器的中断机制之虚拟线模式_ev.mp4
  • [7.36]--中断输入引脚LINT0的本地向量表寄存器_ev.mp4
  • [7.37]--用LINT0的本地向量表寄存器屏蔽8259中断_ev.mp4
  • [7.38]--I锛廜 APIC姒傝堪_ev.mp4
  • [7.39]--I/O APIC的I/O重定向表寄存器_ev.mp4
  • [7.3]--高级可编程中断控制器APIC概述_ev.mp4
  • [7.40]--用I/O APIC投递的中断实施任务切换_ev.mp4
  • [7.41]--使用8253/8254定时器中断切换任务_ev.mp4
  • [7.42]--使用Local APIC定时器中断切换任务_ev.mp4
  • [7.43]--逻辑目标模式下的中断目标判别机制_ev.mp4
  • [7.44]--APIC中断的优先级及其相关的寄存器_ev.mp4
  • [7.45]--APIC中断的接受机制_ev.mp4
  • [7.46]--最低优先级模式的中断处理_ev.mp4
  • [7.4]--中断引脚、中断类型和中断源_ev.mp4
  • [7.5]--本地中断源和本地向量表_ev.mp4
  • [7.6]--APIC的工作模式和APIC ID_ev.mp4
  • [7.7]--组成Local APIC ID的处理器拓扑_ev.mp4
  • [7.8]--Local APIC鐨勫湴鍧€鏄犲皠_ev.mp4
  • [7.9]--I锛廜 APIC鐨勫湴鍧€鏄犲皠_ev.mp4
  • {8}--多处理器环境下的多任务管理和调度
  • [8.10]--本章对内核工具文件的修改_ev.mp4
  • [8.11]--开始执行内核的初始化_ev.mp4
  • [8.12]--处理器专属存储区(每CPU数据区)_ev.mp4
  • [8.13]--为自举处理器BSP分配专属存储区_ev.mp4
  • [8.14]--用型号专属寄存器IA32_KERNEL_GS_BASE指向处理器_ev.mp4
  • [8.15]--多处理器系统的初始化协议算法_ev.mp4
  • [8.16]--本章的多处理器多任务调度方案_ev.mp4
  • [8.17]--中断命令寄存器ICR_ev.mp4
  • [8.18]--本章的AP初始化代码简介_ev.mp4
  • [8.19]--将AP初始化代码传送到指定位置_ev.mp4
  • [8.1]--本章的目标和代码清单_ev.mp4
  • [8.20]--向所有应用处理器广播SIPI消息_ev.mp4
  • [8.21]--应用处理器AP的初始化:进入保护模式_ev.mp4
  • [8.22]--应用处理器AP的初始化:进入64位模式_ev.mp4
  • [8.23]--应用处理器AP的初始化:创建数据结构_ev.mp4
  • [8.24]--应用处理器AP的初始化:初始化之后的处理器架构状态_ev.mp4
  • [8.25]--应用处理器AP的初始化:用SWAPGS指令访问专属存储区_ev.mp4
  • [8.26]--应用处理器AP的初始化:开启Local APIC并进入停机待命状_ev.mp4
  • [8.27]--自举处理器BSP:等待所有应用处理器完成初始化_ev.mp4
  • [8.28]--自举处理器BSP:创建系统外壳任务并为其指定时间片_ev.mp4
  • [8.29]--交换并相加指令XADD和无锁操作_ev.mp4
  • [8.2]--楂橀€熺紦瀛榑ev.mp4
  • [8.30]--自举处理器BSP:广播新任务认领消息并进入预定状态_ev.mp4
  • [8.31]--新任务认领中断的处理过程_ev.mp4
  • [8.32]--在任务链表中查找就绪任务_ev.mp4
  • [8.33]--用比较并交换指令CMPXCHG以无锁方式操作链表节点_ev.mp4
  • [8.34]--执行新任务:为新任务指定时间片_ev.mp4
  • [8.35]--执行新任务:恢复任务的状态并开始执行_ev.mp4
  • [8.36]--时间片到期中断的处理过程_ev.mp4
  • [8.37]--处理器专属存储区的必要性_ev.mp4
  • [8.38]--外壳任务的执行流程_ev.mp4
  • [8.39]--用户任务的执行流程_ev.mp4
  • [8.3]--单处理器环境下的数据竞争_ev.mp4
  • [8.40]--浠诲姟鐨勭粓姝ev.mp4
  • [8.4]--多处理器环境下的数据竞争_ev.mp4
  • [8.5]--鍘熷瓙鎿嶄綔_ev.mp4
  • [8.6]--閿佸拰鑷棆閿乢ev.mp4
  • [8.7]--分支预测和PAUSE指令_ev.mp4
  • [8.8]--宏定义和宏扩展_ev.mp4
  • [8.9]--互斥锁的一般原理_ev.mp4
  • {9}--多处理器环境下的多线程管理和调度
  • [9.10]--创建新线程:创建线程控制块TCB和栈_ev.mp4
  • [9.11]--创建新线程:例程返回和结束线程的区别_ev.mp4
  • [9.12]--创建新线程:如何用RET指令结束线程_ev.mp4
  • [9.13]--创建新线程:在栈中构造结束线程的栈帧_ev.mp4
  • [9.14]--创建新线程:将TCB添加到当前任务的TCB链表_ev.mp4
  • [9.15]--线程的执行:动态内存分配_ev.mp4
  • [9.16]--线程的执行:在栈中保存所有缓冲区的线性地址_ev.mp4
  • [9.17]--线程的执行:字符串的生成、连接和打印_ev.mp4
  • [9.18]--线程的结束和任务的终止_ev.mp4
  • [9.1]--任务(进程)和线程_ev.mp4
  • [9.2]--任务控制块PCB和线程控制块TCB_ev.mp4
  • [9.3]--任务及其主线程的创建_ev.mp4
  • [9.4]--新线程认领中断的处理过程_ev.mp4
  • [9.5]--查找就绪状态的线程_ev.mp4
  • [9.6]--让处理器执行指定的线程_ev.mp4
  • [9.7]--时间片到期中断的处理过程_ev.mp4
  • [9.8]--系统外壳任务及其主线程的执行_ev.mp4
  • [9.9]--准备创建新的线程_ev.mp4
  • 资料
  • 资料.rar
课程购买
课程价格
金币29
290金币限时优惠会员免费
销量:0
💎 开通会员每日免费下载,比单买更划算 →
支付成功后会自动显示下载资源云盘的链接!点击链接即可下载到本地。