您的位置:首页 > 运维架构 > Linux

空间apiLinux系统调用及用户编程接口(API)学习

2013-05-29 19:33 453 查看
新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正

Linux系统调用

系统调用指操纵系统供给给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来取得操纵系统内核供给的服务。

为什么用户程序不能直接访问系统内核供给的服务呢?这是由于在Linux中,为了更好地掩护内核空间,将程序的运行空间分为用户空间和内核空间(也就是常称的用户态和内核态),它们分离运行在不同的级别上,逻辑上是相互分离的。因此,用户进程通常情况下不允许访问内核数据,也无法应用内核函数,它们只能在用户空间操纵用户数据,调用用户空间的函数。

但是,在有些情况下,用户空间的进程需要取得一定的系统服务(调用内核空间程序),这时操纵系统就必须利用系统供给用户的“特殊接口”———系统调用划定用户进程进入内核空间的具体位置。在停止系统调用时,程序运行空间需要从用户空间进入内核空间,处理完成后再返回用户空间。

Linux系统调用还算精简(只有250个左右),它继承了UNIX系统调用中最基本和最有效的部份。这些系统调用按照功能逻辑大致可分为进程控制、进程间通信、文件系统控制、存储管理、网络管理、套接字控制、用户管理等几类。

每日一道理

岭上娇艳的鲜花,怎敌她美丽的容颜?山间清澈的小溪,怎比她纯洁的心灵?

用户编程接口(API)

前面讲到的系统调用其实不直接与程序员停止交互,它仅仅是一个通过软中断机制向内核提交请求以获取内核服务的接口。实际应用中,程序员调用的通常都是用户编程接口(API)。

例如,创立进程的API函数fork()函数对应于内核空间的sys_fork()系统调用,但其实不是所有的函数都对应一个系统调用。偶然,一个API函数会需要几个系统调用来共同完成函数的功能,甚至还有一些API函数不需要调用相应的系统调用(因此它所完成的不是内核供给的服务)。

系统命令

系统命令相对API更高了一层,它实际上是一个可执行程序,它的内部引用了用户编程接口(API)来实现相应的功能,它们之间的关系如下图1:



文章结束给大家分享下程序员的一些笑话语录:

自行车

一个程序员骑着一个很漂亮的自行车到了公司,另一个程序员看到了他,问 到,“你是从哪搞到的这么漂亮的车的?”

骑车的那个程序员说, “我刚从那边过来, 有一个漂亮的姑娘骑着这个车过来, 并停在我跟前,把衣服全脱了,然后对我说,‘你想要什么都可以’”。

另一个程序员马上说到, “你绝对做了一个正确的选择, 因为那姑娘的衣服你 并不一定穿得了”。

---------------------------------
原创文章 By
空间和api
---------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: