모든 OS에 RAM이 필요합니까?


76

RAM없이 사용할 수있는 OS, 특히 부팅 가능한 펜 드라이브를 만들어 컴퓨터에서 사용할 수있는 OS가 있습니까? 부팅은 기본적으로 RAM에 OS를로드하기 때문에 어색합니다.

참고 : 원래 랩톱 (부팅하지 않지만 빈 화면을 표시하는) RAM이 잘못되었는지 확인하기 위해 RAM이없는 OS에 대해 알고 싶었지만이 질문이 눈에 띄는 방식을 좋아합니다.


23
CPU가 RAM 없이도 작동 할 수 있는지 확실하지 않습니다 .Computer Science.SE에 좋은 질문 일 수 있습니다 . 내가 확실히 아는 것은 BIOS를 지나칠 수 없다면 아무데도 갈 수 없다는 것입니다.

12
@ AndréDaniel CPU에는 CS 관점에서 랜덤 액세스 메모리 인 캐시가 있습니다. 따라서 이론적으로 추가 RAM 모듈이 필요하지 않습니다. 그러나 실제로 x86 아키텍처가이를 허용하는지 의심합니다.
Philipp

30
적어도 x86에서는 캐시가 사용자가 직접 액세스 할 수있는 메모리가 아니기 때문에 프로세서 캐시 사용에 대한 이러한 모든 주장은 의심의 여지가 있습니다. 코드는 항상 RAM을 참조하지만 프로세서는 캐시를 자동으로 관리하므로 가장 자주 액세스하는 데이터에 대해 실제로 RAM에서 데이터를 가져올 필요가 없습니다. 그러나 "캐시에 저장" "캐시에 기록"이라고 말하는 어셈블리 명령이 없으며 레지스터가 있으며주기가 (기괴한 액세스 모드가있는) 주 메모리가 있습니다.
Matteo Italia

3
(OTOH, 이론상 다른 RAM (예 : 비디오 RAM) 또는 물리적 주소 공간에 매핑 된 주변 장치를 이용할 수 있음 )
Matteo Italia

13
최신 x86 CPU를 사용하면 온다이 캐시를 "Cache as RAM"모드로 설정할 수 있습니다.이를 위해서는 일부 MSR을 설정해야한다고 생각합니다. 일부 ARM CPU에도 적용 할 수 있습니다. 최신 CPU의 캐시는 첫 번째 PC의 최대 메모리 용량보다 많은 양입니다. 그러나 PC에서는 펌웨어가 RAM이 없으면 부팅되지 않습니다. PC 플랫폼이 아닌 맞춤형 펌웨어가 필요합니다.
LawrenceC

답변:


96

모든 OS에 RAM이 필요합니까?
IBM PC 호환 하드웨어 의 경우 BIOS POST 프로세스필수 단계는 BIOS 를로드 할 RAM이 있는지 확인하는 것입니다. 선택적으로 POST 프로세스는 RAM 기능을 올바르게 점검합니다. POST 프로세스 후 BIOS는 부트 로더를 RAM에로드하고 부트 로더를 제어합니다. 따라서 귀하의 질문에 대한 답변 ( "모든 OS에 RAM이 필요합니까?")은 다음과 같습니다. 그렇습니다. 모든 IBM PC 호환 하드웨어에는 부팅하기 위해 작동하는 RAM이 적어도 필요합니다. 이는 해당 하드웨어에서 실행되는 모든 OS에 해당됩니다.

OP의 원래 질문에는 "노트북"에 대한 참조가 있었는데 이는 IBM PC 호환 하드웨어로 해석되었습니다. 이 답변의 나머지 부분에서는 IBM PC 호환 하드웨어를 가정하겠습니다.

