[운영체제] 메모리 : 메모리의 계층, 메모리 관리

2024. 10. 17. 23:25·💻 CS/운영체제

컴퓨터 시스템에서 중요한 역할을 하는 메모리에 대해 살펴보겠습니다. 메모리는 프로그램이 실행되기 위해 필요한 데이터를 저장하고 관리하는 공간입니다. CPU가 명령어를 처리하기 위해선 메모리의 지원이 필수적입니다. 그렇다면 메모리는 어떤 구조로 되어 있을까요?

메모리 계층 구조 🏢

메모리 계층은 다음과 같이 레지스터, 캐시, 주기억장치, 보조기억장치로 구성되어 있습니다:

  1. 레지스터
  2. 캐시
  3. 주기억장치 (RAM)
  4. 보조기억장치 (HDD, SSD)

위로 갈수록 속도는 빨라지지만 용량은 작아지고 가격은 비싸집니다. 반면 아래로 갈수록 속도는 느려지지만 용량은 커지고 가격은 저렴해집니다. 이런 계층 구조를 통해 컴퓨터는 성능과 비용 간의 균형을 맞추려고 합니다.

캐시(Cache)란 무엇인가요? 🤔

캐시는 데이터를 미리 복사해 놓는 임시 저장소로, 데이터 접근 속도를 높이는 역할을 합니다. 예를 들어, CPU와 메모리 사이에 있는 캐시는 데이터를 자주 접근하는 경우에 사용합니다. 이를 통해 메모리와의 속도 차이를 줄이고, 더 빠른 데이터 접근이 가능해집니다.

캐시는 지역성의 원리를 활용합니다:

  • 시간 지역성: 최근에 접근한 데이터에 다시 접근할 가능성이 높은 것
  • 공간 지역성: 최근 접근한 데이터의 주변 데이터에 접근할 가능성이 높은 것

📢 캐시 히트(Cache Hit): 원하는 데이터를 캐시에서 성공적으로 찾는 경우
📢 캐시 미스(Cache Miss): 원하는 데이터를 캐시에서 찾지 못해 주기억장치에서 가져오는 경우

웹 브라우저의 캐시 🖥️

소프트웨어적인 캐시의 대표적인 예는 웹 브라우저의 캐시입니다. 웹 브라우저는 쿠키, 로컬 스토리지, 세션 스토리지와 같은 저장소를 사용해 데이터를 저장합니다. 이를 통해 사용자는 더 빠르고 개인화된 웹 환경을 경험할 수 있습니다.

  • 쿠키: 만료기한이 있는 Key-Value 저장소로, 4KB 정도의 데이터를 저장할 수 있습니다.
  • 로컬 스토리지(Local Storage): 만료기한이 없는 저장소로, 브라우저를 닫아도 데이터가 유지됩니다.
  • 세션 스토리지(Session Storage): 브라우저 탭 단위로 데이터를 저장하며, 탭을 닫으면 데이터가 삭제됩니다.

메모리 관리 🗂️

메모리는 한정된 자원이기 때문에, 운영체제는 이를 효율적으로 사용하기 위해 여러 가지 기법을 사용합니다. 대표적인 기법으로는 가상 메모리, 메모리 할당, 그리고 페이지 교체 알고리즘이 있습니다.

가상 메모리 (Virtual Memory) 📋

가상 메모리는 실제 메모리 크기보다 더 큰 프로그램을 실행할 수 있도록 도와주는 기술입니다. 프로그램이 사용하는 주소는 가상 주소(Logical Address)로, 메모리관리장치(MMU)에 의해 실제 메모리의 물리 주소(Physical Address)로 변환됩니다. 이렇게 함으로써 사용자는 실제 메모리 크기에 대한 제한 없이 프로그램을 실행할 수 있습니다.

가상 메모리에서는 페이지 폴트(Page Fault)라는 현상이 발생할 수 있습니다. 이는 프로그램이 필요한 데이터가 메모리에 없는 경우 발생하며, 데이터를 디스크에서 메모리로 불러오는 과정이 필요하게 됩니다.

페이지 교체 알고리즘 🌀

페이지 폴트가 발생했을 때, 메모리가 꽉 차 있는 경우 어떤 페이지를 교체할지 결정해야 합니다. 이를 페이지 교체 알고리즘이라 하며, 대표적인 알고리즘에는 FIFO (First In First Out), LRU (Least Recently Used), LFU (Least Frequently Used) 등이 있습니다. 이 알고리즘들은 페이지 폴트 빈도를 최소화하여 메모리 사용을 최적화하는 것을 목표로 합니다.

마무리 🎯

이번 글에서는 메모리의 계층 구조와 운영체제에서의 메모리 관리에 대해 알아보았습니다. 메모리는 CPU와 함께 컴퓨터 성능을 좌우하는 중요한 요소입니다.

다음 글에서는 가상 메모리의 상세 동작과 메모리 할당 기법에 대해 알아보겠습니다!

'💻 CS > 운영체제' 카테고리의 다른 글

[운영체제] CPU 스케줄링 알고리즘  (0) 2024.10.22
[운영체제] 프로세스와 스레드  (0) 2024.10.18
[운영체제] 운영체제와 컴퓨터  (0) 2024.10.17
'💻 CS/운영체제' 카테고리의 다른 글
  • [운영체제] CPU 스케줄링 알고리즘
  • [운영체제] 프로세스와 스레드
  • [운영체제] 운영체제와 컴퓨터
kkongdo
kkongdo
kkongdo 님의 블로그 입니다.
  • kkongdo
    숲을 바라보며 나무를 심는 아이
    kkongdo
  • 전체
    오늘
    어제
    • 분류 전체보기 (32)
      • 🌏 Web (0)
      • ☕ Java (5)
      • 🌱 Spring (9)
        • Spring Boot (7)
        • Spring Data JPA & QueryDSL (2)
      • 🗂️ Database (5)
      • 💻 CS (12)
        • 운영체제 (4)
        • 네트워크 (5)
        • 자료구조 (3)
      • 🗃️Git (1)
      • 🔍 Algorithm (0)
      • 📡 DevOps (0)
        • Docker (0)
      • 🔭 ETC (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • GitHub
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SpringSecurity
    네트워크기기
    springbatch
    운영체제
    복잡도
    네트워크
    DI
    자료구조
    OS
    db
    java
    JPA
    spring
    @annotation
    QueryDSL
    데이터베이스
    조인
    CS
    SpringMVC
    스케줄링
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
kkongdo
[운영체제] 메모리 : 메모리의 계층, 메모리 관리
상단으로

티스토리툴바