zoukankan      html  css  js  c++  java
  • Linux内核分析实验四----

    一、用户态、内核态

      权限分级——为了系统本身更稳定,使系统不宜崩溃。(并不是所有程序员缩写的代码都很健壮!!)

      x86 CPU四种不同的执行级别:0(内核态)—3(用户态)

      区分方法:CS:EIP(CPU的每条指令都是通过这里执行)(代码段选择寄存器:偏移量寄存器)

           CS寄存器的最低两位表明了代码级别——逻辑地址(不是物理地址)

           内核态:可以访问4G地址空间的任意地址    用户态:0x00000000—0xbfffffff空间内的地址

    二、中断——从用户态进入内核态

      系统调用是一种特殊的中断(用户态进程与硬件设备的接口)

      切换时就会涉及到上下文的问题?

           即中断int指令在堆栈上会保存一些值:1.用户态栈顶地址  2.当时状态字  3.当时CS:EIP的值

            save—cs:eip  ss:eip  eflag  

            load—cs:eip  ss:eip

      过程:1.SAVE_ALL——保存现场

          判断是否有进程调度?

         (无进程调度)last.RESTORE_ALL+iret(popl cs:eip/ss:eip/efalg)

         (有进程调度)last.暂时保存当前的值直到该进程再次被调度

    三、API——应用程序编程接口(不同于系统调用)

    • API是一个函数定义
    • 系统调用请求一个软中断
    • 触发系统调用通过传递系统调用号实现(压栈传递参数)

    四、实验截图

     

            

  • 相关阅读:
    [办公自动化]企业网IE多版本引发的网页无法访问
    [每天想一想]如果你的领导不懂技术,你该怎么办?
    [思考]我们应该怎样建设企业IT
    [读书笔记]流畅的Python(Fluent Python)
    [办公自动化]网件交换机管理软件
    PCRE函数简介和使用示例
    pcre7.0在vc6.0编译
    Luogu P2173 [ZJOI2012]网络
    tensorflow学习笔记2
    python数据可视化7
  • 原文地址:https://www.cnblogs.com/20135207oneking/p/5294579.html
Copyright © 2011-2022 走看看