다단계 페이징의 이득이 어떤게 있을까요?
글쓴이: jude1064 / 작성시간: 수, 2003/06/04 - 8:38오후
이번에도 OS 질문입니다. 페이징 방법의 종류중에 다단계 페이징이라는 방법
이 있는데, 이걸 하면 어떤 이득이 있는걸까요?
페이지 테이블의 크기를 줄여서 메모리 공간의 이득을 얻을수 있는건가요?
아니면, 모든 페이지 테이블이 순차적으로 있을 필요없이 메모리 공간에 분산
되어 있을수 있어서, 효율이 높아지는건지 궁금합니다.
아무리 생각을 해봐도 페이지 테이블을 나누면 페이지 테이블의 총 크기는 오히
려 늘어 나는거 같은데.. 감이 잘 안오네요..
그럼...~~
Forums:
페이지 테이블을 다단계로 두면상대적으로 작은 최상위 테이블은 메모리에
페이지 테이블을 다단계로 두면
상대적으로 작은 최상위 테이블은 메모리에 두더라도
하위 테이블들은 스와핑할 수 있겠죠.
다단계 페이징을 해서 좋은 점이라....일단 페이지 크기는 별로
다단계 페이징을 해서 좋은 점이라....
일단 페이지 크기는 별로 관계가 없습니다.
그리고 성능 역시 오히려 떨어집니다.
왜냐하면 스와핑이 발생해서 상태적으로 디스크와 메모리 간의
작업이 늘기 때문입니다.
그런데도 이런 것을 사용하는 이유는 예를 들어 물리적으로
큰 파일을 작업하려면 전체를 다 올려야 하는데..그만큼 메모리를
확보하려면 돈이 많이 들죠...
그래서 편법(?) 이지만, 메모리를 쪼개는 것입니다.
그렇게 되면 실질적으로 실행하는 부분만 메모리에 올라와면
되구요...
또 하나는 전체를 하나의 테이블로 관리하는 것보다
다단계로 쪼개면 해당 페이지 접근 속도가 빨라집니다...
그래서 필요한 것이죠....
그럼.
다단계로 쪼개면 페이지 접근 속도가 떨어지죠.한단계로 구현하면 한 테
다단계로 쪼개면 페이지 접근 속도가 떨어지죠.
한단계로 구현하면 한 테이블만 거치면 되는데,
다단계로 구현하면 여러 테이블을 거쳐야 하니까요.
그리고 스와핑은 한단계로 테이블을 구성하든,
다단계로 구성하든 일어나는 일이고요.
물리적 메모리 확보가 힘들어서
메모리를 쪼개 페이징한다는 것도
한단계든 다단계든 마찬가지입니다.
다단계로 구현하는 이유를 간단하게 설명을 드리면요.
예를 들어 가상 메모리가 4GB (2^32) 인데,
하나의 페이지가 4KB (2^12) 라고 한다면
가상 메모리 전체는 총 2^20 개의 페이지가 되죠.
이 많은 페이지들에 대해 단일 페이지 테이블을 만든다고 하면
페이지 테이블만 해도 수메가 이상이 됩니다.
그런데 대개 프로세스마다 각자의 페이지 테이블을 관리하니까요.
테이블로만 프로세스당 수메가씩 사용하게 되죠.
그러면 심각한 메모리 낭비가 되겠죠 ?
그렇다고 가상 메모리 사이즈를 줄여버리는 것도 좋지 않고,
페이지 테이블 전체를 스와핑하는 것도 곤란하죠.
게다가 페이지 테이블은 메모리에서 연속적인 공간을 차지하길 원하는데,
( 하드웨어에서 쉽게 접근하기 위해서는 이렇게 되어야죠. )
메모리에서 커다란 연속적인 공간을 받아내는건 경우에 따라
아주 곤란한 일이 될 수 있고요.
다단계 페이징을 사용하면,
페이지 테이블의 부분적인 스와핑이 좀더 간편하고,
필요한 작은 페이지 셋을 얻어내기도 좀더 좋고요.
메모리에서 연속적으로 많은 공간을 요구하지도 않죠.
또 공유하는 메모리에 대해 페이지 테이블을 관리하기가 좀더 쉬울거예요.
제대로 적었는지 모르겠지만서도
대충 이렇구나 하시면 될것 같습니다.
자세한 것은 OS 관련 서적들을 참고하시는게 좋을것 같고요.
댓글 달기