본문 바로가기

OS

[OS] 메모리

메모리 계층 구조

메모리는 속도와 용량에 따라 다음과 같은 계층으로 구성됩니다.

  • 레지스터: CPU 내부의 초고속 휘발성 메모리. 속도는 가장 빠르며 용량은 가장 작습니다.
  • 캐시(Cache): L1, L2, L3 캐시로 구성. 휘발성이며 속도는 빠르고 용량은 적습니다.
  • 주기억장치(Main Memory, RAM): 휘발성이며 속도와 용량은 중간 수준입니다.
  • 보조기억장치(HDD, SSD): 비휘발성이며 속도는 느리지만 용량은 큽니다.

캐시(Cache)

캐시는 빠른 장치(CPU)와 느린 장치(메모리) 간 속도 차이를 보완하기 위한 임시 저장소입니다.

지역성의 원리

  • 시간 지역성: 최근에 사용된 데이터가 다시 사용될 가능성이 높음
  • 공간 지역성: 접근된 데이터의 근처 주소도 접근될 가능성이 높음

캐시 히트와 캐시 미스

  • 캐시 히트: 필요한 데이터가 캐시에 있어 빠르게 처리 가능
  • 캐시 미스: 데이터가 캐시에 없어 메모리에서 가져와야 하므로 느림

캐시 매핑 방식

  • 직접 매핑: 빠르지만 충돌이 잦음
  • 연관 매핑: 충돌 적음, 탐색 느림
  • 집합 연관 매핑: 블록 단위로 관리해 효율적

 

웹 브라우저 캐시

  • 쿠키: 만료기한 있는 키-값 저장소 (4KB)
  • 로컬 스토리지: 만료기한 없는 저장소, 탭 간 공유됨 (5MB)
  • 세션 스토리지: 탭 단위 저장소, 탭 종료 시 삭제 (5MB)

 

DB 캐싱 계층

DB 성능 향상을 위해 Redis 같은 인메모리 DB를 캐싱 계층으로 사용합니다.

 

 


메모리 관리

가상 메모리

  • 실제 메모리를 추상화하여 더 큰 메모리를 제공하는 기술
  • 가상 주소  실제 주소 매핑은 페이지 테이블로 관리
  • 변환 속도 향상을 위해 TLB 사용

TLB (Translation Lookaside Buffer)

  • 주소 변환을 빠르게 하기 위한 캐시

 

스와핑과 페이지 폴트

  1. 가상 주소 접근 → 해당 페이지 없음 → trap 발생
  2. OS가 사용하지 않는 프레임을 찾아 디스크에서 데이터 가져옴
  3. 페이지 교체 후 페이지 테이블 갱신 → 명령 재실행
  • 페이지: 가상 메모리 최소 단위
  • 프레임: 실제 메모리 최소 단위

 

스레싱 (Thrashing)

  • 페이지 폴트가 과도하게 발생해 성능 저하

해결 방법

  • 작업세트: 자주 사용하는 페이지 묶음 미리 로드
  • PFF(Page Fault Frequency): 페이지 폴트 비율에 따라 프레임 동적 조절

메모리 할당

연속 할당

  • 고정 분할: 미리 메모리 나눔, 내부 단편화 발생
  • 가변 분할: 동적 분할, 외부 단편화 발생
    • 최초 적합: 빈 공간 중 첫 번째에 할당
    • 최적 적합: 가장 딱 맞는 공간에 할당
    • 최악 적합: 가장 큰 공간에 할당

 

불연속 할당

  • 페이징(Paging): 동일 크기 페이지로 분할, 주소 변환 복잡
  • 세그멘테이션: 의미 단위로 분할, 보안/공유 유리, 크기 불균형 발생
  • 페이지드 세그멘테이션: 세그먼트를 페이지 단위로 쪼개어 결합

페이지 교체 알고리즘

오프라인 알고리즘

먼 미래에 참조되는 페이지와 현재 할당하는 페이지를 바꾸는 알고리즘, 하지만 미래에 사용되는 프로세스를 알 수 없기 때문에 성능 비교에 대한 상한 기준으로 사용

 

FIFO

가장 먼저 온 페이지를 교체 영역에 가장 먼저 놓는 방법

 

LRU

참조가 가장 오래된 페이지를 바꿈, 각 페이지마다 계수기와 스택을 두어야하는 문제점 존재

 

LFU

참조 횟수가 가장 적은 페이지를 교체

 

 

 

'OS' 카테고리의 다른 글

[OS] 프로세스와 스레드  (0) 2025.05.07
[OS] 운영체제와 컴퓨터  (0) 2025.05.07