컴퓨터과학 챕터 2 약 4분

운영체제 — 2강: 메모리 관리와 파일 시스템

O
OIYO 편집부 기여자
2/3

메모리 관리 개요

메모리 관리의 목적:
→ 여러 프로세스가 메모리를 효율·안전하게 공유
→ 메모리 보호: 다른 프로세스 영역 침범 방지
→ 메모리 추상화: 물리 메모리를 논리적으로 추상화

메모리 계층:
레지스터 (가장 빠름, 가장 작음)
→ 캐시 (L1, L2, L3)
→ 주기억장치 (RAM): 수 GB
→ 보조기억장치 (SSD/HDD): 수 TB (가장 느림, 가장 큼)

주소 공간:
→ 물리 주소: 실제 메모리 주소
→ 논리(가상) 주소: 프로세스가 보는 주소
→ MMU (Memory Management Unit): 논리→물리 변환

연속 메모리 할당:
→ 고정 분할: 메모리를 고정 크기로 나눔
  - 내부 단편화: 할당된 공간이 남음
→ 가변 분할: 필요한 크기만 할당
  - 외부 단편화: 비연속 빈 공간
  - 압축(Compaction)으로 해결 가능

페이징 (Paging)

페이징의 개념:
→ 메모리를 고정 크기 페이지 프레임으로 분할
→ 프로세스를 동일 크기 페이지로 분할
→ 비연속 할당 가능 → 외부 단편화 해결

페이지 테이블:
→ 논리 페이지 번호 → 물리 프레임 번호 매핑
→ 각 프로세스마다 보유
→ PCB에 기반 주소 저장

주소 변환:
→ 논리 주소 = 페이지 번호(p) + 오프셋(d)
→ 페이지 테이블에서 p → 프레임 번호(f)
→ 물리 주소 = f × 페이지크기 + d

TLB (Translation Lookaside Buffer):
→ 페이지 테이블의 캐시 (하드웨어)
→ TLB 히트: 빠른 주소 변환
→ TLB 미스: 페이지 테이블 접근 (느림)
→ 히트율이 높아야 성능 유리

단점: 내부 단편화 (마지막 페이지)

세그멘테이션 (Segmentation):
→ 프로세스를 논리적 단위로 분할 (코드, 스택, 힙)
→ 세그먼트 크기가 가변적
→ 외부 단편화 발생 가능
→ 실제로는 페이징+세그멘테이션 혼합 사용

가상 메모리

가상 메모리의 개념:
→ 프로세스 전체가 메모리에 없어도 실행 가능
→ 필요한 페이지만 메모리에 적재 (요구 페이징)
→ 메모리보다 큰 프로그램도 실행 가능

페이지 폴트 (Page Fault):
→ 참조한 페이지가 메모리에 없을 때 발생
→ 처리 과정:
  1. 트랩 발생 → OS 개입
  2. 디스크에서 해당 페이지 찾기
  3. 빈 프레임에 적재
  4. 페이지 테이블 갱신
  5. 프로세스 재개

페이지 교체 알고리즘:
→ 적재할 빈 프레임 없을 때 희생 페이지 선택

FIFO (First-In First-Out):
→ 가장 먼저 들어온 페이지 교체
→ 구현 쉬움
→ 벨라디 이상 현상: 프레임 수 늘었는데 폴트 증가

LRU (Least Recently Used):
→ 가장 오래 사용 안 된 페이지 교체
→ 참조 지역성 원리 기반 (좋은 성능)
→ 구현 복잡 (스택, 카운터)

최적 알고리즘 (Optimal / OPT):
→ 앞으로 가장 오래 쓰이지 않을 페이지 교체
→ 실제 구현 불가 (미래 예측 필요)
→ 다른 알고리즘 성능 비교 기준

스래싱 (Thrashing):
→ 페이지 폴트가 너무 많아 실제 작업보다
  페이지 교체에 시간 대부분 소요
