概念认识:系统调用、API/ABI、SDK

说明
  本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。
  QQ 群 号:513683159 【相互学习】
内容来源
  《Linux系统编程》

一、系统调用

什么是系统调用?

  系统调用(system call):为从操作系统获得 服务/资源用户空间(文本编辑器等) 向内核发起的函数调用,即:操作系统给用户程序提供的调用接口。
  不同架构之间的系统调用存在一定的区别,但90%以上系统调用在所有架构上都实现了。

为什么会有系统调用?

  基于系统安全和稳定的考虑,用户空间程序禁止直接执行内核的代码或操作内核数据,故需要限制不同程序之间的访问能力,发明ring0-ring3的访问控制级别,其中ring0为内核态,ring3为用户态。
  ①内核态: CPU可访问内存所有数据,包括外围设备。
  ②用户态:只能受限访问内存,且不允许外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。
  这便可防止不小心对重要内存数据访问导致的系统奔溃等。
  故:用户空间应用程序不可直接访问内核,需通过一种机制能让应用程序能深入内核执行内核允许执行的代码,该机制即为系统调用。

常见的系统调用有哪些?

  ① 文件操作的系统调用:
    create ,open,read,write,close,link,unlink,lseek,chmod,rename
  ②控制类系统调用:
    fork,wait,exit,exec
  ③信号与时间的系统调用
    kill,sigaction,sigreturn
  ④时间管理的系统调用
    stime,time,times

二、API与ABI

  都定义和描述了软件不同模块间的接口。
  两者区别点击下面链接:
    linux系统基础知识(ABI和API)
    如何使用api_编程核心知识—API与ABI的区别
    ABI 与 API 的区别

1️⃣什么是API?

  API = 应用程序接口 = Application Programming Interface
  源码级别接口:定义了源代码和库之间的接口,可在支持这个API的任何系统中编译运行。
    由一组定义和协议组合而成,用于软件模块之间在源代码层交互的接口,实现不同组件之间相互通信。
    表现形式:应用程序/库中公开的公共类型/变量/函数集,如:
      HTTP 接口、RPC 接口、Web Service 接口等

为什么会有API(作用)?

  ①对软件提供商:形成生态,扩大品牌覆盖范围。
    ①创造新收入渠道,隐藏源码,保护商业机密。
    ②软件发挥最大价值,更有生命力。
    ③外部开发于协作,推动开放创新或提高效率。
  ②对应用开发者:节省开发时间,提高效率
    无需理解内部工作机制细节。
    直接调用接口,简单高效。

2️⃣什么是ABI?

  ABI =应用程序二进制接口 = Application Binary Interface。
  二进制层面的接口:定义特定架构上两个或多个软件木块之间的二进制接口,一段目标代码能够在任何具有同样ABI的系统上运行而不需重新编译。除非直接使用汇编语言,一般是不能直接拿来用。
  ABI没有表面上的接口,而是通过工具链(编译器、链接器等)执行。
  可帮助写出更优化的代码和编写汇编或研究工具链的绝好资料。

三、SDK

  SDK = Software Development Kit = 软件开发工具包。
  一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合。
  SDK可能包含:
    ①接口文件和库文件:
      接口文件和库文件就是API,将底层的代码进行封装保护,提供给用户一个调用底层代码的接口;
    ②帮助文档:
      帮助文档解释接口文件和库文件功能,以及介绍相关的开发工具,操作示例等等
    ③开发示例:
      开发示例就是做出来的一个DEMO展示,也要包括源代码;
    ④实用工具:
      用工具是用来协助用户进行二次开发的工具,比如二次开发向导、API 搜索工具、软件打包工具等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值