您现在的位置是:首页 >技术教程 >【操作系统】操作系统内核网站首页技术教程

【操作系统】操作系统内核

冬眠的关刀 2023-07-10 16:00:04
简介【操作系统】操作系统内核

图灵机
在这里插入图片描述
当系统中有一个CPU的时候 ,MR就是它的状态
当系统中有n个CPU的时候,MR1,MR2…MRn 是它的状态

IRQ和NMI是低电平有效信号
NMI不可屏蔽中断

在这里插入图片描述
在这里插入图片描述
6502的CPU一共40个引脚

在这里插入图片描述
eflags寄存器里的 IF 表示 interrupt enable
1表示可以响应中断,0表示关中断

如果IF=0,程序又处于死循环,
那么这个处理器就相当于从操作系统离线了。

中断处理程序所做的事情,只有跳转

在这里插入图片描述

处理器如何处理中断:允许软件把代码放到中断处理位置,处理器接收中断信号的时候会把PC跳转到中断处理位置。

RISC-V的中断处理

在这里插入图片描述
中断保存
32个寄存器,PC计数器
CPU状态(是一个寄存器)
指令的计数(每个周期+1)
时钟计数
中断相关寄存器
中断地址中断原因

在这里插入图片描述
cte_init 定义在中断发生的时候,执行什么函数
iset 设置开关中断(IF)
程序在保护状态执行的时候无法关中断,会被操作系统直接中断,产生异常

在这里插入图片描述
中断时:额外开辟一块内存,把寄存器存到内存里

在这里插入图片描述
64位所有通用寄存器,cr3寄存器,都存到内存里了

在这里插入图片描述
x86所有通用寄存器,cr3寄存器,都存到内存里了

特殊寄存器

rip 【指向代码】:rip寄存器是一个64位的寄存器,用来存储下一条要执行的指令的地址。它是在64位模式下才有的,相当于32位模式下的eip寄存器。rip寄存器可以实现一种新的寻址模式,叫做rip相对寻址,就是用rip加上一个偏移量来计算有效地址。

rsp【指向堆栈】:rsp寄存器是一个64位的寄存器,用来存储当前函数调用的栈栈顶的地址。它是在64位模式下才有的,相当于32位模式下的esp寄存器。rsp寄存器可以用来保存函数的局部变量、参数、返回地址等信息,方便函数的调用和返回。

rbx【指向内存地址】:rbx寄存器是一个64位的基址寄存器,一般用于访问内存的基址。它是被调用者保存的寄存器,也就是说在函数调用时,如果要使用它,必须先保存它的原始值,然后在函数返回时恢复它。

rbp【指向内存地址】rbp寄存器是一个64位的栈帧指针,用于标识当前栈帧的起始位置。栈帧是函数调用时在栈上分配的一块内存空间,用来保存函数的局部变量、参数、返回地址等信息。rbp寄存器可以通过偏移量来访问栈帧中的数据。它也是被调用者保存的寄存器。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。