RAM이 없지만 디스크가있는 컴퓨터는 RAM이있는 컴퓨터입니까?


18

내가 이해하는 것처럼 메모리는 많은 것들에 사용됩니다. 디스크 캐시 역할을하며 프로그램 지침 및 해당 스택 및 힙을 포함합니다. 여기에 생각 실험이 있습니다. 컴퓨터가 크 런칭을 수행하는 데 걸리는 속도 나 시간에 신경 쓰지 않는다면 디스크가 매우 크다고 가정 할 때 가질 수있는 최소 메모리 양은 얼마입니까? 메모리를 없애고 디스크를 가질 수 있습니까?

디스크 캐싱은 필요하지 않습니다. 디스크에 스왑 공간을 설정하면 프로그램 스택과 힙에도 메모리가 필요하지 않습니다. 메모리가 있어야하는 것이 있습니까?



3
이 질문에 대한 아이디어는 무엇입니까?
이브 다우 스트

12
"디스크"를 정의하십시오. 우리는 디스크가없는 세상을 향해 빠르게 움직이고 있습니다 (Terry Pratchett이 그것을 목격 할 필요가 없어서 기쁩니다). 이것은 모든 스토리지가 일종의 솔리드 스테이트 또는 다른 것임을 의미합니다.
피터-모니카 복원 복원

2
메모리는 메모리는 메모리입니다
Édouard

8
랜덤 어 드레서 블 메모리는 내가 아는 한 컴퓨터의 요구 사항이 아니다. 튜링 머신의 테이프는 무작위 주소가 아닙니다. 원하는 경우 블록 당 하나의 비트 만 읽고 쓸 수 없습니다.
Édouard

답변:


24

확실한. 원칙적으로 적절한 하드웨어가 제공되면 디스크에 모든 것이 저장된 디스크 만 있으면됩니다. CPU가로드 또는 저장 명령을 수행 할 때마다이를 디스크 읽기 또는 쓰기로 바꾸는 하드웨어가있을 수 있습니다. 자기 디스크에서는 각 탐색에 약 10ms가 걸리므로 초당 약 100 개의 임의 액세스 읽기 및 쓰기를 수행 할 수 있습니다.

일부 시스템은 플래시 메모리를 주소 공간에 매핑했습니다. 플래시 메모리는 비 휘발성 (영구적) 스토리지를 제공합니다. 따라서 어떤면에서 이것은 언급 한 것과 유사하지만 이러한 시스템에는 일반적으로 RAM도 있습니다.


6
@MSalters는 디스크를 RAM처럼 만들기 위해 디스크 (또는 그 위에 추가 하드웨어를 계층화)를하면 RAM이라고 할 수 있다는 점을 지적합니다. 문제는 "메모리를 없애고 디스크를 가질 수 있습니까?"라는 질문 이 너무 모호하다는 것입니다. 메모리와 디스크는 무엇을 의미합니까? 우리는 현대 데스크탑 PC에 존재하는 것을 의미합니까? 그러면 대답은 '아니오'입니다. 우리는 가상의 메모리와 디스크를 의미합니까? 그렇다면이 두 가지의 차이점은 어두워지고 문제는 "기계식 RAM이 장착 된 컴퓨터를 가질 수 있습니까?"와 같습니다. .
JBentley

1
AS / 400 종류는 다음과 같이 작동합니다. 단일 레벨 스토리지가 있으며 단일 주소 공간 만 있습니다. 디스크 및 메모리는 플랫폼 펌웨어에 의해 단일 스토리지 추상화로 결합되며 OS 자체에는 단일의 단일 통합 스토리지 공간 만 보입니다. 포인터는없고 객체 참조 만 있습니다. 플랫폼 펌웨어 (PC- 스피크의 BIOS, AS / 400- 스피크의 SLIC)에 의해 객체가 메모리에서 디스크로, 투명하게 다시 이동합니다. 디스크를 제거하고 RAM 만 있거나 RAM을 제거하고 디스크 만 있으면 OS와 응용 프로그램에 아무런 영향을 미치지 않습니다.
Jörg W Mittag

