软件栈和操作系统有什么区别?为什么安卓不是操作系统而是软件栈?

15

根据developer.android.com的说法,Android是一个软件堆栈而不是操作系统。

什么是Android?Android是移动设备的软件堆栈,包括操作系统、中间件和关键应用程序。 Android SDK提供了使用Java编程语言在Android平台上开始开发应用程序所需的工具和API。

我不明白软件堆栈是如何与应用程序一起工作的操作系统,那么Windows是操作系统,但如果我在其上安装应用程序,我应该称其为软件堆栈吗?

那么软件堆栈和操作系统之间有什么区别,Android包括内核,为什么不是操作系统?


1
在同一页的几行下方:“以下图示显示了Android 操作系统的主要组件。” - mbeckish
1个回答

21

操作系统是系统的核心内核,软件栈是位于内核之上的软件,它增强和扩展了系统的功能。

Windows 倾向于模糊这条线,但 Linux 使它更加明显。

在 Linux 中,内核就是操作系统。位于内核之上的软件栈可以包括以下内容:

  • X 窗口系统
  • Gnome 窗口管理器
  • 用于管理系统的应用程序
  • 等等...

因此,像控制面板应用程序来编辑系统设置的东西不属于操作系统的一部分。它们是位于操作系统之上的软件栈的一部分。

你可以拥有 一个非常小的操作系统,它没有太多软件栈运行在其之上。单独使用,它不会提供太多的可用性,而是为添加可用性提供了基础。

Android 的软件栈建立在 Linux 内核之上,它负责电源管理,并作为设备的其他硬件部分之间的接口。这里有一个链接,可以帮助你了解更多关于 Android 架构 的信息。


非常棒的解释。非常感谢,但请详细描述Windows如何模糊界线? - AZ_
4
@Algo: 因为Windows中的软件堆栈与操作系统捆绑在一起,不会被其他选项替换。例如,在Linux中,窗口管理器可以用许多备选选项替换。在Windows中,你得到他们给你的,就这样了。尽管如此,在Windows中也有软件堆栈的例子。从技术上讲,最初的Windows(95年之前)是安装在MS-DOS之上的软件堆栈。Microsoft Bob是另一种软件堆栈。 - David
David,请推荐一些好书给我。我是一名软件工程师。 - AZ_
2
@Algo:这个问题有点模糊和广泛。不同的书籍关注软件的不同方面和学科。如果我要从中选择一个最喜欢的,那就从《Clean Code》和《The Clean Coder》(都是Robert C. Martin所著)开始,然后再继续深入阅读。(这两本书内部引用了其他好书等参考资料)。 - David
这个术语("堆栈")已经存在很长时间了还是它的使用更为近期? - dbrane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接