1进入内核的手段:系统调用
为什么不能直接进入内核:不安全。例如用户名密码都在内核,如果随意进入,不安全
如何保证不能强制jump:硬件设计,DPL寄存器表示目标内存段的特权级,系统初始化时,DPL初始化为0.CPL表示当前特权级CPL<=DPL时,才能执行当前指令.系统调用通过中断处理,CPL在切换段时会随之修改。
系统调用的过程
int0x80通过不同系统调用号执行不同系统调用
将系统调用号置给eax,然后调用int0x80 30:00
int0x80会查idt表(中段描述表),在系统初始化的过程中将DPL置为3,设置中断处理程序入口地址,设置idt表中的段基址。通过查表,DPL被设为3,而CPL是cs的最后两位,自然是0,然后通过中断处理函数入口进入systemcall程序。
接下来systemcall查system_CALL_TABLE根据exa中的系统调用号*函数指针大小+基址调用对应的系统调用。
2.多进程图像
cpu工作流程:取址执行,更新pc
每个进程有一个保存进程信息的数据结构:PCB
main中的fork()开创了第一个进程
子进程fork()= 0
多进程如何组织
多个PCB分为不同状态,分别组织在就绪/等待队列
</