LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2784|回复: 5

请问什么是系统调用,什么是库调用?

[复制链接]
发表于 2003-11-3 20:35:15 | 显示全部楼层 |阅读模式
我看有操作系统的书上说系统调用是库调用.我觉得还是应该有区别的.那是不是系统调用是调用LINUX的内核中的函数,而库调用是调用GLIBC中的函数,GLIBC又是调用LINUX内核的?
在普通用户编程中是否两种调用都可使用?
:thank
发表于 2003-11-15 08:51:10 | 显示全部楼层
书错了,你对
发表于 2003-11-15 15:29:29 | 显示全部楼层
楼主说的不全对。
系统调用是调用 Linux 提供给用户编程的接口函数,这个和内核函数是有区别的。
发表于 2003-11-16 13:24:17 | 显示全部楼层
我是这样认为的:系统调用就是那些从用户空间通过中断门(x86用
int xx,多少我不知道)调用系统提供的内核函数接口(不是所有
内核函数都公开来被用户空间调用)。用c函数格式包装一下就成了
最基本的c库函数。其它的ansi c,posix c库有些根本不用调用系统
调用(如那些数学函数),有些调一个,有些调几个,方便使用。
发表于 2003-11-20 22:52:14 | 显示全部楼层
系统调用(system call)是操作系统在用户与硬件之间架设的一座桥梁,用户通过在编程时调用system call来完成他想要系统执行的任务,其实我们想让OS做得事都是被分解成多个system call来完成任务的.
而库函数,我觉得这里说的可能是用户线程库,主要是微内核采用的一种服务方式,这是我的一点拙见,还请指正.
发表于 2003-11-20 23:57:39 | 显示全部楼层
在linux下每个系统调用由两部分组成:
(1):核心函数:是实现系统调用功能的代码,作为操作系统的核心驻留在内存中,是一种共享代码。运行在核心态。
(2):接口函数:是提供给应用程序的API,以库函数的形式存在于linux的lib.a中,该库中存放了所有系统调用的接口函数的目标代码,用汇编语言书写。其主要功能是把系统调用号,入口参数地址传给相应的核心函数,并使用户态下运行的应用程序陷入核心态。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表