결함이있는 RAM으로 OS를 부팅 할 수 있습니까?
RAM에 결함이 있거나 (완전히 없거나 손상되지 않은) RAM을 부분적으로 교체 할 수있는 경우 BadMEM of BadMEM 커널 패치를 사용하여 부팅 할 수 있습니다 . 커널을 다시 컴파일해야합니다 (처음으로하는 경우보다 더 쉽게 들립니다). 재부팅하고 커널에 불량 메모리가있는 위치를 알려줄 수 있습니다. Memtest86 / Memtest86 + , BadRAM / BadMEM 사용에 대한 자세한 설명은 여기를 참조하십시오 .

OS가 RAM없이 부팅되고 CPU 캐시를 RAM으로 사용할 수 있습니까?
내가 아는 한 CPU 주석을 시스템에 RAM이 없으면 RAM으로 사용할 수있는 방법이 없습니다 (@philipp 및 기타에서 제안한 것처럼). 있다면 여기에 추가하는 것이 좋습니다. 이 주제에서 찾을 수있는 유일한 논문은 "RAM이 초기화 될 때까지 프로세서의 캐시를 RAM으로 사용"이라는 이 논문 입니다. RAM 없이 작동하는지 확실하지 않습니다 . 내가 아는 한 IBM 호환 PC에서 OS를 부팅하는 작동 코드 가 없습니다 . 개념 증명, 작업 코드 또는 기타 사항에 대한 언급은 의견에 환영하며이 답변에 추가하겠습니다.

BIOS에 접근 할 수 있습니까?
랩톱이 BIOS POST를 통과 할 수 있다면 OP의 질문은 약간 모호합니다. @Tonny가 지적했듯이, 어떤 OS 도 " BIOS에 도달하는 데 도움이 되지 않습니다 ". 당신은 사용하여 BIOS 입력 F1또는 F2또는 F10또는 DEL또는 ESCBIOS의 브랜드에 따라 키를 누릅니다.

RAM없이 랩톱에서 데이터를 복구하는 방법은 무엇입니까?
당신의 질문의 목표에 관해서는 : 왜 당신은 당신의 랩톱에 액세스해야합니까? 아마도 복구하려는 HDD에 여전히 데이터가 있기 때문에? 이 경우 HDD를 꺼내어 (설명서 참조) 훨씬 쉽게 외부 저장 장치 나 PC에 부착 할 수 있습니다. 여기 에 좋은 가이드가 있습니다.


3
실제로 이다 다소 결함이있는 RAM (예를 들어, 제대로 작동하지 않는 한 은행에있다)와 기계를 실행할 수 있습니다. BIOS가 알지 못하는 경우 (또는 알 수없는 경우 일반적인 F1 재정의가있을 수 있음) 지정된 메모리 블록을 피하도록 커널에 지시하는 BadMEM / BadRAM 패치를 사용하여 Linux와 같은 OS를 계속 실행할 수 있습니다.
Matteo Italia

5
@VusP : RAM을 확인하려면 Memtest86 / Memtest86 +와 함께 livecd / -usb를 사용하려면 BIOS에서 RAM 테스트를 건너 뛰고 livecd / -usb에서 memtest를 실행하십시오.
agtoever

4
부팅시 RAM 테스트가 " 필수 " 라고 누가 말 합니까? 기계가 몇 MB 이하인 경우가 흔했지만 크기가 커지고 시간이 엄청나게 빨라지면서 곧 선택 사항이되었습니다.
Andrew Medico

3
@agtoever : 응? RAM이 초기화 될 때 캐시로 RAM 트릭이 갑자기 작동을 멈추지 않습니다. 그 시점에서 RAM을 피하는 것은 어리석은 일이므로 아무도 시도하지 않습니다. 그러나 트릭은 초기화되지 않은 RAM과 아무 관련이 없습니다. 그것이 실제로 유용 할 때입니다.
Mehrdad

3
@ Hi-Angel, CPU가 디스크의 내용에 직접 액세스 할 수 없으므로 디스크에서 직접 실행할 수 없습니다. 디스크 컨트롤러에 명령을 찌르고 디스크에서 램의 데이터 블록으로 데이터 블록이 전송 될 때까지 기다려야합니다. 거기에서만 CPU가 명령을 직접 실행할 수 있습니다.
psusi

