似乎操作系统中没有固有的东西可能需要那种抽象/隐喻。
如果是这样,他们是什么?他们还在哪里使用?我特别想知道可以在标准台式计算机上运行/试验的示例。
答案 0 :(得分:2)
我发现了这个http://pages.stern.nyu.edu/~marriaga/papers/beyond-the-hfs.pdf,但是它是从2003年开始的。这就是你想要的东西吗?
答案 1 :(得分:2)
示例是Persistent Haskell,Squeak Smalltalk和KeyKOS及其后代。
似乎操作系统中没有固有的东西 这必然需要那种抽象/隐喻。
没有必要,这完全是假的。实际上,强制通过人类可读的名称访问所有内容从根本上是有缺陷的,并且由于Zooko的三角形而排除了安全性。
类似于此的层次结构的示例也出现在DNS,URL,编程语言模块系统(Python和Java是两个很好的例子)和种子,X.509 PKI中。
修复由DNS / URL / X.509 PKI引起的一些问题的一个系统是Waterken的YURL。
所有这些系统都表现出荒谬的问题,因为系统是围绕一些花哨的层次结构设计的,而不是真正重要的事情。
我一直在计划编写一些博客来解释为什么这些类型的系统是坏的,当我开始讨论它时,我会更新它们的链接。
答案 2 :(得分:1)
1995年,我开始设计面向对象的操作系统 (SOOOS)没有文件系统。 几乎所有东西都是虚拟内存中存在的对象 它被直接映射/分页到磁盘 (本地或网络,即减少云计算)。
程序中有很多开销以特定格式读写数据。 图像永远不会读取和写入文件。
在SOOOS中没有文件和目录这样的东西, 可以组织基本上替换文件的自治对象 适合您的需求,而不仅仅是限制性的分层文件系统。
没有低级驱动器格式结构(即集群) 具有额外的抽象和翻译开销。 SOOOS数据存储开销仅限于页表 可以像基本虚拟内存分页一样快速索引。
每个自治对象都有自己的动态 虚拟内存空间,用作持久数据存储。 活动时,它们将被赋予任务上下文并添加到活动进程任务列表中 然后作为流程存在。
在我的设计中消除了很多复杂性,简单地实现了对象 在程序中让内存管理器和虚拟内存系统处理 一切都是最小的开销。 引导操作系统只是加载基本内核的问题 将虚拟内存页表设置为关键OS对象和 (重新)启动OS对象任务。关闭计算机时 shutdown基本上类似于休眠 所以操作系统几乎处于即时启动状态,
仅在需要时加载数据和代码的部分(页面)。 例如,编辑文档,而不是通过加载整个程序来启动程序 在内存中可执行,只需加载任务控制结构即可 自治对象并将指令指针设置为要执行的功能。 仅当指令指针遍历其虚拟内存时才会对代码进行分页。 数据始终可以立即使用,只需在访问时进行分页 无需解析文件和管理数据结构 在二级存储器的内存中有一个令人不快的代表。 只需使用该程序的本机内存分配机制即可 没有不同和/或冗余数据结构的抽象数据类型。
对象链接和嵌入程序交互类型, 内存映射IO,以及进程间通信你 实际上可以免费获得 使用处理器内存管理单元的功能进行内存共享。