7-메모리관리
컴퓨터 시스템이 32비트 주소 체계 가질 경우, 2^32가지의 서로 다른 메모리 위치 구분 가능
컴퓨터에서는 바이트 단위로 메모리 주소 부여
32비트 주소 체계 사용시 2^32만큼 메모리 공간에 서로 달느 주소 할당 가능
Page
컴퓨터 상의 주소도 서울시 서대문구 대현동 이런거처럼 효율적인 운영을 위해 일련의 행정구역 처럼 hy6554묶어서 사용
페이지 하나의 크기는 2^12 바이트 (보통 4KB)
따라서 32비트 주소중 하위 12비트는 페이지 내에서의 주소(서울시 서대문두 대현동과 비슷한 의미)
메모리를 어떤 행정구역으로 나눠서 관리할 것인지 프로그램이 물리적 메모리에 어떻게 올라가서 주소를 할당 받는지
7.1 주소 바인딩
7.3 물리적 메모리의 할당 방식
물리적 메모리는
OS 상주 영역 - 메모리의 낮은 주소 영역, OS 커널이 이곳에 위치
프로세스 영역 - 메모리의 높은 주소 영역
사용자 프로세스 관리 방법은 프로세스를 메모리에 올리는 방식에 따라
연속 할당
각 프로세스를 물리적 메모리의 연속 공간에 올림
물리적 메모리를 다수의 분할로 나누어 하나의 분할에 하나의 프로세스가 적재되도록 함
분할 관리 방식에 따라
고정 분할 방식: 고정된 크기의 분할로 미리 나누기
가변 분할 방식: 분할을 미리 나누지 않고, 프로그램이 실행~종료 되는 순서에 따라 분할 관리
불연속 할당
하나의 프로세스를 물리적 메모리의 여러 영역에 분산 적재
Paging: 각 프로세스의 주소 공간을 동일한 크기의 페이지로 잘라서 페이지단위로 적재
세그멘테이션: 프로그램의 주소 공간을 코드, 데이터, 스택 등 의미있는 단위로 나누어 적재
apged segmentation: 세그먼트 하나를 다수의 페이지로 구성
7.3.1 연속 할당 방식
프로세스를 메모리에 올릴 때 주소 공간을 여러개로 분할하지 않고 한 곳에 연속 적재
7.3.1.1 고정 분할 방식
주어진 개수만큼 영구분할
분할의 크기는 모두 동일하거나 다를 수 있음
하지만 두 방식 모두 1개의 분할 = 1개 프로그램 만 적재 가능
문제점
외부조각
프로그램 크기보다 분할의 크기가 작은 경우
해당 분할이 비어있어도 프로그램 적재 못함
내부조각
프로그램 크기보다 분할의 크기가 큰 경우
해당 분할에 프로그램을 적재하고 남는 메모리 공간
메모리 공간 낭비
7.3.1.2 가변 분할 방식
고정 분할 방식과 달리 프로그램의 크기에 따라 분할의 크기, 개수가 동적으로 변함
프로그램 크기를 고려하여 메모리 할당
내부 조각 발생 안함
하지만 이미 메모리에 존재하는 프로그램이 종료될 경우, 중간에 빈공간 발생
이 공간이 새롭게 시작되는 프로그램의 크기보다 작을 경우 외부조각 발생
문제점
동적메모리 할당 문제
주소 공간의 크기가 n인 프로세스를 메모리에 올릴 때 물리적 메모리 내의 가용 공간중 어떤 위치에 올릴 것인지 결정하는 문제
해결책
동적메모리 할당 문제 해결
최초 적합(first-fit): 크기가 n이상인 가용 공간 중 가장 먼저 찾아지는 곳에 프로세스 할당
메모리 가용공간 차례로 살펴보며 프로그램 크기보다 작으면 skip, 발견되면 그곳에 바로 적재
시간 측면에서 효율
최적 적합(best-fit): 크기가 n이상인 가장 작은 가용 공간을 찾아 그곳에 새로운 프로그램 할당
공간 측면 효율
but 가용공간 리스트 정렬안도있으면 시간 오버헤드 발생
최악 적합(worst-fit): 크기가 가장 큰곳에 프로그램 할당
모든 가용 공간 리스트 탐색해야 하는 오버헤드 발생
가용공간 빨리 소진됨.
외부조각 문제 해결
Compaction: 물리적 메모리 중에서 프로세스에 의해 사용중인 메모리 영역 한쪽으로 몰아넣기
메모리 상의 위치를 상당 부분 이동시켜야 하므로 비용 많이듬
7.3.2 불연속 할당 기법
하나의 프로세스가 물리적 메모리의 여러 위치에 분산 되어 올라갈 수 있는 메모리 할당
7.4 페이징 기법
프로세스의 주소 공간을 동일한 사이즈의 페이지 단위로 나누어 물리적 메모리에 불연속적으로 저장 하는 방식
각 프로세스의 주소 공간 전체를 물리적 메모리에 한꺼번에 올릴 필요 없음
메모리에 올리는 단위가 동일한 크기의 페이지 단위이므로 빈 프레임이면 어떤 위치에서든 사용가능
프레임은 물리적 메모리를 페이지 크기와 동일한 크기의 프레임으로 나누는걸 뜻함
다소 복잡한 주소 변환 절차.
특정 프로세스의 몇 번쨰 페이지가 물리적 메모리의 몇 번째 프레임에 들어있다는 페이지별 주소 변환 정보 유지
7.5 세그멘테이션
프로세스의 주소 공간을 의미 단위의 세그먼트로 나누어 메모리에 올림
코드, 데이터, 스택 등 의미있는 단위로 구분
프로그램을 의미 단위로 나누게 되어
세그먼트 길이 균일하지 않음
Last updated
Was this helpful?