RAM에서 실행되는 OS를 만들어 보는 것은 어떨까요?

RAM에서 실행되는 OS를 만들어 보는 것은 어떨까요?

이 질문을 하는 것은 잘못된 StackExchange 사이트일 수도 있지만 더 나은 사이트를 찾을 수는 없습니다. 운영 체제에 대한 질문이 없는 것 같습니다.

나는 최근에 순수하게 램에서만 실행되는 OS에 대해 생각해 보았는데, 그것이 많은 이점을 가질 것이라고 생각했습니다.

  • 파일 시스템, 캐싱 등을 처리할 필요가 없기 때문에 그러한 OS를 만드는 것이 훨씬 더 간단할 것입니다.
  • 훨씬 더 빠를 것입니다.
  • 프로그램은 아무것도 로드하거나 저장할 필요가 없기 때문에 작성하기가 더 쉬울 것입니다.
  • 소스 코드를 작성한 다음 컴파일하는 대신 프로그램을 메모리에서 직접 조작할 수 있습니다. REPL은 이 근처 어딘가에 도달하지만 끝까지 가지 않는 이유는 무엇입니까? 또한라이트테이블'실행 중인 프로그램을 수정할 수 있다'는 점에서는 이렇지만 더 나아가도 될 것 같습니다. 분명히 우리는 메모리에서 프로그램을 조작/구축하는 다른 방법이 필요할 것입니다.
  • 쿼리 캐싱이 없기 때문에 데이터베이스가 엄청나게 단순화됩니다. 전혀 필요하지 않을 수도 있습니다.
  • 부팅이나 종료가 필요하지 않습니다.

분명히 이 접근 방식에는 문제가 있습니다.

  • 메모리는 휘발성입니다. 백업 배터리 등으로 메모리가 항상 활성 상태로 유지되도록 하드웨어를 변경해야 합니다.
  • 데이터가 너무 커서 RAM에 맞지 않는 상황이 많이 있습니다. 예를 들어 대규모 데이터베이스를 갖춘 대규모 웹사이트, 대규모 음악/비디오 컬렉션을 보유한 사람들 등. 그러나 대부분의 사람들은 대규모 비디오 컬렉션을 갖고 있지 않고 Netflix에서 콘텐츠를 스트리밍합니다. 즉, 16GB SSD만 탑재한 ChromeBook의 성공을 살펴보세요.
  • 메모리에서 OS를 업데이트하는 것은 까다로울 수 있지만 일부 언어에서는 이미 이 작업을 수행합니다(예: Java, Erlang 핫 스와핑).

어쨌든, 나보다 훨씬 똑똑한 모든 컴퓨터 과학자들이 이미 이 작업을 수행했을 것입니다. 하지만 그게 무엇입니까?

답변1

가지고 있는 것이 RAM뿐이라면 다음 두 가지 이유로 RAM을 효과적으로 사용할 수 없습니다.

  1. 페이지가 더러워졌지만 액세스할 수 없는 경우 다른 용도로 RAM을 사용하고 싶더라도 해당 페이지를 RAM에 보관해야 합니다.

  2. 애플리케이션이 메모리를 사용하거나 사용하지 않을 수 있는 경우, 이미 예약한 모든 예약을 수용할 수 없다면 해당 예약의 대부분이 사용되지 않을 것 같더라도 거부해야 합니다. 그렇지 않으면 강제로 종료해야 하기 때문입니다. 프로세스.

따라서 가지고 있는 것은 RAM뿐이고 효과적으로 사용할 수 없습니다. 이는 범용 운영 체제에 있어서 끔찍한 방법이 될 것입니다.

그러나 이것이 나쁜 생각인 기본적인 이유는 간단합니다. RAM 이외의 것을 가지고 있다고 해서 그것을 사용해야 하는 것은 아닙니다. 그것은 단순히허용한다유익하다면 사용하세요. 옵션을 없애는 것만으로는 상황을 더 좋게 만들 수 없습니다.

답변2

RAM 및 디스크 스토리지 가격은 오늘날에도 상당히 다릅니다. 이는 스토리지 요구 사항이 증가함에 따라 RAM에 모든 것을 저장하는 것이 대안보다 훨씬 더 비싸다는 것을 의미합니다. 이는 소량을 사용하고 필요한 나머지 프로그램/코드를 디스크에 저장하는 것이 ROM에 저장하는 것보다 더 경제적인 선택인 ROM 메모리(부팅하려면 비휘발성이어야 함)에도 적용됩니다.

