托管内核与虚拟机的区别

7

我一直在了解AROS,特别是托管版本。AROS说:

kernel.resource contains AROS microkernel. It's the lowest level component,
which is responsible for handling CPU and motherboard. For
hosted ports kernel.resource contains a virtual machine.
根据我所了解的虚拟机,有两种类型的系统虚拟机和进程虚拟机。我知道AROS不是一个系统虚拟机,但所有的进程虚拟机似乎都像Java JVM、Mono、Python、Ruby等语言特定。而AROS似乎是在用户模式下运行的完整系统/平台,类似于User Mode Linux。
AROS-hosted:一个操作系统在另一个操作系统中?
AROS最初是在基于Intel的计算机上运行Linux开发的。它可以在许多其他机器和操作系统上运行。这听起来很奇怪:一个操作系统运行在另一个操作系统之上,那就是模拟,对吗?
AROS-hosted所做的一个好术语是“API模拟”。API是应用程序接口的三个字母缩写。简单地说,API提供了(C语言)函数,程序员可以使用它们。AmigaOS API由一堆库调用组成,Amiga程序员可以使用它们制作Amiga程序。AROS模拟AmigaOS API:它试图提供与AmigaOS相同的库调用。Amiga模拟器(如UAE)模拟Amiga计算机:处理器、连接的硬件、一切。这有其优点,比如能够在不同的硬件上玩二进制Amiga游戏,以及其缺点,比如不能将模拟器用作“真正的”操作系统,在“真正的”处理器上运行。AROS-hosted在“真正的”处理器上运行。但它不是一个“真正的”操作系统,除非你以一种不需要Linux的方式运行。这被称为“本地”AROS。
AROS可以在Intel和Amiga计算机上本地运行,但不像在Linux上运行得那么好。AROS库函数首先在Linux下运行,内部使用Linux内核和库调用。这样程序员就有机会先关注整个系统的实现,然后再关注技术细节。人们目前正在努力使“本地”AROS更加可用。结果非常令人印象深刻,完全可以将AROS-native用作IBM PC兼容机器上的真正(唯一)操作系统。
当然,AROS不仅是API模拟器。它还尝试提供所有AmigaOS 3.1系统软件的替代品,并且您还会发现一些演示和游戏随着AROS一起出货,只是为了展示它们可以工作——我们可能只完成了整个系统的77%,但我们已经让Quake运行了!
根据这些信息,我认为当AROS kernel.resource用作虚拟机时,它只是包装了Linux内核的系统调用接口?还是我漏掉了什么?
此外,还有其他像AROS一样的系统吗?
我希望你能够帮我翻译一下,我想要制作一个类似于这样的东西,可以在许多操作系统上托管。
1个回答

0

(编辑注意:此问题要求意见,因为我有自己的看法...):

内核架构的分类并不像物种或头发颜色那样严谨。像(微|单片机|虚拟)内核这样的术语更多是模糊的描述,而不是分类划分。这有助于向好争辩的极客销售啤酒。

所有内核都提供某种虚拟机。在UNIX中,通常是用户模式指令集+执行各种操作的一组系统调用的解释+一些作为线程的CPU数量。这个抽象机器可能会强制执行其他规则,例如内存类型(堆栈、堆、文本)的放置和范围。在虚拟化内核中,通常是整个指令集、一组CPU、内存和设备。在大多数情况下,对内存的访问由虚拟化内核(常见的是hypervisor)进行仲裁,设备通过解释对其的访问在hypervisor中实现,并且系统指令由hypervisor进行仿真。

但是这两个(UNIX、hypervisor)都提供了虚拟机,只是抽象不同。UNIX虚拟机可能具有优先级概念,其中进程建立应该更或少受到CPU或内存资源青睐的概念;而纯虚拟计算机(hypervisor)将无法传达这种概念。

无论在哪个环境下,在我的执行单元(进程、虚拟机)中,我都可以选择实施自己的线程、进程、设备和交互运行时概念。gvisor项目提供了一个相当完整的实现,但即使是golang运行时也将golang程序与底层内核分离开来。这对于倾向于将内核视为特权共享库的C程序员来说是一个非常陌生的概念。

所以,是的,你可以在内核下运行内核,直到满足你的愿望为止。如果你在谷歌上搜索一下,你就可以找到如何构建一个容器,使用qemu-*作为加载器,让你的分区在x86机器上运行arm bash,并无缝地运行arm和x86二进制文件。当你向朋友展示这个时,他们会取笑你。

实际问题:

......还是我漏掉了什么?AROS可以嵌套在Linux环境中,不会泄露Linux环境给它的客人。在这种模式下运行内核通常被称为“托管”。请参见gvisor,了解如何做到这一点,甚至不需要成为root。

还有其他像AROS这样的系统吗?数不胜数。


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