검수요청.png검수요청.png

주기억장치

해시넷
이동: 둘러보기, 검색

주기억장치(main memory unit)는 중앙처리장치(CPU)에 의해 제어되는 장치로 즉시 필요한 수치, 명령, 자료 등을 기억하는 컴퓨터 하드웨어 장치를 가리킨다.[1]

개요[편집]

주기억장치는 기억장치의 계층 구조에서 보조기억장치보다는 빠르고 캐시메모리(Cache Memory)보다는 느리고, 용량은 보조기억장치 보다 작은 기억장치이다. 용량이 큰 보조기억장치로부터 프로그램이나 자료를 이동시켜 실행시킬 수 있는 기억장치이다. 중앙처리장치가 직간접적으로 접근하여 데이터를 처리할 수 있는 기억장치로 컴퓨터 내부에서 현재 중앙처리장치가 처리하고 있는 내용을 저장하고 있다.[2] 주기억장치는 프로그램 기억 장소, 작업 장소, 입력 데이터 기억 장소, 출력데이터 기억 장소로 구성되어 있다.[3] 주기억장치의 기억매체로 과거에는 자기코어(magnetic core)를 사용하여 코어를 통과하는 전선에 전류를 보내 자화된 방향에 따라 0과 1을 기억하게 했다. 그러나 현재는 대부분 반도체 기억장치를 사용하는데, 반도체 기억장치에는 (ROM)과 (RAM)이 있다. 롬은 읽기만 하는 기억장치로서 전원이 끊어져도 기억된 내용이 지워지지 않으며, 종류로는 마스크롬, 피롬, 이피롬 등이 있다. 마스크롬은 제작할 때 내용을 기억하기 때문에 사용자가 임의로 바꿀 수가 없다. 램은 기억된 내용을 사용자가 임의로 변경할 수 있으며 프로그램이나 자료를 저장할 수 있으나 전원이 꺼지면 기억된 내용이 모두 지워진다. 따라서 휘발성메모리라고도 한다. 램에는 에스램(static RAM)과 디램(dynamic RAM)이 있다. 에스램은 전원이 공급되는 동안은 기억된 내용이 유지되고, 디램은 전원이 공급되어도 주기적으로 충전(refresh)을 하여 주어야 기억된 자료가 유지된다. 디램은 주로 대용량 기억장치에 사용된다.[4]

역사[편집]

1945년 만들어진 에니악은 배선반의 회로를 배선하여 놓고 부착된 스위치를 조작하여 계산을 수행시키는 방식으로 작동하였다. 따라서 한 가지 계산을 하다가 다른 계산으로 바꾸려면 배선을 뜯어 일일이 다시 연결시키고 스위치를 조정해야 했다. 존 폰 노이만(john von Neuman)은 현재의 컴퓨터처럼 컴퓨터 내부의 기억장치에 소프트웨어 방식의 프로그램을 내장하고 소프트웨어만 바꾸면 여러가지 작업에 대응할 수 있는 프로그램 내장 방식 컴퓨터의 개념을 발표했다. 폰 노이만의 프로그램 내장 방식의 원리를 기초로 여러 컴퓨터들이 개발되었고, 이들 컴퓨터가 자료 및 명령어를 저장하는 기억장치로 사용한 것은 수은지연회로(mercury delay line memory)였다. 수은지연회로 이외에 진공관의 일종인 윌리엄 킬관(Williams-ilburn tube)과 셀렉트론관(selectron), 자기드럼장치(magnetic drum unit) 등의 다양한 장치들이 쓰였다. 그 이후 1951년 작은 페라이트 자성체로 된 고리에 여러 가닥의 케이블이 통과하는 모양의 격자 구조로 되어있는 자기코어(Magnetic core) 메모리를 거쳐 트랜지스터의 발명과 집적회로(IC) 기술의 발전으로 오늘날의 으로 넘어왔다. 현재 연구되고 있는 차세대 메모리들은 반도체 메모리가 주축을 이루며, 기본 단위인 셀의 구조나 물질에 따라 강유전체 램(Ferroelectric RAM, FeRAM), 상변화 램(Phase Change Ram, PRAM), 저항 램(Resistance RAM, ReRAM), 폴리머 램(Polymer RAM, PoRAM), 나노튜브 램(Nano Floating Gate Memory, NFGM), 홀로그래픽 메모리, 분자 전자 소자, 모듈러 메모리 등으로 구분되고 있다.[5]

관리[편집]

기억장치의 관리 전략은 보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재 위치 등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사용하기 위한 것으로 반입 전략(Tetch strategy), 배치 전략(Placement strategy), 교체 전략(Replacement strategy)이 있다.[6]

