-
연속 메모리 할당운영체제/메모리 관리 전략 2018. 2. 4. 15:51
주 메모리는 사용자 프로세스들도 수용해야 하고 효율적으로 관리되어야 한다.
메모리는 일반적으로 두 개의 부분으로 나누어 지는데 하나는 메모리에 상주하는 운영체제를 위한 것이고 하나는 사용자 프로세스를 위한 것이다.
연속 메모리 할당 시스템에서 각 프로세스는 연속된 하나의 메모리 영역을 차지하게 된다.
메모리 보호
프로세스가 자신이 소유하지 않은 메모리를 접근할 수 없게 하기 위해서 상한 레지스터와 재 배치 레지스터를 사용한다.
여기서 재배치 레지스터를 사용함 으로서 운영체제의 크기는 실행 중이라도 얼마든지 변경될 수 있다.
운영체제 중 필요에 따라 메모리로 올라오기도 하고 지워지기도 하는 부분을 일시적 운영체제 코드 라고 한다.
이러한 기능을 최대한 활용하면 전체 운영체제의 크기는 매우 작아질 수 있다.
메모리 할당
가장 간단한 메모리 할당 방법은 메모리를 똑같은 고정된 크기로 분할하는 것이다.
이 경우 각 분할 마다 한 프로세스를 가지고 이 때 분할의 개수를 다중 프로그래밍의 정도라고 말한다.
한 분할이 비게 되면 한 프로세스가 입력 큐에서 선택되어 빈 분할에 들어온다.
가변 분할 기법에서 운영체제는 메모리의 어떤 부분이 사용되고 있고 어떤 부분이 사용되지 않는 가를 파악할 수 있는 테이블을 유지한다.
초기에 모든 메모리 공간은 한 개의 큰 사용 가능한 블록으로 간주된다.
이 경우 하나의 공간이 있다고 표현한다.
운영체제는 새 프로세스가 도착하면 이를 수용할 수 있는 충분한 공간을 할당 해 주고
할당된 분할과 사용 가능한 분할에 관해 정보를 유지해야 한다.
언급한 것처럼 일반적으로 메모리에는 다양한 크기의 자유 공간이 여기저기에 산재하게 되며
프로세스가 공간을 필요로 할 경우 이 자유 공간의 집합에서 적절한 것을 찾아낸다.
만약 찾아낸 자유 공간이 요청한 것보다 클 경우 공간을 두 개로 나누어 한 조각은 프로세스에게 할당하고 나머지는 자유 공간으로 소속시킨다.
이러한 기법은 동적 메모리 할당 문제의 특별한 예이다.
이것은 자유 공간 리스트로부터 공간을 요구하는 것을 어떻게 만족시켜 줄 것인가를 결정하는 문제이다.
동적 메모리 할당 문제의 해결책
최초 적합
첫 번째 사용 가능한 공간을 할당
최적 적합
사용 가능한 공간들 중에서 가장 작은 것을 택함
리스트가 정렬되어 있지 않다면 전 리스트를 검색해야 한다.
작은 공간들이 많이 생성된다.
최악 적합
가장 큰 공간을 선택
리스트가 정렬되어 있지 않다면 전 리스트를 검색해야 한다.
할당 해 주고 남은 공간은 다른 프로세스를 위해 사용된다.
단편화
단편화는 공간 중 일부가 사용하지 못하게 되는 것을 말한다.
내부 단편화 : 메모리를 일정한 크기로 잘라 쓸 때 할당 된 공간이 요구된 공간보다 클 수 있다.
외부 단편화 : 공간 조각들을 모두 합치면 프로세스보다 크지만 너무 작게 여러 곳에 분산되어 있어 발생한다.
외부 단편화는 압축을 통해 해결한다.
댓글