Tại sao không tạo ra một hệ điều hành chạy trong ram?


1

đây có thể là trang web StackExchange sai khi đặt câu hỏi này, nhưng tôi không thể tìm thấy cái nào tốt hơn. Dường như không có câu hỏi nào về Hệ điều hành.

Gần đây tôi đã suy nghĩ về một hệ điều hành chạy hoàn toàn bằng ram và rằng nó sẽ có rất nhiều lợi ích.

  • Sẽ đơn giản hơn nhiều khi tạo ra một HĐH như vậy, bởi vì bạn sẽ không phải đối phó với các hệ thống tập tin, bộ nhớ đệm, v.v.
  • Nó sẽ nhanh hơn nhiều.
  • Các chương trình sẽ dễ viết hơn vì chúng không cần tải hoặc lưu bất cứ thứ gì.
  • Thay vì viết mã nguồn và sau đó biên dịch, các chương trình có thể được thao tác trực tiếp trong bộ nhớ. REPL có được một nơi nào đó gần đây, nhưng tại sao không đi hết con đường này? Ngoài ra LightTable cũng giống như vậy ở chỗ nó 'cho phép bạn sửa đổi các chương trình đang chạy', nhưng tôi nghĩ nó có thể được đưa đi xa hơn. Rõ ràng chúng ta sẽ cần một số cách khác để thao tác / xây dựng chương trình trong bộ nhớ.
  • Cơ sở dữ liệu sẽ được đơn giản hóa ồ ạt, vì sẽ không có bộ đệm truy vấn để làm. Họ thậm chí có thể không cần thiết.
  • Không cần khởi động hoặc tắt

Rõ ràng có vấn đề với cách tiếp cận này:

  • Bộ nhớ rất dễ bay hơi: Bạn sẽ phải thay đổi phần cứng để bộ nhớ luôn được duy trì với pin dự phòng hoặc một cái gì đó.
  • Có rất nhiều tình huống mà dữ liệu sẽ quá lớn để phù hợp với ram. Ví dụ: các trang web lớn với cơ sở dữ liệu khổng lồ, những người có bộ sưu tập nhạc / video khổng lồ, v.v. Tuy nhiên, hầu hết mọi người không có bộ sưu tập video khổng lồ, họ truyền phát nội dung từ netflix. Tức là nhìn vào sự thành công của ChromeBook, chỉ có ổ SSD 16gb.
  • cập nhật hệ điều hành trong bộ nhớ có thể khó khăn, nhưng một số ngôn ngữ đã làm điều này, ví dụ như Java, Erlang hoán đổi nóng

Dù sao, tôi phải thiếu thứ gì đó nếu không tất cả các nhà khoa học máy tính thông minh hơn tôi sẽ làm điều này rồi, nhưng nó là gì?


Hãy xem RamDisks , đó có phải là những gì bạn đang nghĩ? Có một số cách để chạy các hệ điều hành phổ biến trên chúng nếu bạn google nhiều hơn.
nerdwaller

Không, những gì tôi đang nói là loại bỏ tất cả các hệ thống tập tin cùng nhau. Phần cứng ra khỏi nhà máy với hệ điều hành đã được tải trong ram, không có khả năng khởi động hoặc tắt. Tôi nhận ra rằng điều này không thể được áp dụng cho bất kỳ hệ điều hành hiện có nào (dù sao tôi cũng không biết)
eggbert 27/11/13

2
Tôi sẽ giải quyết một điểm trong câu hỏi của bạn: hệ thống tập tin. Điểm của một hệ thống tập tin là không lưu trữ dữ liệu trên đĩa; thực tế nó là một dạng cơ sở dữ liệu cho phép bạn lưu trữ một lượng tùy ý các tệp có kích thước tùy ý trong một không gian bộ nhớ liền kề. Hầu hết các hệ thống tập tin được tối ưu hóa để truy cập tuần tự, một tình huống không áp dụng cho bộ nhớ truy cập ngẫu nhiên , nhưng ngoài ra, bộ vấn đề vẫn giữ nguyên. Ngoài ra, tất cả các hệ điều hành chạy trong RAM. Tất cả trong số họ có thể làm việc (một số tốt hơn so với những người khác) mà không cần ổ cứng. Vì bộ nhớ không rẻ, chúng tôi có các ổ đĩa cứng cho phép truy cập dữ liệu lâu dài hơn
sleblanc

1
"bởi vì bạn sẽ không phải đối phó với các hệ thống tập tin", bạn cũng có thể làm điều đó với các đĩa; bạn có thể ghi dữ liệu tại các vị trí ngẫu nhiên có ý nghĩa đối với HĐH của bạn, nhưng sau đó không ai có thể đọc được dữ liệu đó ngoài bạn (về cơ bản là những gì bạn đang làm trong RAM). Lý do bạn có một hệ thống tệp là để giữ các tệp được sắp xếp cho bất kỳ ai muốn truy cập nó, bao gồm cả chính bạn. Làm thế nào bạn lưu trữ một hệ thống tập tin như vậy là tùy thuộc vào bạn.
Joool Kuijpers

