- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
BasicknowledgeofOperatingSystemsPrinciplesBasicknowledgeofOperatingSystemsPrinciples
操作系统原理相关基础知识Basic knowledge of Operating Systems Principlesbased on X86/Linux
孟宁
电话:0512腾讯微博:@mengning997 新浪微博:@孟宁V
E-mail:mengning@
主页:/~mengning
地址:苏州工业园区独墅湖高等教育区仁爱路166号明德楼A302室
2012年2月
Agenda
操作系统的基本概念
典型的Linux操作系统的结构
最简单也是最复杂的操作
堆栈
用户态 vs 内核态
虚拟内存
操作系统的基本概念
任何计算机系统都包含一个基本的程序集合,称为操作系统。
内核(进程管理,进程调度,进程间通讯机制,内存管理,中断异常处理,文件系统,I/O系统,网络部分)
其他程序(例如函数库、shell程序、系统程序等等)
操作系统的目的
与硬件交互,管理所有的硬件资源
为用户程序(应用程序)提供一个良好的执行环境
典型的Linux操作系统的结构
用户应用程序
System call
对硬件资源的管理
Shell,lib
Kernel implementation
最简单也是最复杂的操作
在控制台下输入ls命令
Shell程序分析输入参数,确定这是ls命令
调用系统调用fork生成一个shell本身的拷贝
什么是系统调用?
为什么我们敲击键盘就会在终端上显示?
fork是什么?
为什么要调用fork?
中断的概念,终端控制台设备驱动的概念
保护模式和实模式,内存保护,内核态用户态相关问题
进程的描述,进程的创建。COW技术
系统调用是怎么实现的?
软中断、异常的概念。陷阱门,系统门
调用exec系统调用将ls的可执行文件装入内存
内存管理模块,进程的地址空间,分页机制,文件系统
从系统调用返回
如何做到正确的返回?
堆栈的维护,寄存器的保存与恢复
Shell和ls都得以执行
进程的调度,运行队列等待队列的维护
什么是shell?
终端解释程序
堆栈
堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间
函数调用框架
传递参数
保存返回地址
提供局部变量空间
等等
C语言编译器对堆栈的使用有一套的规则
了解堆栈存在的目的和编译器对堆栈使用的规则是理解操作系统一些关键性代码的基础
堆栈寄存器和堆栈操作
堆栈相关的寄存器
esp,堆栈指针(stack pointer)
ebp,基址指针(base pointer)
堆栈操作
push栈顶地址减少4个字节(32位)
pop栈顶地址增加4个字节
ebp在C语言中用作记录当前函数调用基址
esp
ebp
高地址
低地址
esp
利用堆栈实现函数调用和返回
其他关键寄存器
cs : eip:总是指向下一条的指令地址
顺序执行:总是指向地址连续的下一条指令
跳转/分支:执行这样的指令的时候,cs : eip的值会根据程序需要被修改
call:将当前cs : eip的值压入栈顶,cs : eip指向被调用函数的入口地址
ret:从栈顶弹出原来保存在这里的cs : eip的值,放入cs : eip中
发生中断时?
函数的堆栈框架
// 调用者
…
call target
…
//建立被调用者函数的堆栈框架pushl %ebpmovl %esp, %ebp
//拆除被调用者函数的堆栈框架movl %ebp,%esppopl %ebp ret
//被调用者函数体//do sth.
…
call指令:
1)将下一条指令的地址A保存在栈顶
2)设置eip指向被调用程序代码开始处
将地址A恢复到eip中
函数堆栈框架的形成
call xxx
执行call之前
执行call时,cs : eip原来的值指向call下一条指令,该值被保存到栈顶,然后cs : eip的值指向xxx的入口地址
进入xxx
第一条指令: pushl %ebp
第二条指令: movl %esp, %ebp
函数体中的常规操作,可能会压栈、出栈
退出xxx
movl %ebp,%esp
popl %ebp
ret
esp
ebp
高地址
低地址
cs : eip
esp
ebp
esp
ebp
esp
一段小程序
源文件: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(%e
您可能关注的文档
- 863能源项目.doc
- 8B 期末复习模拟测试B.doc
- 8、现代诗两首.doc
- 8上勾股定理练习题1.doc
- 8第八单元解决问题的策略教案(2教时).doc
- 9.1 磁现象.doc
- 9.16分组分解法.ppt
- 9+年级上学期第二次阶段调研卷.doc
- 89个管理定律及点评.doc
- 9.9 折叠与展开问题.ppt
- 2025年中山市沙溪镇人民政府所属事业单位招聘11人笔试备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库含答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库及完整答案详解1套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库参考答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及答案详解一套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及完整答案详解1套.docx
文档评论(0)