Chinaunix首页 | 论坛 | 博客
  • 博客访问: 294212
  • 博文数量: 56
  • 博客积分: 3025
  • 博客等级: 中校
  • 技术积分: 534
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-06 17:28
个人简介

Honesty and diligence should be your eternal mates.

文章分类

全部博文(56)

文章存档

2012年(1)

2011年(27)

2010年(20)

2008年(8)

分类: LINUX

2010-12-01 21:41:21

   封装和接口是计算机世界最普遍的特色。系统通过封装,屏蔽了底层具体的实现细节,用户只需要知道系统提供的接口就可以方便的使用系统。Linux系统调用就是这么一个活生生的例子。通过系统调用,用户间接地访问到系统硬件和操作系统资源。这样,用户可以不管复杂的底层操作,而内核也通过这种方式有效地保证了自己的安全。

1、API(应用程序接口):
   
   API就是我们上面说到的接口,它展示了所有操作系统能实现的功能,并提供给应用程序。Linux系统的API遵循POSIX(可移植操作系统接口)。POSIX是IEEE制定的定义类UNIX操作系统API的标准。
   
   每个API函数的实现可能由一个系统调用实现,也可以由多个系统调用实现,当然,也可以不使用系统调用。
   
2、系统调用:

   系统调用是内核给用户提供的接口,通常以C函数库(API)的方式进行封装。而且,C函数库通常对这些系统调用进行了封装。下图可说明系统调用、应用程序和C库的关系:

   API和系统调用并不只是一对一的关系,可以是多对一,也可以是一对多。不过只能是API向下调用,而系统调用不能调用API。例如,一个API函数可以调用多个系统调用,而一个系统调用也可以被多个API函数调用。当然,应用程序也可以直接使用系统调用。

   命令位于API的上层,是利用API实现的可执行程序。如ls、pwd等命令。我们要查看命令都使用了哪些系统调用,可以使用strace命令。


阅读(6154) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~