반응형

본 글은 책 "혼자 공부하는 컴퓨터 구조+운영체제" 의 Chapter 6를 읽고 정리한 내용입니다.

06-1 RAM의 특징과 종류

RAM의 특징

  • 실행할 프로그램의 명령어와 데이터가 저장되는 곳
  • 전원을 끄면 저장된 명령어와 데이터가 모두 날아감 → 휘발성 저장 장치(volatile memory)
  • 비휘발성 저장장치(non-volatile memory): 전원이 꺼져도 저장된 내용이 유지되는 저장 장치로하드디스크, SSD, USB 메모리 등과 같은 보조기억장치가 있음
  • 보조기억장치는 전원을 꺼도 내용을 유지하지만 CPU가 직접 접근하지 못함

⇒ 보조기억장치에는 보관할 대상을 저장하고 RAM에는 실행할 대상을 저장

 

RAM의 용량과 성능

  • CPU가 실행하고 싶은 프로그램이 보조기억장치에 있다면 이를 RAM으로 가져와야 함
  • RAM의 용량이 적다면 보조기억장치에서 RAM으로 실행할 프로그램을 가져오는 일이 잦아 실행 시간이 길어짐

RAM의 용량이 적은 경우
RAM용량이 프로그램 A,B,C를 모두 저장할 정도로 충분히 큰 경우

 

RAM의 종류

DRAM

  • Dynamic RAM
  • 저장된 데이터가 동적으로 변하는(사라지는) RAM을 의미
    • 시간이 지나면 저장된 데이터가 점차 사라지는 RAM으로 데이터의 소멸을 막기 위해 일정 주기로 데이터를 재활성화(다시 저장) 해야 함
  • 위 단점에도 불구하고 아래 장점들 때문에 가장 많이 쓰임
    • 소비 전력이 비교적 낮음
    • 저렴
    • 집적도가 높아 대용량 설계 용이 (더 작고 빽빽하게 만들 수 있다는 의미)

SRAM

  • Static RAM
  • 저장된 데이터가 변하지 않는 RAM으로 일반적으로 DRAM보다 빠름
  • 대용량으로 만들어질 필요는 없지만 속도가 빨라야하는 곳에 쓰임 (ex) 캐시 메모리)

 

SDRAM

  • Synchronous Dynamic RAM
  • 클럭 신호와 동기화된 발전된 형태의 DRAM
    • 클럭에 맞춰 동작하며 클럭마다 CPU와 정보를 주고받을 수 있는 DRAM

DDR SDRAM

  • Double Data Rate SDRAM 으로 최근 가장 흔히 사용됨
  • 대역폭을 넓혀 속도를 빠르게 만든 SDRAM

* 대역폭(Data rate): 데이터를 주고받는 길의 너비

SDRAM을 SDR(Single Data Rate) SDRAM라고도 부름

  • DDR2 SDRAM은 DDR SDRAM보다 대역폭이 두 배 넓은 SDRAM (SDR SDRAM 보다 4배 넓음)
  • DDR3 SDRAM : DDR2 SDRAM보다 대역폭이 2배 넓음 (SDR SDRAM보다 8배)
  • DDR4 SDRAM : DDR3 SDRAM보다 대역폭이 2배 넓음 (SDR SDRAM보다 16배)

 

06-2 메모리의 주소 공간

메모리에 저장된 정보의 위치를 나타내는 주소는 두 종류가 있음

  • 물리주소: 메모리 하드웨어가 사용하는 주소
  • 논리주소: CPU와 실행중인 프로그램이 사용하는 주소

물리주소와 논리주소

  • CPU가 이해하는 주소가 논리 주소라고는 해도 CPU가 메모리와 상호작용하려면 논리주소와 물리주소 간의 변환의 이루어져야 함
    • 아래 그림에서 인터넷 브라우저의 0번지와 게임의 0번지는 CPU가 이해하기는 다르지만 실제 물리주소로 변환되지 않으면 메모리가 이해할 수 없음

⇒ CPU와 주소 버스 사이에 위치한 메모리 관리 장치(MMU, Memory Management Unit)라는 하드웨어에 의해 논리주소 ↔ 물리주소 변환이 수행됨

MMU는 CPU가 발생시킨 논리 주소에 베이스 레지스터(프로그램의 기준 주소) 값을 더하여 논리주소→물리주소로 변환

  • 베이스 레지스터: 프로그램의 가장 작은 물리 주소로 프로그램의 첫 물리 주소를 저장하는 셈

  • CPU가 "프로그램 A의 100번지 데이터"를 삭제하라고 명령하면, MMU를 통해 베이스 레지스터 값을 찾고 논리주소 값을 더해 실제 물리 주소 값을 얻은 다음 메모리에 접근하여 데이터 삭제

  • CPU가 "프로그램 C의 100번지 데이터"를 삭제하라고 명령하면, MMU를 통해 해당 프로그램의 베이스 레지스터 값을 찾고 논리 주소 값을 더해 실제 물리주소 값을 얻은 다음, 메모리에 접근하여 데이터 삭제

 

메모리 보호 기법

  • 아래 CPU의 명령어는 안전할까?

메모장 1500번지에 숫자 100을 저장하라고 CPU가 명령했지만 메모장은 논리주소 범위가 0~999로 범위를 벗어남

  • 안전하지 않고 실행되어서는 안됨
  • 프로그램의 논리 주소 영역을 벗어났기 때문
  • 위 명령어가 실행된다면 메모장 프로그램은 애꿏은 인터넷 브라우저 프로그램에 숫자 100을 저장

 

  • 인터넷 브라우저 프로그램의 명령어가 자신과 전혀 관련없는 게임 프로그램 정보를 삭제하게 됨
  • 다른 프로그램의 영역을 침범할 수 있는 명령어는 위험하기 때문에 논리 주소 범위를 벗어나는 명령어 실행을 방지하고 실행중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호할 방법이 필요

한계 레지스터 (limit register)

  • 베이스 레지스터가 실행중인 프로그램의 가장 작은 물리 주소를 저장한다면, 한계 레지스터는 논리 주소의 최대 크기를 저장
    • 베이스 레지스터 값 ≤ 프로그램의 물리 주소 범위 < 베이스 레지스터 값 + 한계 레지스터 값

CPU가 접근하려는 논리 주소는 한계 레지스터가 저장한 값보다 커서는 안됨

  • 프로그램 A의 크기, 즉 한계 레지스터가 150인 상황
  • CPU가 200번지를 삭제하라는 명령어를 보내면 논리 주소가 한계 레지스터 값보다 커 실행될 수 없음

⇒ CPU는 메모리에 접근하기 전에 접근하고자 하는 논리 주소가 한계 레지스터보다 작은지를 항상 검사

CPU가 한계 레지스터보다 높은 논리 주소에 접근하려고 하면 인터럽트(트랩)을 발생시켜 실행을 중단시킴

 

참고

 


1. 책 "혼자 공부하는 컴퓨터 구조+운영체제"
2. 유튜브 "혼자 공부하는 컴퓨터 구조 + 운영체제"

 
반응형

'OS' 카테고리의 다른 글

운영체제를 공부해야하는 이유와 커널  (0) 2024.07.14
캐시메모리  (0) 2024.07.07
CPU 성능 향상 기법  (0) 2024.07.02
명령어  (0) 2024.06.30
데이터  (0) 2024.06.27

+ Recent posts