메모리가 1~100이 있고 캐시가 1~10이 있다면 1:1~10, 2:1~20... 와 같이 매핑
처리가 빠르지만 충돌 발생이 잦다
연관 매핑
순서를 일치하지 않고 관련 있는 캐시와 메모리를 매핑
충돌이 적지만 모든 블록을 탐색하여 속도가 느리다
집한 연관 매핑
직접 매핑과 연관 매핑을 합쳐 놓은 것
2-3. 메모리 할당
메모리에 프로그램을 할당할 때는 시작 메모리 위치, 메모리의 할당 크기를 기반으로 할당합니다.
연속 할당과 불연속 할당으로 나뉩니다.
연속할당
메모리에 '연속적으로' 공간을 할당하는 것을 말합니다.
고정 분할 방식과 가변 분할 방식으로 나뉩니다.
고정 분할 방식
메모리를 미리 나누어 관리하는 방식 입니다.
한계
내부 단편화 발생
가변 분할 방식
매 시점 프로그램의 크기에 맞게 동적으로 메모리를 나눠 사용하는 방식 입니다.
종류
최초적합: 위에서부터 바로 보이는 공간에 바로 할당
최적적합: 가장 크기에 맞는 공간부터 채우고 나머지를 할당
최악적합: 가장 크기가 큰 공간에 부터 채우고 나머지 할당
한계
내부 단편화 발생
외부 단편화 발생
WHY?
내부단편화 & 외부단편화
내부 단편화
메모리를 나눈 크기보다 프로그램이 작아서 들어가지 못하는 공간이 많이 발생하는 현상
즉, 들어갈 수 있는 공간보다 프로그램이 작아서 공간이 남아버리는 것
ex) 나눈 크기는 10씩. 10이라는 메모리공간에 8크기의 프로그램이 할당 -> 2라는 메모리 공간이 남는다.
외부 단편화
메모리를 나눈 크기보다 프로그램이 커서 들어가지 못하는 공간이 많이 발생하는 현상
즉, 들어갈 공간보다 들어갈 것이 더 커서 들어가지 못하고 남아버리는 것
불연속 할당
운영체제에서는 여러개의 작업을 효율적으로 수행해야하기 때문에 불연속 할당방법을 사용합니다.
❓ 불연속 할당 방식의 단점
메모리 공간 할당과 해제 시의 오버헤드가 발생할 수 있습니다. (불필요 할당)
메모리 공간이 분산되어 있기 때문에, 프로세스가 불연속 공간에 할당될 경우 프로세스의 페이지 교체와 같은 작업이 더 복잡해질 수 있습니다. (교체 알고리즘 최적화 필요)
운영체제에서 불연속 할당을 사용하는 3가지 방법
링크드 리스트(Linked List) : 불연속 공간에 프로세스를 할당할 때, 할당된 공간의 주소를 연결리스트에 저장하는 방식입니다. 이 방식은 메모리 할당과 해제가 빠르지만, 공간 낭비가 발생할 수 있습니다.
비트맵(Bitmap) : 메모리 공간의 각 블록을 0 또는 1로 표시하여 사용 가능한 블록과 사용 중인 블록을 구분하는 방식입니다. 이 방식은 링크드 리스트보다 효율적인 공간 관리를 제공하지만, 메모리 크기가 큰 경우 비트맵이 매우 커지는 단점이 있습니다.
페이지 테이블(Page Table) : 가상 메모리 시스템에서 사용되는 방식으로, 물리적인 주소 공간을 페이지라는 작은 블록으로 나누어 사용합니다. 각 프로세스는 자신의 페이지 테이블을 가지며, 페이지 테이블은 물리적인 주소와 가상 주소를 매핑하는 역할을 합니다. 이 방식은 링크드 리스트와 비트맵보다 효율적이며, 가상 메모리를 구현하는 데 필요한 기술입니다.
메모리를 동일한 크기의 페이지로 나누고 프로그램마다 페이지 테이블을 두어 이를 통해 메모리에 프로그램을 할당