본문 바로가기
개발 일기장/개발 일지

20250218 TIL

by 룰루루 2025. 2. 18.

✅ 궁금한 점 / 복습 포인트

✔️ vm에서 메모리를 할당하는 원리가 어떻게 될까

 
추측
논리적으로 영역을 분리시킬 것 같다. 이론상 하나의 host os에 vm을 여러 개 올릴 수 있다고 알고 있으니, 논리적인 영역으로 분리시킬 수밖에 없겠다. 가령 멀티 프로세스 프로그램처럼 말이다. 
 
새롭게 알아낸 것
vm은 host os의 물리적 메모리를 가상화하여 사용한다. 다만 여기서 하이퍼바이저(hypervisor)가 개입한다고 한다. vm에서 메모리를 요청하면, 하이퍼바이저는 이를 물리 메모리에서 할당하여 vm이 사용할 수 있도록 한다고 한다. 
 
이중 페이지 테이블이 사용된다고 한다. 물리 주소와 논리 주소를 매핑하기 위해서 페이지 테이블이 사용된다는 것까지는 알고 있었는데, guest os라는 일종의 추상화 계층이 하나 더 추가되면서 페이지 테이블에 layer가 하나 더 추가된 것으로 이해했다. 우선 guest os의 가상 메모리를 guest os의 물리 메모리로 변환하는 1단계 변환이 일어나고, guest os의 물리 메모리를 host os의 물리 메모리로 변환하는 2단계 변환이 일어난다고 한다. 
 

✔️ vm에서 이론적으로 host os의 memory, 저장장치보다 큰 용량을 사용할 수 있는가? 만약 그렇다면 vm(guest os)과 host os는 각각 어떻게 메모리를 관리하나?

 
추측
사용할 수 있다고 본다. 좀 전에 이중 페이지 테이블이 있음을 알게 되면서 추측해봤다. 정확히는 한정된 물리 메모리를 늘릴 수는 없겠지만, guest os(vm)의 가상 메모리를 host os의 물리 메모리보다 크게 설정하는 것 자체는 가능할 것이라고 추측한다. 다만 너무 큰 가상 메모리를 설정할 경우 잦은 swap 및 page fault로 인하여 성능이 저하될 수 있겠다. 
 
새롭게 알아낸 것
사용할 수 있다. swap뿐만 아니라, 클라우드 환경에서는 물리적인 메모리를 초과할 경우 실시간 마이그레이션(live migration)을 통해서 다른 물리 서버에서 자원을 빌려오는 것이 가능하다고 한다. 그러면 이론적으로 host os의 메모리를 초과하여 사용할 수 있다. 이 부분이 궁금했던 이유는 회사 클라우드 환경에서 메모리를 할당할 때 일반 host os가 갖기 어려운 크기(2000GB까지도 봤다)의 메모리까지도 할당할 수 있다고 나와있어서 그 원리가 궁금했었다. 
 

✔️ 왜 guest os는 hypervisor를 통해서 host os의 물리 메모리를 사용할까? 그냥 사용하면 안 되는 걸까? hypervisor는 무슨 역할을 할까?

 
추측
hypervisor는 페이지 테이블 매핑을 통해서 guest os의 물리 메모리 주소와 host os의 물리 메모리 주소를 연결시켜주는 일을 한다고 알고 있다. 이러한 작업 외에 또 hypervisor가 필요한 이유가 뭔지는 아직 잘 모르겠다. 
 
새롭게 알아낸 것
그냥 사용하면 각 vm이 사용하는 host os의 메모리나 자원이 완벽하게 분리되지 않아서 충돌이 나거나 보안이 뚫리는(한 vm에서 다른 vm의 메모리나 자원을 볼 수 있는) 문제가 생길 수 있다고 한다. hypervisor는 host os와 guest os 사이에서 자원(메모리 등)을 가상화하고 관리하는 역할을 전적으로 담당한다. 
 
메모리를 가상화하고 이중 페이지 테이블을 사용하는 것 뿐만이 아니라, 각 vm이 사용하는 메모리와 cpu를 격리한다. 또한 각 vm 간의 cpu 시간을 나누고 cpu 스케줄링을 통해 cpu 자원이 여러 vm에 공정하게 분배되도록 한다고 한다. 여기에서는 어떤 알고리즘이 우선적으로 사용될지는 모르겠다. 
 

✅ 아직 해결하지 못한 궁금증

✔️ 해당 프로젝트의 전체적 구조 그려보기
✔️ aws lambda function은 어떻게 서버리스로 동작할까?
✔️ 실시간 마이그레이션 기법의 원리는 무엇인가? 실시간 마이그레이션을 꼭 사용해야 하는 경우가 있나? 네트워크를 통한다고 알고 있는데 그러면 너무 느리지는 않을까?

 

'개발 일기장 > 개발 일지' 카테고리의 다른 글

20250221 TIL  (0) 2025.02.21
20250220 TIL  (0) 2025.02.20
20250219 TIL  (0) 2025.02.19
0822 이메일 폼 만들기  (0) 2022.08.23
0706 WED 업무 일지  (0) 2022.07.07