【问题标题】:Is a database transaction a good way to manage memory in an operating system?数据库事务是管理操作系统内存的好方法吗?
【发布时间】:2012-08-13 12:58:09
【问题描述】:

我正在考虑做一些低级编程,编写一个基本的操作系统。我熟悉关系数据库,所以我想知道复制存储在 web aps(MySql、SQL Server 等)中的方法数据是否是将数据存储在操作系统内存中的好方法。这一切都只适用于操作系统任务等。我所说的“好方法”主要是指速度,但当然优雅和良好的架构也是因素。我假设大多数操作系统都偏爱速度而不是设计模式?我没有使用低级 Linux 的经验,所以我想知道关系数据库是否是编写内存管理器的良好起点。

【问题讨论】:

  • 您是否介意澄清一下“复制存储在网络应用程序中的方法数据是一种将数据存储在操作系统内存中的好方法”
  • 我基本上是指用于实现数据库事务的算法。
  • 好的。只是一个简单的问题:当你的算法需要分配内存时,你会怎么做?
  • malloc?是这个意思吗?
  • 我的意思是,谁提供malloc?在您的操作系统上,应用程序调用您的数据库事务类内存管理 API,然后 API 调用 malloc() 如您所说,现在,malloc 如何获取内存?通常,OS 提供较低级别的 API,称为system calls。对于 Linux,它是 sbrk() 或 mmap()。 stackoverflow.com/a/3479496/640650 。一旦通过了系统调用边界,您就处于内核内存管理中。 :-)

标签: database memory-management transactions operating-system


【解决方案1】:

没有。

操作系统中的内存管理是一项管理内存的整体服务。这包括应用程序的接口、管理裸机内存区域的方式、内存保护控制、虚拟内存映射管理等等。

另一方面,数据库事务是 ACID(原子性、一致性、隔离性、持久性)的概念。它是为需要 ACID 属性的用户提供接口。不过,如果您的操作系统为应用程序提供像 interface 这样的数据库事务(如果适用的话),这可能会很有趣。

大多数(如果不是全部)操作系统偏爱速度的原因是所有现有的 CPU 能力都是为了运行应用程序。如果有任何应用程序要运行,则没有理由管理硬件或提供服务。但这并不总是正确的。有时,操作系统设计人员更喜欢设计或清晰度,而不是速度,以实现可管理性。所以答案一如既往地是“视情况而定”。

【讨论】:

    猜你喜欢
    • 2019-06-25
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    相关资源
    最近更新 更多