또한 HDD 수명이 훨씬 짧을 것이라고 생각합니다. 그리고 SSD의 경우 훨씬 더 나빠질 것입니다. 대부분 안드로이드 폰이 스왑을 갖지 않는 이유
Suici Doga

16

계산 성의 관점에서, 현대의 모든 컴퓨터는 스토리지 만 쓸 수있는 단일 선형 테이프 셀인 Turing Machine으로 시뮬레이션 할 수 있습니다. 무제한의 디스크 스토리지를 계속 추가 할 수 있다고 가정하면 하드 드라이브 만있는 컴퓨터는 강력합니다. 따라서 메모리없이 컴퓨터를 만들 수 있습니다.

물론 "무제한 공간"하드 드라이브는 없지만 무제한 RAM도 없습니다.

예를 들어, 여러 저장 영역과 관리 디스크 주소를 위해 디스크에 기록한 운영 체제 인 디스크의 다른 영역과 주소를 매핑하는 규칙이 필요합니다. 실제로는 하드 드라이브의 RAM을 면밀히 시뮬레이션하게됩니다.


14

문제는 순수한 학문이 아닙니다. 상업적으로 생산 된 최초의 컴퓨터 중 하나 인 [죄송합니다. 어느 쪽을 기억하지 못합니까?]에는 RAM이 없었습니다. 모든 프로그램은 마그네틱 드럼에서 직접 명령을 가져와 실행됩니다 (회전하는 실린더). 외부 표면을 자화 할 수 있음 (디스크는 나중에 나옴)]. 비교적 느리지 만 많은 경쟁사보다 훨씬 저렴합니다. [이것은 '튜브'시절에 돌아 왔습니다]

흥미롭게도, 그것은 '최적화 어셈블러'로 알려진 현재 사용되지 않는 도구와 함께 제공되었습니다. 즉 어셈블러는 기계 명령어를 생성했을뿐만 아니라 드럼에 연속적으로 기록하여 각 명령어에 대해 시간을 최소화 드럼이 다음쪽으로 회전 할 때까지 기다리십시오.


3
당신은 Stantec 얼룩말을 생각 할 수있다 - archive.computerhistory.org/resources/text/Standard/...을 . 그들은 1967 년에 대학에 갔을 때 여전히 CS 부서에 하나를 가지고있었습니다.
David Marshall

3
실제로, 나는 IBM 1408을 생각하고 있었을 것 같다.
PMar

8
드럼 메모리가있는 Royal McBee LPG-30에서 작업 한 프로그래머에 대한 이야기 인 Mel of Story ( catb.org/jargon/html/story-of-mel.html ) 도 참조하십시오 .
db48x

@ db48x : 그 이야기가 얼마나 멋진 지 잊어 버렸습니다. 아마 10 년 동안 읽지 않았을 것입니다.
Peter Cordes

7

디스크 드라이브는 RAM과 같이 임의 주소 지정이 불가능합니다. 대신 그들은 저장 장치를 차단합니다. 바이트를 읽거나 쓸 수 없습니다. 그리고 CPU는 한 번에 전체 섹터를 읽을 수 없으므로 무작위 액세스가 필요합니다. 운영 체제는 이러한 수준의 세부 정보를 숨기지 만 전체 sctor를 RAM으로 읽고 수정 한 후 다시 작성하면됩니다.

결과적으로 하나의 랜덤 액세스 스토리지 블록이 필요합니다. 이 CPU 캐시 일 있으며 SRAM (빠른 유형의 RAM)으로 만들어집니다.

디스크 만이 아닙니다. 플래시 메모리는 의도적으로 저렴한 가격에 핵심적인 블록으로 제작되었습니다. 심지어 일반 디스크 섹터보다 훨씬 큰 블록을 가지고 있지만 RAM을 내부적으로 사용하여 OS에서 숨 깁니다.

CPU에서 직접 사용할 수있는 영구 저장소를 만들 수 있습니다. EEPROM 스토리지는이 범주에 속합니다 (전자적으로 지울 수있는 프로그램 가능 "읽기 전용"메모리- "읽기 최적화"가 실제로 더 나은 설명 임).


