본문 바로가기

System

메모리 시스템(Memory System)

메모리 시스템(Memory System)

메모리는 여러 계층을 통해 효율적으로 구성한다. 보조기억장치, 주기억장치, 중앙처리장치로 이루어진 이유이기도 하다. 액세스 속도가 높아질 수록 용량은 줄어들지만 비용은 증가한다. 반대로 액세스 속도는 느리지만 용량이 클 경우 비용은 감소한다. 이러한 특징 때문에 계층적으로 메모리를 구조화한다.

기억장치 계층 구조

 

캐시 메모리(Cache Memory)

주기억장치와 중앙처리장치 사이에 존재하며 둘 사이의 속도 차이를 극복하기 위해 존재한다. 캐시 메모리와 같은 고속의 메모리를 통해 빠른 처리를 할 수 있다. 캐시 메모리는 중앙처리 장치가 읽어들인 데이터로 채워지는 버퍼이다.

캐시 메모리는 직접 사상(Direct Mapping)과 연관 사상(Associate Mapping), 집합 연관 사상(Set Associate Mapping)이 있다.

  • 직접 사상 : Main Memory를 여러 구역으로 분할하여 Cache 슬롯과 매핑하는 것이다. 매핑 절차가 단순하고 신속하게 처리가 가능하다. 하지만 높은 캐시 미스율이 있다. 캐시 미스율은 같은 블록에 사상되는 데이터 캐시 적재 시 교체가 발생하는 것이다.
  • 연관 사상 : Main Memory의 각 블록이 Cache의 어느 슬롯이든 적재가 가능하다. 지역성이 높은 접근 시 캐시 적중률이 높다. 지역성은 3가지로 나눠진다. 시간적 ,공간적, 순차적 으로 나눠지며 시간적 지역성은 최근에 액세스된 프로그램이나 데이터가 미래에 다시 액세스될 확률이 높은것이고, 공간적 지역성은 기억장치 내에 인접하여 저장되어 있는 데이터, 프로그램의 경우 연속적으로 액세스될 확률이 높은 것이다. 마지막으로 순차적 지역성은 분기(Branch)가 발생하지 않는 한, 명령어들은 기억장치에 저장된 순서대로 실행되는 것이다.
  • 집합 연관 사상 : 직접사상과 연관사상을 절충한 방식이다. 캐시와 메모리가 M 대 1로 대응한다. 직접 사상과 연관 상의 장점을 가져온 것으로 단점은 캐시 Fin/Fout 발생이 증가하고 구현 비용이 많이 든다. 여기서 Fin/Fout은 파일의 입출력을 의미한다.

관리방식

캐시는 주기억장치와 중앙처리 장치 사이의 속도를 극복하기 위해 사용되는 만큼 CPU가 원하는 데이터가 케시 메모리에 있어야할 필요가 있다. 즉, 중앙처리가 필요로 하는 데이터가 캐시 메모리에 준비가 되어있는 것이다.

캐시 메모리 인출방식은 Demand Fetch와 Pre-Fetch 방식이 있다.

  • Demand Fatch : 필요 시 캐시를 인출하는 방식이다.
  • Pre-Fetch : 예상되는 블록을 미리 패치해 두는 방식

 

캐시 메모리 교체(Replacement) 알고리즘 종류

종류 세부 내용 특징
Random 교체될 Page를 임의로 선정한다. Overhead가 적다.
FIFO(First In First Out) 캐시 내에 오래 있었던 Page를 교체한다. 자주 사용되는 Page가 교체될 수 있다.
LFU(Leatst Frequently Used) 사용 횟수가 가장 적은 Page가 교체된다. 최근 적재된 Page가 교체될 수 있다.
LRU(Least Recently Used) 가장 오랫동안 사용되지 않은 Page가 교체된다. Time stamping에 의한 Overhead가 존재한다.
Optimal 향후 가장 참조되지 않을 Page를 교체한다. 호출 순서와 상황 예측이 필요하여 고도의 기술이 필요하다.
NUR(Not Used Recently) 참조 비트와 수정 비트로 미사용 Page 교체 최근 사용되지 않은 Page가 교체될 수 있다.
SCR(Second Chance Replacement) 최초 참조 비트 1로 셋, 1인 경우 0으로 셋, 0인 경우 교체 기회를 한 번 더 준다.

 

페이지 교체 관리 시 문제점

문제점 세부 내용
Page Fault 발생(페이지 부재) 기억장치에 적재되지 않은 Page를 사용하려 할 때 Page Fault 발생
Demand Paging(요구 페이징) 요구될 때에만 Process가 Page를 적재하는 방식이다.
Thrashing 발생(스레싱) Page 부재가 너무 빈번하게 발생하여 CPU가 프로세스에 대한 처리보다 Page 교체에 대한 처리를 더 열심히 할 경우이다.

 

