為什麼不創建一個在記憶體中運行的作業系統?

為什麼不創建一個在記憶體中運行的作業系統?

這可能是錯誤的 StackExchange 網站來提出這個問題,但我找不到更好的網站。似乎沒有關於作業系統的問題。

我最近一直在考慮一個完全在記憶體中運行的作業系統,它會有很多好處。

  • 建立這樣的作業系統會簡單得多,因為您不必處理檔案系統、快取等。
  • 會快得多。
  • 程式將更容易編寫,因為它們不需要載入或保存任何內容。
  • 程式可以直接在記憶體中操作,而不是編寫原始程式碼然後編譯。 REPL 已經接近這個目標了,但為什麼不一路走下去呢?也燈臺就像這樣,它“讓你修改正在運行的程式”,但我認為它可以更進一步。顯然,我們需要一些其他方式在記憶體中操作/建構程式。
  • 資料庫將被大大簡化,因為不需要進行查詢快取。它們甚至可能根本沒有必要。
  • 無需啟動或關閉

顯然這種方法有問題:

  • 內存是易失性的:您必須更改硬件,以便透過備用電池或其他東西使記憶體始終保持活動狀態。
  • 在很多情況下,資料太大而無法裝入記憶體。例如,擁有大量資料庫的大型網站、擁有大量音樂/影片收藏的人等。看看 ChromeBook 的成功,它只有 16GB SSD。
  • 更新記憶體中的作業系統可能很棘手,但有些語言已經做到了這一點,例如 Java、Erlang 熱插拔

無論如何,我一定錯過了一些東西,否則所有比我聰明得多的計算機科學家都會這樣做,但它是什麼?

答案1

如果您只有 RAM,則無法有效地使用 RAM,原因有二:

  1. 如果一個頁面是髒的但未被訪問,則必須將其保留在 RAM 中,即使您更願意將 RAM 用於其他用途。

  2. 任何時候應用程式可能使用或不使用內存,您都必須說“不”,除非您可以容納已經進行的每個預留,即使這些預留中的大多數不太可能被使用,因為否則您將不得不強行終止流程。

所以你擁有的只是 RAM,而你無法有效地使用它。對於通用作業系統來說,這將是一個可怕的方案。

但這是一個壞主意的根本原因很簡單——擁有 RAM 以外的東西並不會強迫你使用它們。它只是簡單地允許如果它們有益的話,你就可以使用它們。你不能透過取消選擇來讓事情變得更好。

答案2

即使在今天,RAM 和磁碟儲存的價格也相差一個數量級。這意味著隨著儲存需求的增加,將所有內容儲存在 RAM 中將變得比其他替代方案昂貴得多。這也適用於 ROM 記憶體(必須是非揮發性的東西才能啟動),其中使用少量記憶體並將所需的其餘程式/程式碼放在磁碟上是比全部放在 ROM 中更經濟的選擇。

1TB 硬碟 50 美元,1GB 記憶體 30 美元

120GB SSD 100 美元 vs 16GB RAM 150 美元

我幾十年前買了這樣一台全記憶體計算機,現在仍然擁有它。具有 24k 靜態 RAM 的 Tandy Model 102。它仍然有某種文件系統,因為您仍然需要組織和選擇文件和程序。由於價格而沒有流行起來——我買的時候是 600 美元。

在此輸入影像描述

答案3

您可以讓 Linux 作業系統完全從 RAM 運行(一旦從持久媒體或 PXE 啟動)。

您只需要讓自訂 initrd 建立一個 ramfs 並在填充後將其掛載為 root 即可。

但存在一些實際限制,因為與 SSD、HDD 等相比,RAM 相對昂貴且較小。

答案4

嵌入式作業系統通常可以完全在 RAM 中運行,具體取決於應用程式。我寫了一篇幾年前的 Atmel 微控制器。

早在 20 世紀 80 年代,就有多種系統可以完全在 RAM 中運作。技術上你不需要任何驅動器位於原始 IBM PC 或 XT 中,因為它們可以直接啟動到 ROM 中內建的 BASIC 解釋器。所有早期的 Commodore 機器(如 VIC-20、C64、4+、C16 等)(以及許多其他機器)都是相同的。

在1990 年代,整個作業系統在RAM 中執行的最受歡迎的消費系統是PalmOS,它最初沒有任何類型的檔案系統(內部所有內容都儲存在一個大的(非關係型)RAM 記錄資料庫中。如果您碰巧還記得PRC和 PDB 文件,幾乎只是特定應用程式資源或資料儲存的這些 RAM 記錄的轉儲)。直到他們引入外部儲存選項,任何類型的檔案系統存取都內建到作業系統中,即使這樣,如果您沒有在設備中使用 SD 或 MMC 卡,系統也將完全從 RAM 運行。應用程式不必“載入”,因為它們幾乎在原位運行(儘管它們自然可以分配堆疊和堆疊空間)。

Linux 核心可以配置為完全在 RAM 內運行。這對於通用計算來說並不是那麼有用(設備不知道你要向它扔什麼),但是如果你知道給定應用程式的特定記憶體限制,你可以配置並運行就這樣。你不會有任何交換,而且你必須先使用一些東西來加載核心以及你想要運行的任何應用程式程式碼,但這是可以完成的(當然,在現實場景中) ,您至少需要某種韌體來儲存核心和應用程式資料(如果/當設備重新初始化時)。

至於為什麼我們在嵌入式空間的某些區域之外的實踐中不經常看到這種情況?即使是嵌入式設備也需要從某物,如今快閃記憶體非常便宜且可靠,這使得至少添加一些小型固態儲存來啟動變得非常容易和便宜。除非您的裝置容量很大,否則使用 ROM 晶片來包含作業系統以進行引導/重新初始化可能會很昂貴。當然,在更通用的 PC 中,製造商不知道您打算向系統施加什麼樣的負載,能夠擁有可用作交換虛擬記憶體頁面的後備存儲的持久存儲是一個巨大的好處。但對於不需要大量儲存的更多自訂需求,有多種作業系統可以完全僅從 RAM 運行。

相關內容