2016년 3월 23일 수요일

[ Linux ] 가상 메모리의 의미

https://kldp.org/node/38864

한 프로세스에서 메모리 주소는 실제 메모리의 물리적인 주소가 아닌 하드웨어적으로 변경된 논리적인 주소입니다. 
즉, 특정 메모리를 일반 프로그램에서 접근하려 하면 그 논리주소를 실시간으로 물리주소로 변경한후 그 곳의 내용을 읽어서 넘겨주지요.
이렇게 하기 때문에 하나의 물리적인 메모리를 수 많은 프로세스가 사용해도 단편화되지 않은 일련의 큰 메모리 주소를 얻을 수 있게되는거죠.


http://egloos.zum.com/sweeper/v/2988689

1. 프로세스와 가상 메모리

모든 프로세스는 자신만의 가상 주소 공간을 가지고 있다.
32비트/64비트 프로세스는 각 비트수에 맞게 최대 4GB/16EB의 주소 공간을 가진다.

모든 프로세스들은 자신만의 주소 공간을 가지기 때문에,
특정 프로세스 내에서 쓰레드가 수행될 때 해당 쓰레드는 프로세스가 소유하고 있는 메모리에 대해서만 접근이 가능하다.
다른 프로세스에 의해 소유된 메모리는 숨겨져 있으며, 접근이 불가능하다.

윈도우에서는 운영체제 자체가 소유하고 있는 메모리 또한 숨겨져 있다.
이는 특정 프로세스의 수행 중인 쓰레드가 운영체제의 데이터에 접근하는 것이 불가능함을 의미한다.

따라서, A 프로세스가 0x12345678 주소에 무엇인가를 저장하였지만,

B 프로세스 역시 0x12345678 주소에 무엇인가를 저장할 수 있으며, 이 주소들은 완전히 독립되어 있는 것이다.


가상 메모리는 프로세스의 logical memory와 physical memory를 분리하기 위해 생겨난 것이라 할 수 있다.

댓글 없음:

댓글 쓰기

HOME