gpt4 book ai didi

linux - 为什么不是所有的库函数都不是系统调用?

转载 作者:太空宇宙 更新时间:2023-11-04 11:45:31 35 4
gpt4 key购买 nike

因此,从我的基础操作系统类(class)中,我了解到内核是与硬件交互的部分。所以,如果我们想和硬件交互,就需要调用系统调用。 open() 是系统调用,而 strlen() 不是系统调用。但是任何指令或命令都必须与硬件交互,至少要增加程序计数器或修改内存内容。那么,难道不是所有函数都应该在某个时候进行系统调用吗?

最佳答案

我强烈建议您阅读有关 UNIX 的早期论文,了解方法和原因。肯·汤普森 (Ken Thompson) 大力提倡内核只包含无法在内核之外实现的内容。

当时;内核之外对应于计算机的特权模式之外。在现代系统中这是一个不太有趣的概念;但仍在继续插入架构和设计。

简而言之; open() 由内核导出,因为它必须是——它访问内核私有(private)的数据结构,因此是一个接口(interface); strlen 不由内核导出,因为它不必导出,它既不需要特权也不需要访问其他数据结构。

不必是王牌;因为没有人想要内核中不必要的功能。

关于linux - 为什么不是所有的库函数都不是系统调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57881460/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com