【问题标题】:A database-backed operating system数据库支持的操作系统
【发布时间】:2010-02-16 15:16:04
【问题描述】:

在我工作的地方,我正在参加一系列关于数据库查询优化器的讲座。当演讲者介绍数据库时,他对内核进行了非常有见地的评论,该内核基本上可以管理进程表、指向打开文件的指针、inode 等,因此它基本上是一个符合 POSIX 的数据库引擎。显然,很久以前读过巴赫,那时我还年轻,还比较缺乏经验,我从来没有从这个角度分析过这件事,但它基本上是正确的。

您可以想象,谷歌搜索并不容易......所以我问:我想知道那里是否有某个疯狂的人设计了一个(希望,只是为了好玩,真正有趣)用户空间 POSIX -MySQL 之上的兼容内核...

编辑:请注意。我不是在谈论具有数据库文件系统的内核。我说的是由 MySQL 处理整个 ring-0 状态的内核。

编辑 2:澄清一下,我似乎被误解了。我没有寻找它在生产中使用它。我只是想知道是否有人这样做是因为他想玩得开心。 真正的乐趣是指我写的Linux“只是为了好玩”这一事实,但它最终成为了一个严肃的产品,因此我添加了真正的表示完全不严肃。有一堆无用的项目,只是因为它们不寻常或疯狂到足以让人觉得有趣。我的问题是寻找在这种观点下开发的东西。

【问题讨论】:

  • 我听说过数据库支持的文件系统的计划(希望我还有链接,现在必须用谷歌搜索),理论上可以让您查询整个系统中的所有文件各种元数据。我想现代操作系统和文件系统在一定程度上做到了这一点,但我不知道有多少。
  • 这是著名的 supermegaultranew windows 面向对象文件系统,自 windows 1.0 起就在微软工作:)
  • 已经有一种技术可以进行文件系统搜索,在 OSX 上它被称为 SpotLight,它在后台运行得非常好、透明
  • 太好了,是的..没关系。很明显,是的,直到 mds 和 mdworker 决定建立索引,让你的机器陷入爬行状态,让你的硬盘着火。我不得不把它关掉:)
  • 好问题!我一直在想同样的事情,因为我了解到数据库引擎显然做了很多类似于操作系统管理其资源的工作。

标签: mysql kernel


【解决方案1】:

我不知道它是否已经完成,但如果是这样,我不想使用它。不管它有多快,我都不敢相信它会像经过高度调整的、特定于内核的数据结构集一样快。我认为您应该尽快从通用数据库中丢弃功能以获得性能,但最终可能仍然会比专用数据结构更慢。

【讨论】:

  • 显然它会很慢,但它会有很多不错的属性:1)您可以免费拥有原子提交、冗余、隔离、锁定。 2)您可以运行内核以使用位于远程机器上的数据空间。显然,它与生产力无关,但作为教具,它会很酷。
  • 我可以将编写一个基于进程的虚拟机视为一个有趣的练习,该虚拟机运行在一些使用数据库作为其内核数据结构的真实操作系统之上。对于已经熟悉 SQL 的人来说,这可能比在非常低的级别设计数据结构、锁定机制等要容易一些——另一方面,作为操作系统课程作业,这也不是很现实。
  • 为什么不现实?好的,显然它不是“真正的内核”,但是如果您知道数据库是如何工作的,那么根据关系数据库术语和操作来解释内核是如何工作的应该会更容易。
  • 正是因为它消除了管理内核数据结构的复杂性。 IMO 成功了一半。
  • @Stefano:操作系统内核不是普通的应用程序。性能更为重要,而且它们不需要大量生产,因此简化开发并不那么重要。因此,“免费”获得功能(如“使用现成的通用解决方案牺牲很多效率”)并不重要。我不知道它会是一个多么好的教具,因为当你从内核中抽象出所有这些内容时,你会删除很多重要的东西。
【解决方案2】:

我希望任何操作系统课程的重点是教学生软件/硬件接口、处理硬件的内在并发性、各种同步技术、物理和虚拟内存管理等,从而正确设计适当的内核数据结构。还有丰富的历史和开源代码可供查阅。

你所描述的是一个玩具。在白板上画画并争论可能很有趣,但通过引入一些胖抽象,它会让你远离实际的硬件机器。鉴于现在大多数 CS 学生对硬件和操作系统内部的概念非常模糊,我不想雇用任何有这方面知识的人参加操作系统课程:)

【讨论】:

    【解决方案3】:

    BeOS 是基于数据库的,不是吗?

    在另一个方向上,计划 9 使所有内容都成为文件系统的一部分。

    【讨论】:

      【解决方案4】:

      那是行不通的——根据定义,MySql 依赖于内核才能运行(它是一个进程,并且为了运行它需要文件系统访问),所以我们陷入了不可能的“先到先得”的境地情况。

      【讨论】:

      • 你可以对 user-mode-linux 说同样的话 :)
      • 我不明白为什么这个回复被否决了。如果您打算将所有操作系统数据存储在关系数据库中,则必须实现数据库引擎并包含操作系统所需的大部分内容,因此您最终只需将该代码从位置 A 移动到位置 B。数据库引擎不能存在于真空。
      猜你喜欢
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      • 2021-07-27
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      • 2015-10-25
      相关资源
      最近更新 更多