목적 : 메모리 용량이 증가함에 따라 프로그램의 크기가 계속 증가하고 있어서 메모리가 언제나 부족하기 때문.
정의 : 제한된 물리 메모리의 효율적 사용과 메모리 참조 방식을 제공하기 위한 전략.
동적 적재(Dynamic Loading)
프로그램 실행에 반드시 필요한 루틴과 데이터만 적재하는 기법.
모든 루틴과 데이터는 항상 사용하지 않고, 실행 시 필요하다면 해당 부분을 메모리에 적재.
동적 연결(Dynamic Linking) - 설명 추가 예정.
라이브러리 루틴연결을 컴파일 시점에 하는 것이 아닌 실행 시점가지 미루는 기법.
스와핑(Swapping)
CPU에서 실행중이지 않는 프로세스는 저장장치의 Swap영역으로 이동해서 메모리를 확보.
메모리 공간 확보는 효율적.
-스와핑의 순서-
→ Context-switching time로 인한 오버헤드 발생 + 현재 메모리의 프로세스가 휴지상태(idle)임을 확인해야 함.
현재 OS는 기본 스와핑은 사용하지 않지만 변현된 스와핑 방식 이용하기도 함.
ex) 평상시에는 작동하지 않다가 자유 메모리가 임계량보다 부족하게 될 경우 작동을 시작, 프로세스 일부만 스와핑해 Contest-switching time을 줄일 수도 있음.
프로세스를 메모리에 연속적으로 할당하는 기법.
할당과 제거를 반복하면 Scattered Holes가 생겨나고 외부 단편화가 발생. (설명 추가)
(1) 연속 메모리 할당에서 외부 단편화를 줄이기 위한 할당 방식
최초 적합(First Fit)
가장 처음 만나는 빈 메모리 공간에 프로세스 할당.
속도가 빠름.
최적 적합(Best fit)
빈 메모리 공간의 크기와 프로세스의 크기 차이가 가장 적은 곳에 프로세스 할당.
최악 적합(Worst fit)
빈 메모리 공간의 크기와 프로세스의 크기 차이가 가장 큰 곳에 프로세스 할당.
이렇게 생긴 빈 메모리 공간에 또다른 프로세스를 할당할 수 있을 것이라는 가정에 기인.
메모리 공간이 연속적으로 할당되어야 하는 제약조건을 없애는 메모리 관리 전략.