zoukankan      html  css  js  c++  java
  • 2020-2021-1 20209307《Linux内核原理与分析》第五周作业

    一、理论知识

        系统调用:操作系统为用户态进程与硬件设备进行交互提供的一组接口。

        系统调用的三层皮:API(应用程序接口),中断向量system_call,中断服务程序sys_xyz

        宏观上Linux操作系统的体系架构分为:用户态和内核态

            当一个进程在执行用户自己的代码时处于用户运行态(用户态),此时特权级最低,为3级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态。Ring3状态不能访问Ring0的地址空间,包括代码和数据;当一个进程因为系统调用陷入内核代码中执行时处于内核运行态(内核态),此时特权级最高,为0级。执行的内核代码会使用当前进程的内核栈,每个进程都有自己的内核栈。

            用户态切换到内核态的3种方式:系统调用、异常、外围设备的中断

    二、实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    第一步:选择使用的系统调用:我选择的是20号 getpid

     

    第二步:用C语言编程

    第三步:用gcc编译运行

    第四步:将C的代码改为嵌入式汇编语句

     

    第五步:编译并运行

    三、实验总结

    1、API:应用程序接口是一个函数定义,系统调用通过软中断向内核发出一个明确的请求。 
    系统调用:操作系统为用户态进程与硬件设备进行交互提供了一组接口。 
    当API中包含系统调用时,通过系统调用号进入相应的系统调用,然后使用软中断进入内核态。中断发生后会保护现场,将用户的当前栈顶地址,当时的状态字和cs:eip的值进行压栈。之后进入由用户态切换到内核态,处理完中断程序后还原现场,返回用户态。 
    通过使用API和C代码中嵌入式汇编代码两种方式实现系统调用,理解了系统调用的工作过程。

    2、系统调用的工作机制

  • 相关阅读:
    【POJ1961 Period】【KMP】
    浅谈KMP算法
    【关于动态开点线段树】
    【POJ3349 Snowflake Snow Snowflakes】【Hash表】
    【NOI 2002 银河英雄传说】【带权并查集】
    路径问题
    group_concat函数详解
    MySQL中GROUP_CONCAT中排序
    怎么实现CSS限制字数,超出部份显示点点点.
    jsp去掉小数点
  • 原文地址:https://www.cnblogs.com/wzyxiaowang/p/13943224.html
Copyright © 2011-2022 走看看