【实验五】Linux操作系统是如何工作的?破解操作系统的奥秘

学号:SA12***116
1.操作系统工作的基础
1.1 存储程序计算机

存储程序计算机最早是由著名数学家冯·诺伊曼等人在1946年总结并明确提出来的,因此又被称为冯·诺伊曼计算机。(以下参考自维基百科)存储程序计算机在体系结构上主要特点有:

1.以运算单元为中心

2.采用存储程序原理

3.存储器是按地址访问、线性编址的空间

4.控制流由指令流产生

5.指令由操作码和地址码组成

6.数据以二进制编码

1.2 堆栈(函数调用堆栈)机制
首先堆栈是c语言里函数调用的基础。并且堆栈是函数调用时把被调用的函数所需参数压入栈中,以实现函数的调用。

堆栈的具体作用有:

1.传递参数(为被调用函数提供参数)

2.保存局部变量

3.保存中间变量

4.在系统中用堆栈保存任务的状态(例如各个寄存器的值)

具体调用堆栈的时候,最上层的函数,堆栈指针指向栈顶,而ebp指向帧栈底。而其他帧栈底部的指针ebp都压入到了栈中。当最外层的函数调用结束后,把ebp的值给dsp作为下一个函数的帧栈顶,而把压在栈中的ebp弹出做当前的帧栈底。如此往复。

1.3 中断机制
处理器的速度跟外围硬件设备的速度往往不在一个数量级上,因此,如果内核采取让处理器向硬件发出一个请求,然后专门等待回
应的办法,显然降低内核效率。 既然硬件的响应这么慢,那么 内核 就应该在此期间处理其他事务,等到硬件真正完成了请求的操作之后,再回过头来对它进行处理。
中断使得硬件得以与处理器进行通信。 不同的设备对应的中断不同,而每个中断都通过一个惟一的数字标识。从而使得操作系统能够对中断进行区分,并知道哪个硬件设备产生了哪个中断。这样,操作系统才能给不同的中断提供不同的 中断处理程序。 在它执行程序的时候,如果有另外的事件发生(比如用户又打开了一个程序)那么这时候就需要由 计算机系统的中断机制来处理了。
2.操作系统(内核)是如何工作
2.1 EBP/ESP的变化
要完成函数调用时栈的扩展和恢复,主要是由esp和ebp这两个寄存器实现的。esp是栈顶寄存器,里面存的是下次push时将会写入的地址,当然了,由 于x86架构下栈由高地址向低地址生长,所以push会导致esp变小,而pop导致esp变大,因而有人也将esp称为栈底寄存器,这个称呼是无所谓 的,也不影响讨论。ebp是基址寄存器,里面存的函数的基地址。应该说esp是很好理解的,但是ebp不然,基地址到底是什么呢?我们可以通过程序运行时 esp和ebp所存储的值来解答这个问题。
2.2 CS:EIP的变化
在正常情况下,CS:EIP是指向下一条要执行的指令,而在操作系统引入了中断之后, CS:EIP 指向中断处理程序入口,同时控制权由CPU转向内核,中断之前的 CS:EIP将被压入堆栈进行保存。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值