진짜 개발자
본문 바로가기

CS(Computer Science)/운영체제

메모리관리(메모리 낭비 방지)

728x90



*CPU는 프로그램이 동작할때에 필요한 데이터나 동작들을 메모리의 특정 주소로부터 가지고 와야하는데 이는 프로그램이 만들어질 때 코드화 되어있다.

따라서 항상 같은 위치의 메모리 주소로 부터 데이터를 불러오게 된다.

*하지만 메모리에 프로그램을 적재할 때에는 항상 같은 위치에 프로그램을 적재 할 수 없다 

  만약 정해진 위치에만 프로그램을 적재할 수 있다면 낭비되는 메모리가 많을 것이다.

 때문에 운영체제는 프로그램을 적재할 때 빈공간을 찾아 적절히 적재하게 된다 이를 맞추어 조절하는 역할을 하는 것이 바로 MMU의 

 재배치 레지스터 이다.


*적재 : 프로그램을 메인 메모리에 상주시키는 동작을 의미한다.


*동적 적재 : 동적 적재는 프로그램 실행에 반드시 필요한 데이터/루틴 만 적재하는 것을 의미한다. 

      프로그램은 코드로 작성이 되어 있는데 실제 실행이 되는 부분도 있지만 그렇지 않은 부분들도 있다

예외의 상황을 처리하는 경우 실행이 않을 때도 있다 따라서 코드의 모든 루틴이 다사용되는 것은 아니고 

또한 모든 데이터가 사용되는 것도 아니다 동적 적재는 이런 문제를 해결하기 위해 실제 실행되고

반드시 필요한 루틴,데이터만을 적재하는 것이다.


*Swapping : 메모리에 적재되어 있으나 사용되지 않는 프로세스를 Swap out 하고

 필요한 프로세스를 메모리에 Swap in 하는 행위를 말한다.


@연속 메모리 할당 :

메인메모리에 프로세스가 할당되고 해제가 반복되다 보면 메인메모리에 빈공간들이 많이 발생한다

순서대로 메인메모리 공간에 할당이 되더라도 각각의 프로세스들의 작업이 끝나는 시간들이 다르기 때문이다.

또 다시 적재되는 프로세스들의 크기가 재각각 이므로 꼭 정해진 곳에 프로세스가 적재되리란 법은 없다.


*연속메모리 할당 방식

최초 적합 : 메모리를 순차적으로 탐색하며 최초로 발견된 적재 가능한 공간에 프로세스를 적재 하는 것을 말한다.


최적 적합 : 메모리를 탐색하여 적재 가능한 공간중 가장 적은 내부단편화가 발생하는 공간에 적재하는 것을 말한다.


최악 적합 : 메모리를 탐색하여 가장 큰 내부단편화가 발생하는 곳에 프로세스를 적재하는 것을 말한다.


 *외부 단편화 : 위와 같은 상황으로 메인메모리에 적재될 프로세스의 크기보다 충분한 메모리가 남아 있음에도

  프로세스가 적재될 수 없는 상황을 일컫는다.


=> Compaction(압축) : 외부단편화를 해결하는 방안으로 곳곳에 남아있는 조그만 메모리공간을 없애기 위해

  메모리에 적재된 프로세스들을 옮기는 것을 말한다.


 *내부 단편화 : 메모리에 10k 정도의 여유공간이 있고 적재될 프로세스의 크기가 7K일때 적재한뒤 3k라는 공간이 남게 된다

   이를 내부 단편화라고 일컫는다.




'CS(Computer Science) > 운영체제' 카테고리의 다른 글

스레드 개요  (0) 2018.10.06
프로세스 스케줄링  (0) 2018.09.24
프로세스 개요  (0) 2018.09.11
멀티프로그래밍 , 멀티프로세싱  (0) 2018.09.06
메모리 관리(개요)  (0) 2018.09.06