33

이론적으로 는 가능 하지만 CPU 캐시에 맞지 않는 임시 저장소에 디스크를 사용해야하므로 속도가 매우 느립니다. (RAM도 너무 느리기 때문에 CPU에는 몇 메가 바이트의 캐시가 있습니다. 생각해보십시오.) 따라서 약간 작은 OS가 필요합니다.

(잘 내장 된 칩 내장 시스템 은 RAM 또는 내부 플래시 메모리에서 코드를 실행할 수 있습니다 . PC BIOS는 이론적으로는 동일하지만 전체 OS를 실행할 수는 없습니다.)

그러나, 또 다른 한가지는, 인 BIOS는 실행 전에외부에 설치된 운영 체제, 그리고 당신이 pendrive 또는 무엇이든에서 부팅 할 수있는 BIOS입니다. 따라서 BIOS에 접근 할 수 없다면 세계의 다른 OS가 당신을 도울 것입니다.


6
CPU가 RAM 대신 자체 캐시를 사용할 수 있습니다. 메모리 테스트 전에 실행되는 BIOS 코드 부분에 유용한 기능 일 수 있습니다. 그러나 RAM없이 다른 하드웨어를 작동시키는 것은 까다로울 수 있습니다. DMA를 수행 할 수 없으므로 디스크 I / O를 다르게 수행해야합니다. 사용 가능한 RAM이 없으면 BIOS가 OS를로드조차 시도하지 않는 것 같습니다. 캐시 크기는 문제가되지 않습니다. 몇 MB는 현대 표준에 따라 많지는 않지만 1MB의 RAM이 많았던 당시의 OS는 최신 컴퓨터에서 계속 작동해야합니다.
kasperd

2
@kasperd DEC Alpha 는 "직렬 ROM"에서 사전로드 된 캐시에서 전원 공급 초기화의 첫 단계를 실행하도록 설계되었습니다. 이는 페이지 테이블이 초기화 될 때까지 CPU가 RAM, 일반 ROM 또는 기타 메모리 매핑 된 리소스 (IIC를 포함한 모든 I / O 장치 포함)에 액세스 할 수 없었기 때문입니다.
zwol

@grawity SSD는 어떻습니까?
TechLife

@TechLife : 여전히 RAM보다 몇 배나 느립니다. 비록 당신이 그것을 RAM으로 사용한다면 ... 그것은 단지 RAM 이라고 불릴 것 입니다. 그래서 여전히 아닙니다.
grawity

15

약간의 노력으로 RAM이없는 시스템을 설계 할 수 있습니다. ROM (또는 스토리지)에서 소프트웨어를로드하고 레지스터 또는 캐시에서 모든 작업을 수행하십시오. 이러한 시스템은 사용 범위가 획기적으로 줄어들 었으며 오늘날의 RAM 가격은 약간 의미가 없습니다. 기성품 랩탑은 온보드 메모리가 없으면 작동하지 않습니다.

실제 질문은 "부팅되지 않는 컴퓨터에서 정보를 얻는 방법"일 가능성이 높고 쉽습니다. 분해, 드라이브 제거 및 외장 드라이브 케이스에 연결하십시오.

그러나 20 달러 정도의 작업 RAM을 얻을 수 없을 정도로 오래 된 모든 컴퓨터에는 ATA (SATA가 아닌 일반 ATA) 드라이브가 있습니다. 이 인터페이스는 오늘날 거의 멸종되었으므로 ATA 카드 및 전체 크기 대 랩톱 크기 어댑터가있는 드라이브 케이스도 찾아야합니다. 2000 년에 구입 한 것이 있는데이 목적을 위해 몇 가지 오래된 사례를 보관합니다.