1TB 하드 드라이브 $50 대 1GB RAM $30

120GB SSD $100 대 16GB RAM $150

나는 수십 년 전에 RAM이 모두 포함된 컴퓨터를 구입했고 실제로 아직도 가지고 있습니다. 24k의 정적 RAM을 갖춘 Tandy 모델 102. 문서와 프로그램을 구성하고 선택하는 데 여전히 필요한 일종의 파일 시스템이 있었습니다. 가격 때문에 관심을 끌지 못했습니다. 구입 당시 $600였습니다.

여기에 이미지 설명을 입력하세요

답변3

Linux OS를 RAM에서 완전히 실행할 수 있습니다(영구 매체 또는 PXE에서 부팅한 후).

사용자 정의 initrd에서 ramfs를 생성하고 이를 채운 후 루트로 마운트하면 됩니다.

RAM은 SSD, HDD 등에 비해 상대적으로 비싸고 작기 때문에 몇 가지 실질적인 제약이 있습니다.

답변4

임베디드 OS는 애플리케이션에 따라 RAM에서 완전히 실행될 수 있는 경우가 많습니다. 나하나 썼다Atmel 마이크로 컨트롤러의 경우 몇 년 전입니다.

1980년대에는 RAM에서 완전히 실행될 수 있는 다양한 시스템이 있었습니다. 기술적으로는 필요하지 않았습니다.어느ROM에 내장된 BASIC 인터프리터로 바로 부팅할 수 있으므로 원래 IBM PC 또는 XT에 드라이브를 설치합니다. 모든 초기 Commodore 기계(VIC-20, C64, 4+, C16 등)(및 기타 여러 기계)는 동일했습니다.

1990년대에 전체 OS가 RAM에서 실행되는 가장 인기 있는 소비자 시스템은 PalmOS였는데, 원래는 어떤 종류의 파일 시스템도 없었습니다(내부적으로 모든 것이 하나의 큰(비관계형) RAM 레코드 데이터베이스에 저장되었습니다. PRC를 기억한다면) 및 PDB 파일에는 특정 애플리케이션 리소스 또는 데이터 저장소에 대한 이러한 RAM 레코드 덤프가 거의 있었습니다. OS에 모든 종류의 파일 시스템 액세스가 내장된 외부 저장소 옵션이 도입되기 전까지는 아니었고, 심지어 장치에 SD 또는 MMC 카드를 사용하지 않더라도 시스템은 RAM에서 완전히 실행될 것입니다. 앱은 거의 현장에서 실행되므로 "로드"할 필요가 없습니다(물론 자연스럽게 스택 및 힙 공간을 할당할 수 있음).

Linux 커널은 RAM 내에서 완전히 실행되도록 구성할 수 있습니다. 이는 범용 컴퓨팅(장치가 무엇을 처리할지 알 수 없는 경우)에 그다지 유용하지는 않지만 특정 애플리케이션에 대한 특정 메모리 범위를 알고 있는 경우 구성하고 실행할 수 있습니다. 이쪽으로요. 스왑이 없으며 실행하려는 앱 코드가 무엇이든 먼저 커널을 로드하기 위해 무언가를 사용해야 하지만 수행할 수 있습니다(물론 실제 시나리오에서는 가능) , 장치가 다시 초기화되는 경우 커널 및 애플리케이션 데이터를 저장할 일종의 펌웨어가 있어야 합니다.

임베디드 공간의 특정 영역 외부에서 실제로 이것을 자주 볼 수 없는 이유는 무엇입니까? 임베디드 장치라도 초기화가 필요합니다.무엇, 요즘 플래시 메모리는 매우 저렴하고 안정적이므로 부팅할 작은 솔리드 스테이트 스토리지를 추가하는 것이 매우 쉽고 저렴합니다. 그리고 장치의 볼륨이 크지 않은 이상 부트스트래핑/재초기화를 위해 OS를 포함하도록 ROM 칩을 만드는 것은 비용이 많이 들 수 있습니다. 물론 제조업체가 시스템에 어떤 종류의 로드를 가할 것인지 알 수 없는 보다 일반적인 목적의 PC에서는 가상 메모리 페이지를 교환하기 위한 백업 저장소로 사용할 수 있는 영구 저장소를 가질 수 있다는 것이 큰 이점입니다. . 그러나 대규모 저장 공간이 필요하지 않은 맞춤형 요구 사항을 충족하려면 RAM에서만 완전히 실행할 수 있는 다양한 OS가 있습니다.

관련 정보