반입 전략[편집]

반입 전략은 전략보조기억장치에 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략이다.

  • 요구 반입(demand fetch) : 실행중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법이다.
  • 예상 반입(Anticipatory fetch) : 실행중인 프로그램에 의해 참조될 프로그램이나 데이터를 예상하여 적재하는 방법이다.[6]

배치 전략[편집]

배치 전략은 프로그램이나 데이터를 주기억장치의 어디에 배치할 것인지를 결정하는 전략이다.

  • 최초적합(First-Fit) : 주기억장치 빈 공간 중 순서대로 첫 번째 주소에 배치하는 전략, 충분한 크기의 공간을 찾으면 검색을 끝내고 배치한다.
  • 최적적합(Best-Fit) : 빈 공간 중 입력 데이터의 크기와 가장 비슷한 위치에 배치하는 전략, 빈 공간이 가장 적게 남는 위치에 배치한다.
  • 최악적합(Worst-Fit) : 빈 공간 중 입력 데이터의 크기와 가장 다른 위치에 배치하는 전략, 빈 공간이 가장 많이 남는 위치에 배치한다.[6]

교체 전략[편집]

교체 전략은 주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고 할 때, 이미 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지를 결정하는 전략이다.

  • FIFO 교체(First In First Out) : 주기억장치에 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법으로 이해하기 쉽고 프로그래밍 및 설계가 간단하다.
  • LFU(Least Recently Used) 교체 : 사용 빈도가 가장 낮은 페이지를 교체하는 기법이다.
  • LRU(Least Frequently Used) 교체 : 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법으로 각 페이지마다 계수기나 스택을 두어 현시점에서 가장 오랫동안 사용하지 않은 페이지를 교체한다.[6]

할당[편집]

연속할당기법[편집]

연속할당기법은 주기억장치에 연속으로 할당하는 기법으로, 단일분할할당기법과 다중분할할당기법이 있다.

단일분할할당기법

단일분할할당기법은 주기억장치를 운영체제 영역과 사용자 영역으로 나누어 오직 한 명의 사용자만이 주기억장치의 사용자 영역을 사용하는 가장 단순한 기법으로 초기의 운영체제가 많이 사용하던 기법이다. 하지만 오버레이 기법과 스와핑 기법은 결국 사용자 영역에는 한 프로그램만 올라갈 수 있는 단점이 있다.[7]

  • 오버레이 : 주기억장치보다 큰 프로그램을 실행하기 위한 기법으로 보조기억장치에 저장된 프로그램을 여러 개의 조각으로 분할한 후 필요한 조각을 차례대로 주기억장치에 할당하는 방법이다. 보조기억장치에 저장된 하나의 프로그램을 여러 개의 조각으로 분할한 후 필요한 조각을 차례로 주기억장치에 적재하여 프로그램을 실행한다. 프로그램이 실행되면서 주기억장치의 공간이 부족하면 주기억장치에 적재된 프로그램의 조각 중 불필요한 조각이 위치한 장소에 새로운 프로그램의 조각을 중첩(Overlay)하여 적재한다.
  • 스와핑 : 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법이다. 주기억장치에 있는 프로그램이 보조기억장치로 이동되는 것을 '스왑 아웃'(Swap Out), 보조기억장치에 있는 프로그램이 주기억장치로 이동되는 것을 '스왑 인'(Swap In)이라고 한다. 하나의 사용자 프로그램이 완료될 때까지 교체 과정을 여러 번 수행할 수 있다.[8]
다중분할할당기법

연속할당기법의 단점을 개선하고자 나온 기법이 다중분할할당기법이며, 고정분할할당기법과 가변분할할당기법이 존재한다.

  • 고정분할할당 : 정적할당기법으로, 프로그램을 할당하기 전에 운영체제가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할하고 준비 상태 큐에서 준비 중인 프로그램을 각 영역에 할당하여 수행하는 기법이다. 분할된 영역보다 프로그램의 크기가 더 크면 실행할 수 없고, 일정한 크기의 분할 영역에 다양한 크기의 프로그램이 할당되므로 내부 단편화 및 외부 단편화가 발생한다. 따라서 사용할 프로그램의 크기를 미리 알고 있어야한다.
  • 가변분할할당 : 동적할당기법으로, 프로그램을 주기억장치에 적재하면서 필요한 만큼의 크기를 영역으로 분할해서 할당하는 기법이다. 주기억장치를 효율적으로 사용 가능하며, 다중 프로그래밍 정도를 높일 수 있다. 고정분할할당 기법 단편화 문제를 해결할 수 있지만 영역과 영역 사이에 단편화가 발생될 수 있다.[7]

