저도 이런거 엄청좋아한다람쥐
설명을 위해 람쥐체는 버리겠다람쥐
윈도우 기준으로 설명을 드릴께요, 우리가 실행파일을 실행하게되면
실행파일을 전부 다 메모리에 올릴수는 없습니다. 그래서 물리 메모리를
작은 단위로(32비트에 경우 4kb) 나누어서 page table로 관리를 합니다.
우리가 가상주소 예를들면 0x12341234에 접근하면 운영체제는 이 가상주소를
물리주소로 변환하는 작업을 하게 됩니다.
참고그림
http://postfiles5.naver.net/20100807_228/idkkangjs_1281150870946iqAQ1_png/%EC%BA%A1%EC%B2%981_idkkangjs.png?type=w1
하지만 프로그램이 0xdeadbeef와 같은 가상주소를 접근하려고하는데
물리메모리에 매핑되어있지 않은 상태(page table entry의 present bit이 1이면 접근가능 0이면 접근불가)면 page fault 인터럽트가 발생합니다.
그럼 page fault handler에게 제어가 넘어가게 되고,
이 page fault handler는 물리 메모리에 빈 공간을 찾아 page in시키고 page table을 업데이트합니다.
우리가 실행파일을 실행하게되면 실행파일을 전부 다 메모리에 올릴수는 없습니다. 그래서 물리 메모리를 작은 단위로(32비트에 경우 4kb) 나누어서 page table로 관리를 합니다.
말이 뭔가 이상한거 같은데..
진짜 입이 근질근질해 죽게따.. ㅋㅋㅋㅋ 참아야지 에혀 ㅡㅡ;
아 손이 근질근질 하지..
그림 링크를 걸었는데 그냥 올리시지, 디시가 맨날 짤방 올리는데
일광면님 틀린거 있으면 지적좀해주세요 ㅜ.ㅠ 잘못알고있는거면 고쳐야죠 ㅜㅜ
복습하는 재미가 쏠쏠하네영ㅋㅋㅋ 이것이 프갤 디씨질 묘미 중 하나ㅋㅋㅋ 횽들 짱ㅎㅎ
전부다 메모리에 못올리는건 뭔말이고 "그래서" 페이지 테이블로 관리한다니 보충 설명 부탁. 내가 알던것과 달라서(말이 애매해서 이해를 못한걸지도) 혼란.
폰으로 글쓰는건 귀찮군
전부 다 메모리에 못올린다는건, 실행파일마다 메모리에 전부 올라가있다면 여러 프로그램을 실행하다보면 메모리 부족현상이 발생할 수 있습니다. 그래서 프로그램이 필요할때 일부 영역만 물리페이지에 매핑 시켜놓고 사용합니다. (demand paging방식)
아.. 그 얘기였군. 메모리맵드로 매핑해놓고 hdd<-> 페이지 스왑하는거 말하는건가.
제길 <-> 뒤에 메모리가 빠졌어
이렇게 매핑된 물리주소들은 페이지 테이블들이 가르키고있습니다. SeHwa님 말씀처럼 다시 읽어보니 애매모호하고 이해하기가 어려웠었네요 ㅜ
네 스와핑 맞습니다 +_+/
아니 걍 나만 이해를 못한듯요..