5
귀하의 "아니오"는 "예,하지만 사용자 정의 내장 디스크가 필요합니다"라고 생각합니다.
Taemyr

3
확실히 둘 다 바이트를 읽을 수 있습니다. 당신이 할 수없는 것이 있기 때문에, 단일 바이트 쓰기입니다 쓰기가 한 번에 전체 블록 쓰기가 필요합니다. 그러나 원칙적으로 수정되지 않은 데이터를 원래 블록에서 새 블록으로 복사하고 필요한 경우 새 데이터를 작성한 다음 다시 원래 블록으로 복사하여 블록을 수정할 수없는 이유는 없습니다. 디스크를 빨리 닳게되지만 어쨌든 OP의 질문에서 피할 수 없습니다.
Graham

3
그리고 "차단"가 물리적 디스크 공간을 효율적으로 사용하기 위해 수행됩니다 : 당신이 블록을 식별하기 위해 "실제"데이터의 각 부분의 주위에 공간을 필요로 제공 블록 등 사이의 "보호"공간이 전혀 없다 기술 블록이 하나가 될 수없는 이유를 이유 바이트 길이 (그러나 용량만큼 속도가 더 떨어짐)
TripeHound

6
실제로 현재 RAM조차도 실제로 바이트 주소를 지정할 수 없습니다. DDR3는 버스트에서 작동하며 최소 읽기 / 쓰기 크기는 8 64 비트 워드 (예 : 64 바이트)입니다. 나는 전문가는 아니지만 정렬 된 액세스가 필요하다고 확신합니다. 이 모든 것이 이전 디스크와 크게 다르지 않습니다. 블록 크기는 512 바이트 정도였습니다. 이러한 차이점은 대부분 역사적이며 라인이 실제로 흐려지고 있습니다.
Matteo Italia

1
(또한 크기에 상관없이 전체 블록을 사용하는 것을 막을 수있는 것은 아무것도 없습니다. 단지 1 바이트를 유지하기 위해서는 약간 비효율적이지만 디스크를 지불하는 사람이 아닌 한 괜찮습니다)
Matteo Italia

1

가상 메모리를 사용하고 페이지 결함을 처리해야하는 경우 최소한 페이지 결함을 처리하는 예외 핸들러, 하드 드라이브에서 데이터를 읽고 먼저 더티 페이지를 디스크에 기록하는 디스크 드라이버 및 페이지 테이블이 필요합니다. 항상 RAM에 있어야합니다. RAM에 없으면 RAM으로 다시 바꿀 수 없기 때문입니다. 또한 하나 이상의 RAM 페이지 공간이 필요합니다.

30MB의 캐시 메모리를 가진 대규모 12 코어 Xeon과 같은 CPU가있는 경우 RAM이나 하드 드라이브가없는 시스템을 가질 수 있지만 캐시 메모리 만 사용할 수 있습니다. (실제로 작동하는지 또는 어떤 이유로 RAM이 필요한지 확실하지 않습니다).


IIRC, x86에는 내부 캐시 기본 메모리 사용하는 모드가 있습니다 . electronics.stackexchange.com/questions/16485/… 에 자세한 내용이 있습니다. 필자는 때때로 "채우기 모드 없음"이라고합니다. 즉, CPU는 실제로 외부 메모리에서 캐시 라인을 채우려 고하지 않습니다. "시스템 에이전트"는 L3 캐시에 DMA를 사용할 수 없으므로 하드 드라이브 I / O에 DMA를 사용할 수 없습니다. L4 eDRAM이있는 Skylake에서 작동 할 수 있습니다 . DMA를 포함하여 모든 것을 캐시 할 수있는 메모리 측 캐시 (Broadwell과 달리)로 설정되어 있기 때문 입니다. Programmed-IO는 여전히 디스크에서 작동합니다.
Peter Cordes

물론, 그 시점에서 15 년 전에는 128MiB의 RAM으로 시스템 온 칩을 실행하고 있습니다. L3 SRAM 캐시 만 있으면 데스크톱 칩에 여전히 4 ~ 8MiB로 매우 축소 된 Linux에는 충분하지만 DOS에는 충분합니다. 대부분의 코드가 RAM이 아닌 ROM에 있다면 괜찮습니다.
Peter Cordes

