操作系统相关 | 用户态和内核态
部分资料转自B站小刘老师
1. 用户态
2. 内核态
3.用户态什么时候转换为内核态?
- 系统调用(分配内存)等;
- 插入硬件准备就绪后会给cpu发送硬中断,此时切换为内核态(会打断其他进程);
- 某行代码出错,如
1/0
等;
情况1如下图所示:
响应中断值:
3.1 用户转内核态的时候发生了什么?
- 用户eax寄存器设置为198号(系统调用号);
- 将参数封装成指针保存到cpu特定寄存器内;
- 保存当前进程上下文信息到进程描述符;
进程描述符:用于存储用户态数据,方便恢复用户态的时候回到转换到内核态之前的状态。
- 切换线程到内核态;
- 根据映射表加载
system_call
的地址到寄存器,也就是将CPU的代码地址从用户地址指向system_call
;