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


├─{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

📁
2,995
资源总数(个)
💎
8
本周发布(个)
☁️
8
今日发布(个)
🖥️
1,433
稳定运行(天)