동의했다. RAM이 없음은 스택이 없음을 의미하므로 루틴을 호출 할 수 없습니다. 이 상황에서 작동 할 수있는 모든 코드는 신중하게 수작업으로 조립해야합니다.
Loren Pechtel

참된. 그래도 코드를 보았습니다. (메모리 컨트롤러가 초기화되기 전에 BIOS 루틴의 첫 부분이었습니다).
Hennes

2
@LorenPechtel 그것은 사실이 아닙니다. 스택은 온칩 메모리에 저장 될 수있다.
reirab

2
@LorenPechtel은 필요하지 않습니다. ARM은 스택을 사용하여 루틴을 호출하지 않습니다.
domen

1
내가 볼 수있는 한, 그 칩에는 내부 SRAM이 있습니다. 이것은 RAM으로 계산됩니다.
domen

10

내가 질문을 올바르게 읽으면 여기의 모든 사람들이 잘못된 나무를 짖고 있습니다.

그는 "BIOS에 도달하기 위해"명시 적으로 말합니다.

랩톱이 너무 고장 나면 BIOS에 들어 가지 않으며 다른 모든 것은 의미가 없습니다.

RAM 상황에 관계없이 어떤 OS도 부팅 할 수 없습니다.


8

메모리가 잘못되었다는 가정은 유효하지 않습니다. 경고음이나 화면 메시지가 나타나지 않으면 근본 원인은 거의 확실하게 CPU 오류 (어쩌면 거의 발생하지 않음) 또는 메인 보드 실패 (아마도)입니다. 메인 보드는 냉간 솔더 조인트로 인해 수명이 다하며 ROHS 이전 초기에 흔히 발생했으며 무연 솔더를 사용해야합니다. 제조 기술은 납 기반 솔더를 사용하도록 최적화되었으며 업계는 문제를 파악하고 해결하는 데 시간이 걸렸습니다. 많은 구성 요소 제조업체는 프로세스 업그레이드에 돈을 쓰려고하지 않았습니다. 결국, 장치는 보증 기간이 만료 된 후 몇 개월 또는 몇 년이 지나도 고장 나지 않고 제대로 테스트하고 태울 것입니다. 점점 더 많은 장애가 발생하고 사용자의 부정적인 부정적인 피드백이 발생했을 때 제조업체는 개선을 시작했습니다. 이러한 랩톱에서 냉각 솔더 조인트를 교정하기 위해 메인 보드를 리플 로우하는 것은 거의 확실히 비용이 많이 든다.


가능하지만 나쁜 기억도 나쁜 추측이 아닙니다. 잘못된 메모리 (및 나쁜 메모리 소켓)로 인해 여러 번 POST에 실패하는 것으로 나타났습니다. 물론 메모리를 확인하는 가장 쉬운 방법은 일반적으로 다른 스틱을 제거한 상태로 부팅하거나 하나의 알려진 좋은 스틱으로 부팅하는 것입니다. 그래도 문제가 해결되면 메모리, 메모리 슬롯 또는 메모리 컨트롤러입니다.
reirab

5

1980 년대 초반의 대부분의 컴퓨터는 ROM 칩에 일종의 운영 체제 (하드웨어 드라이버, IO 지원, 프로그램 로딩, 매우 간단한 명령 행 인터페이스 등)를 가지고있었습니다. RAM 칩이 작동하지 않는 동안에도 작동 할 수 있습니다. 이 기능은 하드웨어 테스트를 실행하기 위해 설계된 특수 ROM 컨텐츠 버전에서 사용되었으며 대부분 신호음 및 키보드 표시등을 통해 통신합니다.

CPU에는 최소한 실행중인 명령의 주소를 기억하기위한 여러 개의 레지스터가 있지만 일반적으로 RAM이라고하는 것은 아닙니다.

