본문 바로가기
CS/OS

메모리 스와핑 [혼공컴구]

by 블로블로글 2024. 1. 31.

스와핑

  - 대기 상태이거나, 오래 사용하지 않은 프로세스글을 임시로 보조기억장치 일부 영역으로 쫓아내고, 그렇게 해서 생긴 메모리 상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식

  - 스왑 영역

    - 프로세스들이 쫓겨나는 보조기억장치의 일부 영역

  - 스왑 아웃

    - 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것

  - 스왑 인

    - 스왑 영역에 있던 프로세스가 다시 메모리로 돌아오는 것

  - 스와핑을 이용하면 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 큰 경우에도 프로세스들을 동시에 실행 가능

 

메모리 할당

  - 최초 적합

    - 메모리 내의 빈 공간을 순서대로 검색하다가 적재할 수있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식

    - 프로세스가 적재될 수 있는 공간을 발견하는 즉시 메모리를 할당하는 방식이므로 검색을 최소화하며 결과적으로 빠른 할당이 가능

  - 최적 적합

    - 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치

    - 메모리 공간을 효율적으로 사용하여 내부 단편화를 최소화할 수 있음

    - 메모리 할당에 대한 계산 비용이 높아져 시스템 성능에 부담이 될 수 있음

  - 최악 적합

    - 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치

    - 가장 큰 빈 메모리 블록을 사용하기 때문에, 앞으로의 메모리 할당에 대해 유연성을 제공

    - 큰 빈 메모리 블럭을 나눔으로써 발생하는 내부 단편화 문제가 심해질 수 있음

 

외부 단편화

  - 연속 메모리 할당 방식에서는 프로세스들이 실행되고 종료되기를 반복하며 메모리 사이 사이에 빈 공간들이 발생

  - 프로세스 바깥에 생기는 이러한 빈 공간들은 분명 빈 공간이지만 그 공간보다 큰 프로세스를 적재하기 어려운상황을 초래하여 결국 메모리를 낭비하는 현상

  - 해결 방법

    - 메모리 압축

      - 메모리 내에 저장된 프로세스를 적당히 재배치시켜 여기저기 흩어져 있는 작은 빈 공간들을 하나의 큰 빈공간으로 만드는 방식

      - 단점

        - 작은 빈 공간들을 하나로 모으는 동안 시스템은 하던 일을 중지해야함

        - 메모리에 있는 내용을 옮기는 것은 많은 오버헤드를 야기함

        - 어떤 프로세스를 어떻게 움직여야 오버헤드를 최소화할 수 있을지에 대한 명확한 방법을 결정하기 어려움

 

내부 단편화

  - 할당된 공간에 비해 프로세스의 크기가 작아 메모리 공간 중 일부를 사용하지 못하여 메모리가 낭비되는 현상

  - 해결 방법

    - 메모리 할당이 너무 크게되면 그만큼 내부 단편화가 발생될 확률이 높아짐

    - 내부 단편화가 발생하지 않도록 메모리 할당을 잘 조정해서 해주어야함

    - 단점

      - 메모리 관리 복잡성이 증가