Câu trả lời:


4

Bạn không thể sử dụng RAM hiệu quả nếu tất cả những gì bạn có là RAM vì hai lý do:

  1. Nếu một trang bị bẩn nhưng không được truy cập, bạn phải giữ nó trong RAM, mặc dù bạn muốn sử dụng RAM cho những thứ khác.

  2. Bất cứ khi nào một ứng dụng có thể sử dụng bộ nhớ hoặc có thể không, bạn phải nói không trừ khi bạn có thể đáp ứng mọi đặt phòng bạn đã thực hiện, ngay cả khi hầu hết các đặt phòng đó không bao giờ được sử dụng, bởi vì nếu không bạn sẽ phải chấm dứt các quá trình.

Vì vậy, tất cả những gì bạn có là RAM và bạn không thể sử dụng nó một cách hiệu quả. Đó sẽ là một công thức khủng khiếp cho một hệ điều hành có mục đích chung.

Nhưng lý do cơ bản đây là một ý tưởng tồi là đơn giản - có những thứ khác ngoài RAM không bắt buộc bạn phải sử dụng chúng. Nó chỉ đơn giản cho phép bạn sử dụng chúng nếu nó có lợi. Bạn không thể làm mọi thứ tốt hơn bằng cách lấy đi các tùy chọn.


Điều tôi đang nói là, với giá ram ngày nay, bạn không cần phải sử dụng thêm dung lượng ngoài đó, đối với một số trường hợp sử dụng. Ngoài ra, bạn có thể làm cho mọi thứ tốt hơn bằng cách lấy đi các tùy chọn, ví dụ: bộ sưu tập rác 'lấy đi' quản lý bộ nhớ cấp thấp nhưng tốt hơn cho một số thứ.
eggbert

@eggbert Bộ sưu tập rác lấy đi một yêu cầu . Bạn đang nói về việc thêm một yêu cầu. Và bất kể RAM rẻ như thế nào, không có lợi thế nào để làm mất khả năng sử dụng hiệu quả của bạn.
David Schwartz

Tôi không hoàn toàn chắc chắn về ý của bạn. Bộ sưu tập rác không lấy đi tùy chọn sử dụng quản lý bộ nhớ cấp thấp? Tôi hoàn toàn chấp nhận rằng kiến ​​trúc này lấy đi các tùy chọn, nhưng tôi quan tâm đến khả năng có những lợi thế trong đó, tức là đơn giản hóa mọi thứ.
eggbert

@eggbert Không. Không có sự không tương thích giữa bộ sưu tập rác và quản lý bộ nhớ cấp thấp. Thu gom rác thải lấy đi yêu cầu bạn giải phóng thủ công mọi thứ bạn đã phân bổ. Nó không yêu cầu bạn làm bất cứ điều gì hoặc lấy đi bất kỳ lựa chọn nào bạn có.
David Schwartz

2

Giá cho RAM và lưu trữ đĩa khác nhau theo một thứ tự cường độ ngay cả ngày nay. Điều này có nghĩa là nhu cầu lưu trữ tăng lưu trữ mọi thứ trong RAM trở nên đắt hơn nhiều so với các lựa chọn thay thế. Điều này cũng áp dụng cho bộ nhớ ROM (phải là thứ gì đó không dễ bay hơi để khởi động) trong đó sử dụng một lượng nhỏ và đặt phần còn lại của các chương trình / mã cần thiết vào đĩa là lựa chọn kinh tế hơn tất cả trong ROM.

Ổ cứng 1TB $ 50 so với RAM 1GB với giá $ 30

SSD 120 GB $ 100 so với RAM 16 GB với giá $ 150

Tôi đã mua một máy tính RAM như vậy trong nhiều thập kỷ trước và thực sự vẫn còn có nó. Một mẫu Tandy 102 với 24k RAM tĩnh. Nó vẫn có một hệ thống tập tin sắp xếp như bạn vẫn cần để tổ chức và chọn tài liệu và chương trình. Không bắt kịp do giá cả - là $ 600 khi tôi mua nó.

nhập mô tả hình ảnh ở đây


Trông khá tuyệt vời. Có bao nhiêu người thực sự cần một ổ cứng 1TB mặc dù? Tôi nghĩ điều tôi đang cố gắng nói là với tốc độ mạng ngày càng tăng, 'internet' đang thay thế nhu cầu lưu trữ cục bộ của cường độ này và có thể có một hệ điều hành đơn giản hơn mà không cần suy nghĩ về những gì trong bộ nhớ và những gì không.
eggbert 27/11/13

1
Tuy nhiên, RAM 2 GB + flash 32 GB có giá tương đương với RAM 3 GB và cho phép lưu trữ một vài phim khi kết nối internet bị hỏng.
Brian

