메모리 관리가 필요한 이유

• 멀티프로그래밍 환경으로 변화하면서 한정된 메모리를 효율적으로 사용할 필요가 생겼다.

• 프로세스는 독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없기 때문에

    이를 자체적으로 관리하지 못한다.

• 운영체제만 메모리 영역과 프로세스 메모리 공간의 접근에 제약을 받지 않으므로 운영체제에서 이를 관리해줄 필요가 있다.

 

• 프로세스 주소

    ◦  논리적 주소(Logical address)

          -  CPU가 생성하는 주소. 가상 주소(Virtual address)라고도 부른다.

          -  프로세스마다 독립적으로 가지는 주소 공간 (힙/데이터/텍스트/스택 공간 등)

          -  프로세스 내부에서 사용하며 각 프로세스 마다 0의 주소 부터 시작한다.

    ◦  물리적 주소(Physical address)

          -  프로세스가 실행되기 위해 실제로 메모리(RAM)에 올라가는 위치

          -  Address Binding : 프로세스가 메모리의 어느 위치(어떤 물리적 주소)에 올라갈지 결정하는 작업

 

• 연속 할당 기법

    ◦  프로그램 전체를 하나의 커다란 공간에 연속적으로 할당하는 기법

    ◦  물리적 메모리를 다수의 분할로 나누어 하나의 분할에 하나의 프로세스가 적재되도록 한다.

    ◦  크게 고정 분할 방식가변 분할 방식으로 나뉜다.

 

• 불연속 할당 기법

    ◦  하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없앤 메모리 관리 방법

    ◦  프로그램의 일부가 서로 다른 주소 공간에 할당될 수 있다.

    ◦  불연속 할당 기법에서 등장하는 개념들

          -  페이지 : 고정 사이즈의 작은 프로세스 조각

          -  프레임 : 페이지 크기와 같은 주기억장치 메모리 조각

          -  단편화 : 기억 장치의 빈 공간 or 자료가 여러 조각으로 나뉘는 현상

          -  세그먼트 : 서로 다른 크기를 가진 논리적 블록이 연속적 공간에 배치되는 것


고정 분할 방식

• 물리적 메모리를 정해진 개수의 영구적인 분할로 나누어두고 각 분할에 하나의 프로세스를 적재하는 방식

• 동시에 메모리에 올릴 수 있는 프로그램 수가 고정되어 있으며, 수행 가능한 프로그램의 최대 크기 또한 제한되기 때문에

    가변분할 방식에 비해 융통성이 떨어진다.

• Internal/External Fragmentation이 발생할 수 있다.


가변 분할 방식

• 메모리에 적재되는 프로그램의 크기에 따라 분할의 크기, 개수를 동적으로 조절하는 방식

• 프로그램의 크기를 고려하여 메모리를 할당하고, 이를 관리할 수 있는 기술이 필요한 방식이다.

• Internal Fragmentation은 발생하지 않지만, 메모리에 새로운 프로세스를 올릴 공간이 충분하지 않으면

    External Fragmentation이 발생할 수 있다.

    ◦  이는 컴팩션(compaction) 기법으로 해결 가능하지만, 비용이 매우 많이 든다.

          -  컴팩션 기법이란? : 중간중간 사용하지 않은채 뻥 뚫려있는 메모리 영역을 한쪽으로 모으기 위해 자원들을 한쪽으로 몰아넣는 기법

          -  수행중인 프로세스의 물리적 메모리 위치를 하나하나 옮겨야 하므로 비용이 매우 크다.

 

가변 분할 방식에서는 메모리 공간의 어디에 프로세스를 올려야 할지 결정해야 한다. (동적 메모리 할당 기법)

이를 결정하는 방법으로 아래 세가지 정도가 있다.

    ◦  최초 적합 방법

          -  가용 공간을 차례대로 살펴보면서 프로그램 크기 < 가용 공간 크기가 최초로 발견될 때 할당

          -  모든 가용 공간을 탐색할 필요가 없어 시간적으로 효율적이다.

    ◦  최적 적합 방법

          -  프로세스 크기 < 가용 공간 크기인 가장 작은 공간을 찾아 할당

          -  모든 가용 공간 리스트가 크기 순으로 정렬되어 있지 않으면 탐색에 오버헤드가 발생할 수 있다.

    ◦  최악 적합 방법

          -  프로세스 크기 < 가용 공간 크기인 가장 작은 큰 공간을 찾아 할당

          -  최적 적합과 동일하게 탐색 오버헤드가 발생할 수 있다.


참고자료

 

[OS] 메모리 연속할당 - 고정분할 방식과 가변분할 방식

[OS] 메모리 연속할당 - 고정분할 방식과 가변분할 방식 안녕하세요? 장장스입니다. 실제 물리적 메모리는 크게 연속할당 방식과 불연속할당 방식으로 나뉩니다. 오늘은 메모리 연속할당 방

zangzangs.tistory.com

 

[메모리관리] 연속할당 방식 - 고정 분할 방식과 가변 분할 방식

연속 할당 방식 프로그램을 메모리에 올릴 때, 물리적 메모리의 한 곳에 연속적으로 적재하는 방식으로 고정 분할 방식과 가변 분할 방식이 존재합니다. 고정 분할 방식 주어진 개수 만큼의 영

junyng.tistory.com