电子科技大学:《Linux操作系统内核技术 The Linux Kernel Technology》课程教学资源(课件讲稿)第三讲 指针存储之谜

第三讲指针存储之迷 李林 电子科技大学计算机学院
第三讲 指针存储之谜 李 林 电子科技大学 计算机学院

个看似废话的问题 示例代码 。 int test; int *ptr &test; 问题 指针变量ptr中存储的是什么? 变量test的地址? 变量test的地址,再外加它的类型int? 似乎真的是地址?此地址非彼地址
一个看似废话的问题 ◼ 示例代码: ◼ int test; ◼ int *ptr = &test; ◼ 问题: ◼ 指针变量ptr中存储的是什么? ◼ 变量test的地址? ◼ 变量test的地址,再外加它的类型int? ◼ 似乎真的是地址?此地址非彼地址

回顾 “地址” 回顾《汇编语言》 。在汇编编程中,我们常常使用什么地址? 逻辑地址(段基址:偏移量) 物理地址=段基址(段寄存器×10H)+偏移 量 short jmp、near jmp、far jmp、r near call、 far call 回顾《操作系统》 虚拟地址经页表(多级)转换,变成物理地址 虚拟地址是什么?和逻辑地址有什么关系?
回顾“地址” ◼ 回顾《汇编语言》 ◼ 在汇编编程中,我们常常使用什么地址? ◼ 逻辑地址(段基址:偏移量) ◼ 物理地址 = 段基址(段寄存器×10H)+ 偏移 量 ◼ short jmp、near jmp、far jmp、near call、 far call ◼ 回顾《操作系统》 ◼ 虚拟地址经页表(多级)转换,变成物理地址 ◼ 虚拟地址是什么?和逻辑地址有什么关系?

回顾 “地址” 回顾《高级计算机系统结构》 x86的地址转换机制: 分段+分页 逻辑地址 分段 线性地址 分页 物理地址 虚拟地址包括了逻辑地址和线性地址 为什么会有分段机制? 为什么会有分页机制?
回顾“地址” ◼ 回顾《高级计算机系统结构》 ◼ x86的地址转换机制: ◼ 分段 + 分页 ◼ 虚拟地址包括了逻辑地址和线性地址 ◼ 为什么会有分段机制? ◼ 为什么会有分页机制? 逻辑地址 线性地址 分段 分页 物理地址

回顾“地址 逻辑地址 分段 线性地址 分页 物理地址 分页机制可以绕开,但分段机制绕不开 程序能直接使用的只能是逻辑地址 示例代码: int test; int *ptr &test; ptr存储的内容,与test的逻辑地址有关 段基址存放在寄存器中,ptr只能存放偏移量
回顾“地址” ◼ 分页机制可以绕开,但分段机制绕不开 ◼ 程序能直接使用的只能是逻辑地址 ◼ 示例代码: ◼ int test; ◼ int *ptr = &test; ◼ ptr存储的内容,与test的逻辑地址有关 ◼ 段基址存放在寄存器中,ptr只能存放偏移量 逻辑地址 线性地址 分段 分页 物理地址

指针存储之谜 T入 问题 指针变量存储的只是偏移量,带来了更多疑 惑: 除了直接写汇编程序,使用C、C++写程序时基 本没有考虑过段寄存器、near/far jmp,/call等 等,但是程序好像依然能“正确”运行? 既然程序直接使用的是逻辑地址,为什么操作 系统中经常提到的是“进程线性地址空间”, 而不是“进程逻辑地址空间”? 好像将分段机制绕开了! 指针变量到底存储的是什么?怎么办? 靠猜!
指针存储之谜——问题 ◼ 指针变量存储的只是偏移量,带来了更多疑 惑: ◼ 除了直接写汇编程序,使用C、C++写程序时基 本没有考虑过段寄存器、near/far jmp/call等 等,但是程序好像依然能“正确”运行? ◼ 既然程序直接使用的是逻辑地址,为什么操作 系统中经常提到的是“进程线性地址空间”, 而不是“进程逻辑地址空间”? ◼ 好像将分段机制绕开了! ◼ 指针变量到底存储的是什么?怎么办? ◼ 靠猜!

靠“猜”不靠“蒙”■ “猜”是有根据地猜。哪里找根据? 地址转换机制,分段和分页,是由CPU提供 的 需要到体系结构中去找根据
靠“猜”不靠“蒙” ◼ “猜”是有根据地猜。哪里找根据? ◼ 地址转换机制,分段和分页,是由CPU提供 的 ◼ 需要到体系结构中去找根据

