본문 바로가기
면접 질문/운영체제

[운영체제/OS] 메모리와 가상 메모리 면접 질문 및 답변 정리

by 그적 2024. 2. 7.

 

  • 메모리가 무엇인지 초등학생이 이해할 수 있는 수준으로 설명해주시겠어요?
더보기

우리가 공부를 할 때 책상 위에 책이 올려져있어야 하잖아? 그 책상을 메모리라고 생각하면 돼. 공부를 안 할 땐 책이 책장에 꽂혀 있어서 책을 볼 수 없는데, 책상 위에 있는 책들은 쉽게 펼칠 수 있고, 공부할 수 있는 것처럼 컴퓨터가 일을 할 때 작업하는 공간을 메모리라고 불러.

 

  • 메모리에서 논리적 주소와 물리적 주소에 대해 설명해주세요.
더보기

메모리에서 논리적 주소는 프로세스 관점에서 필요한 주소 값이고, 물리적 주소는 실제 메모리의 주소 값을 의미합니다. CPU에서 작업이 이뤄질 때 논리적 주소를 물리적 주소로 변환하는 과정이 필요하며, 이것을 MMU가 처리합니다.

 

  • 물리적 주소만 사용하는 것이 아닌, 논리적 주소와 함께 이유가 무엇인가요?
더보기

프로세스 혹은 스레드 단위로 작업할 때 그 내부에 있는 데이터 혹은 코드들에 대한 주소 값을 가지고 있습니다. 컴퓨터는 메모리 공간이 한정되어 있어, 메모리 공간이 부족할 때 메모리에 올라간 프로세스를 디스크로 옮기는 작업이 이뤄집니다. 만약 물리적 주소만 사용한다면, 이 과정에서 프로세스 내부의 모든 주소를 변경해야 하는 상황이 발생합니다. 하지만 프로세스 내부의 주소를 논리적 주소인 offset으로 설정해두고, offset과 프로세스의 시작 주소의 합으로 물리적 메모리를 구한다면, 모든 주소 값을 변경하는 것보다 더 좋은 효율을 낼 수 있기 때문에 논리적 주소를 사용하는 것입니다.

 

  • 물리적 주소로 주소를 변환하는 과정을 MMU가 처리하는데, MMU에 대해 아시나요?
더보기

네, MMU는 논리적 주소를 물리적 주소로 변환하는 기능을 가진 하드웨어 부품입니다. 주소 변환 과정은 매우 빈번하게 일어나기 때문에 하드웨어로 제공되고 있습니다. 물리적 주소로 변환하는 과정은 프로세스 내부의 offset 값인 Limit 레지스터와 프로세스의 시작 주소인 Base 레지스터의 합으로 물리적 주소를 구할 수 있습니다. 이때 Limit 레지스터의 값이 Base 레지스터의 값보다 크면 잘못된 메모리 주소를 참조하고 있다는 뜻이므로 주소에 대한 검증 및 보호 기능으로 동작할 수 있습니다.

 

  • MMU의 주소 변환 과정을 순서대로 말씀해주세요.
더보기

CPU가 MMU 내의 캐시인 TLB를 확인합니다. TLB에 주소가 존재하면 바로 주소를 반환하고, 주소가 존재하지 않는다면 페이지 테이블을 확인합니다. 페이지 테이블에 주소가 존재하면 바로 주소를 반환하고, 존재하지 않는다면 Page Fault를 발생시킵니다. Page Fault Exception이 발생했다는 것은 메모리에 프로세스가 로드되어 있지 않다는 의미이므로, 디스크에서 페이지 위치를 확인하여 메모리의 빈 프레임에 로드합니다.

 

  • TLB는 어떤 단어의 약자인가요?
더보기

Translation Lookaside Buffer의 약자입니다. 

 

  • MMU가 잘못된 주소를 참조하려고 한다면 무슨 일이 일어나나요?
더보기

MMU가 잘못된 주소를 참조하려고 한다면, Segment Fault라는 트랩이 발생합니다. 인터럽트의 일종으로 Exception Handler에게 제어권을 넘겨 발생한 트랩을 처리합니다.

 

  • 외부 단편화와 내부 단편화에 대해 설명해주세요.
더보기

