从Stack Overflow移动,在那里我意识到它是偏离主题的,因为它要求的来源 – 我可以告诉,规则禁止那里但不在这里.
我知道Android中的内核现在主要是Linux内核,有一些例外,比如wakelocks(如described by John Stultz).但它是否足够接近Linux标准库? (或者就POSIX和/或单Unix规范而言?)
我正在学术论文中写这篇文章,所以答案本身也很好有一个相对可靠的来源我可以引用它:同行评审的文章或书籍将是理想的,但谷歌的一些东西开发人员文档或具有已建立信誉的人(Torvalds,Andrew Josey等)会没事的.
解决方法:
LSB,POSIX和Single UNIX Specification都显着涉及userland.简单地使用内核也被用作“unix-like”,“主要是POSIX兼容”操作系统(GNU / Linux)的基础 – 让Android如此好.然而,有一些* nix-ish元素,例如the shell,它是一个“很大程度兼容”的Korn shell实现(在4.0之前,它实际上可能是ash shell,它通过嵌入式GNU / Linux系统使用) busybox)以及各种POSIX-y命令行实用程序.然而,大多数人不会从“类似unix”的世界中认出完整的集合.
is it close enough to be compliant with the Linux Standard Base?
LSB的核心是文件系统层次结构,Android不使用它. LSB确实为POSIX添加了东西,而且由于Android不是那样,它甚至更符合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对/ proc有一些说法,linux提供了内核接口.然而,这个(例如)由内核直接提供的事实并不意味着LSB说它必须 – 它只是说这应该/可以使用,如果是,那么信息的性质是什么.