码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2016-03-20 21:32:25      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

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内核设计第四周——扒开系统调用三层皮

标签:

原文地址:http://www.cnblogs.com/suzhengsheng/p/5299481.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!