각각의 프로세스 는 독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있다. 단지, 운영체제 만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않는다.
프로세스의 메모리 범위를 결정하는 것을 바인딩(Binding)이라고 하며, 바인딩을 수행하는 시점에 따라 다음과 같이 분류할 수 있다.
스와핑에 의해 작업이 메모리에 적재되어 있지 않을 가능성이 생겼으므로, 실행할 작업이 메모리 적재되어 있는지 검사하는 프로그램
메모리에 적재되어 있는지 검사하고, 메모리에 없다면 이미지를 재적재
고전적 스와핑은 보조 기억장치에 작업을 백업하기 때문에, 기억장치의 속도가 느리면 스와핑의 속도도 같이 느려졌습니다. 스와핑은 문맥교환시에 발생하므로 문맥교환의 비용이 대폭 증가한 것과 같습니다. 이것은 짧은 주기의 라운드 로빈 시스템에서 매우 치명적입니다.
그리고 스와핑에만 매달리는 바람에 작업을 수행할 시간이 부족하므로 시스템의 처리율도 감소합니다.
스와핑에 의해 보조기억장치로 날아간 작업이 다시 돌아와야 할 때 BASE 레지스터를 어떻게 할것인지에 대한 고민도 필요합니다. 이전과 같은 장소로 배치된다면 좋겠지만, 항상 그것이 보장되어 있는 것은 아닙니다. Run-Time Binding이 허용되는 시스템이라면 좋겠지만, 모든 시스템이 이를 지원하는 것도 아닙니다.
프로세스들이 메모리에 적재되고 제거되는 일이 반복되다보면, 프로세스들이 차지하는 메모리 틈 사이에 사용 하지 못할 만큼의 작은 자유공간들이 늘어나게 되는데, 이것이 단편화 이다. -
종류
- 외부 단편화: 메모리 공간 중 사용하지 못하게 되는 일부분. 물리 메모리(RAM)에서 사이사이 남는 공간들을 모두 합치면 충분한 공간이 되는 부분들이 분산되어 있을때 발생한다고 볼 수 있다.
- 내부 단편화: 프로세스가 사용하는 메모리 공간 에 포함된 남는 부분. 예를들어 메모리 분할 자유 공간이 10,000B 있고 Process A 가 9,998B 사용하게되면 2B 라는 차이 가 존재하고, 이 현상을 내부 단편화라 칭한다.
고정 할당과 달리 각 프로세스에게 할당된 메모리 크기가 다를 있음
고정 할당과 달리 할당과 해제를 반복하다보면, 중간중간에 생기는 제대로 사용할 수 없는 빈 공간인 외부 단편화(External Fragmentation)라는 문제를 발생
각각의 단편화의 크기는 작을지라도, 전부 모으면 새로운 프로세스를 하나 더 적재할 수 있을만큼 커지기 때문에 동적 할당의 고질적인 단점
종류
최초 적합
- 처음으로 만난 적당한 빈 공간에 프로세스를 적재
- 처음으로 만난 빈 공간에 바로 할당해주면 되므로, 다른 두 방식보다 시간복잡도가 낮음
최적 접합
- 최적 적합(Best-Fit)은 적당한 빈 슬롯 중 가장 작은 공간에 프로세스를 적재
- 모든 빈 공간을 탐색해야 하므로 시간복잡도가 높으며, 매우 작은 크기의 빈공간을 생성
최악 접합
- 적당한 빈 슬롯 중 가장 큰 공간에 프로세스를 적재
- 모든 빈 공간을 탐색해야 하므로 시간복잡도가 높으며, 매우 큰 크기의 빈공간을 생성
하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 방법이다.
외부 단편화와 압축 작업을 해소 하기 위해 생긴 방법론으로, 물리 메모리는 Frame 이라는 고정 크기로 분리되어 있고, 논리 메모리(프로세스가 점유하는)는 페이지라 불리는 고정 크기의 블록으로 분리된다.(페이지 교체 알고리즘에 들어가는 페이지)
페이징 기법을 사용함으로써 논리 메모리는 물리 메모리에 저장될 때, 연속되어 저장될 필요가 없고 물리 메모리의 남는 프레임에 적절히 배치됨으로 외부 단편화를 해결할 수 있는 큰 장점이 있다.
하나의 프로세스가 사용하는 공간은 여러개의 페이지로 나뉘어서 관리되고(논리 메모리에서), 개별 페이지는 순서에 상관없이 물리 메모리에 있는 프레임에 mapping 되어 저장된다고 볼 수 있다.
단점 : 내부 단편화 문제의 비중이 늘어나게 된다. 예를들어 페이지 크기가 1,024B 이고 프로세스 A 가 3,172B 의 메모리를 요구한다면 3 개의 페이지 프레임(1,024 * 3 = 3,072) 하고도 100B 가 남기때문에 총 4 개의 페이지 프레임이 필요한 것이다. 결론적으로 4 번째 페이지 프레임에는 924B(1,024 - 100)의 여유 공간이 남게 되는 내부 단편화 문제가 발생하는 것이다.
페이징에서처럼 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트(Segment)로 분할 사용자가 두 개의 주소로 지정(세그먼트 번호 + 변위) 세그먼트 테이블에는 각 세그먼트의 기준(세그먼트의 시작 물리 주소)과 한계(세그먼트의 길이)를 저장
단점 : 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 자유 공간들이 많은 수의 작은 조각들로 나누어져 못 쓰게 될 수도 있다.(외부 단편화)