OS 메모리 관리
728x90

OS 메모리 관리


swapping : 메모리에 올라와 있지만 사용하지 않는 프로세스들을 하드 디스크 등 보조 기억 장치 으로 이동시킨 후 다른 사용할 프로세스를 메모리에 올리는 방법

메모리(RAM)으로 불러들이는 작업을 Swap-In, 보조 기억 장치로 이동시키는 작업을 Swap-out

swap 에는 큰 디스크 전송 시간이 필요하기 때문에 현재에는 메모리 공간이 부족할 때 swapping 이 시작됨.


단편화

메모리가 사용 가능한 메모리가 충분히 존재 하지만 잘게 작은 조각들로 나뉘어져 할당이 불가능한 상태

1. 내부 단편화

프로세스가 사용하는 메모리 공간에 포함된 남은 부분 메모리 분할 자유공간이 10000B 있고 process A가 9998B 사용하게 되면 2B라는 차이가 존재하고 , 이 현상을 내부 단편화라고 한다.

프로세스에게 할당된 메모리가 10000B 인데 어떤 이유로 이 프로세스가 9998B 만쓰면 2B 사용하지 못하는 여유 공간이 생김.

2. 외부 단편화

프로세스가 요청한 메모리 용량이 100MB 라고 하면 사용 할 수 있는 빈 메모리가 50MB , 50MB 이런 식으로 쪼개져 있어서 사용하지 못하게 되는 현상

※ 압축

외부 단편화를 해소하기 위해 프로세스가 사용하는 공간들을 한쪽으로 몰아, 자유공간을 확보하는 방법론이지만, 작업효율이 좋지 않다.

한쪽으로 모는 것은 50MB , 50MB 의 공간을 연속된 공간에 놓아서 일자로 만들어 놓는 것


메모리 관리 방법

1. 연속 메모리 할당

1) 최초 적합(first fit)
    가장 처음 만나는 빈 메모리 공간에 프로세스 할당
2) 최적 적합(best fit)
    빈 메모리 공간에 크기와 프로세스의 크기 차이가 가장 적은 곳에 프로세스 할당
3) 최악 적합(worst fit)
    빈 메모리 공간의 크기와 프로세스의 크기 차이가 가장 큰 곳에 프로세스를 할당
        -> 빈 메모리 공간에 또 다른 프로세스를 할당할 수 있을 거라는 가정에 기인

2. 페이징 (가상 메모리 사용) : 외부 단편화 해결, 내부 단편화 존재

물리 메모리는 Frame 이라는 고정 크기로 분리되어 있고, 논리 메모리(프로세스가 점유하는)는 페이지라 불리는 고정 크기의 블록으로 분리된다.

페이징 기법을 사용함으로써 논리 메모리는 물리 메모리에 저장될 때, 연속되어 저장될 필요가 없고 물리 메모리의 남는 프레임에 적절히 배치됨으로 외부 단편화를 해결할 수 있는 큰 장점이 있다.

하나의 프로세스가 사용하는 공간은 여러 개의 페이지로 나뉘어서 관리되고(논리 메모리에서), 개별 페이지는 순서에 상관없이 물리 메모리에 있는 프레임에 mapping 되어 저장된다고 볼 수 있다.

단점 : 내부 단편화 문제의 비중이 늘어나게 된다.
예를들어 페이지 크기가 1,024B이고 프로세스 A 가 3,172B 의 메모리를 요구한다면 3 개의 페이지 프레임(1,024 * 3 = 3,072) 하고도 100B 가 남기 때문에 총 4 개의 페이지 프레임이 필요한 것이다.
결론적으로 4 번째 페이지 프레임에는 924B(1,024 - 100)의 여유 공간이 남게 되는 내부 단편화 문제가 발생하는 것이다.

3. 세그먼테이션 (가상 메모리 사용) : 내부 단편화 해결, 외부 단편화 존재

페이징에서처럼 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트(Segment)로 분할 사용자가 두 개의 주소로 지정(세그먼트 번호 + 변위) 세그먼트 테이블에는 각 세그먼트의 기준(세그먼트의 시작 물리 주소)과 한계(세그먼트의 길이)를 저장

단점 : 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 자유 공간들이 많은 수의 작은 조각들로 나누어져 못 쓰게 될 수도 있다.(외부 단편화)

728x90