가상메모리_Swapping
1. 가상메모리를 통해서 얻는 이점
가상메모리를 통해서 컴퓨터는 RAM 이상의 용량을 가진 프로세스들을 실행시킬 수 있다.
RAM 이상의 용량을 HDD나 SSD에서 끌어서 쓸 수 있기 때문 즉, 실행하고 있는 프로세스의 일부분을 보조기억장치에 할당할 수 있다.
2. Swapping?
가상메모리에서 Swapping이란?
가상메모리로 보조기억장치에 할당했을 때 페이징 기법을 이용해서 프로세스 단위로 할당하는 것이 아닌 페이징 단위로 할당한다
하지만 RAM 속도에 비해서 HDD나 SSD는 속도가 현저히 느리기 때문에 OS는 프로세스들을 자주 사용하는 것을 RAM에 두려고 하고 사용빈도가 떨어지는 프로세스들을 HDD에 두려고 한다
유저가 프로그램을 사용할 때 자주 사용하는 프로그램은 계속 달라질 수 있으므로 자주 사용하는 프로그램을 RAM에 올리고 자주 사용하지 않는 프로그램을 보조기억장치에 옮기는 일련의 과정을 Swapping이라고 함
3. Thrashing
Swapping 과정이 너무 많이 일어나면 발생하는 현상
CPU가 RAM을 참조해서 작업을 하는 시간보다 Swapping 하는 시간이 많이걸려서 결론적으로 성능저하가 발생하는 현상 RAM이 부족해서 가상메모리에 과도하게 많은 프로세스를 올려놓거나 과도하게 많은 멀티태스킹으로 인해서 발생한다
4. Memory 주소
Swapping을 수행하게 되면 프로그램에서 사용하는 메모리들의 주소는 어떻게 될까?
Swapping을 했을 경우 보조기억장치와 RAM 사이에서 물리적 주소가 변경된다.
따라서 이런 궁금증이 발생할 수 있다. 메모리주소가 변경되었다는 말은 프로그램이 참조했던 메모리 주소들의 값이 전부 달라진다는 말인데 어떻게 프로그램이 종료되지 않고 정상적으로 실행될 수 있을까?
이것이 가능한 이유는 MMU로 인해서 프로그램에서는 실제 물리적주소를 참조하는 것이 아니기 때문
Swapping 이후에 물리적주소는 실제로 변경되었지만 OS에서 MMU를 이용해서 실제 물리적 주소가 아니라 가상메모리 주소를 주기 때문에 물리적인 메모리가 변경되었다고 해도 가상메모리 주소는 변경되지 않는다.
그리고 OS가 아닌 일반 프로그램은 가상메모리 주소만을 이용해서 메모리와 관련된 작업을 하기 때문에 Swapping을 하더라도 영향이 없는 것
댓글남기기