[운영체제] Chapter7. 메모리 관리

DongHyeon·2022년 8월 2일
0

운영체제

목록 보기
7/8

Chapter7. 메모리 관리


1 메모리 관리의 개요


1-1 메모리 관리의 개념과 정책

  • 메모리는 프로그램을 실행하는 중요한 작업 공간
  • 한정된 메모리를 효율적으로 관리하는 방법이 필요
  • 메모리 관리의 주요 정책
    • 적재 정책
      • 디스크에서 메모리로 프로세스를 반입할 시기를 결정하는 것 요구 적재와 예상 적재 두 가지 방법이 있음
    • 배치 정책
      • 디스크에서 반입한 프로세스를 메모리 어느 위치에 저장할 것인지 결정
      • 최초 적합, 최적 적합, 최악 적합 등이 있음
    • 대치 정책
      • 메모리가 충분하지 않을 때 현재 메모리에 적재된 프로세스 중 제거할 프로세스를 결정하는 교체 방법
      • 선입선출 대치 알고리즘, 최근 최소 사용 대치 알고리즘 등 사용

1-2 메모리의 구조와 매핑

  • 명령어를 실행하는 과정에서 메모리는 주소의 연속으로 두 가지 관점에서 해석 가능

    • 논리적 관점의 논리적 주소 : 목적 코드가 저장된 공간과 프로그램에서 사용하는 자료구조 등이 해당

    • 물리적 관점의 물리적 주소 : 실제 주소, 메모리 칩이나 디스크 공간에서 만듦

  • 메모리 관리장치에서 논리적 주소와 물리적 주소의 변환이 이루어짐

  • 프로세스의 논리적 주소에 대응하는 물리적 주소를 알아야 프로세서가 프로세스를 실행하는데, 이 두 주소를 연결(매핑) 해주는 작업을 바인딩 이라 한다.

  • 바인딩은 시점에 따라 컴파일 시간, 적재 시간, 실행 시간으로 구분

    • 컴파일 시간
      • 프로세스가 메모리에 적재될 위치를 컴파일 과정에서 알 수 있다면 컴파일러는 물리적 주소를 생성한다.
    • 적재 시간
      • 프로세스를 메모리의 어디에 적재해야 할 지 컴파일 과정에 알려 주지 않으면 컴파일러는 대체 가능한 상대 주소를 생성
    • 실행 시간
      • 한 프로그램이 동일한 장소에서 작동한다면 적재 시간 과정에서 바인딩 가능하지만 프로세스 실행 도중 메모리의 한 세그먼트에서 다른 세그먼트로 이동한다면 바인딩은 수행 시간까지 연기 된다.
      • 현재 범용 운영체제 대부분은 실행 시간에 바인딩하는 이 방법을 사용

1-3 메모리 관리 용어

  • 동적 적재

    • 바인딩을 최대한 늦춰 실행 직전에 주소를 확정하여 메모리를 효율적으로 운영하는 방법
    • 모든 루틴을 메모리에 적재하지 않고 교체 가능한 형태로 디스크에 저장하여, 메인 프로그램만 먼저 메모리에 적재하여 수행
  • 중첩(오버레이)

    • 실행하려는 프로그램이 메모리보다 클 때는 당장 필요하지 않은 프로그램의 일부는 중첩으로 설정 가능
    • 운영체제 영역과 메모리의 일부 영역에는 프로그램 실행에 필요한 명령어와 데이터만 저장하고, 나머지 중첩 영역에는 필요할 때 호출하여 적재하는 방법
  • 스와핑

    • 운영체제가 항상 우선순위가 높은 프로세스 공간을 만들 수 있어 시스템에 유연성 제공
  • 메모리 적재 방법

    • 연속 메모리 적재
    • 비연속 메모리 적재

2 연속 메모리 할당


2-1 단일 프로그래밍 환경에서 연속 메모리 할당

  • 한 번에 하나의 프로그램만 사용 가능하며 메모리의 효율성이 떨어짐
  • 메모리보다 큰 프로그램은 수행할 수 없어 스와핑을 사용하여 제한된 메모리를 확장
  • 자원 낭비가 심하고 프로세스 스와핑 비용이 많이 든다.

2-2 다중 프로그래밍 환경에서 연속 메모리 할당

  • 두 가지 방법으로 분류
    • 고정 분할 방법
    • 가변 분할 방법

2-3 다중 프로그래밍 환경의 버디 시스템

  • 고정 분할 방법과 동적 분할 방법의 단편화 현상을 해결하는 방법
  • 최근에는 페이징이나 세그먼테이션을 활용한 가상 메모리를 선호하고, 유닉스의 커널 메모리 할당이나 병렬 처리 시스템에서만 응용되고 있음

3 분산 메모리 할당1 : 페이징


3-1 페이징의 개념

  • 작업을 크기가 동일한 페이지로 나눠 처리하는 방법
  • 즉, 프로세스를 크기가 동일한 페이지로 나누고, 메인 메모리도 프레임이라는 고정 크기 블록으로 나눠 이 프레임에 페이지를 적재하는 방법
  • 메모리를 효율적으로 사용할 수 있고, 프레임 간 외부 단편화가 발생하지 않음
  • 내부 단편화의 발생 가능성이 있고, 페이지 관리 부담이 큼

3-2 공유 페이지

  • 페이징 시스템의 장점 중 하나는 시분할 환경에서 중요한 공통 코드를 공유할 수 있다는 것
  • 여러 프로세스가 메모리를 공유할 수 있음

4 분산 메모리 할당2 : 세그먼테이션


4-1 세그먼테이션의 개념

  • 프로세스 관점을 지우너하여 메모리를 킉가 변할 수 있는 세그먼트로 나눈다
  • 서브루틴, 프로시저, 함수나 모듈 등으로 세그먼트를 구성, 각 세그먼트는 연관된 기능을 수행하는 하나의 모듈 프로그램으로 생각하며, 메모리의 연속된 위치에서 구성하되 서로 인접할 필요는 없다.
  • 사용자 관점을 지원하는 비연속 메모리 할당 방법으로, 논리적 영역을 세그먼트의 집합으로 인식
  • 세그먼트 메모리 관리의 장점과 단점
    • 장점
      • 융통성 있는 보호와 내부 단편화가 없다.
      • 공유 기능이 간단하ㅕㅁ, 작은 세그먼트 테이블은 메모리관리장치에 적합하다.
      • 미사용 메모리 할당을 피하면서 전체 프로그램보다 세그먼트 대치가 쉬워 오버헤드가 적다
    • 단점
      • 세그먼트는 가변 길이를 가지며, 클 수 있으므로 외부 단편화가 발생
      • 충분히 큰 메모리 영역을 찾을 수 있으나, 메모리 관리 알고리즘이 비싸다.
      • 크기가 동일하지 않은 세그먼트는 스와핑에 적합하지 않다.

0개의 댓글