운영체제

메모리 할당(1)

xodnek 2021. 8. 13. 18:42

연속 메모리 할당이 무엇인가요??

연속 메모리 할당은 유저 프로세스를 메모리에 통채로 로드하는 것입니다.그래서 연속적이라고 할 수 있습니다.

자신의 프로세스 메모리 범위인지 확인하기 위해서 limit register와 relocation register을 통해 보호 가능합니다.

고정 할당과 가변 할당 방식이 존재합니다.

고정 할당은 고정적인 크기로 나누어서 그 곳에 맞게 할당하는 것이며, 가변 할당은 프로세스의 크게 맞게 할당하는 것입니다.

 

가변 할당은 어떤 프로세스를 어떻게 할당할 것인가라는 문제가 발생합니다. 프로세스를 사용하고 해제되면 해제된 공간 만큼이 남는 홀이 발생합니다. 홀에 어떤 프로세스를 놔주냐에 따라 성능에 차이가 있기 때문입니다.

 

홀이 무엇인가요??

연속적으로 메모리를 할당해주면 프로세스마다 할당된 메모리 공간 사이에 할당되지 않은 빈 공간입니다. 불연속하게 흩어져 있게 되면 메모리 단편화 현상이 발생합니다.

 

메모리 단편화가 무엇인데요??

디스크에 존재하는 프로그램을 메모리에 적재하고 CPU를 할당받음으로써 실행됩니다. 여러 프로세스들이 메모리에 올라가고 내려가면서 메모리의 빈 공간, 자료가 여러 개의 조각으로 나뉘는 현상입니다.

 

메모리 단편화 종류에 설명할 수 있나요??

내부 단편화는 프로세스에 할당한 메모리 공간이 실제로 프로세스가 필요한 공간보다 큰 경우 발생합니다. 프로세스 내부에서 발생하는 단편화입니다.

외부 단편화는 메모리가 할당되고 해제되는 작업이 반복되면서 작은 공간의 메모리 영역이 발생하는데, 이 공간의 크기가 어떤 프로세스가 필요로 하는 크기 보다 작은 경우 발생하는 단편화입니다.

 

단편화를 해결할 수 있을까요??

압축, 통합, 페이징, 세그멘테이션을 활용할 수 있습니다.

압축은 메모리 상에 생긴 구멍이니깐 사용중인 메모리 공간을 한쪽으로 모으는 방법입니다.

통합은 단편화가 발생한 공간에서 인접해 있는 다른 단편화 공간들을 하나로 합치는 것입니다.

페이징은 하나의 프로세스가 사용하는 메모리공간이 연속적이여야 한다는 개념을 탈피한 방법입니다. 외부 단편화 문제를 해결할 수 있습니다.

세그먼테이션은 페이징 기법은 가상 메모리를 같은 크기의 단위로 분할했지만 이 방법은 서로 크기가 다른 논리적인 단위인 세그먼트로 분할해서 메모리를 할당하여 물리 메모리 주소로 변환하게 합니다.

 

홀에 할당하는 방법이 어떤 것이 있을까요??

홀에 할당해주는 방법에는 최초 적합, 최적 적합, 최악 적합이 존재합니다.

최초 적합은 가장 처음 가능한 홀에 할당해 주는 것입니다.

최적 적합은 홀 중에서 가장 알맞을 것 같은 홀에 할당 해주는 것입니다.

최악 적합은 홀 중에 가장 큰 공간에 할당해주는 것입니다.

 

최적 적합을 하기 위해 필요한 자료구조가 무엇이 필요하다고 생각하세요??

가장 작은 것을 찾아봐야하니 우선순위 큐를 이용하면 될 것 같습니다.

 

 

 

 

 

'운영체제' 카테고리의 다른 글

메모리 할당(3)  (0) 2021.08.14
메모리 할당(2)  (0) 2021.08.13
주메모리의 관리  (0) 2021.08.13
데드락  (0) 2021.08.11
철학자들의 저녁식사 문제  (0) 2021.08.11