Memory의 기본 지식 정리

YJS·2023년 10월 3일
0

🤓오늘의 공부 주제: Paging, Segmentation, 가상 메모리🤓

Q. paging이란 무엇인가?

A. process가 할당받은 메모리 공간을 일정한 page 단위로 나누어, 물리 메모리에서 연속되지 않는 서로 다른 위치에 저장하는 메모리 관리 기법

여기서 잠깐!💡 논리적 주소란?
process가 memory에 적재되기 위한 독자적인 주소 공간인 논리적 주소(logical address)가 생성됩니다. 논리적 주소는 각 process마다 독립적으로 할당되며, 0번지부터 시작됩니다.

여기서 잠깐!💡 물리적 주소란?
물리적 주소란 프로세스가 실제로 메모리에 적재되는 위치를 말합니다.

여기서 잠깐!💡 주소 바인딩이란?
CPU가 기계어 명령을 수행하기 위해 process의 논리적 주소가 실제 물리적 메모리의 어느 위치에 매핑되는지 확인하는 과정을 주소 바인딩(address binding)이라고 합니다.

paging 기법은 process의 메모리 공간을 동일한 크기의 page 단위로 나누어 물리적 메모리의 서로 다른 위치에 page들을 저장하는 메모리 관리 기법으로 물리적 메모리를 page와 같은 크기의 frame으로 미리 나누어둔다.

paging 기법에서는 주소 바인딩(address binding)을 위해 모든 프로세스가 각각의 주소 변환을 위한 page table을 갖는다.

Q. paging 기법 사용시 발생할 수 있는 메모리 단편화(Memory fragmentation) 문제란 무엇인가?

A.물리적 메모리 공간이 작은 조각으로 나눠져서 메모리가 충분히 존재함에도 할당이 불가능한 상태를 메모리 단편화라고 한다. 페이징 기법에서는 프로세스의 논리적 주소 공간과 물리적 메모리가 같은 크기의 페이지 단위로 나뉘어지기 때문에 외부 단편화가 발생하지 않는다. 그러나 프로세스 주소 공간의 크기가 페이지 크기의 배수라는 보장이 없기에 프로세스의 주소 공간 중 마지막에 위치한 페이지에서는 내부 단편화가 발생할 가능성이 있다.

Q. segmentation이란 무엇인가?

A.process가 할당받은 메모리 공간을 논리적 의미 단위(segment)로 나누어, 연속되지 않는 물리 메모리 공간에 할당될 수 있도록 하는 메모리 관리 기법

일반적으로 process의 메모리 영역 중 Code, Data, Heap, Stack 등의 기능 단위로 segment를 정의하는 경우가 많다.
segmentation 기법에서는 주소 바인딩(address binding)을 위해 모든 프로세스가 각각의 주소 변환을 위한 segment table을 갖는다.

세그먼테이션 기법에서 세그먼트의 크기만큼 메모리를 할당하므로 내부 단편화 문제는 발생하지 않는다. 하지만 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되면 외부 단편화 문제가 발생할 가능성이 있다.

Q. paging과 segmentation의 차이는 무엇인가?

A.paging은 일정한 크기의 단위로 나누어 할당을 하는데, 이에 반해 segmentation은 code, data, heap, stack등의 기능(의미)단위로 물리 메모리에 할당을 하는 기법이다. paging의 경우 내단편화의 문제가 발생할 수 있는데, 이에 반해 segmentation은 외단편화의 문제가 발생할 수 있다.

Q. paged segmentation은 무엇인가?

A.paged segmentation이란 segmentation을 기본으로 하되 이를 다시 동일 크기의 page로 나누어 물리 메모리에 할당하는 메모리 관리 기법. 즉, 프로그램을 의미 단위의 segment로 나누고 개별 segment의 크기를 page의 배수가 되도록 하는 방법. 이를 통해 segmentation 기법에서 발생하는 외부 단편화 문제를 해결하고, 동시에 segment 단위로 process 간의 공유나 process 내의 접근 권한 보호가 이루어지도록 해서 paging 기법의 단점을 해결.

Q. 가상메모리란 무엇인가?

A.process 전체가 메모리에 올라오지 않더라도 실행이 가능하도록 하는 기법.가상 메모리 기법을 통해 사용자 프로그램이 물리적 메모리보다 커져도 실행이 가능.


운영체제는 가상 메모리 기법을 통해 프로그램의 논리적주소 영역에서 필요한 부분만 물리적 메모리에 적재하고, 직접적으로 필요하지 않은 메모리 공간은 디스크(Swap 영역)에 저장.

여기서 잠깐!💡 Page fault란?
CPU가 무효 비트(invalid bit)로 표시된 page에 엑세스하는 상황을 page fault라고 함.

Q. page 교체 알고리즘(replacement algorithm)이란 무엇인가?

A.page fault가 발생하면, 요청된 page를 디스크에서 메모리로 가져온다. 이 때, 물리적 메모리에 공간이 부족할 수 있다. 그럴 경우에는 메모리에 올라와 있는 page를 디스크로 옮겨서 메모리 공간을 확보해야 한다. 이것을 페이지 교체(page replacement)라고 하고, 어떤 page를 교체할 것이냐를 결정하는 알고리즘이 page교체 알고리즘(replacement algorithm)이라고 한다.

교체 알고리즘은 최대한 page fault가 적게 일어나도록 해야하므로 앞으로 참조될 가능성이 적은 page를 선택해서 교체하는 것이 성능을 향상시키는 방법이다.

알고리즘설명
FIFO(First In First Out)메모리에 올라온지 가장 오래된 page를 교체한다.
최적 페이지 교체앞으로 가장 오랫동안 사용되지 않을 page를 찾아 교체한다. 실제구현은 어렵다
LRU(Least Recently Used)가장 오랫동안 사용되지 않은 page를 교체한다.
LFU(Least Frequently Used)참조 횟수가 가장 적은 page를 교체한다. 비용대비 성능이 좋지 않아 잘 쓰이진 않는다.

출처 : 인프런 - 기출로 대비하는 개발자 전공면접 [CS 완전정복]

profile
우당탕탕 개발 일기

0개의 댓글