全部博文(46)
分类: LINUX
2010-08-28 15:00:58
系统调用:
1、应用程序通过应用编程接口(API)而不是直接通过系统调用来编程的。一个API定义了一组应用程序使用的编程接口。它们可以实现一个系统调用,也可以通过多个系统调用来实现,而完全不使用系统调用也不存在问题。Linux的系统调用像大多数Uinx系统一样,作为C库的一部分提供,C库实现了Unix系统的主要API包括标准的C库函数和系统调用。我家之言:一般的应用程序编程接口像fread()等在其它系统也是一样的,只是可能系统调用read不同而已。
2、用户空间的程序无法直接执行内核代码,它不能直接调用内核空间中的函数,国为内核驻留在受保护的地址空间上,如果进程可以直接在内核的地址空间上读写的话,系统就不完全了。应用程序以某种方式通知系统,告知内核自己需要执行一个系统调用,希望切换到内核态,这样内核就可以代表应用程序来执行该系统调用了。我家之言:系统调用是进行内核的唯一入口。
3、每一个系统调用都应该有一个明确的用途,在Linux中不提倡采用多用途的系统调用,ioctl()是一个反例。
4、“提供机制而不是策略”之我见:在一般的驱动程序中尽量把硬件的所有机制都提供给用户,而且不在驱动程序里实现任何的算法之类的策略,把策略的灵活性留给应用程序设计者完成,这一部分的灵活性最大。
chinaunix网友2010-08-30 21:44:41
Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com