答:
1,通常情况下,应用程序是通过 "操作系统的API" 而不是直接通过 "系统调用" 来编程。 (尽管 "应用程序" 可以直接使用 "系统调用",系统调用也是内核和 "应用程序" 之间的沟通桥梁。)
2,“POSIX标准API” 是最通用的 “操作系统的API”。
3,“操作系统的API” 和 ”系统调用“ 之间有着直接的关系,一个 “操作系统的API” 函数可以由一个 ”系统调用“ 实现,也可以通过调用多个 ”系统调用“ 来实现,还可以完全不使用任何 ”系统调用“。
4,“操作系统的API” 通常都以C库(注意,不专指标准库)的方式提供,每个 ”系统调用“ 在C库中都具有相应的封装函数。系统调用与其在C库封装函数的名称常常相同,比如,read系统调用在C库中的封装函数即为read函数(read为posix库函数,在头文件<unistd.h> 中)。
5,”系统命令“ 位于C库的更上层,是利用C库实现的可执行程序,比如最为常用的ls、cd、pwd等命令。
6,”系统调用“最终必须具有明确的操作。”应用程序“通过系统调用进入内核后,会执行各个”系统调用“对应的 ”内核函数“,即 “系统调用服务例程”,比如系统调用getpid的服务例程 是 内核函数sys_getpid。
7,"系统调用" 服务例程之外,内核中存在着大量的 "内核函数"。有些局限于某个内核文件自己使用,有些则是export出来供内核其他部分共同使用。对于export出来的 “内核函数”,可以使用ksyms命令或通过/proc/ksyms文件查看。
请描述 “应用程序”,”系统命令“,“C标准库”,“POSIX标准API”,“操作系统的API”,“系统调用”,"内核函数" 之间的关系?
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 系统调用接口的主要任务是把进程从用户态切换到内核态。在具有保护机制的计算机系 统中,用户必须通过软件中断或陷阱,才...
- 2016年国庆假期终于把此书过完,整理笔记和体会于此。 关于书名 书名源于俄罗斯的演员斯坦尼斯拉夫斯基创作的《演员...