분산할당기법[편집]

분산할당기법은 프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는 기법으로 페이징 기법과 세그먼테이션 기법으로 나뉜다.

  • 세그먼테이션(Segmentation) : 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 기법으로 내부 단편화는 없으나 외부 단편화가 발생할 수 있으며, 평균 세그먼트의 크기가 작을수록 외부 단편화는 작아진다.
  • 페이징(paging) : 고정분할방식을 이용한 가상 메모리 관리 기법으로 가상 메모리상의 주소 공간을 일정한 크기로 분할한다. 주소 공간의 단위는 페이지이며, 실제 기억공간에서의 단위는 페이지와 같은 크기의 프레임이다. 외부 단편화는 없으나 내부 단편화가 발생할 수 있다.[9]

종류[편집]

자기드럼[편집]

자기드럼(Mmagnetic drum)은 구형의 자기 기억장치이다. 둥그런 원형 표면에 자성 물질을 발라 놓아 자화시킬 수 있도록 만든 것으로, 원통 둘레를 트랙이라하며, 각 트랙마다 읽고 쓰는 헤드가 하나씩 있어서 원통이 한 바퀴 도는 동안 자료를 읽거나 쓸 수 있다. 컴퓨터가 처음 개발되었을 때에는 처리 속도가 빠르기 때문에 컴퓨터의 주기억장치로 사용되기도 했으나, 기억 용량이 매우 작아 지금은 사용되고 있지 않다.[10]

자기코어[편집]

자기코어(Magnetic core) 메모리는 작은 페라이트 자성체로 된 고리에 여러 가닥의 케이블이 통과하는 모양의 격자 구조로 되어있다. 자기코어 기판에는 가로/세로 64개 또는 128개씩 자기코어가 평면으로 나열되어 있는데, 이러한 그물 모양의 자기코어 모음의 행렬면 1장을 코어 평면이라고 한다. 이 기판의 코어 하나가 1비트(Bit)의 기억 용량을 가진다. 자기코어에는 네 가닥의 케이블이 지나가는데, 두 가닥의 쓰기 케이블이 가로와 세로로 배열되어 있고, 각 케이블이 만나는 곳마다 코어를 하나씩 통과하게 되어 있다. 코어는 한 가닥의 쓰기 케이블에 전류를 흘렸을 때는 자화되지 않지만, 두 가닥에 전류를 흘리면 자화되는 자기 특성을 가지고 있다. 전류의 방향에 따라 코어의 자기장의 방향이 결정되어 0 또는 1의 비트값을 지정하게 된다. 자화된 코어는 전류가 멈춰도 자화 상태를 유지하기 때문에 비휘발성 메모리에 속한다. [5]

[편집]

은 전원이 끊어져도 기록된 데이터들이 소멸되지 않는 비휘발성 메모리이다. 오직 기억된 데이터를 읽기만 가능한 장치이다. 일반적으로 쓰기가 불가능하고 데이터를 저장한 후 반영구적으로 사용 가능하여 자가 진단 프로그램(Power On System Test, POST), 입출력 시스템(BIOS)나 글꼴 등 변경될 가능성이 적은 데이터를 저장하는데 용이하다.[11]

종류
  • 마스크 롬(Mask ROM) : 제조 공장에서 데이터를 영구적으로 기록하여 대량 생산에 적합하고, 사용자가 내용을 변경시킬 수 없다.[5]
  • 피롬(Programmable ROM, PROM) : 프로그램이 되지 않은 상태에서 피롬 라이터(PROM Writer)를 이용해 내용을 기록할 수 있지만 한 번 들어간 내용은 바꾸거나 지울 수 없다. 그 이유는 제조시 모든 메모리 비트가 퓨즈로 연결되어 1로 읽히지만, 생산될 때 이를 기록하면 퓨즈가 끊어져서 0으로 읽히기 때문이다.[12]
  • 이피롬(Erasable PROM) : 필요할 때 기억된 내용을 지우고 다른 내용을 기록할 수 있는 롬이다. 지우는 방법에 따라 자외선으로 지울 수 있는 UV이피롬과 높은 전압으로 지울 수 있는 이이피롬으로 나뉜다.[13]
    • 이이피롬(Electrically EPROM) : 칩의 한 핀에 전기적 신호를 가해 줌으로써 내부 데이터가 지워지게 되어 있는 롬이다. 데이터를 삭제하기 위해서는 롬 라이터(ROM Writer)를 이용해서 쓰고 지울 수 있다. 그러나 한 번에 1 바이트씩만 지울 수 있기 때문에 매우 느리며 약 10만 번의 반복 기록 횟수의 제한이 있다. 이이피롬은 모뎀이나 비디오 카드, 메인보드, SCSI 컨트롤러 등에서 사용된다.[14]
    • UV이피롬(Ultra-Violet EPROM) : 강한 자외선을 쬐게 되면 전자는 게이트의 절연막을 통과해 기록이 지워지게 된다. 기록횟수는 고전압이 실리콘에 영향을 주기 때문에 20회 전후이며 차광 씰을 잘 부착하여 최적으로 보관한다면 약 10년 데이터 보관이 가능하다. UV이피롬은 과거 메인보드, 그래픽카드의 바이오스칩이나 게임기의 롬으로 많이 사용되었다.[13]
    • 이에이롬(Erasable Alterable ROM) : 한 비트씩 수정이 가능한 롬이다.

