Linux内核设计第四周——扒开系统调用三层皮
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内核设计第四周——扒开系统调用三层皮相关的知识,希望对你有一定的参考价值。
Linux内核设计第四周——扒开系统调用三层皮
一、知识点整理
1.用户态 内核态和中断处理程序
我们一般使用系统调用一般通过库函数的方式
-
用户态和内核态的区分:
【CPU有不同的执行级别,高执行级别下,代码可以执行特权指令,访问任何的物理地址;低执行级别下,就会受到一定的限制。(处于系统安全和稳定的目的)Intel X86 CPU有四种不同的执行级别0-3;linux只使用了其中的0级和3级分别来表示内核态和用户态。】
显著地区分:cs寄存器的最低两位表明了当前代码的特权级
在linux中,地址空间是一个显著地标志:0xc0000000以上的地址空间只能在内核态下访问,
0xc00000000——0xbfffffff的地址空间两种状态下都可以访问。
中断发生过程:
中断处理是从用户态进入内核态的主要方式,同时,系统调用只是一种特殊的中断。
中断发生后第一件事就是保存现场:
中断/int指令会在堆栈上保存一些寄存器的值(用户态栈顶地址、当时的状态字、当时cs:eip的值)
中断结束前第一件事就是恢复现场。
save_all:
内核代码,完成中断服务。
2.系统调用概述和系统调用的三层皮:
系统调用:用用户态进程和硬件设备进行交互提供了一组接口。
以上是关于Linux内核设计第四周——扒开系统调用三层皮的主要内容,如果未能解决你的问题,请参考以下文章
20135327郭皓--Linux内核分析第四周 扒开系统调用的三层皮(上)
《Linux内核分析》第四周笔记 扒开系统调用的三层皮(上)