가상 메모리(Virtual Memory System) 란?
메모리가 실제 메모리보다 많아 보이게 하는 기술로, 어떤 프로세스가 실행될 때 메모리에 해당 프로세스 전체가 올라가지 않더라도 실행이 가능하다는 점에 착안하여 고안된 메모리 기법이다.
왜 가상 메모리를 사용하는가?
물리 메모리는 컴퓨터에 장착된 실제 메모리로서 최대 크기는 CPU에 의해 제한된다.
그렇다면 운영체제는 물리메모리보다 큰 프로세스를 실행시킬 수 없는 것인가?
또한 운영체제는 여러 프로세스를 합쳐 물리 메모리보다 클 때 이들을 동시에 실행 시킬 수 없는 것인가?
이에 대한 해답으로 가상메모리 기법이 등장하게되었다.
결국에 가상 메모리는 물리 메모리보다 큰 프로세스나 여러 개의 작은 프로세스를 동시에 실행시켜, 사용자나 응용프로그램에게 무한대의 메모리가 있다고 느끼도록하는 것이다.
프로세스 전체가 메모리에 올라오지 않더라도 실행이 가능하도록 하는 기법, 가상 메모리 기법을 통해 사용자 프로그램이 물리적 메모리보다 커져도 실행이 가능하도록 만듭니다. 가상메모리는 실제의 물리 메모리 개념과 사용자 관점의 논리 메모리를 분리한 것이다. 그래서 사용자가 메모리 크기에 관련한 문제를 염려하지 않아도 된다.
운영체제는 가상 메모리 기법을 통해 프로그램의 논리적주소 영역에서 필요한 부분만 물리적 메모리에 적재하고, 직접적으로 필요하지 않은메모리 공간은 디스크에 저장하게 된다.
논리 주소와 가상 주소
프로그램/프로세스 내에서 사용하는 주소를 논리 주소라고한다. 논리주소를 가상주소라고도 하는데, 둘은 같은 의미이다.
컴파일러 입장에서 보면 프로그램 내에서 코드와 변수의 주소는 프로그램의 내에서의 상대적인 주소이므로 논리 주소라고 부르는 것이 적합하지만, 가상 메모리를 다루는 운영체제 입장에서는 프로세스의 가상 주소 공간 내에서 사용되는 주소를 가상 주소라고 부르는 것이 더 적합하다.
가상 메모리와 가상(논리) 주소 공간
가상 메모리(Virtual Memory)와 가상(논리) 주소 공간(Virtual Address Space)은 다른 개념이다.
가상 주소 공간은 각 프로세스 당 주어지는 논리적인 공간이다.
가상 주소 공간의 크기는 물리 메모리(RAM)의 크기와는 독립적이며, 레지스터 크기에 종속적이다.
Word Size가 32비트인 컴퓨터의 경우 레지스터의 크기도 32비트다.
이는 2^32 개의 주소를 나타낼 수 있음을 의미하고,
1Byte당 주소가 주어지므로 최대 4GB의 가상 주소 공간을 가질 수 있다.
가상 주소 공간 구조 (@ 프로세스 당)
가상 주소 공간은 크게 아래와 같이 나뉜다.
- Stack : 지역변수, 함수의 매개변수 (함수 실행 시 저장, 종료 시 반환)
- Unused Address Space : 필요할 경우 (런타임 간 저장, 원할 때 반환)
- Heap : 사용자의 동적 할당 (런타임 간 저장, 원할 때 반환)
- Data and BSS : 초기화된 변수(Data), 초기화 안 된 변수(BSS) (컴파일 시 저장, 프로그램 종료 시 반환)
- Instruction(Code or Text) : 실행할 코드 (기계어 형태) (컴파일 시 저장, 프로그램 종료 시 반환)
나중에 공부할 주제
요구 페이징
참고
https://ahnanne.tistory.com/15
[운영체제] 가상 메모리(Virtual Memory System)
들어가기 전.. 메모리(memory)란? 메모리란 프로그램과 프로그램 수행에 필요한 데이터 및 코드를 저장하는 장치임. 메모리는 크게 내부 기억장치인 주기억장치와 외부 기억장치인 보조 기억장치
ahnanne.tistory.com
https://beeehappy.tistory.com/53
[컴퓨터시스템] 가상메모리 (Virtual Memory)
목차 가상메모리란 무엇이고, 왜 필요한가 가상메모리 주소 공간 (Virtual Address Space, VAS) Stack Heap Data Code, Text 가상 메모리 (Virtual Memory) 실제 메모리 크기와 상관없이 메모리를 이용할 수 있도록
beeehappy.tistory.com
https://luv-n-interest.tistory.com/1005
Virtual Memory, 가상메모리란?
가상메모리란 메모리를 관리하는 방법으로 실제 메모리 주소가 아닌 논리적 주소를 이용해서 관리한다. 이로써 실제 주기억장치보다 큰 프로그램도 적재할 수 있다고 사용자에게 Illusion을 준다
luv-n-interest.tistory.com
https://dding9code.tistory.com/100
가상메모리(virtual memory)
가상메모리(virtual memory) => 램과 하드디스크를 하나의 추상화된 메모리 영역으로 제공한다. 가상메모리는 왜 태어났는가? 예전 도스시절 하나의 프로그램만 실행시키던 그 때 프로그램이 메모리
dding9code.tistory.com
'Computer Science > OperatingSystem' 카테고리의 다른 글
[OS] CPU 스케줄링이란? (0) | 2023.04.17 |
---|---|
[OS] 참조의 지역성과 참조 집합 (0) | 2023.03.05 |
[OS] 운영체제 란? (0) | 2023.01.11 |
[OS] DeadLock(교착상태) 란 (0) | 2023.01.07 |
[OS] 프로세스와 스레드(Process, Thread) (0) | 2023.01.03 |