////
Search
Duplicate

메모리 할당 - 용운

메모리에 프로그램을 할당할 때는 시작 메모리 위치, 메모리의 할당 크기를 기반으로 할당하는데 연속할당과 불연속 할당으로 나뉜다.

연속할당

메모리에 연속적으로 공간을 할당하는 것을 말한다.

고정분할방식

메모리를 미리 나누어 관리하는 방식으로 메모리가 미리 나뉘어 있기 때문에 융통성이 없다. 내부 단편화가 발생한다.
내부단편화 : 메모리를 나눈 크기보다 프로그램이 작아서 들어가지 못하는 공간이 많이 발생하는 현상

가변분할방식

매 시점 프로그램의 크기에 맞게 동적으로 메모리를 나눠 사용한다. 외부 단편화가 발생할수 있다.
최초적합 : 위쪽이나 아래쪽부터 시작해서 홀을 찾으면 바로 할당
취적적합 : 프로세스의 크기 이상인 공간중 가장 작은 홀부터 할당
최악적합 : 프로세스의 크기와 가장 많이 차이가 나는 홀에 할당

불연속할당

현대 운영체제에서 쓰는 방법으로 메모리를 연속적으로 할당하지 않는 방식이다.

페이징

동일한 크기의 페이지 단위로 나누어 메모리의 서로 다른 위치에 프로세스를 할당한다. 홀의 크기가 균일하지 않은 문제가 없어지지만 주소변환이 복잡해진다.

세그멘테이션

페이지 단위가 아닌 의미 단위인 세그먼트로 나누는 방식이다. 프로세스를 이루는 메모리는 코드영역, 데이터영역, 스택영역, 힙 영역으로 이루어지는데 코드와 데이터로 나누거나 코드내의 작은 함수를 세그먼트로 놓고 나눌수도 있다. 보안 측면에서는 좋지만 홀크기가 균일하지 않다.

페이지드 세그멘테이션

프로그램을 의미 단위인 세그먼트로 나눠 공유나 보안 측면에 강점을 두고 임의의 길이가 아닌 동일한 크기의 페이지 단위로 나누는 것이다.