[편집]

은 컴퓨터가 빠른 액세스를 하기 위해 데이터를 단기간 저장하는 주기억장치이다. 어느 위치에든 똑같은 속도로 접근하여 읽고 쓸 수 있다는 의미로 Random Access라고 한다. 많은 작업이 메모리에 의존하기 때문에 램용량은 시스템 성능 속도에 매우 중요한 역할을 맏고 있다.[15] 주로 사용되는 램은 일반적으로 전원이 차단되면 내용이 지워지는 휘발성 기억 장치이다. 램은 재충전 여부에 따라 동적 램인 디램과 정적 램인 에스램으로 구분된다.[11]

  • 디램 : 트랜지스터 위에 캐패시터(Capacitor)가 수직으로 세워져있는 구조로 캐패시터에 전하를 저장하여 전자의 유무에 따라 데이터를 저장한다. 캐패시터에 전하를 저장하여 데이터를 기록하기 때문에 시간이 지남에 따라 캐패시터 안의 전하가 빠져나가 데이터가 지워져 데이터를 기억시키기 위해서 리프레시(refresh)라는 과정이 필요하다. 스마트폰, 태블릿과 같은 모바일 기기나 컴퓨터, 노트북과 같은 메모리가 필요한 그래픽 카드 등 다양한 곳에서 사용되고 있다.[16]
  • 에스램 : 기억 장치에 전원이 공급되는 한 그 내용이 계속 보존된다. 기본적으로 트랜지스터 등으로 구성된 논리 회로로 이루어지며 외부 신호에 따라 내부의 값을 유지하는 식으로 정보를 기록한다. 동적 램에 비해 100배 이상으로 접근 속도가 빠르지만 구조가 복잡하여 공간을 많이 차지하므로 집적도를 높이기 어려워 가격이 비싸고 대용량으로 제작하기가 어렵다. 그래서 빠른 속도가 요구되는 캐시메모리에 주로 사용된다.[17]

각주[편집]

  1. 주기억장치〉, 《위키백과》
  2. 리챠드후앙, 〈컴퓨터 주기억장치 & 보조기억장치 란...무엇인가〉, 《티스토리》, 2021-01-04
  3. 컴퓨터 시스템의 구조〉, 《강원대학교》
  4. 주기억장치〉, 《네이버 지식백과》
  5. 5.0 5.1 5.2 똘이아빠, 〈(컴퓨터 이야기 26)주기억장치 개발의 역사〉, 《다음 블로그》, 2013-08-27
  6. 6.0 6.1 6.2 6.3 손명기, 〈(운영체제) 3. 기억장치 관리〉, 《네이버 블로그》, 2013-02-06
  7. 7.0 7.1 Libi, 〈주기억장치 할당 기법〉, 《티스토리》, 2021-07-06
  8. 입코딩, 〈4-3-5장. 주기억장치 할당 기법 - C〉, 《티스토리》, 2020-09-19
  9. COLIN, 〈(OS) 메모리 핟당 기법〉, 《깃허브 페이지》, 2020-02-02
  10. 자기 드럼〉, 《위키백과》
  11. 11.0 11.1 코딩팩토리, 〈(H/W) 주 기억장치의 종류와 특징〉, 《티스토리》, 2019-04-28
  12. PROM〉, 《위키백과》
  13. 13.0 13.1 EPROM〉, 《위키백과》
  14. EEPROM〉, 《위키백과》
  15. RAM이란?〉, 《crucial》
  16. 반도체_바다, 〈DRAM이란? DRAM에 대한 기본 지식!〉, 《티스토리》, 2018-07-04
  17. RAM〉, 《나무위키》

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 주기억장치 문서는 컴퓨터에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.