@eggbert Internet không phải lúc nào cũng là một giải pháp. Chắc chắn, truyền phát video và âm nhạc là có thể, nhưng bạn muốn phần mềm có sẵn bất cứ lúc nào (nghĩ về các gói phần mềm và trò chơi lớn). Bạn có thể truyền phát các phiên máy tính để bàn ảo, vâng, nhưng chạy phần mềm trên máy tính của riêng bạn, bạn không thể đủ 20ms mỗi lần bạn cần một chút mã thực thi hoặc bất cứ điều gì. Ngoài ra, một số thông tin (ví dụ: tài khoản ngân hàng, ảnh riêng tư, v.v.) bạn muốn lưu trữ riêng tư - hãy nghĩ về vụ rò rỉ iCloud gần đây.
Joool Kuijpers

1

Bạn có thể có một hệ điều hành linux chạy hoàn toàn từ RAM (một khi đã khởi động từ phương tiện liên tục hoặc từ PXE, nghĩa là).

Bạn chỉ cần có một initrd tùy chỉnh tạo một ramfs và gắn kết nó dưới dạng root sau khi điền nó.

Có một số hạn chế thực tế mặc dù RAM tương đối đắt và nhỏ so với SSD, ổ cứng, v.v.


0

Hệ điều hành nhúng thường xuyên có thể chạy hoàn toàn trong RAM, tùy thuộc vào ứng dụng. Tôi đã viết một vài năm trước cho một bộ điều khiển vi mô Atmel.

Trở lại những năm 1980, có rất nhiều hệ thống có thể chạy hoàn toàn trong RAM. Về mặt kỹ thuật, bạn không cần bất kỳ ổ đĩa nào trong IBM PC hoặc XT gốc, vì chúng có thể khởi động thẳng vào trình thông dịch BASIC được tích hợp trong ROM. Tất cả các máy Commodore đời đầu (như VIC-20, C64, 4+, C16, v.v.) (và nhiều máy khác) đều giống nhau.

Vào những năm 1990, hệ thống tiêu dùng phổ biến nhất với toàn bộ HĐH được thực thi trong RAM là PalmOS, ban đầu không có hệ thống tập tin nào (bên trong mọi thứ được lưu trữ trong một cơ sở dữ liệu bản ghi RAM lớn (không liên quan). Nếu bạn tình cờ nhớ PRC và các tệp PDB, có khá nhiều bản ghi của các bản ghi RAM này cho một tài nguyên ứng dụng hoặc kho lưu trữ dữ liệu cụ thể). Mãi cho đến khi họ giới thiệu các tùy chọn lưu trữ ngoài thì mọi loại quyền truy cập hệ thống tệp đã được tích hợp vào HĐH và ngay cả khi bạn không sử dụng thẻ SD hoặc MMC trong thiết bị của mình, hệ thống sẽ chạy hoàn toàn từ RAM. Các ứng dụng không phải "tải", vì chúng chạy khá nhiều tại chỗ (mặc dù chúng có thể phân bổ không gian ngăn xếp và đống, một cách tự nhiên).

Nhân Linux có thể được cấu hình để chạy hoàn toàn từ trong RAM. Điều này thực sự không hữu ích cho điện toán đa năng (nơi thiết bị sẽ không biết bạn sẽ ném cái gì vào nó), nhưng nếu bạn biết giới hạn bộ nhớ cụ thể của mình cho một ứng dụng nhất định, bạn có thể định cấu hình và chạy nó theo cách này Bạn sẽ không có bất kỳ trao đổi nào và bạn sẽ phải sử dụng thứ gì đó để tải kernel ở vị trí đầu tiên với bất kỳ mã ứng dụng nào bạn muốn chạy, nhưng điều đó có thể được thực hiện (mặc dù tất nhiên là trong kịch bản trong thế giới thực , ít nhất bạn sẽ muốn có một số loại phần sụn để lưu trữ dữ liệu kernel và ứng dụng cho nếu / khi thiết bị được khởi tạo lại).

Về lý do tại sao chúng ta không thường xuyên thấy điều này trong thực tế bên ngoài các khu vực nhất định của không gian nhúng? Ngay cả các thiết bị nhúng cũng cần khởi tạo từ một cái gì đóvà ngày nay bộ nhớ flash khá rẻ và đáng tin cậy, làm cho nó trở nên khá dễ dàng và rẻ tiền để ít nhất thêm một số bộ lưu trữ thể rắn nhỏ để khởi động. Và trừ khi âm lượng của bạn cho thiết bị của bạn lớn, có các chip ROM được tạo để chứa HĐH của bạn để khởi động lại / khởi tạo lại có thể tốn kém. Tất nhiên, trong các máy tính đa năng, nơi nhà sản xuất không biết bạn định tải loại gì vào hệ thống, có thể có bộ lưu trữ liên tục có thể được sử dụng làm kho lưu trữ sao lưu để hoán đổi các trang bộ nhớ ảo là một lợi ích rất lớn . Nhưng đối với các nhu cầu tùy chỉnh nhiều hơn mà không cần dung lượng lưu trữ lớn, có rất nhiều hệ điều hành ngoài kia chỉ có thể chạy hoàn toàn từ RAM.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.