当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

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

资源类别:文库,文档格式:PDF,文档页数:70,文件大小:4.54MB,团购合买
点击下载完整版文档(PDF)

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

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

个看似废话的问题 示例代码 。 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 段寄存器

点击下载完整版文档(PDF)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共70页,可试读20页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有