引言
最近想给开发板做Linux内核移植,一进来发现水很深,有很多东西可以研究,在边移植边学习的过程中很多概念之间的关系一直有点迷糊,干脆就停一下把这块的东西学一下再出发。
这里的关系总结都是本着每一层之间的联系来的,概念的概括也都是以与下一级概念关联为目的来概括的所以不是很权威,仅供参考,以理清思路为使用目的
应用程序
程序员调用API或者库函数编写新的程序实现目标功能构成应用程序
API
API(用户编程接口)是操作系统供给用户方便设计应用程序的函数,是一个提供给应用程序的接口,是与程序员进行直接交互的一组函数,它与库函数的区别是库函数是一门编程语言本身支持的一些基本函数。
由于在linux中,将程序的运行空间分为内核和用户空间(内核态和用户态);逻辑上它们相互隔离,因此应用程序不能访问内核数据,也无法调用内核函数,所以用户使用系统提供的API在用户空间编写的程序要想运行,必须得用到系统调用,由API和系统调用共同完成用户态和内核态的数据访问
系统调用
操作系统提供给用户程序调用的一组“特殊”