系统调用API
不同层面的编程
1、裸机编程,如51、STM32单片机
2、驱动程序开发,基于内核驱动框架针对底层硬件操作逻辑的驱动程序,如嵌入式开发
3、应用编程,使用编程语言的标准函数库调用用户态的函数库间接调用内核态代码
GNU/Linux
1、用户态,glibc、Shell、gcc、gnome、核心工具
2、内核态,进程管理、内存管理、文件系统、驱动、网络栈
系统调用API:glibc库函数
1、调用过程:编程语言接口➡库函数➡软中断内核程序
如:创建进程fork()➡sys_fork();打开文件fopen➡open(),读文件fread()➡read();输出printf()➡write()
2、也存在不参与系统调用的库函数,如strlen()、memset()
3、编程语言接口功能上可以看成封装程度更高的系统调用API,它们之间不存在一一映射关系