Android 是否与 Linux Standard Base 兼容?

Dis*_*ser 6 linux standard android lsb

从 Stack Overflow 搬过来,我意识到它是题外话,因为它要求来源 - 据我所知,规则禁止在那里但不是在这里。

我知道 Android 中的内核现在主要是 Linux 内核,但有一些例外,例如唤醒锁(如John Stultz 所述)。但是它是否足够接近以符合 Linux 标准库?(或者对于 POSIX 和/或单一 Unix 规范?)

我正在一篇学术学期论文中写到这个,所以除了答案本身,如果有一个相对可靠的来源我可以引用它会很棒:同行评审的文章或书籍将是理想的,但一些来自谷歌的开发人员文档或有信誉的人(Torvalds、Andrew Josey 等)都可以。

gol*_*cks 6

LSBPOSIX单一UNIX规范所有显著涉及用户态。仅仅使用一个内核,该内核也被用作“类unix”、“主要符合 POSIX 标准”的操作系统——GNU/Linux——并不足以让 Android 也如此。然而,有一些 *nix-ish 元素,例如shell,它是一个“高度兼容”的 Korn shell 实现(在 4.0 之前,它实际上可能是 ash shell,用于嵌入式 GNU/Linux 系统通过busybox)和各种POSIX-y命令行实用程序来配合它。然而,大多数人不会从“类unix”世界中认出完整的集合。

它是否足够接近以符合 Linux 标准库?

LSB 的核心是文件系统层次结构,Android 不使用它。LSB 确实为 POSIX 增加了一些东西,而且由于 Android 还远不及 LSB,所以它离 LSB 兼容还很远。我相信,这显然不是该平台的目标。linux内核是为了它自己的特性,而不是因为它可以用作POSIX系统的核心;出于两个原因,它最初被 GNU 采纳。

为了澄清与面向用户空间的规范(例如 POSIX、Unix 或 LSB 扩展)的区别,请考虑POSIX对本机 C 库所说的一些事情。这就是我们遇到平台特定事物的地方,例如网络和大多数系统调用,例如read()--read()实际上不是标准 C。从历史上看,它是 Unix 的东西。POSIX 确实将这些定义为接口,但它们是在 userland C 库中实现的,然后其他一切都使用这个库作为其基础。GNU/Linux 上的 C 库是 GNU C 库,它与内核完全分开。虽然这两个东西作为操作系统的核心一起工作,但这里讨论的标准都没有说任何说明关于这必须如何发生,因此实际上,他们没有说明内核是什么或必须做什么。他们说了很多关于 C 库是什么以及必须做什么的事情,这意味着,如果您编写了一个 C 库来使用给定的内核——任何内核,无论形式或特征如何——并且该库提供了一个用户空间 API满足 POSIX 规范,您就有了一个兼容 POSIX 的操作系统。

我认为 LSB 确实有一些关于/proclinux 提供的内核接口的事情要说。然而,这(例如)由内核直接提供的事实并不意味着 LSB 说它必须是——它只是说这应该/可能可用,如果是的话,信息的性质是什么。

  • 只是为了澄清:**没有“POSIX 内核”这样的东西**,因为 POSIX 没有指定任何关于它的内容。这些规范是关于*用户空间接口*的,它可以暗示关于内核的事情,但他们没有直接说明任何事情。所以你有点走上了自相矛盾的道路……如前所述,LSB 只是 POSIX 的扩展。linux 内核实际上不是“LSB 兼容的”,因为 LSB 只是关于用户空间工具和接口。据推测,您可以使用足够的技巧以这种方式装配*任何*内核。所以看看与 LSB 和 POSIX 相关的 Android ...... (2认同)
  • 换句话说:理论上,您可以拥有一个完全没有内核的 100% POSIX 兼容操作系统,或者更确切地说,一个只需要内核中的某些东西的操作系统。POSIX 本身对此没有任何说明,因为它是关于 *what* 而不是 *how*。**用户空间中的“什么”**;How 的一部分当然是内核,但没有对其施加规范、要求和限制。 (2认同)