体系结构中找根据 怎么在体系结构中找根据呢? 程序员技术手段之文档阅读法 Intel 64 and IA-32 Architectures Software Developer's Manual Volume 1:Basic Architecture Volume 2:Instruction Set Reference Volume 3:System Programming Guide 查看卷3一一第三章Protected-Mode Memory Management
体系结构中找根据 ◼ 怎么在体系结构中找根据呢? ◼ 程序员技术手段之文档阅读法 ◼ Intel® 64 and IA-32 Architectures Software Developer’s Manual ◼ Volume 1: Basic Architecture ◼ Volume 2: Instruction Set Reference ◼ Volume 3: System Programming Guide ◼ 查看卷3——第三章 Protected-Mode Memory Management

Logical Address (or Far Pointer) 7 I Segment Selector Offset Linear Address Space WUA Global Descriptor Linear Address Table (GDT) Dir Table Offset Physical Address Space Segment Segment Page Table Page Descriptor Page Directory Phy.Addr. Lin.Addr. Entry Entry Segment Base Address Page Segmentation Paging-
实证思路一:弄清地址转换机制

体系结构中找根据 段寄存器 15 32 10 index GDT表 段描述符8字节(段基址,段界限) 段描述符8字节(段基址,段界限) 段描述符8字节(段基址,段界限) GDTR寄存器 48喝 1615 0 32位base 16位Limit
体系结构中找根据 段描述符8字节(段基址,段界限) 段描述符8字节(段基址,段界限) ………………………… 段描述符8字节(段基址,段界限) ……………………… GDT表 32位base 48 16位Limit 16 15 0 GDTR寄存器 index 15 3 2 1 0 段寄存器
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 电子科技大学:《Linux操作系统内核技术 The Linux Kernel Technology》课程教学资源(课件讲稿)第二讲 程序员技术手段.pdf
- 电子科技大学:《Linux操作系统内核技术 The Linux Kernel Technology》课程教学资源(课件讲稿)第一讲 课程概述(李林).pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第9章 Markov马尔科夫分类.pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第8章 特征提取与降维.pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第7章 非监督分类.pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第6章 深度神经网络.pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第5章 支持向量机.pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第4章 回归分类.pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第3章 统计分类.pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第2章 数值最优化介绍.pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第1章 机器学习介绍(师君).pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)09 CDN内容分发网络.pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)11 社会计算(二).pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)11 社会计算(一).pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)10 物联网.pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)08 域名系统.pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)07 P2P网络(二)Distributed Hash Table.pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)06 P2P网络(一).pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)05 云计算(三)数据一致性理论.pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)04 云计算(二).pdf
- 电子科技大学:《Linux操作系统内核技术 The Linux Kernel Technology》课程教学资源(课件讲稿)第四讲 内核模块不可调试之谜.pdf
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 01 面向对象软件开发概述.pdf
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 10 Java 高级编程.pdf
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 02 Java 概述.ppt
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 03 Java 编程入门.pdf
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 03 Java 编程入门.ppt
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 04 Java 语言基础.ppt
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 05 Java 类.pdf
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 05 Java 类.ppt
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 06 继承与多态.pdf
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 07 Java 工具类.pdf
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 08 数据结构与算法.ppt
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 09 图形用户界面的设计与实现.ppt
- 南京大学:《网络安全与入侵检测 Network Security and Intrusion Detection》课程教学资源(课件讲稿)01 Introduction(戴海鹏).pdf
- 南京大学:《网络安全与入侵检测 Network Security and Intrusion Detection》课程教学资源(课件讲稿)02 Security Principles.pdf
- 南京大学:《网络安全与入侵检测 Network Security and Intrusion Detection》课程教学资源(课件讲稿)03 Symmetric Key Cryptography.pdf
- 南京大学:《网络安全与入侵检测 Network Security and Intrusion Detection》课程教学资源(课件讲稿)04 Advanced Encryption Standard(AES).pdf
- 南京大学:《网络安全与入侵检测 Network Security and Intrusion Detection》课程教学资源(课件讲稿)05 Asymmetric Key Cryptography.pdf
- 南京大学:《网络安全与入侵检测 Network Security and Intrusion Detection》课程教学资源(课件讲稿)06 Number Theory.pdf
- 南京大学:《网络安全与入侵检测 Network Security and Intrusion Detection》课程教学资源(课件讲稿)07 Hashes and Message Digests.pdf