038-CSAPP 中断
2023-07-06 15:45:59 0 举报
CSAPP 中断
作者其他创作
大纲/内容
权限
函数入口3
物理地址
上下文切换
4
指向GDT表
GDT
特权级切换把自己切换为内核
OS(R0)
3
中断
某个寄存器
CPL:3
spawn(孵化)
CPU
通知cpu,发生了某件事,让cpu暂时先停止执行原来的指令流,转而改变状态去执行中断指明的处理指令流。执行哪个?怎么执行?谁来告诉CPU怎么执行?
函数指针
门
某个东西
硬件阵脚 高电平检测
由于进程有多个,而每个进程都有自己的栈信息,所以综上可知:每个进程都有自己的TSS段,而又由于短信息都保存在GDT中,所以可知:在linux0.11中,GDT中保存了多个进程的TSS信息,当初换进程时,切换对应的TSS信息
0
1
门的逻辑
函数入口2
虚拟地址
指令流
告诉CPU这个数组的首地址
fork函数
硬件决定原子性:IF、ID、EXEC、MEM、WB
近跳转:ip变了,保存ip远跳转:ip和cs都变了,都保存
特权级切换需要保存数据
函数入口1
其他程序(R3)
该信息被存储在TSS任务状态段中
Gate
中断向量
主存
2
CS
A
Offset
每个特权级有它自己的栈,为什么?栈是用来放置私有数据的:调用的元数据(IP、BP)、传递参数、指令片段也即函数的私有数据,若不为每个特权级设置自己的栈,共享栈时,将会导致遍历栈,拿到敏感数据
线性地址
保存在哪?
CPU操作
每次WB结束都会检测中断检测周期
内核代码对于所有程序而言,特权级切换后,都是一样的
set_trap_gate 设置陷阱门set_system_gate设置系统门
特权级切换把自己切换为程序
在linux中存在两个栈:进程自己的栈(R3)、进程的内核栈(R0)
CPL:0
0 条评论
下一页