Skip to content

Latest commit

 

History

History
157 lines (80 loc) · 3.14 KB

가상 메모리.md

File metadata and controls

157 lines (80 loc) · 3.14 KB

가상 메모리


실제 메모리가 100퍼센트 사용되지 않는 다는것을 알고 효율적인 사용을 위해 실제 메모리 보다 많아보이게 만드는 기술


프로세스간에 공간이 분리되어 서로 충돌이안나는 이슈가 전체 시스템에 영향을 주지 않는 장점이 있다.


MMU(memory management System)

cpu가 주소를 접근하려고 할때, 직접 cpu가 가상메모리를 물리메모리로 변환시키는 작업은 비효율적이여서, cpu안의 하드웨어인 MMU가

가상메모리에서 실제 물리 메모리로 변환시켜주는 시스템


페이징 시스템


물리 주소에 있는 페이지 번호와 해당 페이지의 첫 물리주소 정보를 매핑한 표


가상주소 v = (p,d)

p - 페이지 번호

d - 페이지 처음부터 얼마나 떨어진 위치인지


p' + d 가 실제 물리 주소가 됨

p' = 최상단 물리주소


페이징 단위로 가상주소로 가서 메모리를 가져온다.

하나의 페이지당 리눅스는 4kb로 나누어져 있다.

하나의 페이지를 몇개 단위로 잘라놓음

페이지는 일관적으로 잘라놓음


가상 메모리


cpu가 데이터를 원할때

랜덤으로 물리 메모리에 데이터를 넣는다.


가상 메모리


가상주소와 물리주소는 다르다.


그렇다면 어떻게 알아낼까?

페이지 주소별 프로세스 별로 페이지 테이블이 있다.


이테이블에는

  1. 각각의 페이지의 최상단 주소값이 있다.
  2. 물리주소의 최상단의 주소값
  3. 물리주소에 현재 존재하는지 없는지를 확인하는 값

가상 메모리


물리주소에 없으면 물리메모리에 업데이트 하고 페이지 테이블에 물리주소를 등록한다.


가상페이지의 중간 데이터를 찾을때 제일 가상주소의 최상단의 위치와 몇칸 차이나는지 확인한것을 페이지 테이블에 넣고


물리주소에서 찾을때 물리주소의 최상단에서 몇칸 떨어져있는지를 확인한 값을 가지고 찾는다.


4GB인 이유

32bit에서 2의 32승이 4GB이다.


가상 메모리


64bit VS 32bit


메모리 주소의 길이가 더 길어짐

ex ) 32bit 0000000a라면

64bit는 08개 더붙음


한마디로 메모리에 접근가능한

최댓주소값이 늘어남


속도가빨라진다고 하기 힘들다.


페이징 시스템과 MMU


MMU가 제일 처음 하는일

  • 해당 페이지 테이블 접근한다.

그렇다면 MMU가 어떻게 해당 페이지의 테이블을 알수 있을까?


CR3로 알 수 있다.

MMU는 CR3로 가서 가상 주소를 가지고 해당 페이지 테이블로 접근 한다.


가상 메모리


참고

  • 패스트 캠퍼스 운영체제 강의