[운영체제] 메모리(Memory)

림예·2024년 3월 29일
0

CS_운영체제

목록 보기
11/11

메인 메모리(main memory)

CPU가 직접 접근할 수 있는 기억 장치

프로세스가 실행되려면 프로그램이 메모리에 올라와야 함
주소가 할당된 일련의 바이트들로 구성되어 있음

CPU는 레지스터가 지시하는대로 메모리에 접근하여 다음에 수행할 명령어를 가져옴
명령어 수행 시 메모리에 필요한 데이터가 없으면 해당 데이터를 우선 가져와야 함

이 역할을 하는 것이 바로 MMU.



MMU (Memory Management Unit, 메모리 관리 장치)

논리 주소를 물리 주소로 변환해 준다.

메모리 보호나 캐시 관리 등 CPU가 메모리에 접근하는 것을 총 관리해 주는 하드웨어

메모리의 공간이 한정적이기 때문에, 사용자에게 더 많은 메모리를 제공하기 위해 '가상 주소'라는 개념이 등장 (가상 주소는 프로그램 상에서 사용자가 보는 주소 공간이라고 보면 됨)

이 가상 주소에서 실제 데이터가 담겨 있는 곳에 접근하기 위해선 빠른 주소 변환이 필요한데, 이를 MMU가 도와주는 것


즉, MMU의 역할은 다음과 같다고 말할 수 있다.

MMU가 지원되지 않으면, physical address를 직접 접근해야 하기 때문에 부담이 있다.
MMU는 사용자가 기억장소를 일일이 할당해야 하는 불편을 없애준다.
프로세스의 크기가 실제 메모리의 용량을 초과해도 실행될 수 있게 해준다.

또한, 메인 메모리의 직접 접근은 비효율적이므로, CPU와 메인 메모리 속도를 맞추기 위해 캐시가 존재함


MMU의 메모리 보호

프로세스는 독립적인 메모리 공간을 가져야 되고, 자신의 공간만 접근해야 함
따라서 한 프로세스에게 합법적인 주소 영역을 설정하고, 잘못된 접근이 오면 trap을 발생시키며 보호함

base와 limit 레지스터를 활용한 메모리 보호 기법

base 레지스터는 메모리상의 프로세스 시작주소를 물리 주소로 저장 limit 레지스터는 프로세스의 사이즈를 저장
이로써 프로세스의 접근 가능한 합법적인 메모리 영역(x)은

base <= x < base+limit

이 영역 밖에서 접근을 요구하면 trap을 발생시키는 것

안전성을 위해 base와 limit 레지스터는 커널 모드에서만 수정 가능하도록 설계 (사용자 모드에서는 직접 변경할 수 없도록)



메모리의 종류

DRAM

  • 축전기로 이루어지며 이것의 충전 상태로 정보를 기록합니다.
  • 가격이 싸고 용량 대비 크기가 작지만 속도가 느립니다.
  • 구조가 간단하여 집적도를 쉽게 높일 수 있습니다.
  • 트랜지스터 하나와 캐패시터 하나로 만들어져 있기에 고집적화가 가능합니다.
  • 주기억 장치에 주로 사용됩니다.

SRAM

  • 정적 램이라고도 부르며, 내용을 한번 기록하면 전원이 공급되는 한 내용을 그대로 가지고 있는 램입니다.
  • 기억 능력을 가진 논리 회로를 특별히 플립플롭이라고 부릅니다.
    Flip-Flop : 입력을 받으면 그 입력을 초기화 명령을 받기 전까지 내부에서 루프를 돌려서 유지하는 것으로 외부의 에너지 공급이 없으면 에너지 손실로 빠른 시간 안에 정지합니다.
  • 속도가 빠르지만 가격이 비싸고 용량 대비 크기가 크다.
  • 빠른 속도가 요구되는 캐시 메모리에 주로 사용되며 CPU 스펙에 표시되는 L1, L2, L3 등의 캐시 메모리가 대표적입니다.

DRAM을 사용자가 직접 장착하게 하는 대신, CPU와 DRAM 사이에 SRAM을 별도로 두어서 DRAM의 데이터를 직접 접근하는 것보다는 빠르게 접근할 수 있도록 한다.



