운영체제 9장 - 메모리 관리

m0d0ri205·6일 전
0
post-thumbnail

9장 메모리 관리 총정리

1. 메모리 관리의 개념

  • 목적:
    • 메모리를 효율적으로 사용하여 다수의 프로세스를 동시 실행.
    • 프로세스 간 충돌 방지, 메모리 공유, 동적 할당 지원.
  • 메모리 관리의 요구사항:
    1. 재배치 (Relocation):
      • 프로세스가 메모리 어디에 로드되든 실행 가능해야 함.
    2. 보호 (Protection):
      • 프로세스 간의 메모리 접근 제한.
    3. 공유 (Sharing):
      • 다중 프로세스가 특정 메모리 영역을 안전하게 공유.
    4. 논리적 구성:
      • 프로그램을 모듈 단위로 관리.
    5. 물리적 구성:
      • 주기억장치와 보조기억장치 간 효율적 데이터 이동.

2. 메모리 관리 기법

2.1 연속 메모리 관리

  • 고정 분할 (Fixed Partitioning):
    • 메모리를 고정된 크기로 나눔.
    • 문제점: 내부 단편화 발생, 유연성 부족.
  • 동적 분할 (Dynamic Partitioning):
    • 프로세스의 크기에 맞춰 가변 크기로 메모리 할당.
    • 문제점: 외부 단편화 발생 → 압축(Compaction) 필요.
    • 배치 알고리즘:
      1. 최적 적합 (Best-Fit): 가장 작은 적합한 공간 선택.
      2. 최초 적합 (First-Fit): 처음으로 맞는 공간 선택.
      3. 순환 적합 (Next-Fit): 마지막 검색 위치 이후에서 탐색.

2.2 불연속 메모리 관리

페이징 (Paging)

  • 메모리를 고정 크기의 페이지로 나누고, 동일 크기의 프레임에 배치.
  • 특징:
    • 외부 단편화 제거.
    • 내부 단편화 발생 가능.
  • 주소 변환:
    • 논리 주소 = 페이지 번호 + 오프셋.
    • 페이지 번호를 통해 프레임 번호를 찾고, 물리 주소 계산.
  • :
    • 2700바이트 프로세스를 페이지 크기 750바이트로 나눔 → 4개의 페이지 생성.
    • 페이지 테이블에 따라 프레임 번호와 매핑.

세그먼테이션 (Segmentation)

  • 메모리를 가변 크기의 세그먼트로 나누고, 세그먼트 단위로 관리.
  • 특징:
    • 논리적 프로그램 구조를 반영.
    • 외부 단편화 발생 가능.
  • 주소 변환:
    • 논리 주소 = 세그먼트 번호 + 오프셋.
    • 세그먼트 테이블을 사용해 시작 주소를 찾고, 오프셋을 더해 물리 주소 계산.
  • :
    • 논리 주소 0001001011110000 → 세그먼트 번호: 1, 오프셋: 752.
    • 세그먼트 1의 시작 주소(8192)에 오프셋(752)을 더해 물리 주소: 0010001100010000.

2.3 버디 시스템

  • 메모리를 2의 거듭제곱 크기로 분할.
  • 할당 후 반환 시, 인접한 "버디" 블록과 병합하여 큰 블록으로 통합.
  • 특징:
    • 외부 단편화 제거.
    • 내부 단편화는 일부 발생.
  • :
    • 요청 크기에 따라 128KB, 256KB 등 적합한 크기의 블록 할당.
    • 반환 시, 동일 크기의 인접 블록과 병합하여 더 큰 블록 생성.

3. 재배치(Relocation)

  • 프로세스가 메모리에 로드될 때 논리 주소를 물리 주소로 변환.
  • 주소 유형:
    1. 논리 주소: 프로그램이 사용하는 가상 주소.
    2. 상대 주소: 베이스 레지스터 기준으로 계산된 주소.
    3. 물리 주소: 실제 메모리 주소.
  • 구조:
    • 베이스 레지스터: 세그먼트 시작 주소 저장.
    • 경계 레지스터: 세그먼트 크기 저장.
    • 주소가 경계를 벗어나면 보호 기능 동작.

4. 페이징과 세그먼테이션 비교

항목페이징 (Paging)세그먼테이션 (Segmentation)
분할 단위고정 크기의 페이지가변 크기의 세그먼트
단편화내부 단편화 발생 가능외부 단편화 발생 가능
주소 구성페이지 번호 + 오프셋세그먼트 번호 + 오프셋
장점외부 단편화 없음, 메모리 활용도 높음논리적 프로그램 구조 반영 가능
단점내부 단편화, 페이지 테이블 관리외부 단편화, 주소 변환 복잡성

5. 질문 정리

  1. 버디 시스템에서 내부 단편화 발생 문제:

    • 버디 시스템은 외부 단편화를 완전히 제거하지만, 고정 크기 블록 사용으로 내부 단편화가 발생할 수 있음.
    • 해결 방안: 블록 크기를 점진적으로 병합해 공간 활용성을 높임.
  2. 페이징과 세그먼테이션의 주소 변환:

    • 페이징: 논리 주소 → 페이지 번호, 오프셋 → 물리 주소 계산.
    • 세그먼테이션: 논리 주소 → 세그먼트 번호, 오프셋 → 시작 주소와 오프셋 더해 물리 주소 계산.
    • 예: 논리 주소 0001001011110000에서 계산된 물리 주소가 PPT 결과와 일치.
  3. 버디 시스템의 병합 과정:

    • 메모리 반환 시 동일 크기의 인접 블록(버디)을 병합하여 더 큰 블록으로 통합.
  4. 재배치의 동작 원리:

    • 논리 주소가 베이스 레지스터와 경계 레지스터를 통해 물리 주소로 변환.
    • 주소 변환 과정에서 보호 기능 제공.

6. 결론

9장 메모리 관리는 운영체제에서 중요한 역할을 담당하며, 효율적인 메모리 사용과 프로세스 보호를 보장합니다. 페이징, 세그먼테이션, 버디 시스템 등 다양한 기법을 이해하고 각각의 장단점을 분석하면 실제 문제를 더 잘 해결할 수 있습니다.

profile
말하는 감자중.....

0개의 댓글