Linux内核设计第四周——扒开系统调用三层皮

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内核设计第四周——扒开系统调用三层皮相关的知识,希望对你有一定的参考价值。

Linux内核设计第四周——扒开系统调用三层皮

一、知识点整理

1.用户态 内核态和中断处理程序

我们一般使用系统调用一般通过库函数的方式

  • 用户态和内核态的区分:

    【CPU有不同的执行级别,高执行级别下,代码可以执行特权指令,访问任何的物理地址;低执行级别下,就会受到一定的限制。(处于系统安全和稳定的目的)Intel X86 CPU有四种不同的执行级别0-3;linux只使用了其中的0级和3级分别来表示内核态和用户态。】

    显著地区分:cs寄存器的最低两位表明了当前代码的特权级
    在linux中,地址空间是一个显著地标志:

    0xc0000000以上的地址空间只能在内核态下访问,
    0xc00000000——0xbfffffff的地址空间两种状态下都可以访问。

中断发生过程:

  1. 中断处理是从用户态进入内核态的主要方式,同时,系统调用只是一种特殊的中断。

  2. 中断发生后第一件事就是保存现场:

  3. 中断/int指令会在堆栈上保存一些寄存器的值(用户态栈顶地址、当时的状态字、当时cs:eip的值)

  4. 中断结束前第一件事就是恢复现场。
    save_all:
    内核代码,完成中断服务。

2.系统调用概述和系统调用的三层皮:

系统调用:用用户态进程和硬件设备进行交互提供了一组接口。

以上是关于Linux内核设计第四周——扒开系统调用三层皮的主要内容,如果未能解决你的问题,请参考以下文章

《Linux内核分析》第四周 扒开系统调用的“三层皮”

20135327郭皓--Linux内核分析第四周 扒开系统调用的三层皮(上)

《Linux内核分析》第四周笔记 扒开系统调用的三层皮(上)

20135201李辰希 《Linux内核分析》第四周 扒开系统调用的“三层皮”

Linux内核及分析 第四周 扒开系统调用的三层皮(上)

第四周—扒开系统调用的“三层皮”