2019-2020-20199316《Linux内核原理与分析》第三周作业
操作系统是如何工作的
(一)计算机的三大法宝
- 存储程序计算机
- 函数调用堆栈机制
- 中断机制
(二)堆栈
(1)堆栈相关寄存器
- ESP:堆栈指针
- EBP:基址指针,在c语言中用作记录当前函数调用基址。
对于x86体系结构来讲,堆栈空间是从高地址向低地址增长的。
(2)堆栈操作
- push:栈顶地址减少4个字节(32位),然后将操作数亚茹栈顶存储单元;
- pop:栈顶地址增加4个字节(32位),然后将栈顶存储的内容放回原寄存器。
(3)其他关键寄存器
CS:EIP:用于指向下一条指令地址,它的实用有几种不同情形:
- 顺序执行:总是指向地址连续的下一条指令;
- 跳转/分支:执行这样的指令时,CS:EIP的值会根据程序需要被修改;
- call:将当前存储的值压入栈顶,然后指向被调用函数的入口地址;
- ret:原来保存的值从栈顶弹出,回到CS:EIP中。
(三)实验情况
>cd ~/LinuxKernel/linux-3.9.4
>rm -rf mykernel
>patch -p1 < ../mykernel_for_linux3.9.4sc.patch
>make allnoconfig
>make
然后进入到mykernel目录,查看mymain.c和myinterrupt.c:
> cd mykernel
查看mymain.c文件:
>vi mymain.c
查看myinterrupt.c文件:
> vi myinterrupt.c
(四)总结
本次学习主要是进程的切换。在操作系统中,当时间片用完需要切换进程时,需要保存进程的运行环境和进度,待下次再被调度时,需要恢复这样的运行环境。我觉得这是操作系统能够实现多道处理的难点和重点!