Skip to content
난이도 문제은행 6

기억장치 관리와 가상 기억장치 ​

주기억장치는 크기가 한정되어 있어 여러 프로그램을 어디에, 어떤 단위로 올릴지 운영체제가 정해야 한다. 실기 시험에서는 빈 영역 표를 주고 최초 적합(first fit)·최적 적합(best fit)·최악 적합(worst fit)이 고르는 영역 번호를 묻는다. 또 페이징(paging)과 세그먼테이션(segmentation), 지역성(locality)·워킹 셋(working set)·스래싱(thrashing)의 정의도 단답형으로 묻는다.

배치 전략 ​

배치 전략(placement strategy)은 새로 들어오는 프로그램을 주기억장치의 빈 영역 중 어디에 놓을지 정하는 규칙이다. 아무 데나 넣으면 작은 빈틈이 쌓여 큰 프로그램이 못 들어간다.

전략고르는 영역
최초 적합(first fit)들어갈 수 있는 빈 영역 중 처음 만나는 곳
최적 적합(best fit)들어간 뒤 남는 공간이 가장 작은 곳
최악 적합(worst fit)들어간 뒤 남는 공간이 가장 큰 곳

예를 들어 주소가 낮은 쪽부터 빈 영역이 A 25K, B 8K, C 14K, D 40K 순서로 있고 12K 프로그램을 넣는다고 하자. 먼저 12K보다 작은 B를 후보에서 뺀다. 최초 적합은 처음 만나는 A, 최적 적합은 2K가 남는 C, 최악 적합은 28K가 남는 D를 고른다.

단편화 ​

단편화(fragmentation)는 기억장치에 빈 공간이 있는데도 쓸 수 없게 낭비되는 현상이다. 어디에 낭비가 생기는지에 따라 두 가지로 나눈다.

  • 내부 단편화(internal fragmentation): 할당한 영역보다 프로그램이 작아 영역 안쪽에 남는 공간이다. 4KB 페이지로 10KB 프로그램을 올리면 3페이지(12KB)가 필요하고 2KB가 남는다. 고정 크기로 나누는 페이징에서 생긴다.
  • 외부 단편화(external fragmentation): 빈 영역들이 흩어져 있어 합하면 충분한데도 한 덩어리로는 부족해 못 쓰는 상태다. 가변 크기로 나누는 세그먼테이션에서 생긴다.

페이징과 세그먼테이션 ​

가상 기억장치(virtual memory)는 보조기억장치를 주기억장치처럼 써서, 실제 메모리보다 큰 프로그램도 필요한 부분만 올려 실행하는 방식이다. 프로그램을 나누는 단위에 따라 두 기법이 있다.

구분페이징(paging)세그먼테이션(segmentation)
나누는 단위같은 크기의 페이지코드·데이터·스택 같은 논리 단위인 세그먼트
단편화내부 단편화외부 단편화

주기억장치를 페이지와 같은 크기로 나눈 칸을 페이지 프레임(page frame)이라 한다. 페이징에서 논리 주소는 페이지 번호 = 주소 ÷ 페이지 크기의 몫, 오프셋 = 나머지로 나뉜다. 페이지 크기가 1,024바이트이고 논리 주소가 3,000이면 페이지 번호 2, 오프셋 952다. CS 쪽 문서는 세그먼테이션을 '세그멘테이션'으로 적는다.

지역성·워킹 셋·스래싱 ​

지역성(locality)은 프로세스가 실행되는 동안 일부 페이지만 집중적으로 참조하는 성질이다. 시험에서는 국부성·구역성이라고도 부른다. 가상 기억장치가 적은 메모리로도 잘 돌아가는 근거이고, 아래 워킹 셋 이론도 이 성질에서 나왔다.

  • 시간 지역성(temporal locality), 시간 구역성: 방금 참조한 곳을 곧 다시 참조한다. 반복문이 예다.
  • 공간 지역성(spatial locality), 공간 구역성: 참조한 곳의 근처를 이어서 참조한다. 배열 순회가 예다.

워킹 셋(working set)은 지금 시점에서 되돌아본 최근 일정 구간 동안 프로세스가 참조한 페이지들의 모임이다. 1968년 데닝(Denning)이 정의했다. 지역성 때문에 이 모임은 곧 쓸 페이지와 거의 겹치므로, 주기억장치에 붙잡아 두면 페이지 부재(page fault)가 줄어 실행이 안정된다. CS 쪽 문서는 이를 '작업 집합'이라 부른다.

스래싱(thrashing)은 페이지 부재가 꼬리를 물어 프로그램을 실행하는 시간보다 페이지를 디스크와 주고받는 시간이 더 길어지는 현상이다. 프로세스를 너무 많이 올려 각자 받는 프레임이 워킹 셋보다 작아지면 생기고, 이때 프로세스를 더 올리면 CPU 이용률이 오히려 떨어진다. 워킹 셋을 보장하거나 실행 중인 프로세스 수를 줄이면 막을 수 있다.

시험 포인트 ​

  • 배치 문제는 요청보다 작은 영역과 사용 중 영역을 먼저 지우고 남은 후보에서 고른다.
  • 페이징 → 고정 크기 → 내부 단편화. 세그먼테이션 → 논리 단위·가변 크기 → 외부 단편화.
  • "최근 일정 구간에 참조한 페이지 모임, 상주시키면 부재 감소" → 워킹 셋. "교체 시간 > 처리 시간" → 스래싱.

관련 문서