Chinaunix首页 | 论坛 | 博客
  • 博客访问: 189104
  • 博文数量: 49
  • 博客积分: 635
  • 博客等级: 中士
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-25 12:58
文章分类

全部博文(49)

文章存档

2012年(9)

2011年(40)

分类: LINUX

2011-11-18 18:13:57

   所有的操作系统都提供多种服务的入口点,程序由此向内核请求服务。这些入口点被称为系统调用。Unix所用的技术是为每个系统调用在标准C库中设置一个具有相同名字的函数。用户进程用标准C调用序列来调用这些函数,然后,函数又用系统所要求的技术调用相应的内核服务。
   从实现者的角度来看,系统调用和库函数之间的区别是很大的;但是从用户角度来看,区别又不是非常重要了。我们需要明确的是,系统调用通常是不能替换的,但是我们可以自定义库函数。以存储器分配函数malloc为例,UNIX系统中处理存储器分配的是sbrk(2),它并不是一个通用的存储器管理器,如果用户不喜欢malloc的操作方式,是可以自定义自己的malloc函数的,我们可以看到,两者的职责不同,内核中的系统调用分配另外一块空间给进程,而库函数malloc则在用户空间管理。总之,应用程序可以调用系统调用或者库函数,而很多库函数的实现是靠系统调用的。配图如下:
    
阅读(1174) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~