[이어드림스쿨 1주차] 메모리 관리 개념과 가상 메모리

KiwiChipKiwiChip
4 min read

메모리 관리 개념과 가상 메모리

1. 메모리 관리란?

컴퓨터가 여러 프로그램(프로세스)을 동시에 실행할 수 있도록 메모리를 효율적으로 나누고 관리하는 것이다.

📌 비유:

  • 컴퓨터의 메모리는 책상과 같다.

  • 책상이 크기가 제한되어 있어, 공간을 효율적으로 사용해야 한다.

  • 여러 사람이 함께 사용하려면, 적절하게 공간을 배분하고 정리해야 한다.


2. 메모리 관리가 중요한 이유

📌 메모리를 제대로 관리하지 않으면?

  • 한 프로그램이 다른 프로그램의 데이터를 잘못 건드려 프로그램이 멈추거나 오류 발생 🚨

  • 메모리 공간이 부족하여 새로운 프로그램 실행 불가 🛑

📌 책상 비유:

  • 책상 위 물건을 정리하지 않으면 서로 물건이 섞이거나 떨어질 수 있다.

  • 빈 공간이 없으면 새로운 사람이 책상을 사용할 수 없다.


3. 메모리 관리의 핵심 역할

1️⃣ 메모리 공간 할당 (Allocation)

  • 프로그램이 실행될 때 필요한 메모리 공간을 할당하는 과정이다.

  • 📌 비유: 사용자가 책상에서 작업할 때 자리를 지정해 주는 것과 같다.

2️⃣ 메모리 공간 해제 (Deallocation)

  • 프로그램이 끝나면 사용한 메모리 공간을 비워주는 과정이다.

  • 📌 비유: 사용자가 다 쓴 공간을 정리해서 다음 사람이 사용할 수 있도록 하는 것과 같다.

3️⃣ 메모리 보호 (Memory Protection)

  • 프로그램끼리 서로의 메모리 공간을 침범하지 못하도록 보호하는 기능이다.

  • 📌 비유: 각자의 책상 공간을 테이프로 표시해 다른 사람이 건드리지 못하도록 하는 것과 같다.

4️⃣ 효율적인 메모리 관리

  • 메모리 공간을 효율적으로 나눠서 최대한 많은 프로그램이 동시에 실행되도록 관리하는 것.

  • 📌 비유: 큰 물건과 작은 물건을 적절히 배치해 책상 공간을 최대한 활용하는 것과 같다.


메모리 주소 (Memory Address)

📌 메모리는 수많은 작은 방(공간)으로 구성된다.

  • 각 방에는 고유한 번호(주소)가 있어 데이터를 저장하거나 찾을 때 사용된다.

  • 고유 번호가 바로 메모리 주소이다.

📌 비유:

  • 큰 아파트에 있는 수많은 방 → 각 방의 호수(101호, 102호 …) 와 같다.

  • 프로그램이 데이터를 저장할 때, 주소를 사용해 정확한 위치를 찾는다.


메모리 할당 (Memory Allocation)

📌 프로그램이 실행될 때 메모리의 일정 공간을 제공하는 과정이다.

📌 비유:

  • 손님(프로그램)이 호텔에 왔을 때, 방을 할당받는 것과 같다. 🏨

  • 손님이 필요한 만큼 방을 제공받으며, 다른 손님이 이미 사용 중인 방은 배정되지 않는다.


메모리 해제 (Memory Release)

📌 프로그램이 종료되면, 사용하던 메모리 공간을 비워주는 과정이다.

📌 비유:

  • 손님이 호텔을 떠나면, 방을 비워 다음 손님이 사용할 수 있도록 하는 것과 같다.

  • 메모리를 해제하지 않으면 공간이 부족해지는 문제(메모리 누수)가 발생할 수 있다. 🚨


연속 할당 vs 불연속 할당

방식설명비유
연속 할당 (Continuous Allocation)메모리를 연속적인 공간에 할당하는 방식호텔에서 손님에게 101호, 102호, 103호와 같이 연속된 방을 제공
불연속 할당 (Non-continuous Allocation)메모리를 띄엄띄엄 나누어 할당하는 방식호텔이 방이 부족하여 손님에게 101호, 305호, 508호처럼 떨어진 방을 제공

📌 각각의 특징:

  • 연속 할당: 빠르고 관리가 쉽지만, 공간이 부족하면 할당이 어려움

  • 불연속 할당: 공간을 효율적으로 활용할 수 있지만, 관리가 복잡함

해결 방법: 가상 메모리(Virtual Memory)


가상 메모리(Virtual Memory)란?

📌 실제 RAM보다 더 큰 공간을 프로그램이 사용할 수 있도록 운영체제가 관리하는 기술이다.

📌 비유:

  • 책상이 작아도, 필요할 때마다 책을 책장에 보관하고 꺼내면서 사용하면 더 많은 일을 할 수 있다.

🔹 가상 메모리가 필요한 이유

1️⃣ 메모리 부족 문제 해결

  • RAM이 부족해도, 디스크 공간을 활용해 부족한 메모리를 보완한다.

2️⃣ 큰 프로그램 실행 가능

  • 실제 RAM보다 더 큰 프로그램도 실행할 수 있다.

3️⃣ 메모리 보호 및 안정성 증가

  • 프로세스 간 충돌을 방지하고, 독립적인 주소 공간을 제공한다.

가상 메모리의 핵심 개념

🔹 논리적 주소 (Logical Address) vs 물리적 주소 (Physical Address)

  • 논리적 주소: 프로세스가 사용하는 가상의 주소

  • 물리적 주소: 실제 RAM에서 사용하는 주소
    운영체제는 논리적 주소를 물리적 주소로 변환하여 프로그램이 실행될 수 있도록 한다.


프로세스의 메모리 구조

메모리 영역설명
코드(Code) 영역프로그램 명령어 저장
데이터(Data) 영역전역 변수와 정적 변수 저장
힙(Heap) 영역동적 메모리 할당 공간
스택(Stack) 영역지역 변수, 함수 호출 정보 저장

📌 비유:

  • 코드는 요리 레시피 📜

  • 데이터는 미리 준비된 재료 🥕

  • 힙은 요리하면서 추가할 수 있는 재료 🎭

  • 스택은 조리 과정에서 필요한 임시 도구 🍳


페이지 교체(Page Replacement)

📌 메모리가 부족하면, 사용하지 않는 페이지를 내보내고 새로운 페이지를 불러오는 과정이다.

알고리즘설명
FIFO (First In First Out)가장 먼저 들어온 페이지를 먼저 내보냄
LRU (Least Recently Used)가장 오랫동안 사용되지 않은 페이지를 제거
Optimal Algorithm앞으로 가장 오랫동안 사용되지 않을 페이지를 제거

📌 비유:

  • FIFO: 냉장고에서 가장 오래된 음식을 먼저 버림

  • LRU: 최근에 사용하지 않은 재료부터 버림

  • Optimal: 앞으로 필요 없는 재료를 먼저 버림


핵심 정리

메모리 관리: 제한된 메모리를 효율적으로 나눠 사용하는 것
가상 메모리: 실제 RAM보다 더 큰 공간을 제공하는 개념
메모리 할당: 연속 할당 vs 불연속 할당
페이지 교체: FIFO, LRU, Optimal 알고리즘 사용

운영체제는 효율적인 메모리 관리를 통해 프로그램이 원활하게 실행되도록 돕는 역할을 한다.

0
Subscribe to my newsletter

Read articles from KiwiChip directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

KiwiChip
KiwiChip

I'm currently learning Python and studying RAG (Retrieval-Augmented Generation).