• 系统调用与API


    系统调用与API

    系统调用介绍

    • 什么是系统调用

    • Linux系统调用

    • 系统调用的弊端

      • 使用不便:操作系统提供的系统调用接口往往过于原始,程序员需要了解很多与操作系统相关的细节。如果没有进行很好的包装,使用起来不方便。

      • 各个操作系统之间系统调用不兼容。

      • 运行库就是用来解决以上弊端的。

    系统调用原理

    • 特权级与中断

      • 两种特权级:用户模式和内核模式

      • 高特权级降低为低特权级是允许的,但反过来则需要使用一种较为受控和安全的形式

      • 系统调用是运行在内核态的,而应用程序基本都是运行在用户态的

      • 操作系统一般是通过中断来从用户态切换到内核态。中断是请求CPU暂停当前的工作转手去处理更加重要的事情。

      • 轮询(Poll)与中断不同,效率过低。

      • 中断一般有两个属性:中断号和中断处理程序,一一对应,形成中断向量表

      • 中断有两种类型:硬件中断和软件中断

      • 系统调用与中断类似:系统调用号和系统调用一一对应,形成系统调用表

    • 基于int的Linux的经典系统调用实现

      • 触发中断

      • 切换堆栈

      • 中断处理程序

    • Linux的新型系统调用机制

    Windows API

    • Windows API概览

      • Windows API是以DLL导出函数的形式暴露给应用程序开发者的。微软把这些Windows API DLL导出函数的声明的头文件、导出库、相关文件和工具一起打包成Software Development Kit(SDK)。只要包含Windows.h文件就可以使用Windows API的核心部分。

      • Windows API表

      • Windows API的接口还是相对比较原始的,直接用API进行程序开发效率较低。Windows系统在API之上建立了很多应用模块,是对Windows API的功能的扩展。

    • 为什么要使用Windows API

      • 要解决问题就加层的万能法则:尽可能地确保做到向后兼容

      • 系统调用实际上是非常依赖于硬件结构的一种接口,虽然硬件结构发生改变较为少见,但是一旦发生改变,代价是惊人的。

    • API与子系统

      • 除了兼容自家的系统,Windows还考虑到兼容其他系统,于是有了子系统的概念。子系统实际上是Windows架设在API和应用程序之间的另一个中间层。不过,由于一家独大的垄断地位,子系统实际上已经被抛弃了。

    本章小结

  • 相关阅读:
    B. Shift and Push
    Codeforces Round #392 (Div. 2)
    D. Make a Permutation!
    C. Bus
    B. Polycarp and Letters
    A. Fair Game
    python-随机数的产生random模块
    python的时间处理-time模块
    python-迭代器与生成器
    python-装饰器
  • 原文地址:https://www.cnblogs.com/fr-ruiyang/p/14527928.html
Copyright © 2020-2023  润新知