网盘截图:

课程目录:

├─{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]--位测试指令BT_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/O 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/O 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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。