프로세스는 메모리 블록을 할당받고, 동작이 끝나면 메모리 블록을 해제하면서 빠져나갑니다. 이때 크기가 작은 프로세스의 경우에는 아주 작은 메모리 공간을 할당받을 텐데, 이 프로세스가 할당받은 메모리 공간은 다른 프로세스가 들어가기엔 너무 작아 빈 공간인 상태로 남게 됩니다. 이처럼 크기가 작은 프로세스가 빠져나간 후 쓸모 없어지는 메모리 공간이 생기는 것을 외부 단편화라고 합니다. 내부 단편화는 프로세스가 할당받은 메모리 공간이 프로세스의 크기보다 커 블록 내부에 공간이 남는 것을 의미합니다.

 

  • 외부 단편화 해결 방법은 무엇인가요?
더보기

외부 단편화를 해결하기 위한 방법은 페이징 기법을 사용하는 것입니다. 페이징을 설명하기 앞서, 프로세스를 일정한 단위로 분할한 것을 페이지, 메모리를 일정한 단위로 분할한 것을 프레임이라고 합니다. 페이지와 프레임을 동일한 크기로 분할해 프로세스에게 메모리를 할당하는 것을 페이징이라고 합니다. 페이지와 프레임을 동일한 크기로 분할했기 때문에 쓸모 없어지는 빈 공간이 생기지 않아 외부 단편화를 해결할 수 있습니다. 또한, 페이징 외에도 비효율적이어서 사용되지 않는 조각 모음으로 외부 단편화를 해결할 수 있습니다.

 

  • 내부 단편화 해결 방법은 무엇인가요?
더보기

내부 단편화를 해결하는 방법은 세그먼트 기법을 사용하는 것입니다. 페이지와 프레임을 일정한 크기로 분할하는 페이징 기법과 달리, 프로세스의 크기에 따라 메모리 공간을 할당받는 방법입니다. 프로세스 크기에 맞는 메모리를 할당받기 때문에 내부 단편화는 해결했지만, 외부 단편화가 발생한다는 단점을 가집니다.

 

  • 가상 메모리란 무엇인가요?
더보기

메모리는 한정되어 있는데, 컴퓨터는 메모리보다 더 큰 용량을 가진 프로그램을 실행시킬 수 있습니다. 이것은 프로세스를 일정한 단위로 분할해 실행에 필요한 작업만 메모리에 로드하여 실행하기 때문에 가능한 일입니다. 즉, 가상 메모리란 한정된 메모리를 효율적으로 사용하기 위해 프로세스 동작에 필요한 작업만 메모리에 로드하여 실제 메모리보다 더 큰 메모리를 가진 것처럼 보이도록 하는 기술입니다.

 

  • 메모리와 가상 메모리 차이를 말씀해주세요.
더보기

메모리는 CPU가 프로그램을 실행하기 위한 작업 공간입니다. 메모리는 실제 컴퓨터 내 메인 메모리를 의미하며, 메모리 용량은 한정되어 있기 때문에, 프로세스를 분할해 필요할 작업만 메모리에 로드될 수 있도록 동작합니다. 이로 인해 실제 메모리 용량보다 더 큰 용량을 가진 것처럼 보이며, 이것을 가상 메모리라고 합니다.

 

  • 너무 많은 프로세스가 메모리에 로드되면 어떤 일이 발생하나요?
더보기

너무 많은 프로세스가 메모리에 로드되면, 프로세스 당 할당되는 메모리 공간이 작아집니다. 즉, 프레임의 개수가 줄어드는 것입니다. 이로 인해 작업에 필요한 충분한 공간을 할당받지 못해 디스크에서 데이터를 가져와야 하는 Page Fault가 빈번하게 발생하며, 프로세스 작업을 처리하는 것보다 디스크에서 데이터를 가져오는 오버헤드가 더 커지는 문제가 발생합니다. 이것을 스레싱이라고 부릅니다.

 

  • 스레싱을 해결하기 위한 방법에 대해 말씀해주세요.
더보기

스레싱을 해결하기 위한 방법은 Page Fault가 발생하는 상한 값과 하한 값을 설정하는 것입니다. 상한 값을 넘기면 프로세스 당 할당되는 프레임의 수를 늘리고, 하한 값보다 낮아지면 프로세스 당 할당되는 프레임의 수를 줄입니다.

 

  • Page Fault, 즉 디스크에서 데이터를 가져오는데 걸리는 시간은 몇 초인지 알고 계시나요?
더보기

100에서 400ms 사이의 오버헤드가 발생하며, 이 시간 동안 CPU는 아무 작업도 처리하지 않습니다.

 

댓글