캐시 메모리

주기억장치에 저장된 내용의 일부를 임시로 저장해두는 기억장치

CPU와 주기억장치의 속도 차이로 성능 저하를 방지하기 위한 방법

CPU가 이미 봤던걸 다시 재접근할 때, 메모리 참조 및 인출 과정에 대한 비용을 줄이기 위해 캐시에 저장해둔 데이터를 활용한다
캐시는 SRAM으로 되어있어 DRAM보다 빠른 장점을 지님


CPU와 기억장치의 상호작용

CPU에서 주소를 전달 → 캐시 기억장치에 명령이 존재하는지 확인

  • (존재) Hit
    해당 명령어를 CPU로 전송 → 완료

  • (비존재) Miss
    명령어를 갖고 주기억장치로 접근 → 해당 명령어를 가진 데이터 인출 → 해당 명령어 데이터를 캐시에 저장 → 해당 명령어를 CPU로 전송 → 완료

지역성

기억 장치 내의 정보를 균일하게 액세스 하는 것이 아니라 한 순간에 특정부분을 집중적으로 참조하는 특성

적중률을 극대화시키기 위해 사용

지역성의 종류는 시간과 공간으로 나누어짐

  • 시간 지역성 : 최근에 참조된 주소의 내용은 곧 다음에도 참조되는 특성
  • 공간 지역성 : 실제 프로그램이 참조된 주소와 인접한 주소의 내용이 다시 참조되는 특성






면접 질문


Swapping에 대해 설명해주세요.
  • Swapping 이란 메모리의 관리를 위해 사용되는 기법입니다. CPU 할당 시간이 끝난 프로세스의 메모리를 보조기억장치(하드디스크)로 내보내고 다른 프로세스를 메모리로 불러 들이는 것을 의미합니다.

캐시 메모리에서 가장 신경써야 하는 문제에 대해 설명해주세요.

  • 캐시 메모리의 역할을 수행하기 위해서는 CPU가 어떤 데이터를 원할 것인가를 예측할 수 있어야 합니다. 즉, 적중률(hit rate)을 극대화 시켜야 합니다.

적중률(hit rate)을 극대화 시키는 방법에 대해 설명해주세요.

  • 적중률을 극대화 시키기 위해 데이터 지역성(Locality)의 원리를 사용합니다. 지역성이란 기억 장치 내의 정보를 균일하게 Access 하는 것이 아닌 어느 한 순간에 특정 부분을 집중적으로 참조하는 특성입니다.

virtual memory에 대해 설명해주세요.

  • 가상 메모리 기법은 물리적 메모리보다 더 큰 프로그램이 실행될 수 있도록 컴퓨터 시스템에서 사용하는 메모리 관리 기법입니다.

virtual address를 physical address로 변환하는 방법에 대해 설명해주세요.

  • CPU가 메모리 참조를 실행할 때는 MMU(Memory Management Unit)라는 HW 장치를 이용해 해당 가상 주소를 실제 메인 메모리의 물리 주소로 변환하여 메모리 참조를 진행합니다.

가상 메모리는 왜 필요한지에 대해 설명해주세요.

  • 메인 메모리를 효율적으로 사용할 수 있습니다. 가상 메모리 시스템에서는 각 프로그램이 사용하는 가상 주소 공간을 우선 디스크에 저장해두고, 그중에서 자주 사용되는 부분만 메인 메모리로 가져와서 사용됩니다.
  • 메모리 관리를 단순화합니다. 가상 메모리 시스템에서는 각 프로세스가 완전히 동일한 포맷의 가상 주소 공간을 가집니다. 이것이 가능한 이유는 실제로 메모리 참조를 수행할 때는 가상 주소를 물리 주소로 변환하는 작업이 진행되기 때문이니다.
  • 메모리 보호 메커니즘을 단순화합니다. 가상 메모리 시스템에서는 다른 프로세스의 주소 공간이 접근하는 것을 쉽게 막을 수 있습니다.




profile
Think big 🌏

0개의 댓글