第二周——操作系统是如何工作的
洪韶武 原创作品转载请注明出处 《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,每执行一次,执行一次时钟中断。
三、总结
本周学习内容让我对操作系统如何工作进行了初步了解,其中函数调用堆栈是一个非常重要的方面,而操作系统的关键正是中断上下文和进程切换,它更像是一种软件,对多个函数代码进行管理、对资源进行调度,像总工程师,注重整体实现。