일반 C 코드는 스택 메모리를 사용하여 변수를 할당하고 스택은 RAM에 있으므로 RAM이없는 시스템에서 실행할 수 없습니다. 최근 컴퓨터가 부팅되면 RAM 새로 고침 장치가 작동하기 위해 초기 설정이 필요하기 때문에 처음에는 일반 동적 RAM을 사용할 수 없습니다. 어셈블리 코드가 먼저 실행되고 마더 보드 초기화가 수행됩니다. RAM이 작동하기 시작하면 C 코드가 실행될 수 있습니다.


4
마지막 단락은 전적으로 사실이 아닙니다. 스택은 칩 외부 RAM에있을 필요는 없습니다. 스택이 온칩 메모리에 위치하는 것이 실제로 일반적입니다. 일반 머신에서도 현재 실행중인 스레드의 스택은 일반적으로 캐시에 있으며 스케줄러가 스레드를 스왑 할 때만 DRAM으로 푸시 아웃됩니다. 그러나 스택을 직접 주소 지정이 가능한 온칩 메모리에 상주하고 DRAM을 건드리지 않은 DSP 용 코드를 작성했습니다. 물론,이 경우 온 칩 메모리는 기술적으로 RAM이라고 주장 할 수 있습니다.
reirab

4
또한 적어도 일부 매개 변수와 반환 값이 스택이 아닌 레지스터를 사용하여 C 함수에 전달되는 경우는 드문 일이 아닙니다. 또한 로컬 변수는 일반적으로 C 컴파일러에 의해 스택이 아닌 레지스터에 저장됩니다. 'register'키워드를 사용하여 컴파일러가 특정 변수를 레지스터에 넣도록 요청할 수도 있습니다. 물론 함수에 레지스터 공간보다 많은 로컬 변수가 필요하면 메모리로 이동해야하지만 프로그래밍 언어에 관계없이 적용되는 하드웨어 제약 조건입니다.
reirab

4

1967 년에 대학에 갔을 때 컴퓨팅 부서에는 Stantec Zebra 가있었습니다 . 메모리는 8192 단어 자기 드럼으로 구성되었습니다. 또한 12 개의 레지스터와 2 개의 누산기가있었습니다. 그 RAM을 고려할 수도 있지만 우리가 알고있는 것은 아닙니다.


3

CPU 실행 장치가 작동하려면 레지스터 용 칩 캐시 (기본적으로 매우 적은 양의 온칩 RAM)가 필요합니다. 따라서 CPU에도 'RAM'이 있습니다.

내가 생각하는 메모리가 없어도 Von-Neumann OS는 설계되지 않았습니다.

그래서 안돼.


3

여기에있는 다른 모든 사람들에 따르면, 나는 당신이 RAM이 필요하고 그것 없이는 작동 할 수 없다는 사실에 동의합니다. 그러나 나는 또한 다음을 읽습니다.

(원래 RAM이 없는지 확인하기 위해 RAM이없는 OS를로드하고 싶었지만이 질문이 눈에 띄는 방식이 마음에 듭니다.)

이것은 실제로 BIOS에 존재하며 RAM의 깊이를 검사하는 기능이 있습니다. BIOS로 부팅하고 들어가면 "Quick Power-on self test"옵션을 끄십시오. 그러면 RAM이 완전히 검사됩니다. 이 옵션은 AMI BIOS의 두 번째 선택과 같은 "고급 BIOS 기능"에 있어야합니다.

한 걸음 더 나아갈 수 있기를 바랍니다. ;-)


3

RAM이 필요 하지 않습니다 ( 예 : Turing machine) .

튜링 기계는 규칙 테이블에 따라 테이프 스트립의 기호를 조작하는 가상 장치입니다. 단순함에도 불구하고 튜링 머신은 모든 컴퓨터 알고리즘의 논리를 시뮬레이션하도록 구성 할 수 있으며 특히 컴퓨터 내부의 CPU 기능을 설명하는 데 유용합니다.

(테이프를 RAM으로 생각하지 않습니다.)

