운영체제 | Swap Disk

성수당·2025년 9월 26일

운영체제

목록 보기
28/31
post-thumbnail

🥔 Swap Disk란?

운영체제에서 Swap Disk물리 메모리(RAM)가 부족할 때, 일부 메모리 페이지를 임시로 저장하기 위한 디스크 공간이다. 일반적으로 가상 메모리 시스템에서 사용되며, 실제 RAM처럼 데이터를 저장하지만, 속도는 느리고 용량은 더 크다.

“메모리가 부족하면 일부 데이터를 디스크로 밀어낸다”는 개념이 바로 스와핑(Swapping) 이다.

🥔 스왑(Swap)의 필요성

운영체제는 각 프로세스에 독립된 가상 메모리 공간을 제공해야 하며, 이는 실제 RAM보다 훨씬 큰 주소 공간일 수 있다. 하지만 실제 메모리는 제한적이기 때문에, 다음과 같은 경우 스왑이 필요하다:

  • 여러 프로그램이 동시에 실행될 때 RAM 부족
  • 프로세스가 일시적으로 많은 메모리를 요구할 때
  • 백그라운드에서 대기 중인 페이지를 잠시 대체할 필요가 있을 때

🥔 Swap-in / Swap-out

동작설명
Swap-out현재 메모리에서 사용되지 않는 페이지를 Swap Disk로 이동
Swap-in필요한 페이지가 메모리에 없으면 다시 Swap Disk에서 불러옴 (Page Fault)

Swap-out과 Swap-in은 Page Replacement Policy에 의해 결정되며, 스왑 공간은 항상 디스크 I/O 비용이 크기 때문에 최소화되어야 한다.

🥔 Anonymous Page와 Swap Disk

Anonymous Page는 backing file이 없기 때문에, 페이지가 교체될 경우 무조건 Swap Disk로 저장해야 한다.

반면, File-backed Page는 원본 파일로부터 다시 읽어오면 되므로 스왑이 필요하지 않을 수도 있다.

🥔 Swap Disk 구조 (예: Pintos)

운영체제 구현에서는 스왑 디스크를 다음과 같이 구성한다:

  • 스왑 디스크는 섹터 단위로 나뉘어 있고,
  • 각 스왑 슬롯은 한 페이지 크기만큼의 연속된 섹터로 구성됨
  • Bitmap을 사용해 사용 가능한 스왑 슬롯을 추적함

예시 구조체:

#define SECTORS_PER_PAGE (PGSIZE / DISK_SECTOR_SIZE)

struct swap_table {
  struct bitmap *swap_bitmap;  // 사용 가능 여부
  struct disk *swap_disk;      // 스왑 디스크 장치
};

🥔 스왑 흐름 (Swap-out → Swap-in)

[1] 페이지가 메모리에서 제거될 필요가 있음 (교체 대상)
 ↓
[2] 스왑 디스크에 빈 슬롯 확보 (bitmap에서 비트 확인)
 ↓
[3] 페이지를 디스크에 저장 (disk_write)
 ↓
[4] 페이지 테이블에서 해당 페이지 제거
 ↓
[5] 나중에 다시 필요 시 → Page Fault 발생
 ↓
[6] 디스크에서 페이지를 다시 읽어와 Swap-in (disk_read)
 ↓
[7] 프레임 재할당 후 페이지 테이블에 등록

🥔 Swap의 단점과 주의점

  • 느림: 디스크는 RAM보다 수백 배 느리다.
  • 스왑 병목: I/O 부하로 인해 전체 시스템 성능이 저하될 수 있다.
  • OOM (Out-of-Memory): Swap이 꽉 차거나 할당 불가능하면 커널이 프로세스를 종료(OOM Killer)

따라서 현대 시스템에서는 충분한 RAM 확보와 함께, Swap은 최후의 수단으로 활용됩니다.

🥔 Linux에서의 Swap 관련 명령어

명령어설명
swapon -s현재 활성화된 스왑 공간 확인
free -h메모리/스왑 사용량 확인
sudo swapoff -a모든 스왑 비활성화
sudo swapon -a모든 스왑 활성화
dd if=/dev/zero of=/swapfile bs=1M count=1024스왑 파일 생성 (예: 1GB)
mkswap /swapfile스왑 포맷
swapon /swapfile스왑 등록

🥔 마무리 요약

  • Swap Disk는 RAM이 부족할 때 페이지를 임시 저장하는 디스크 공간이다.
  • Anonymous Page, Stack/Heap 등은 스왑 공간이 필수적이다.
  • Swap은 성능 저하 요인이며, 가능한 최소화해야 한다.
  • 운영체제 구현(Pintos 등)에서는 bitmap + sector 단위 관리로 구현한다.
profile
말하는 감자🥔

0개의 댓글