Chinaunix首页 | 论坛 | 博客
  • 博客访问: 195678
  • 博文数量: 46
  • 博客积分: 1355
  • 博客等级: 中尉
  • 技术积分: 336
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-02 16:20
文章分类

全部博文(46)

文章存档

2017年(2)

2014年(12)

2012年(1)

2011年(5)

2010年(26)

我的朋友

分类: LINUX

2010-08-28 15:00:58

系统调用:

1、应用程序通过应用编程接口(API)而不是直接通过系统调用来编程的。一个API定义了一组应用程序使用的编程接口。它们可以实现一个系统调用,也可以通过多个系统调用来实现,而完全不使用系统调用也不存在问题。Linux的系统调用像大多数Uinx系统一样,作为C库的一部分提供,C库实现了Unix系统的主要API包括标准的C库函数和系统调用。我家之言:一般的应用程序编程接口像fread()等在其它系统也是一样的,只是可能系统调用read不同而已。


2、用户空间的程序无法直接执行内核代码,它不能直接调用内核空间中的函数,国为内核驻留在受保护的地址空间上,如果进程可以直接在内核的地址空间上读写的话,系统就不完全了。应用程序以某种方式通知系统,告知内核自己需要执行一个系统调用,希望切换到内核态,这样内核就可以代表应用程序来执行该系统调用了。我家之言:系统调用是进行内核的唯一入口。


3、每一个系统调用都应该有一个明确的用途,在Linux中不提倡采用多用途的系统调用,ioctl()是一个反例。


4、“提供机制而不是策略”之我见:在一般的驱动程序中尽量把硬件的所有机制都提供给用户,而且不在驱动程序里实现任何的算法之类的策略,把策略的灵活性留给应用程序设计者完成,这一部分的灵活性最大。

阅读(1611) | 评论(1) | 转发(0) |
0

上一篇:Linux之调度

下一篇:Linux之中断

给主人留下些什么吧!~~

chinaunix网友2010-08-30 21:44:41

Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com