Linux内核及分析 第二周 操作系统是如何工作的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内核及分析 第二周 操作系统是如何工作的?相关的知识,希望对你有一定的参考价值。

计算机是如何工作的?

 

存储程序计算机工作模型,计算机系统最最基础性的逻辑结构;

函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能;

enter 

--pushl %ebp

--movl %esp,%ebp

leave 

--movl %ebp,%esp

--popl %ebp

函数参数传递机制和局部变量存储

中断,多道程序操作系统的基点,没有中断机制程序只能从头一直运行结束才有可能开始运行其他程序。

 

♦ 堆栈相关的寄存器

– esp,堆栈指针(stack pointer)

– ebp,基址指针(base pointer)

♦ 堆栈操作

– push

栈顶地址减少4个字节(32位)

– pop

栈顶地址增加4个字节

♦ ebp在C语言中用作记录当前函数调用基址

♦ 其他关键寄存器

– cs : eip:总是指向下一条的指令地址

• 顺序执行:总是指向地址连续的下一条指令

• 跳转/分支:执行这样的指令的时候,cs : eip的值会

根据程序需要被修改

• call:将当前cs : eip的值压入栈顶,cs : eip指向被

调用函数的入口地址

• ret:从栈顶弹出原来保存在这里的cs : eip的值,放

入cs : eip中

技术分享

以下是实验内容:

技术分享

技术分享

qemu窗口可以看到my_start_kernel在执行,同时my_timer_handler时钟中断处理程序周期性执行。

 

技术分享

内核头文件;

执行my_start_kernel,83行之前是硬件初始化,83行及以后是操作系统。

比较简单,每循环100000次打印“my_start_kernel here”

 

技术分享

技术分享

同样是硬件初始化;

每次时钟中断调用一次printk,输出一个">>>>>>>>my_timer_handler here<<<<<<<<",中断处理动作

 

 

作者: 王雪铖

原创作品转载请注明出处

《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

以上是关于Linux内核及分析 第二周 操作系统是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章

LINUX内核分析第二周学习总结:操作系统是如何工作的?

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

魏昊卿——《Linux内核分析》第二周作业:了解操作系统是怎样工作的

Linux内核分析作业第二周

Linux内核分析(第二周)

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