Linux内核分析——第二周学习笔记

时间:2016-03-01 20:53:51   收藏:0   阅读:335

第二周 操作系统是如何工作的

第一节 函数调用堆栈

存储程序计算机:是所有计算机基础的框架

堆栈:计算机中基础的部分,在计算机只有机器语言、汇编语言时,就有了堆栈。堆栈机制是高级语言可以运行的基础。

计算机“三宝”:存储程序计算机、函数调用堆栈和中断机制。

  • 函数调用框架(eg:enter、leave )
  • 传递参数(32位,通过堆栈来传递参数)
  • 保存返回地址(用eax)
  • 提供局部变量空间
  • 等等

  

♦ C语言编译器对堆栈的使用有一套的规则,不同的系统中,编译C代码会有不同的汇编代码。

♦ 了解堆栈存在的目的和编译器对堆栈使用的规则是理解操作系统一些关键性代码的基础。

一、堆栈寄存器和堆栈操作

技术分享

pop:从高地址向低地址

push:从低地址向高地址

二、利用堆栈实现函数的调用和返回

1.其他关键寄存器

• 顺序执行:总是指向地址连续的下一条指令
• 跳转/分支:执行这样的指令的时候,cs : eip的值会
根据程序需要被修改
• call:将当前cs : eip的值压入栈顶,cs : eip指向被
调用函数的入口地址
• ret:从栈顶弹出原来保存在这里的cs : eip的值,放
入cs : eip中

  中断机制是如何工作的?

技术分享技术分享

call指令:
1)将eip中下一条指令的地址A保存在栈顶
2)设置eip指向被调用程序代码开始处

三、函数堆栈框架的形成

  1. call xxx

  2. 进入xxx

  3. 退出xxx

技术分享

第二节 借助Linux内核部分源代码模拟存储程序计算机工作模型及时钟中断

当一个中断信号发生时,CPU把当前的eip,esp,ebp压到内核堆栈中去,并把eip指向中断处理程序的入口。

C代码中嵌入汇编代码

 

第三节 在mykernel基础上构造一个简单的操作系统内核

实验:完成一个简单的时间片轮转多道程序内核代码

 

原文:http://www.cnblogs.com/bonjourvivi/p/5231689.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!