Continuous Memory Allocation 프로세스 메모리 할당되는 방법

2022. 9. 22. 12:43컴퓨터사이언스(CS)

728x90

안녕하세요 오늘은 운영체제(OS)가 프로세스를 어떻게 메모리를 할당해주는지  알아보려고 하는데요 

OS 가 프로세스에게 메모리를 할당해주는 방법론은 크게 보면  총 2가지 가있습니다 

 

Continuous Memory Allocation ( 연속 할당)

Non - continuous Memory Allocation( 비연속 할당 )

 

이렇게 방법론을 두 가지 가 있습니다  오늘은 그중 Continuous Memory Allocation ( 연속 할당) 방법론을 

설명해보려고 합니다 

 

사실 제 가위에 크게 2가지 방법론이 있다고 설명해드렸는데요  Continuous Memory Allocation 안에는

두 가지 방법론이 또 있습니다 

 

1. Uni - programming  ( 단일 )

2. Multi - programming ( 멀티) 

- fixed partition ( FPM)

- Variable partition ( VPM ) 

위에 방법을 차근 차근 설명해보겠습니다

Uni - programming  ( 단일 )

메모리에 단 1 나의 프로세스만 등록되는 형태입니다 아주 간단한데요 커널만 침범하지 않게

등록하면 되는데요 사실 단일 프로세스를 등록하는 데에는 매우 문제가 있습니다

 

1. 프로세스 > 메모리 즉 프로세스 가 메모리 용량보다 큰 문제인데요 이러면 잘라서 내보내야 하고 이것은

커널 수준에서 해주는 것이 아닌 프로그래머나 사용자가 직접 해야 한다는 문제가 있습니다.

2  메모리가 100이라고 생각하고 프로세스가 10이라고 생각하면 프로세스가 들어와 하나만 할 수 있다면

메모리가 100에서 10뺸 90의 자원을 낭비합니다.

 

이렇게 단일 프로세스는 문제가 2가지가 있습니다 단순하지만 엄청난 자원을 낭비한다는 문제가 있죠

 

fixed partition ( 멀티 )

fixed 메모리 공간을 고정을 시켜 둔 후 하는 것인데요 메모리를 프로세스가 들어오기 전

나누어 사용하는 것입니다.

여러 개의 방을 나눠 프로세스들이 산다고 생각하시면 될 것 같습니다 한방에는 한 프로세스만

들어갈 수 있게끔 하는 방법입니다 

 

이것도 여러 문제가 있어 보이는데요 메모리 자원의 자리를 고정을 시켜둔다면 만약 고정시켜둔

자리가  10 ,20 ,30, 40 ,50이라고 생각해보면 

 

프로세스 21 짜리가 들어오면 30 자리에 들어가야 하는데 9 즉 메모리 파편화가 생길 수 있는데요 

메모리의 아주 작은 부분이 생기는 것이죠 

 

fixed partiton 도 메모리의 파편화가 생겨 낭비 가 될 수 있습니다

 

 

Variable partition ( 멀티 ) 

Variable 변수 즉 변화하는 수를 이야기하는데요 프로세스가 들어올떄마다 메모리의 공간들이 변하는

방법입니다 

 

필요한 만큼만 할당하고 사용하는 것인데요 , 이렇게 필요한 만큼만 사용하고 시간이 되면 자리를 비워주는 방법입니다 하지만 이것도 약간의 문제가 있습니다 만약 메모리 100중 10 짜리 프로세스가 들어왔다면 

10 자리를 비워 주 곳에는 다시 10만큼 의 프로세스가 다시 나와 그 자리에 들어간다는 보장이 없습니다 

즉 fixed처럼 메모리의 파편화가 생기는 것이죠 

 

그래서 각 메모리 자리에 있는 프로세스들을 다시 전부 위에 한 공간에 밀어주는 것입니다  하지만 이렇게

해주는 것은 오버해드가 엄청 많이 일어납니다 

메모리의 자리를 옮겨줘야 하고 그리고 옮겨주는 과정에서는  프로세스들이 블록 형태가 됩니다 메모리가 등록되는 시점은

여러 해 결 방법이 있습니다 

 

 

 

위에서 설명방법은 c언어에서 메모리풀을 만들어 사용할 때 사용하는 방법인데요 아주 성능이 좋은 프로그램을 만들어야

할떄 이렇게 사용합니다  위에 방법을 참고해 해결하실수 있는 문제들을 해결하시면 좋겠습니다 감사합니다

 

 

 

728x90