→ 해결: 프로세스 수 줄이기, 워킹 셋 모델

파일 시스템

파일 시스템의 역할:
→ 보조기억장치에 데이터를 조직·관리
→ 파일명, 디렉토리, 접근 제어 제공

파일의 개념:
→ 논리적으로 관련된 정보의 집합
→ 속성: 이름, 유형, 크기, 생성일, 접근권한

파일 접근 방법:
→ 순차 접근: 처음부터 순서대로
→ 직접 접근: 블록 번호로 바로 이동
→ 인덱스 접근: 인덱스를 통한 접근

디렉토리 구조:
→ 1단계: 모든 파일이 하나의 디렉토리 (단순)
→ 2단계: 사용자별 디렉토리
→트리 구조: 계층적 (현재 가장 일반적)
→ 비순환 그래프: 공유 파일 가능

파일 할당 방식:

연속 할당:
→ 파일을 연속된 블록에 저장
→ 빠른 접근 but 외부 단편화

연결 할당:
→ 각 블록이 다음 블록 포인터 보유
→ 내부 단편화 없음 but 직접 접근 느림

인덱스 할당 (Unix inode):
→ 인덱스 블록에 모든 포인터 저장
→ 직접 접근 가능, 크기 제한 있음

디스크 스케줄링

디스크 접근 시간:
→ 탐색 시간 (Seek Time): 헤드가 트랙으로 이동
→ 회전 대기 시간 (Rotational Latency): 섹터 올 때까지 대기
→ 전송 시간 (Transfer Time): 실제 데이터 전송
→ 탐색 시간이 가장 큰 비중

디스크 스케줄링 알고리즘:

FCFS (First Come First Served):
→ 요청 순서대로 처리
→ 공평 but 비효율 (왔다갔다)

SSTF (Shortest Seek Time First):
→ 현재 위치에서 가장 가까운 요청 처리
→ 기아(Starvation) 문제

SCAN (엘리베이터 알고리즘):
→ 한 방향으로 끝까지 가면서 처리 후 방향 전환
→ 공평성 + 효율 균형

C-SCAN (Circular SCAN):
→ 한 방향으로만 서비스, 끝에서 바로 처음으로
→ SCAN보다 공평

LOOK / C-LOOK:
→ SCAN/C-SCAN의 변형: 실제 끝까지 가지 않고 마지막 요청까지만
→ 불필요한 이동 감소

SSD의 등장:
→ 헤드 이동 없음 → 탐색 시간 거의 0
→ 디스크 스케줄링 중요도 감소
→ 플래시 메모리 특성상 FTL(Flash Translation Layer)이 중요

자주 묻는 질문

Q. 가상 메모리와 스왑 공간의 차이는 무엇인가요? A. 가상 메모리는 개념이고, 스왑 공간은 그것을 구현하는 디스크 공간입니다. 가상 메모리 기법에서 메모리에 올라오지 못한 페이지는 디스크의 스왑 공간(swap space)에 저장됩니다. 스왑 공간은 RAM처럼 사용되지만 훨씬 느립니다. 많은 스왑이 발생하면 시스템이 느려지며 이것이 심해진 상태가 스래싱입니다.

Q. LRU 알고리즘이 이론적으로 좋다는데 왜 OS에서 정확히 구현하지 않나요? A. 정확한 LRU를 구현하려면 모든 메모리 참조마다 타임스탬프를 갱신해야 하는데, 이는 하드웨어 지원 없이는 큰 오버헤드를 발생시킵니다. 그래서 실제 OS(Linux 등)는 LRU를 근사한 알고리즘을 사용합니다. 예를 들어 ‘참조 비트’를 이용한 클럭 알고리즘(NRU에 근사)이 대표적입니다.

O

OIYO 편집부

Content Editor

지식 인큐베이터이자 전문 콘텐츠 크리에이터. 경영, 경제, 법률 및 실생활에 유용한 실무/자격증 중심의 깊이 있는 정보를 연구하고 공유합니다.