zoukankan      html  css  js  c++  java
  • 系统调用与库函数

    定义

            系统调用——应用程序与操作系统内核之间的接口

            库函数——将不同操作系统的系统调用包装为统一的固定接口,使得同样的代码,在不同的操作系统

    下都可以直接编译,并产生一致的效果。

    系统调用原理——特权级与中断

     

    特权级

            1、CPU可以在不同特权级别下执行指令,现代操作系统有两种特权指令——用户模式(User Mode)【用户态】

    和内核模式(Kernel Mode)【内核态】

             2、系统调用是运行在内核态,应用程序运行在用户态。

              问题:用户态的程序如何运行内核态代码?

              答:操作系统一般通过中断(Interrupt)来从用户态切换到内核态。

    中断

           1、中断一般具有两个属性,一个称为中断号(Linux使用0x80作为系统调用入口),一个称为中断处理程序,

    中断号与中断处理程序一一对应

           2、中断向量表,在内核中的一个数组,包含了中断处理程序的指针

     

    image

                                                                              Linux系统中断流程

     

    注:

           1、Linux使用int 0x80触发所有系统调用

           2、系统调用都有一个系统调用号,系统调用号通常就是系统调用在系统调用表中的位置,

    系统调用号由eax传入,用户将系统调用号放入eax中,然后使用int 0x80调用中断,中断服务程序

    就可以从eax中取得系统调用号,例如sys_fork系统调用号为2

    具体实例

        1、系统调用,open、read、write…

         2、库函数,fopen、fread、fwrite

  • 相关阅读:
    一些基础的前端技术面试问题
    HTTP与HTTPS区别
    XML与JSON
    js的内置对象
    二分法查找
    img下面的留白解决
    大家好
    HEOI2020游记
    CSP-S2019游记
    省选模拟八十六 题解
  • 原文地址:https://www.cnblogs.com/luosongchao/p/3685083.html
Copyright © 2011-2022 走看看