CH14-1) 가상 메모리 - 1

Jobmania·2023년 8월 6일
0

운영체제

목록 보기
11/13
post-thumbnail

운영 체제의 가장 핵심적 역할은

  • 프로세스 관리
  • 메모리 관리
    성능과 아주 관련이 큼.

연속 메모리 할당

  • 연속 메모리 할당은 프로세스에 연속적인 메모리 공간을 할당.
  • 이러한 방식에 대한 고려사항과 잠재적인 문제사항들이 있다.

1. 스와핑(swapping)

  • 현재 사용하지 않는 프로세스들을 보조기억장치의 일부 영역으로 쫓아내고 생긴 빈 공간에 새 프로세스를 적재하는 것!

보조기억 장치 스왑영역에서 보관이 되며
프로세스가 메모리에서 나가서 스왑영역에 보관되면 스왑 아웃
반대로 스왑영역에서 나가고 메모리에 적재된다면 스왑 인 이다.

그렇다면 스와핑을 적용하는 이유는?

  • 프로세스들이 요구하는 메모리 공간 크기 > 실제 메모리 크기

스왑영역 크기 확인 : 윈도우 경우, 명령프롬포트에서 systeminfo

윈도우

  • 실제 메모리는 8GB * 2 를 사용하기 때무넹 16GB
  • 가상메모리 크기는 22GB 이다.

2. 메모리 할당

  • 프로세스는 메모리 내의 빈 공간에 할당되어야 한다.
  • 빈공간이 여러개 있다면..??

그래서 메모리 공간에 프로세스를 연속적으로 할당하는 방식은
최초 적합, 최적 적합, 최악 적합 세가지 방식이 있다.

최초 적합(first fit)

  • 운영체제가 메모리 내의 빈공간을 순서대로 검색하다 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 바로 배치하는 방식
  • 장점은 검색 최소화, 빠른 할당.

최적 적합(best fit)

  • 운영체제가 빈 공간을 모두 검색해본 뒤 적재할 프로세스가 적합한 가장 작은 메모리 공간에 할당

최악 적합(worst fit)

  • 운영체제가 빈공간 모두 검색 후, 적재 가능한 가장 큰 메모리 공간에 할당

연속 메모리 할당은 비효율적인 방식이다.

왜냐? 그이유는 외부 단편화 때문이다

3. 외부 단편화(external fragmentation)

  • 프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상
  • 사용자 영역 200MB
  • Process A 50MB,
  • Process B 30MB,
  • Process C 100MB,
  • Process D 20MB

이상황 에서 Process B 와 Process D가 작업이 끝났다면

이 상황에서는 50MB인 프로세스 할당이 불가능하다.
즉, 프로세스들이 실행되고 종료되면서 메모리 사이사이에 빈공간들이 발생해서, 메모리가 낭비되고 만다. 즉 외부 단편화 현상이 발생한다.

외부 단편화 예시


해결방법 1. 메모리 압축(compaction)

  • 메모리 조각 모음 이라고도 한다.
  • 여기저기 흩어져 있는 빈 공간들을 하나로 모으는 방식,
  • 프로세스를 적당히 재배치시켜 흩어져 있는 작은 공간을 합쳐 큰 빈공간으로 만드는 방식
  • 부작용은 하나로 합치는 과정에서 오버헤드가 발생하고, 프로세스들의 작업이 지연된다.

    메모리 조각모음을 하는동안에
    시스템은 하던 일을 중지해야하고,
    메모리를 옮기는 작업은 많은 오버헤드를 야기,
    또한 프로세스를 옮기는 최적화된 방법이나, 오버헤드를 최소화하게 압축할 수 있는 명확한 방법을 결정하기 어려움.

그래서 가장 대중화된 방법은 다음과 같다.

해결방법 2. 가상 메모리 기법, 페이징

다음글에 작성

profile
HelloWorld에서 RealWorld로

0개의 댓글