페이지 교체 관리 문제 해결 방안

종류 세부 내용
Load Control 일정시간 새로 들어온 프로세서를 지키는 것이다. 새로 프로세서가 생성되는 것을 막고 Suspend Queue에 대기시켜서 스레싱 현상을 감소시킨다.
Locality(구역성) 시간과 공간을 집중적으로 참조한다.
Working Set 일정 시간 동안 참조되는 페이지 집합을 주기억장치에 유지시킨다.
PFF(Page Fault Frequency) Process와 Page Fault 빈도에 따라 Residence set을 조정한다. PFF가 높으면 Residence set의 크기가 증가하고, 낮으면 감소한다.

 

캐시 메모리 일관성(Cahche Coherence)

멀티프로세서 환경에서 캐시 메모리의 데이터가 변경될 경우 주기억장치의 데이터도 변경하여 일관성을 유지하는 것이다. 멀티 프로세서의 종류로는 시분할 처리와 멀티 테스킹이 있다. 시분할 처리는 다수의 사용자가 하나의 시스템을 사용할 경우 시간 단위로 나누어 프로세서를 처리하는 것이고 멀티 테스킹은 한명의 사용자가 다수의 작업을 요청할 때 사용하는 것이다.

 

가상 메모리 시스템

가상 메모리는 주기억장치의 메모리가 적을 경우 보조기억장치의 일부분을 주기억장치처럼 사용하는 것을 의미한다. 즉, 보조기억장치를 이용하여 주기억장치의 공간을 확대하는 기억장치 관리 방법이다. 가상 메모리를 사용하기 위해서 가상 주소 공간(Virtual Address Space)를 사용한다. 실제 보조기억장치에있는 가상 메모리는 주기억장치에 있는 것이 아니기 때문에 주기억장치에서 메모리 주소를 사용하듯이 보조기억장치에서도 가상의 메모리 주소를 사용해야할 필요가 있다.

가상 메모리 관리 단위

페이지(Page)기법과 세그먼트(Segment)기법이 있다.

구분 Paging 기법 Segment 기법
할당 고정 분할 : 고정된 페이지라고 불리는 블록들로 분할, 관리하는 기법이다. 동일한 크기로 나눠진다. 각각의 페이지는 물리 메모리의 프레임과 맵핑한다. 페이지를 가리키는 논리주소에서 프레임을 가리키는 물리주소로 변환한다. 가변 분할 : 메모리를 세그먼트 세트로 나눠서 관리하는 방식이다. 세그먼트는 시작 주소인 베이스 어드레스(Base Address)와 세그먼트의 크기를 지정하는 길이 값(Length Value)로 구성된다. 주소 지정은 베이스 어드레스에 세그먼트 내의 Offset값을 통해 지정한다.
적재 요구 Page만 일부 적재 프로그램 전체 적재
관점 메모리 관리 측면 파일 관리 측면
장점 요구 Page만 적재 Load한다. 외부 단편화가 해결되고 교체시간이 줄어든다. 사용자 관점으로 처리된다. 개발/프로그래밍에 용이하고 내부 단편화가 해결된다. 코드, 데이터 공유가 용이하다.
단점 내부 단편화가 발생한다. 스래싱, 잦은 디스크 입출력이 발생한다. 외부 단편화가 심각해진다. 메인 메모리가 커야한다.

 

가상 메모리 관리 정책

종류 세부 내용 기법의 유형
할당 기법(Allocation) 프로세스에게 할당되는 메모리 블록의 단위를 결정한다. 고정 할당, 가변 할당, Paging, Segmentation
호출 기법(Fetch Policy) 보조기억장치에서 주기억장치로 적재할 시점을 결정한다. Demand Fetch, Pre-Fetch
배치 기법(Placement) 요구된 페이지를 주기억장치의 어느 곳에 적재할 것인지를 결정한다. First fit, Best fit, Next fit, Worst fit
교체 기법(Replacement) 주기억장치 공간 부족 시 교체 대상을 결정한다. Random, FIFO, LRU, LFU, NUR, SCR, Optimal

 

할당 정책

  • 연속 할당
고정 분할 고정된 크기의 단위로 메모리를 할당한다. 내부 단편화가 발생한다.
가변 분할 할당 단위를 요청마다 다른 크기로 할당한다. 외부 단편화가 발생한다.
  • 비연속 할당
Paging 가상 메모리 블록을 페이지 단위로 관리한다. TLB와 MMU, Page table로 관리한다.
Segmentation 가변 크기인 세그먼트로 분할한다. Segment Table로 관리한다.

 

반응형