华津驾校:Linux系统调用及用户编程接口(API)

来源:百度文库 编辑:中财网 时间:2024/05/02 06:52:24
2010-09-13 23:42
1:系统调用:
系统调用是值操作系统提供给用户程序调用的一组“特殊”编程接口,用户程序可以通过这组“特殊”接口获得操作系统内核提供的服务。例如,用户可以通过进程控制相关的系统调用来创建进程,实现进程调度,进程管理等!
Linux中,为了更好地保护内核空间,将程序运行空间分为内核空间和用户空间(也就是常说的内核态和用户态),它们分别运行在不同的级别上,逻辑上相互隔离的。因此,用户进程在通常情况下不允许访问内核数据,他们只能在用户空间访问用户数据,调用用户空间的函数。
但是,在有些情况下,用户空间的进程需要的进程需要获得一定的系统服务(调用内核空间的程序),这时操作系统就必须调用系统为用户提供的“特殊接口”-系统调用规定用户进程进入内核空间的具体位置。进行系统调用时,程序运行空间需要从用户空间进入内核空间,处理完后在返回内核空间。
系统调用按照功能逻辑可以分为:进程控制,进程间通信,文件系统控制,系统控制,存储管理,网络管理,socket控制,用户管理等。
2:用户编程接口(API)
系统调用不直接与程序员进行交互,它仅仅是一个软中断机制向内核提交请求以获得内核服务的接口。实际使用中程序员调用的通常是用户编程接口-API。
例如,获取进程号的API函数getpid()对应getpid系统调用。但并不是所有的函数都对应一个系统调用,有时,一个API函数会需要几个系统调用来共同完成函数的功能,甚至有一些API函数不需要相应的系统调用(因此它所完成的不是内核提同的服务)。
在Linux中用户编程接口(API)遵循了在UNIX中最流行的应用编程界面标准-POSIX标准。
这些系统调用编程接口主要是通过C库(libc)实现的。
3:系统命令
系统命令相对API更高的一层,它实际上是一个可执行程序,他的内部引用了用户编程接口(API)来实现相应的功能。