Memory 관련 용어
- 논리적 주소(Logical Address):
- 프로세스가 메모리에 적재되기 위한 독자적인 주소 공간인 논리적 주소가 생성 됩니다.
- 논리적 주소는 각 프로세스마다 독립적으로 할당 되며 0번지 부터 시작됩니다.
- 물리적 주소(Pysical address)
- 물리적으로 프로세스가 실제 메모리에 적재되는 위치를 말합니다.
- 주소 바인딩(address binding)
- CPU가 기계어 명령을 수행하기 위해 프로세스의 논리적 주소가 실제 물리적 메모리의 어느 위치에 매핑되는지 확인하는 과정
- 메모리 단편화
- 내부 단편화 : 프로세스가 필요한 공간 보다 더 많은 메모리가 할당되어 메모리가 낭비되는 상황
- 외부 단편화 : 메모리 중간중간에 사용하지 않는 공간이 생겨서 더이상 사용할 수 없는 상황
Q1. Paging이란 무엇인가요?
paging 기법은 process의 메모리 공간을 동일한 크기의 page 단위로 나누어 물리적 메모리의 서로 다른 위치에 page들을 저장하는 메모리 관리 기법입니다. paging 기법에서는 물리적 메모리를 page와 같은 크기의 frame으로 미리 나누어둡니다.
- Paging 기법에서는 주소 바인딩을 위해 모든 프로세스가 각각의 주소 변환을 위한 page table을 갖습니다.
꼬리 질문 1 : Paging 기법 사용시 발생할 수 있는 메모리 단편화 문제에 대해 설명하시오.
paging기법에서는 process의 논리적 주소 공간과 물리적 메모리가 같은 크기의 page 단위로 나누어지기 때문에 외부 단편화 문제는 발생하지 않습니다.
하지만 process 주소 공간의 크기가 page 크기의 배수라는 보장이 없기 때문에 프로세스의 주소 공간 중 마지막에 위치한 page에서는 내부 단편화 문제가 발생할 가능성이 있습니다.
Q2. Segmentation에 대해서 설명해주세요.
Segmentation 기법은 process가 할당받은 메모리 공간을 논리적 의미 단위(segment)로 나누어 연속되지 않는 물리 메모리 공간에 할당될 수 있도록 하는 메모리 관리 기법입니다.
일반적으로 메모리 영역을 Code, Data, Heap, Stack 등의 기능 단위로 segment를 정의하는 경우가 많습니다.
Segmentation 기법에서는 주소 바인딩을 위해 모든 프로세스가 각각의 주소 변환을 위한 segmentation table을 갖습니다.
꼬리 질문 1 : Segmentation의 메모리 단편화 문제에 대해 설명하시오.
Segmentation 기법에서는 Segment의 크기만큼 메모리를 할당하므로 내부 단편화 문제는 발생하지 않습니다.
하지만 서로 다른 크기의 segment들이 메모리에 적재되고 제거되는 일이 반복되면 외부 단편화 문제가 발생할 가능성이 있습니다.
꼬리 질문 2 : Segmentation과 paging의 차이는 뭔가요?
Paging은 일정한 크기의 단위로 나누어 할당을 하는데 반해
Segmentation 기법에서는 code, data, heap, stack등의 기능단위로 물리 메모리를 할당하는 기법입니다.
paging의 경우 내부 단편화의 문제가 발생할 수 있는데, 이에 반해
segmentation은 외부 단편화의 문제가 발생할 수 있습니다.
꼬리 질문 3 : Paged segmentation 기법에 대해 설명하시오.
paged sementation이란 segmentation을 기본으로 하되 이를 다시 동일한 크기의 page로 나누어 물리 메모리에 할당하는 메모리 관리 기법입니다. 즉, 프로그램을 의미하는 단위의 segment로 나누고 개별 segment의 크기를 page의 배수가 되도록 하는 방법입니다.
이를 통해 segmentation 기법에서 발생하는 외부 단편화 문제를 해결함과 동시에 segment 단위로 processrksdml rhddbsk process내의 접근 권한 보호가 이루어지도록 하여 paging 기법의 단점을 해결 합니다.
Q3. 가상 메모리에 대해서 설명해주세요
가상메모리(virtual memory)는 실제의 물리 메모리 개념과 개발자 입장의 논리 메모리 개념을 분리한 것입니다. 이렇게 함으로써 개발자가 메모리 크기에 관련한 문제를 염려할 필요 없이 쉽게 프로그램을 작성할 수 있게 해줍니다.
운영체제는 가상 메모리 기법을 통해 프로그램의 논리적 주소 영역에서 필요한 부분만 물리적 메모리에 적재하고 직접적으로 필요하지 않은 메모리 공간은 디스크(Swap 영역)에 저장하게 됩니다.
요구 페이징(demend paging)
당장 사용될 주소 공간을 page단위로 메모리에 적재하는 방법을 요구 페이징(demend paging)이라고 합니다. 요구 페이징 기법에서는 특정 page에 대해 cpu의 요청이 들어온 후에 해당 page를 메모리에 적재합니다. 당장 실행에 필요한 page만을 메모리에 적재하기 때문에 메모리 사용량이 감소하고 프로세스 전체를 메모리에 적재하는 입출력 오버헤드도 감소하는 장점이 있습니다.
요구 페이징 기법에서는 유효/무효 비트(valid/invalid bit)를 두어 page가 메모리에 존재하는지 표시하게 됩니다.
Page Fault
CPU가 무효 비트로 표시된 page에 엑세스하는 상황을 page fault라고 합니다.
CPU가 무효 page에 접근하면 주소 변환을 담당하는 하드웨어인 MMU가 page fault trap을 발생시키게 되고 다음과 같은 순서로 page fault를 처리하게 됩니다.
1. CPU가 페이지 N을 참조
2. Page table에서 페이지 N이 무효 상태임을 확인
3. MMU에서 Page fault trap이 발생
4. 디스크에서 페이지 N을 빈프레임에 적재하고 page table을 업데이트합니다. (invalid -> valid)
Page 교체 알고리즘
page fault가 발생하면 요청된 page를 디스크에서 메모리로 가져옵니다. 이때 물리적 메모리에 공간이 부족할 수 있습니다. 그럴 경우에는 메모리에 올라와있는 page를 디스크로 옮겨서 메모리 공간을 확보해야 합니다. 이것을 페이지 교체(page replacement)라고 하고 어떤 page를 교체할 것이냐를 결정하는 알고리즘이 page교체 알고리즘입니다.
'CS 기술면접 준비' 카테고리의 다른 글
서버 인증 방식(쿠키, 세션, 토큰) (0) | 2023.01.30 |
---|---|
Queue & Stack (0) | 2023.01.27 |
Array & Linked List (0) | 2023.01.26 |