운동하는 공대생

[OS(운영체제)] Virtual Memory 본문

OS

[OS(운영체제)] Virtual Memory

운동하는 공대생 2024. 8. 20. 16:01
728x90
반응형

1. Recap

운영체제에서 메모리에 저장되어 있는 process를 접근을 해야 하는데 이것은 보안에 문제가 생긴다. 그래서 이런 문제를 해결하고자 메모리의 직접적인 주소를 참조하는 게 아니라 가상의 주소를 참조하게 하는 것을 이것의 해결 방법으로 사용하고 있다. 이는 3가지 측면에서 효율성을 보인다.

 

  • Protection

각각의 서로 다른 프로세스가 서로를 보호 하기 위해서 VM이 작동해야 하며 이는 각각의 프로세스가 독립성을 가지게 해 준다.

  • Transparency

메모리의 실질적인 주소를 알 필요가 없기 때문에 프로그래밍의 편의성을 만들어 준다.

  • Efficiency

다양한 사이즈에 대한 메모리 분할을 최소화하는 게 가능하다.

 

2. Virtual Memory

프로세스의 주소는 가상의 메모리 주소를 가지고 있으며 이는 OS가 실행되는 단계에서 물리적 주소로 변환하는 작업을 진행합니다. 각각의 프로세스는 고유한 가상의 주소를 가지며 이는 충분히 크고 연속적인 주소를 가지고 있다. 또한 물리적 주소는 유동적으로 할당되고 풀어줍니다. 

 

3. Virtual memory APIs

프로세스가 메모리를 할당받는 함수로 메모리를 동적으로 할당받으면 프로세스의 heap 부분에서 데이터를 저장할 공간을 할당받는다. 

 

 

 

변수에 메모리를 할당받는 간단한 예제이다. Heap 부분에 malloc을 통해서 int 사이즈의 4비트를 4개의 블록으로 메모리를 할당받고 그 이후에 free함수를 사용하여서 메모리를 날려준다.

 

3.1 System calls

  • brk

이 system call은 메모리 할당 요청을 받으면 Heap에서  메모리를 할당 가능한지를 확인하고 공간이 있다면 할당하는 공간만큼 break로 마지막을 나타내며 주소를 할당한다.

 

주로 malloc함수가 brk를 호출한다. 이는 프로그래머 입장에서는 알 수 없지만 OS가 메모리를 한당 하면서 호출된다.

 

  • mmap(memory mapping)

이 방식은 파일이나 장치의 내용을 메모리에서 프로세스의 주소 공간에 직접 매핑하는 방식입니다. 이는 메모리를 좀 더 유동적이고 효율적으로 활용이 가능하면 큰 공간을 받아오기 위해서 사용합니다. 

 

 

728x90
반응형
Comments