개발자 면접 공부/운영체제,CS

가상메모리, 번외(why name random access memory?)

chogyujin 2024. 4. 9. 13:31
728x90

1. 개요

오늘은 가상메모리에 대해 알아보겠습니다.


2. 가상메모리?

가상메모리라는 말을 들었을때 물리적 메모리가아닌 가상? 이라는 생각을 먼저했었습니다.

도대체 가상메모리란 무엇이며 현재 많은 용량을 저장할수 있는 물리메모리를 굳이 가상메모리와 나눴는지 공부가 필요했습니다.

 


3. 결국 공간과 보안을 위해

가상메모리를 이렇게 정의할수 있습니다.

가상 메모리(Virtual Memory)는 운영체제에서 실제 물리 메모리(RAM)보다 큰 주소 공간을 프로세스에 제공하기 위해 사용되는 기술

 

CPU가 프로세스를 처리할 때, 특정 시점에 프로세스의 특정 메모리를 접근 하는 주소값은 아주 작을 것이다.
그 주소값이 아주 작다는 점을 착안하여 고안된 방법이며, 가상 메모리는 프로세스와 관련된 주소값을 저장하는 메모리 공간을 분리하여 관리함으로써, 내 컴퓨터의 메모리가 실제 메모리보다 많아 보이게하는 기술입니다.

그다음 프로세스들은 독립적으로 가상메모리의 논리주소를 가지고있습니다. 이말은 즉슨 서로의 메모리 공간을 침법하지 않는다는 얘기이며 이것이 가상메모리의 보안성입니다.
만약 프로세스들이 서로 메모리를 침법하여 값을 바꾼다면 매우 큰일이 벌어지겠지요


4. 가상 주소

  1.  프로세스가 참조하는 주소이다.
  2. 가상 주소는 프로세스마다 독립적으로 할당 되며, 프로세스는 자신만의 가상 주소 공간을 가지고 있다고 생각한다. 
  3. 가상 주소는 논리적인 주소이다. 운영체제는 프로세스에게 연속된 가상 주소 공간을 제공하고, 이를 필요한 크기의 물리 메모리 페이지로 매핑 한다.
    이 작업으로 메모리 공간의 낭비를 최소화 할 수 있다.
  4. 만약, 가상 주소를 사용하지 않고 프로세스의 모든 데이터들을 물리 주소로 접근한다고 생각해보면 여러 개의 프로세스들이 실행되면서 같은 물리 주소를 접근해서 데이터를 수정하고, 민감 데이터를 쉽게 읽어온다면 오류가 발생할 것이다.
  5. 프로세스마다 다른 가상 주소를 사용하면 같은 물리 주소 위치를 가르키고 있을 수 있지만, 읽고 쓰고할 수 있는 공간은 가상 주소 공간에서만 제한되므로 실제 물리 주소의 데이터들이 수정되거나, 프로세스들이 동시에 접근해서 충돌하는 일은 없을 것이다. 

여기서 4번은 만약 직접 물리 주소로 접근할 경우 보안상의 문제가 생길수 있습니다.
ex) 물리 주소의 안에 있는 값을 맘데로 바꿔버리기~


5. 물리 주소

  1. 실제 메모리의 주소
  2. 시스템 전체적으로 공유되는 주소이며, 여러 프로세스가 공유 메모리 영역을 사용할 때 사용된다.
  3. 프로세스가 물리 주소로 접근하려면, 물리 주소를 가르키고 있는 가상 주소를 물리 주소로 변환 해야한다.

6. 동작 원리

 

프로세스는 생성될 때 메모리를 일정하게 할당 받는다.
그런데 프로세스가 모든 메모리 공간을 사용하는 것이 아니라, 처리해야할 데이터나 작업에 따라 공간을 모두 사용할 수도 있고, 공간이 남을 수도 있다.
이때, 프로세스가 차지하는 실제 메모리 공간만 물리 메모리(RAM)에 넣고, 이 물리 메모리를 접근할 수 있는 가상 주소를 프로세스의 메모리에 저장한다. 

 

그 이후, 프로세스가 작업을 처리하기 위해 CPU를 호출하고, CPU는 작업을 처리하기 위해 특정 데이터를 조회할 수 있다. 이때, 특정 데이터가 물리 메모리(RAM) 어디에 있는지는 데이터의 가상 주소를 통해 알 수 있다. 프로세스는 CPU에게 작업을 요청할 때 데이터의 가상 주소를 넘긴다.

 

가상 주소는 실제 물리 주소와 이어져 있지만, 가상 주소가 차지하는 가상 메모리 공간은 아주 작다.
실제 데이터는 큰 물리 공간을 차지하고 있겠지만, 가상 메모리로 인해 아주 작은 메모리 공간을 차지하면서 실제 메모리와 연결되어있는 것이다. 

 

CPU는 작업을 처리하기 위해 실제 데이터가 어디에 있는지 물리 주소 위치를 알아야하는데, 이때 가상 주소를 물리 주소로 변환하는 작업을 거친다. 가상 주소를 물리 주소로 변환하는 작업을 하는 시스템은 MMU 이다.

출 처 : https://jerryjerryjerry.tistory.com/186

실제로 가상 메모리의 주소를 저장하는 공간은 페이지 테이블 즉 물리메모리 커널에 저장된다고 알고있습니다.


7. MMU

  1. MMU는 가상 주소를 물리 주소로 변환하고, 메모리를 보호하는 기능을 수행한다.
  2. MMU를 사용하게 되면, CPU는 각 물리 메모리에 접근하기 이전에 메모리 주소 변환 작업을 거친다.
  3. MMU는 굉장히 빈번하게 작업을 처리해야 하기 때문에, 소프트웨어 코드만으로는 이 작업을 수행하기 벅차다.
    그래서 메모리 관리 작업을 하는 특수한 하드웨어를 따로 컴퓨터에 설치해야 한다.(작은 칩이 컴퓨터에 꽂혀있음)
  4. MMU가 메모리를 일일이 가상 주소에서 물리 주소로 변환하게 되면, 작업 부하가 높아질 수 있다.
    그래서 MMU 는 실제 물리 메모리 공간을 여러 페이지 단위로 나눠서, 각 페이지 단위로 데이터를 처리한다.

8. 번외

왜 RAM 은 Random Access Memory일까요?

그것은 무작위로 데이터를 저장한다는것이 아닌 임의에 주소값을 가져올수있다는 점에서 있습니다.
이 말은즉 원하는 위치에 동일한 시간/속도/노력으로 저장할수 있다는 뜻이며, 하드,테이프 등 보조기억장치와는 반대입니다.


9. Ref

https://jerryjerryjerry.tistory.com/186

 

[운영체제] 가상 메모리란?

가상 메모리 등장 배경 컴퓨터는 프로세스 1개 또는 여러 개의 프로세스를 처리할 수 있다. 그리고 프로세스는 생성되면 작업을 처리하기 위해 메모리를 할당 받아야 한다. 우리의 컴퓨터는 여

jerryjerryjerry.tistory.com

https://www.reddit.com/r/computerscience/comments/rstlls/why_is_ram_called_random/

 

From the computerscience community on Reddit

Explore this post and more from the computerscience community

www.reddit.com

 

'개발자 면접 공부 > 운영체제,CS' 카테고리의 다른 글

임계영역(Critical Section)  (0) 2024.04.08
메모리 영역  (1) 2024.03.23
TCB  (0) 2023.12.14
가상메모리 관리  (2) 2023.12.08
캐시메모리와 지역성 그리고 캐시라인  (0) 2023.11.30