- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
BasicknowledgeofOperatingSystemsPrinciples
操作系统原理相关基础知识Basic knowledge of Operating Systems Principlesbased on X86/Linux 孟宁 电话:0512腾讯微博:@mengning997 新浪微博:@孟宁V E-mail:mengning@ 主页:/~mengning 地址:苏州工业园区独墅湖高等教育区仁爱路166号明德楼A302室 Agenda 操作系统的基本概念 典型的Linux操作系统的结构 最简单也是最复杂的操作 堆栈 用户态 vs 内核态 虚拟内存 操作系统的基本概念 任何计算机系统都包含一个基本的程序集合,称为操作系统。 内核(进程管理,进程调度,进程间通讯机制,内存管理,中断异常处理,文件系统,I/O系统,网络部分) 其他程序(例如函数库、shell程序、系统程序等等) 操作系统的目的 与硬件交互,管理所有的硬件资源 为用户程序(应用程序)提供一个良好的执行环境 典型的Linux操作系统的结构 最简单也是最复杂的操作 堆栈 堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间 函数调用框架 传递参数 保存返回地址 提供局部变量空间 等等 C语言编译器对堆栈的使用有一套的规则 了解堆栈存在的目的和编译器对堆栈使用的规则是理解操作系统一些关键性代码的基础 堆栈寄存器和堆栈操作 堆栈相关的寄存器 esp,堆栈指针(stack pointer) ebp,基址指针(base pointer) 堆栈操作 push栈顶地址减少4个字节(32位) pop栈顶地址增加4个字节 ebp在C语言中用作记录当前函数调用基址 利用堆栈实现函数调用和返回 其他关键寄存器 cs : eip:总是指向下一条的指令地址 顺序执行:总是指向地址连续的下一条指令 跳转/分支:执行这样的指令的时候,cs : eip的值会根据程序需要被修改 call:将当前cs : eip的值压入栈顶,cs : eip指向被调用函数的入口地址 ret:从栈顶弹出原来保存在这里的cs : eip的值,放入cs : eip中 发生中断时? 函数的堆栈框架 函数堆栈框架的形成 call xxx 执行call之前 执行call时,cs : eip原来的值指向call下一条指令,该值被保存到栈顶,然后cs : eip的值指向xxx的入口地址 进入xxx 第一条指令: pushl %ebp 第二条指令: movl %esp, %ebp 函数体中的常规操作,可能会压栈、出栈 退出xxx movl %ebp,%esp popl %ebp ret 一段小程序 源文件:test.c 这是一个很简单的C程序 main函数中调用了函数p1和p2 首先使用gcc –g 生成test.c的可执行文件test 然后使用objdump –S获得test的反汇编文件 观察p2的堆栈框架 从test的反汇编文件中找到p2的反汇编代码 int p2(int x,int y) { push %ebp mov %esp,%ebp return x+y; mov 0xc(%ebp),%eax add 0x8(%ebp),%eax } pop %ebp ret 如何传递参数给p2的 … z=p2(x,y); pushl 0xfffffff8(%ebp) pushl 0xfffffff4(%ebp) call 804839b p2 add $0x8,%esp mov %eax,0xfffffffc(%ebp) printf(%d=%d+%d\n,z,x,y); pushl 0xfffffff8(%ebp) pushl 0xfffffff4(%ebp) pushl 0xfffffffc(%ebp) push $0x8048510 call 80482b0 printf@plt … 观察main中的局部变量 int main(void) { push %ebp mov %esp,%ebp sub $0x18,%esp … char c=a; movb $0x61,0xfffffff3(%ebp) int x,y,z; x=1; movl $0x1,0xfffffff4(%ebp) y=2; movl $0x2,0xfffffff8(%ebp) … 观察程序运行时堆栈的变化 三级函数调用程序 观察程序运行时堆栈的变化 什么是用户态和内核态? 一般现代CPU都有几种不同的指令执行级别 在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种C
您可能关注的文档
- 高三英语课件M10 Unit.3 workbook.ppt
- 高中短文改错解题技巧.ppt
- 高三英语课件:Unit9 Health Care Reading.ppt
- 高中英语M7U4Language.ppt
- 高三英语课件:fashion in China and Western Country.ppt
- 高三复习语法专题——冠词的用法.ppt
- 高中英语常考动词短语归纳文档.doc
- 高中英语必修4第四单元综合测评.doc
- 高中英语必修一第二单元Reading and Speaking.ppt
- 高中英语新课标(人教版)优秀课件 选修六 1.3《Unit1 Art》(可编辑PPT课件)unit1.ppt
- BNSS 4E5N PRELIM 2009 Maths P1 Question Papers.doc
- book3第二模块2intro--reading.ppt
- braveheart.ppt
- bri unit 6 british Literatur.ppt
- Book 3_U2_Grammar and usage修改.ppt
- Brife introduction to Pirates of the Caribbean.ppt
- Britain and the American Revolution in the 1700’s.ppt
- Britain’s Policy to American Colonies.ppt
- bright_star明星-济慈.ppt
- british politics 教案.doc
最近下载
- 2024年城市管理网格员四级-中级理论知识试题及答案.docx VIP
- 2024年城市管理网格员三级(高级)理论知识考试试题及答案.docx VIP
- 2020-2021学年北京师大二附中实验学校九年级上学期期中数学试卷(含解析).pdf VIP
- 2025年城市管理网格员三级(高级)理论知识考试试题及答案.docx VIP
- 压力性尿失禁的护理查房PPT课件.pptx VIP
- 2024-2025学年辽宁铁道职业技术学院单招《英语》试卷及答案详解【典优】.docx VIP
- 辽宁铁道职业技术学院单招考试文化素质数学通关考试题库(完整版)附答案详解.docx VIP
- 学年西城区四中初三上学期期中数学试卷.pdf VIP
- 2019-2020学年北京四中九年级(上)期中数学试卷--含详细解析.docx VIP
- 中国餐饮企业发展报告.pptx VIP
文档评论(0)