오버레이(Overlay)

프로그램의 메모리가 주기억장치(RAM)보다 클 때의 문제를 해결하기 위한 기법

1) 하나의 프로그램을 여러 개의 조각으로 분할한 후 필요한 조각을 순서대로 주기억장치에 적재하여 프로그램을 실행한다.
2) 실행 중에 주기억장치의 메모리가 부족하면, 불필요한 조각이 있는 곳에 새로운 조각을 중첩하여 적재한다.


스와핑(Swapping)

주기억장치에 적재한 하나의 프로그램과 보조기억장치에 적재한 다른 프로그램의 메모리를 교체하는 기법

1) Swap Out : 주기억장치에 있는 프로그램이 보조기억장치로 이동
2) Swap In : 보조기억장치에 있는 프로그램이 주기억장치로 이동

이는 후에 가상기억장치의 페이징 기법으로 발전하였다.


메모리 분할 방식

1. 고정 분할

주기억장치의 USER 영역을 여러 개의 고정 크기로 분할하여 사용하는 기법

1) 프로그램 전체가 주기억장체에 적재된다.
2) 프로그램이 분할 영역보다 크면 분할 영역을 사용할 수 없어서 빈 공간으로 남은 전체 영역을 사용하는 외부 단편화가 발생할 우려가 있다
3) 분할 영역보다 크기가 작은 프로그램을 적재하였을 때 내부 단편화가 발생할 우려가 있다.
4) 초기의 다중 프로그래밍을 위해 사용되었던 방법이다.
5) 정적 할당 기법으로도 불리운다.

2. 가변 분할

프로그램을 주기억장치에 적재할 때 필요한 크기로 영역을 분할하는 기법

1) 고정 분할 기볍의 단편화를 개선하기 위해 고안된 기법이다.
2) 역역 사이에 단편화는 발생할 가능성이 있다.


외부 단편화와 버디 시스템

커널은 연속적인 페이즈 프레임 그룹을 할당하는 견고하고 효율적인 정책을 세워야 한다. 이때, 메모리 관리와 관련한 유명한 문제인 버디 시스템 알고리즘 외부 단편화를 해결해야 한다.

외부 단편화란, 다른 크기의 연속적인 페이즈 그룹을 빈번하게 할당하고 해제하여, 할당한 페이즈 프레임 블록 사이에 작은 여유 페이지 프레임 여러 개가 산재하는 현상이다.

그 결과로, 나중에는 큰 크기의 연속된 페이지 프레임 할당을 요청할 때, 이를 담을 충분한 여유 페이지가 있아도 메모리를 할당하지 못할 수 있다.

위의 그림처럼 8개의 페이즈 프레임이 사용(0,1,2,3,4,6,7,11)되고 있지만, 연속적인 페이지 프레임 그룹으로 할당할 수 없다.

이러한 외부 단편화를 해결하는 방법이 바로 버디 시스템이다.

버디 시스템(Buddy System)

방법 1 : 페이징 회로를 활용하여 불연속적인 여유 페이지 프레임의 그룹을 연속된 가상 주소 구간에 매핑한다

문제점 : 연속된 가상 주소로는 요청을 처리할 수 없고 실제로 연속된 페이지 프레임이 필요한 경우가 종종 있다.

방법 2 : 남아있는 연속된 여유 페이지 프레임 블록을 관리하는 적절한 기법을 개발하여, 작은 블록을 요청할 때, 큰 여유 블록을 쪼개서 할당하는 경우를 가능한 최소화한다.

버디 시스템 알고리즘에서 커널 페이지 테이블을 수정하지 않아도 된다 => 이러한 이유로 커널은 두 번째 방법을 선호한다.


이에 관련된 알고리즘은 나중에 다시 추가할 예정입니다.

profile
개발을 꿈꾸는 초짜

0개의 댓글