内核态和用户态

本文详细介绍了Intel x86架构上CPU的权限等级,从0级内核态到3级用户态的转换机制,重点阐述了系统调用的过程,包括调用函数、现场保护、中断触发及内核态执行。此外,还探讨了系统调用的意义及其在进程资源访问中的作用。

在intel x86的架构上cpu提供了0到3的权限等级,其中0最高,3最低,在linux中使用了两个等级,分别为0等级内核态,3等级用户态
刚开始时进程处在用户态,但当进程执行一段时间后,可能对系统资源或者硬件设备进行使用则会发生用户态到内核态的转变,因为在内核态下权限等级最高,可以执行任何操作,并在资源使用上没有限制,当然内核中提供了部分接口供用户使用,这些接口就是系统调用,比如malloc printf fork等操作都是通过系统调用实现的(软中断)
当发生系统调用时
1.调用系统调用函数,每一个函数都会生成一个系统调用号,保存在eax寄存器中
2.保护当前现场(程序计数器)
3.触发0x80中断,(条指令的运行会让系统跳转到一个预设的内核空间地址,它指向系统调用处理程序。即system_call函数)执行中断处理程序,通过中断处理程序进入内核态
4.在内核态中获取eax寄存器的值然后差系统调用表,找到该系统调用,执行,最终返回

从用户态和内核态之间的转换总结来说有三种情况
1.系统调用(主动)
2.异常事件,比如缺页异常
3.外围设备的中断
系统调用的意义:
一般进程是不能访问内核的,不能随意访问内核空间的值和随意使用系统资源,但在某些特定的情况下要访问内核空间,所有内核就给用户提供了一些接口,通过接口进程可以访问一些资源和硬件设备,这样保证了系统的稳定可靠,避免进程随意执行,惹出大麻烦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值