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

作者:SA****6450  丁海蛟

1.计算机是如何工作的?

    现代的计算机都是程序存储计算机。存储程序计算机最早是由著名数学家冯·诺伊曼等人在1946年总结并明确提出来的,因此又被称为冯·诺伊曼计算机。

    所谓程序存储计算机,是指将计算的内容(数据)和计算的过程(指令)都保存到存储器上,然后按照步骤(程序设定的指令顺序)对数据进行读取、运算、保存。

 

2.堆栈机制

    计算在执行的过程中,需要存储很多的临时数据,然而这些数据只是在某个运行阶段需要,不会在整个运行阶段使用,而是动态的随着程序的运行而生成的。因此需要一个动态地管理临时数据的机制,这个机制就是堆栈(函数调用堆栈)。堆是一个长期存放永久数据的容器,栈则是随着函数的动态调用而发生变化的,在进行函数调用时,用户态的栈会保存函数的返回地址、cs:eip等相关寄存器的值、函数参数以及局部变量等等。如果系统进行系统调用或者中断处理时候,内核栈会保存中断函数返回地址和其它一些重要的参数。


3.中断机制

        中断分为同步和异步中断,中断是由间隔定时器和I/O设备产生的。中断的过程其实就是CPU停下现在正在处理的进程,转而响应中断信号来自的进程,保存当前进程的状态和信息,进而执行申请处理的进程,执行完中断进程之后,CPU再返回到之前进程中停下工作的地方继续执行原进程。


4.操作系统内核是如何工作的

    操作系统有用户态和内核态两种状态,分成这两种状态的原因是它们具有不同的权限。内核态的权限更高,可以执行一些系统级别的指令和操作。用户态只能执行一些基本操作。intel X86的CPU将权限分为0~3四种,Linux只用了其中的0和3,其中0表示内核态,3表示用户态。中断是用户态切换到核心态的途径之一,而系统一般采用int $80中断调用。此时将ESP、SS压入堆栈保存,函数栈将切换到内核态。CPU切入到内核态,找到当前进程的内核态,执行SALL_ALL,。由硬件自动保存寄存器SS、ESP、EFLAGS、CS:EIP的值。中断处理之后,执行swith_to宏切换进程,然后通过RESTORE_ALL恢复寄存器中的值,iret恢复SS、ESP、EFLAGS、CS、EIP的值,最后CPU又从内核态切换回用户态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值