1.Linux系统调用
在linux中,程序的运行空间空间分为用户空间和内核空间. 系统调用就是操作系统提供给用户程序调用的一组特殊接口,用户程序可以通过这组接口获得内核服务。通过软中断机制向内核提交请求获取服务。存在于内核空间。
2.用户编程接口(API)
上述的系统调用并不会和程序员直接打交道,实际使用中和内核直接打交道的是用户编程接口,就是我们常说的API。存在于用户空间。和系统调用有一个对应关系。
3.Posix标准
他是在unix中最流行的应用编程界面标准,是由IEEE和ISO/IEC共同开发的标准系统,该标准基于当时的实践和经验,描述了API,用于保证源程序在原代码级别上具有很好的移植性,API主要是利用C库函数实现。
4.系统命令
是一个应用程序。他是由源代码编译生成的,调用了API,进一步调用系统调用实现相应功能。
5.VFS(虚拟文件系统)
(1)首先不得不说Linux如此流行,原因之一就是他能和其他操作系统和谐共存,第一层就是VFS,第二层才是各种不同的具体的文件系统。
(2)VFS就是把具体文件系统的公共部分抽象出来,形成一个抽象层,是系统内核的一部分,位于用户程序(在这里包括了系统命令应用程序,API以及系统调用)和具体的文件系统之间。通过一系列不同文件系统公用的函数指针实际调用不同的文件系统函数,完成实际的操作。它能够对具体文件系统的数据结构进行抽象,用统一的数据结构进行管理,而且能够接受用户层的系统调用(在这里说用户层的API对应的系统调用更合适),而且还支持多种具体文件系统之间的相互访问,接受内核和其他子系统的操作请求。
(3)可以用
cat /proc/filesystem
查看系统中支持什么文件系统。
6.文件描述符
文件是字符序列构成的信息载体。linux系统区分和引用特定文件利用的就是文件描述符。通常一个进程启动以后,都会打开3个文件------标准输入,标准输出,标准出错处理。他们的文件描述符对应的是0,1,2。但是基于文件描述符的io操作不方便移植到类linux以外的操作系统。不过可以很好的兼容Posix标准,所以可以移植到Posix平台,是Linux应用编程很重要的一个环节。