在.Net框架中手动内存分页是否可行?如何实现?

4
我对编写数据库管理系统非常感兴趣。阅读了一些关于SQL Server 2000实现的页面后,我发现它使用了4KB内存页,每个页都是硬盘上4KB页的直接副本。这些页面在需要时加载到RAM中,然后在空闲时懒惰地写回磁盘(过于简化)。
在我的项目规划阶段,我想知道在CLR上运行的代码是否可能拥有这种级别的控制。我知道C、C++或D可能更适合此任务,但我想先自己证明。其中一部分动机是,我最终希望使用我的数据库作为堆来覆盖CLR垃圾收集器,至少对于相对陈旧的对象。
从CLR直接控制内存是否可能?如果是,我该如何做?
暂时假设我的数据是一些256字节宽的结构/类,存储在硬盘上的平面表中,并且我正在使用64KB页。

2
可能相关的链接:https://dev59.com/k3E85IYBdhLWcg3wtV1T - cadrell0
1个回答

2
有点类似。您可以在.NET中使用内存映射文件,这样写入“内存”实际上是写入磁盘。 (了解更多)

谢谢你提供的链接,很有启发性。这让我又有了另一种思考这个问题的好方法。我的第一反应是我想自己管理那个交互,但我可能会改变想法。 - kd8azz
SQL Server在内存分页方面做了一些非常底层的操作——它实际上只是进行虚拟内存管理。这是.NET所不能做到的。 - Peter Ritchie

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