본문 바로가기
IT기초/OS

[OS]메모리 관리 기법 및 스와핑, 가상메모리

by 김수호님 2018. 12. 28.
728x90
반응형

스왑핑(Swapping)


 물리 메모리가 부족하게 되면 실행중이던 프로그램의 손상을 막기 위해 OS에서 스왑핑이라는 기법으로 실행중이던 프로그램의 메모리를 보조기억장치에 저장시키고 메모리를 비운 뒤 사용하는 방법을 이용한다. 보조기억장치는 매우 느리기 때문에 스왑핑이 일어나는 것은 성능에 큰 영향을 미친다. 예를 들어 프로세스가 전체 물리 메모리를 다 사용하도록 하는 시스템이라면 다른 프로세스가 실행될 때마다 물리 메모리 전체를 보조기억장치에 복사하는 작업을 수행해야 할 것이다. 하드디스크가 20MB/s 정도의 쓰기속도를 보이므로 4GB 메모리를 복사한다고하면 약 200초가 걸린다. 즉 전체를 스왑핑하는 것은 말이 안되지만 일부를 스왑핑하도록 하면 효율적이다.



메모리 할당


메모리할당은 첫번째 여유공간을 할당하거나 최적의 공간을 할당하거나 가장 여유있는 공간을 할당하는 방법이 있다. 대표적으로 세그먼테이션과 페이징 기법이 있다. 하지만 할당 방법에 따라 파편화가 생기는데 할당하고 남은 공간들이 많아지게되면 압축 작업을 통해 해결해야 한다.



페이징


논리메모리는 페이지(Page)라고 불리는 고정 크기의 블록으로 나누어지고, 물리메모리는 프레임(Frame)라 불리는 페이지와 같은 크기의 블록들로 나누어진다.

페이지 테이블에는 각 페이지 번호와 그에 해당하는 프레임의 시작 물리 주소를 저장한다. 할당은 항상 프레임의 정수 배로 할당하는데, 이 때 프로세스가 페이지 경계와 일치하지 않는 크기의 메모리를 요구하게 되면 마지막 페이지 프레임은 전부 사용되지않고 남아버리는 문제가 발생한다(내부 단편화)




세그먼테이션


페이징처럼 논리메모리와 물리메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트로 분할한다.

세그먼트 테이블에는 각 세그먼트의 기준(세그먼트의 시작 물리주소)과 한계(세그먼트의 길이)를 저장한다. 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 자유 공간들이 많은 수의 작은 조각들로 나누어져 못쓰게 될 수 있다.(외부 단편화)




가상메모리


RAM을 관리하는 기법으로 프로그램에 물리주소가 아닌 가상메모리 주소를 할당해준다. 가상메모리 주소는 메모리 관리 장치(MMU)에 의해 물리 주소로 변환되기 때문에 프로그래머는 물리 주소에 대한 고민 없이 가상 주소 공간에서 프로그램을 작성하기만 하면 된다.


728x90
반응형

'IT기초 > OS' 카테고리의 다른 글

[OS]프로그램 로딩 과정  (0) 2018.12.28
[OS]쓰레드 및 동기화 정리  (1) 2018.12.26
[OS]프로세스 관리  (0) 2018.12.23
[OS]OS(Operating System) 정리  (0) 2018.12.23