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

洪韶武 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 】

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


一、上周小结—计算机工作的三个法宝

  • 存储计算机工作模型
  • 函数调用堆栈—高级语言的基础
  • 中断机制—多道程序操作系统的基点

二、本周主要内容总结—堆栈

1.堆栈:记录调用路径和参数的空间

  • 函数调用框架
  • 传递参数
  • 保存返回地址
  • 提供局部变量空间

2.堆栈相关寄存器及堆栈基本操作

  • esp 堆栈指针
  • ebp 基址指针—记录当前函数调用基址
  • push 栈顶地址减少4个字节
  • pop 栈顶地址增加4个字节

3.其他相关寄存器

  • call 将当前eip值压入栈顶
  • ret 将从栈顶弹出来的保存在这里

三、实验内容总结

1.利用mykernel模拟计算机硬件平台

  搭建一个虚拟平台(虚拟的X86CPU),使用Linux源代码把这个系统配置好,通过程序执行入口执行程序;
  当一个中断信号发生的时候,CPU把当前的esp,ebp,eip压入内核堆栈中,然后让eip指向中断处理程序入口去处理中断;
  在该系统中,使用的是时钟中断,即每隔一段时间发生一次中断。

2.实验步骤

(1)根据实验说明,打开Shell,运行qemu。如截图(屏幕不断滚动),可见cpu执行速度还是比较快。

(2)查看mymain.c,发现每循环10000次,打印一句话。

(3)查看myinterrupt.c,每执行一次,执行一次时钟中断。

三、总结

  本周学习内容让我对操作系统如何工作进行了初步了解,其中函数调用堆栈是一个非常重要的方面,而操作系统的关键正是中断上下文进程切换,它更像是一种软件,对多个函数代码进行管理、对资源进行调度,像总工程师,注重整体实现

 

posted @ 2016-03-06 17:19  5219hsw  阅读(191)  评论(0编辑  收藏  举报