메모리 심화

이상민·2024년 10월 21일

CS공부

목록 보기
11/18
post-thumbnail

메모리 복습

메모리 기본 내용중에 조리대에 해당하는 캐시의 “지역성”, “캐시히트/미스” 에 대해서 학습하고, 메모리가 어떻게 사용되는지 “메모리 할당”에 대해서 알아보자!

캐시란

캐시는 데이터를 미리 복사해 놓는 임시 저장소

  • 우리가 보는 화면에 출력되는 데이터는 결국 메인 메모리에 저장된 데이터이다.
  1. 프로그램이 실행되면 디스크를 읽어서 메인 메모리에 복사해두고
  2. CPU(MMU)가 메인 메모리에서 데이터를 읽어오며 작업을 처리한다.
  3. 이때 캐시가 중간에서 한번더 메인메모리의 데이터를 복사해두는 거라고 보시면 된다.
  • 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한게 메모리이며
  • 데이터 접근에 오래 걸리는 경우를 해결하고 다시 계산하는 시간을 절약해준다.
  • 즉, 캐시는 계층과 계층 사이에서 속도차이를 해결하기 위한 임시 저장소라고 할 수 있다.
  • ex1) 레지스터 : 메모리와 CPU 사이의 속도 차이를 해결하기 위한 캐시
  • ex2) 주기억장치 : 캐시 메모리와 보조기억장치 사이의 속도 차이를 해결하기 위한 캐시

지역성의 원리

지역성이란?
자주 사용되는 데이터의 특성을 의미한다.
캐시를 직접 설정할때는 자주 사용되는 데이터를 기반으로 설정해야 하며 이러한 특성을 지역성이라고 한다.

시간 지역성

  • 최근 사용한 데이터에 다시 접근하려는 특성
    ex) for문 안에 선언된 i는 반복문 안에서 계속해서 접근이 이루어지는 변수이다.최근에 사용했기 때문에 계속 접근해서 +1 이 이루어지는 것이다. (i 변수에 대한 시간 지역성)
for(let i=0; i<5; i++){
	console.log(i) // 0 1 2 3 4
}

공간 지역성

  • 최근 접근한 데이터를 이루고 있는 공간이나 그 가까운 공간에 접근하는 특성
    ex) 배열 arr이라는 공간에 i가 연속적으로 할당되어 접근하는 방식 (arr 배열 원소에 대한 공간 지역성)
let arr = [];
for(let i=0; i<5; i++){
	arr.push(i)
}
// arr = [0,1,2,3,4]

캐시히트와 캐시미스

캐시히트

캐시히트란 캐시에 원하는 데이터를 찾은 것을 말한다.

  • 위치도 가깝고 CPU 내부버스를 기반으로 작동하여 빠르다
  • 캐시히트를 하게 되면 해당 데이터를 제어장치를 거쳐 가져오게 된다.

캐시미스

캐시미스란 해당 데이터가 캐시에 없다면 주메모리로 가서 데이터를 찾아오는 것을 의미한다.

  • 메모리를 가져올때 시스템 버스를 기반으로 작동하기 때문에 느리다.

캐시 매핑

캐시가 히트되기 위해 매핑되는 방법

  • CPU의 레지스터 와 주 메모리(RAM) 간에 데이터를 주고 받을 때를 기반
  • 주 메모리에 비해 굉장히 작은 레즈시터가 캐시 계층으로써 역할으로 매핑이 중요하다.

메모리 할당

메모리에 프로그램을 할당할 때는 시작 메모리 위치, 메모리의 할당 크기를 기반으로 할당한다.

  • 연속 할당과 불연속 할당으로 나뉘게 된다.

연속할당

  • 연속할당이란 메모리에 '연속적으로' 공간을 할당하는 것을 말한다.
  • 고정 분할 방식과 가변 분할 방식으로 나뉘게 된다.

고정 분할 방식

  • 메모리를 미리 나누어 관리하는 방식 입니다.
  • 한계
    • 내부 단편화 발생 ⭕

가변 분할 방식

  • 매 시점 프로그램의 크기에 맞게 동적으로 메모리를 나눠 사용하는 방식이다.
  • 종류
    1. 최초적합: 위에서부터 바로 보이는 공간에 바로 할당
    2. 최적적합: 가장 크기에 맞는 공간부터 채우고 나머지를 할당
    3. 최악적합: 가장 크기가 큰 공간에 부터 채우고 나머지 할당
  • 한계
    • 내부 단편화 발생 ❌
    • 외부 단편화 발생 ⭕

불연속 할당

운영체제에서는 여러개의 작업을 효율적으로 수행해야하기 때문에 불연속 할당방법을 사용한다.

불연속 할당 방식의 단점

  • 메모리 공간 할당과 해제 시의 오버헤드가 발생할 수 있다. (불필요 할당)
  • 메모리 공간이 분산되어 있기 때문에, 프로세스가 불연속 공간에 할당될 경우 프로세스의 페이지 교체와 같은 작업이 더 복잡해질 수 있다. (교체 알고리즘 최적화 필요)

0개의 댓글