![[기술 면접] 8. 가상 메모리에 대해 설명해주세요. 1 제목을 입력해주세요 복사본 9 001](https://i0.wp.com/allhoneytip.com/wp-content/uploads/2023/09/%EC%A0%9C%EB%AA%A9%EC%9D%84-%EC%9E%85%EB%A0%A5%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94__%EB%B3%B5%EC%82%AC%EB%B3%B8-9-001-optimized.png?resize=300%2C300&ssl=1)
저번 시간에 이어, 이번엔 가상 메모리에 대한 질문들을 알아보겠습니다. Java 카테고리의 JVM 과도 겹치는 내용이 있습니다. 그만큼 중요하고 자주 등장하곤 합니다. 서비스 플랫폼 기업 K사와 게임 제작 기업 C사에서 마주했던 질문으로 기억합니다.
![[기술 면접] 8. 가상 메모리에 대해 설명해주세요. 2 가상 메모리에 대해 설명해주세요.](https://i0.wp.com/allhoneytip.com/wp-content/uploads/2023/09/image-4-optimized.png?resize=683%2C625&ssl=1)
Q: 가상 메모리에 대해 설명해주세요.
Process 전체가 메모리에 올라오지 않아도, 실행이 가능하도록 하는 기법입니다. 가상 메모리 기법을 통해 사용자 프로그램이 물리적 메모리보다 커져도 실행이 가능하다는 장점이 있습니다.
- OS는 가상 메모리 기법을 통해 프로그램의 논리적 주소 영역에서 필요한 부분만 물리적 메모리에 적재하고, 직접적으로 필요하지 않은 메모리 공간은 디스크(Swap 영역)에 저장하게 됩니다.
Q: 절대주소와 논리주소에 대해 설명해주세요.
- 절대주소는 메모리상에 레지스터가 사용하는 물리적 주소를 의미합니다. 사용자는 직접적으로 물리 주소로 접근하지 못하기 때문에 논리주소로 접근합니다.
- 논리주소는 CPU 입장에서의 메모리 주소입니다. 프로그램 실행 중에 CPU가 생성하는 주소로 가상 주소라고도 하며, 해당 주소를 사용해서 실제 메모리 위치를 액세스할 때 참조로 사용됩니다. 절대주소와 관계없이 항상 0번지에서 시작한다는 특징이 있습니다.
Q: 스왑(Swap)영역이란 무엇인가요?
실제 메모리에 당장 필요하지 않은 데이터를 임시로 저장 해두는 HDD(Hard Disk Drive)의 영역입니다.
Q: 요구 페이징(demand paging)이란 무엇인가요?
특정 page에 대해 cpu의 요청이 들어왔을 때 해당 page를 메모리에 적재합니다. 당장 실행에 필요한 page만을 메모리에 적재하기 때문에 메모리 사용량이 감소하고, 프로세스 전체를 메모리에 적재하는 입출력 오버헤드도 감소하는 장점이 있습니다. (사용되지 않을 페지를 가져오는 시간과 메모리 낭비를 줄일 수 있습니다.)
유효, 무효 비트를 두어 각 page가 메모리에 존재하는지 표시하게 됩니다.
Q: Page fault란 무엇인가요?
CPU가 무효 비트로 표시된 page에 엑세스 하는 상황을 page fault라고 합니다. CPU가 무효 page에 접근하면, 주소 변환을 담당하는 하드웨어인 MMU가 page fault trap을 발생시키게 되고, 일련의 순서로 page fault를 처리합니다.
- CPU가 특정 페이지를 참조합니다.
- Page table에서 해당 페이지가 무효 상태임을 확인합니다.
- MMU에서 page fault trap을 발생시킵니다.
- 디스크에서 해당 페이지를 빈 프레임에 적재하고, page table을 업데이트합니다.
Q: 페이지 교체 알고리즘(replacement algorithm)에 대해 말해주세요.
FIFO, 최적 페이지 교체, LRU, LFU 등이 있습니다.
알고리즘 | 설명 |
---|---|
FIFO | 메모리에 올라온지 가장 오래된 page를 교체 |
최적 페이지 교체 | 앞으로 가장 오랫동안 사용되지 않을 page를 찾아서 교체하며 구현이 어렵습니다. |
LRU | 가장 오랫동안 사용되지 않은 page를 교체 |
LFU | 참조 횟수가 가장 적은 page를 교체하며 비용 대비 성능이 좋진 않아 잘 쓰이진 않습니다. |
마치며
이번 시간엔 가상 메모리가 무엇인지와 그에 관련된 개념 질문들을 알아보았습니다.
다음 시간엔 Sync, Async, Block, Non-Block에 대해 알아보겠습니다.
![[기술 면접] 8. 가상 메모리에 대해 설명해주세요. 3 가상 메모리에 대해 설명해주세요.](https://i0.wp.com/allhoneytip.com/wp-content/uploads/2023/09/image-5-optimized.png?resize=616%2C416&ssl=1)
답글 남기기