이제 여러분의 실제 질문은“유용한”에 대해 묻고“유용한”의 의미를 정의해야합니다 .


3
Turing Machine의 개념 수준에서 RAM, 레지스터, 캐시, 자기 테이프, 디스크 등 모든 유형의 읽기 / 쓰기 데이터 스토리지는 기본적으로 동일합니다. 그들 사이의 유일한 차이점은 액세스 속도입니다.
Barmar

1
@Barmar RAM은 랜덤 액세스 메모리를 의미합니다. 즉, 어떤 순서로든 셀 내의 셀에 액세스 할 수 있습니다. 튜링 머신의 테이프에있는 셀은 순차적 또는 방향으로 만 액세스 할 수 있습니다. 튜링 머신의 테이프는 기본적으로 RAM이 아니라고 말합니다.
kasperd

1
@Barmar 잘못되었습니다. RAM의 정의는 탐색 시간을 허용하지 않습니다. 따라서 TM의 테이프는 RAM의 정의에 맞지 않습니다. 추구하지 않고 임의의 셀에 액세스 할 수 없기 때문입니다.
kasperd

1
@Barmar, 벽시계 시간의 개념은 적용되지 않을 수 있지만 시간 개념은 O (n) 읽기 작업이 필요하기 때문에 확실히 적용됩니다.
psusi

1
@Barmar, 아니, 당신은하지 않습니다. 그렇기 때문에 우리는 큰 "O"표기법을 사용하여 실제 시간이 얼마나 걸릴지에 대한 순전 한 수학 복잡도에 대해 이야기합니다. 이 TM에서 테이프 드라이브의 수학적 모델은 어느 방향 으로든 어느 방향 으로든 읽을 수 있고 어느 시간 에나 앞뒤로 확대 할 수 없습니다. 따라서 바이트 1을 마지막으로 읽은 경우 사이에 26 바이트를 먼저 읽지 않으면 바이트 27을 읽을 수 없습니다. 그것이 램이 아닌 이유입니다. 이 26 바이트를 건너 뛸 수있는 메모리를 원한다면 0 시간이든 5 분이든 관계없이 테이프가 아닌 램이됩니다.
psusi

3

ROM에서 완전히 실행되는 내장 된 사용을위한 특수 OS가 있습니다 (읽기 전용 메모리). 유용한 작업을 수행하려면 여전히 최소한 소량의 RAM이 필요합니다. 그래도 RAM없이 부팅되는 PC는 보지 못했습니다.

메모리 테스트에 대한 원래 질문에 대해 컴퓨터가 POST (예 : 전원 자체 테스트를 통과 한 후 부팅 시도)하면 Memtest86은 RAM을 테스트하도록 특별히 설계되었습니다. 첫 번째 64KB의 RAM을 테스트하고 해당 RAM에로드 한 다음 원하는대로 나머지 시스템 메모리를 테스트합니다. "플래 키"메모리 (일반적인 불량 메모리가 아닌)는 흔하지 않지만 Memtest86이 컴퓨터의 메모리 테스트에서 놓친 간헐적으로 불량한 비트를 포착하는 것을 보았습니다 (결국 POST 메모리 테스트는 합리적인 시간 내에 완료되어야 함). memtest86의 가장 빠른 테스트는 5-10 분 동안 실행되며보다 포괄적 인 테스트에는 몇 시간이 걸립니다.)


1

예, RAM이없는 컴퓨터를 가질 수 있습니다. 대부분의 x86 프로세서에는 캐시로만 실행할 수있는 특수 모드가 있습니다. coreboot (이전 linuxbios)를 확인하면 그렇게 할 수 있습니다. 이를 캐시 형 캐시라고합니다. 실제로이를 기반으로 전체 운영 체제를 수행 할 수 있으며 최신 대형 캐시를 사용하면 GUI (check menuet-os)가 있어도 끝날 수 있습니다. 그러나 아직 그렇게 한 사람은 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.