1

개념적으로 가능합니다. RAM은 캐싱 수준입니다. 최신 컴퓨터에는 많은 캐싱 수준이 있습니다 (CPU의 L1, L2, L3 .. 캐시, 물론 Ram, 스왑 영역-RAM으로 사용되는 디스크의 논리적 섹션입니다 ...- 참조). 또는 하나를 추가하면 기계가 작동합니다. 예를 들어, Ubuntu 라이브 CD는 HDD의 캐싱 수준을 사용하지 않을 수 있습니다. 그러나 RAM 수준이없는 것을 지원할 수있는 OS가 있다고 생각하지 않습니다.


1
그것은 OS가 아니라 지시 사항이 램 (실제로는 주소 공간에 매핑 됨)이 필요하도록 설계된 하드웨어입니다.
Ángel

@Angel 현대 OS에서 텍스트 (명령), CSS, 스택 및 힙을 프로그램에 실행하기 위해 메모리에로드해야합니까? 스왑 (디스크)에있을 수 없습니까? 리눅스에서는 이렇게 말합니다.
Tosh

1
우리는 컴퓨터 과학이나 컴퓨터 공학에 대해 이야기하고 있습니까? 나는 OS의 구현을 알지 못하며 하드웨어 수준도 아니며 교회 튜링 논문에만 근거하고 있습니다. 시장에 출시 된 현재 하드웨어를 사용하거나 기존 OS를 사용하는 것은 불가능하지만 이론적 인 시나리오에서는 가능할 수 있습니다.
Picci

1
@ Tosh 그것은 OS의 문제가 아니라 하드웨어입니다. CPU는 명령 포인터가 가리키는 메모리 주소에 위치한 하나의 명령을 실행합니다. 따라서 하드웨어를 변경하지 않고 디스크 만 있으면 작동하지 않습니다. 질문에 대답하면 모든 섹션을 메모리에로드 할 필요는 없습니다. 실제로 OS는 프로그램이 액세스하려고 할 때만로드 할 수 있습니다. 극단적 인 카운터 예로, hdd에서 한 번에 한 단어 *를 읽는 에뮬레이터를 사용하여 "디스크에서"프로그램을 실행할 수 있습니다. 그러나 메모리에 있어야하므로 여전히 약간의 RAM이 필요 합니다 .
Ángel

1
죄송합니다, @Tosh : " 에뮬레이터 가 메모리에 있어야합니다."
Ángel

-1

기술적으로 RAM은 처리 속도를 향상시키는 데 사용되는 주요 휘발성 메모리입니다. 전원이 꺼지면 기본 메모리의 데이터가 손실됩니다. 예를 들어 RAM이 아닌 디스크 만 사용하는 디스크를 사용하는 경우에도 컴퓨터를 실행할 수 있지만 더 많은 읽기 쓰기 오버 헤드가 발생하여 시스템 속도가 상당히 느려집니다. 따라서 우리는 RAM을 사용합니다.


CS.SE에 오신 것을 환영합니다! 더 많은 읽기 / 쓰기 오버 헤드가 빈번한 시스템 충돌 가능성을 증가 시킨다는 주장을 정당화 할 수 있습니까? 그것은 나에게 제대로 들리지 않습니다.
DW

사용중인에 따라 다릅니다. 유닉스 / 리눅스처럼 버퍼 캐시라는 개념이 있습니다. 프리 페치 된 블록 또는 지연된 쓰기로 표시된 블록을 저장하는 데 사용할 수 있습니다. 그러나 Windows 또는 Mac에는 그러한 개념이 없습니다. 따라서 보조 스토리지에서 필요한 블록에 액세스해야합니다. 병렬 프로세스를 실행하는 동안 읽기 쓰기 오버 헤드가 증가하고 결과적으로 처리 속도가 감소합니다. 프로세스가 실행되지 않아 컴퓨터 속도가 느려져 중단되기 시작합니다.
Sanket Gupte

2
그것은 오해처럼 들린다. 컴퓨터 속도가 느려진다 고해서 컴퓨터가 충돌하지는 않습니다.
DW
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.