운영체제 공부 중인데 가상 메모리 개념이 잘 안 잡혀서요. RAM이 8기가인데도 프로그램들은 자기가 엄청 큰 연속된 메모리를 통째로 쓰는 것처럼 동작하잖아요. 이게 어떻게 가능한 건지 궁금합니다.


제가 이해한 걸로는, 각 프로세스한테 실제 물리 메모리랑은 별개로 가상 주소공간을 주고, 그걸 페이지 단위로 쪼개서 물리 메모리의 프레임에 매핑한다는 거예요. 이 매핑을 페이지 테이블이 들고 있고 MMU나 TLB가 변환을 도와주고요.


여기서 궁금한 게, 당장 안 쓰는 페이지는 디스크(swap)로 내려보낸다고 하던데, 그러다 그 페이지에 다시 접근하면 어떻게 되나요? page fault라는 게 그때 나는 건가요? 그럼 디스크에서 다시 올려오는 거고요?


그리고 스래싱이라는 것도 나오던데, 이게 폴트가 너무 자주 나서 정작 일은 안 하고 페이지 올렸다 내렸다만 반복하는 상태라고 이해하면 되나요? 이러면 성능이 확 죽는다던데 맞나요?