zoukankan      html  css  js  c++  java
  • linux内核分析 第四周

    一、系统调用的三层皮

    1. 内核态、用户态

       Intel x86 CPU有四个权限分级,0-3。Linux只取两种,0是内核态,3是用户态。
      
       0xc0000000以上的空间只能在内核态下访问
      
       0x00000000-0xbfffffff两种状态下都可以访问
      
    2. API、中断向量、中断服务程序

       中断向量(0x80)用于中断。在用户态和内核态转换、或者进程转换时使用。
      
       系统调用的服务例程中,中断向量(0x80)是linux中所有系统调用的入口点,每个系统调用至少有一个参数,即系统调用号,系统调用号将API与中断服务程序关联起来,系统调用号保存在eax中。
      

    二、实验

    1. 云课堂中老师用了13号系统调用演示给我们看,由于网络不稳定,我就在自己电脑上的虚拟机中进行了实验。

    2. 29号系统调用pause();

      让进程暂停直到信号出现。

    3. 实验截图

       系统直接调用
      

        内嵌式汇编调用
    

    三、出现的问题

    由于实验没有在实验楼上进行,可能是linux版本不一样吧。编译时,系统对"%%eax"报错,好像是汇编出错。经反复调试,最后用了"%eax"。系统就不再报错,运行结果和预期的一样。截图如下:
    

    然后上网查也没用具体的解释……
    

    还请各位多多指教哦
    

    参考资料

    1.http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/syscall_32.tbl
    
    2.http://blog.sina.com.cn/s/blog_4d7e63020101lj43.html
    

    《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

  • 相关阅读:
    msp430入门学习43
    msp430入门学习42
    msp430入门学习41
    msp430入门学习40
    msp430入门学习37
    msp430入门学习36
    msp430入门学习35
    JAVA三大特性之三——多态
    JAVA三大特性之二——继承
    JAVA三大特性之一——封装
  • 原文地址:https://www.cnblogs.com/whyfarrell/p/5297688.html
Copyright © 2011-2022 走看看