[operating_system] Memory

Memory

paging이란?

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

[면접 🍯 TIP]

논리적주소와 물리적주소의 차이를 이해해야하고, 물리 메모리의 연속되지 않는 서로 다른 위치에 page단위만큼 저장한다는 점을 설명할 수 있어야 함

  • [용어정리] - 논리적 주소(logical address)란?
    • process가 memory에 적재되기 위한 독자적인 주소 공간인 논리적 주소(logical address)가 생성, 논리적 주소는 각 process마다 독립적으로 할당되며, 0번지부터 시작
  • [용어정리] - 물리적 주소(physical address)란?
    • 물리적 주소(physical address)는 process가 실제로 메모리에 적재되는 위치
  • [용어정리] - 주소 바인딩(address binding)이란?
    • CPU가 기계어 명령을 수행하기 위해 process의 논리적 주소가 실제 물리적 메모리의 어느 위치에 매핑되는지 확인하는 과정을 주소 바인딩(address binding)이라고 함.

Paging

  • paging 기법은 process의 메모리 공간을 동일한 크기의 page 단위로 나누어 물리적 메모리의 서로 다른 위치에 page들을 저장하는 메모리 관리 기법
  • paging 기법에서는 물리적 메모리를 page와 같은 크기의 frame으로 미리 나누어 둔다.
  • paging 기법에서는 주소 바인딩(address binding)을 위해 모든 프로세스가 각각의 주소 변환을 위한 page table을 갖

segmentation란?

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

일정한 크기의 단위로 나누어 할당을 했던 page와 다르게, segmentation은 의미 단위로 물리 메모리에 할당을 하는 기법

특히 code, data, heap, stack등의 기능(의미)단위로 나눈다는 점

Segmentation

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

  • 일반적으로 process의 메모리 영역 중 Code, Data, Heap, Stack 등의 기능 단위로 segment를 정의하는 경우

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

⭐ 가상 메모리에 대해서 설명

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

실제 우리가 사용하고 있는 운영체제에서는 가상메모리를 사용하고 있기 때문에 가상메모리를 이해하는 것이 중요! 운영체제에 의해서 메모리 관리가 어떻게 이뤄지고 있는지, 가상메모리가 무엇인지, page fault는 무엇이고 page 교체 알고리즘에는 어떤 것들이 있는지 잘 이해하기

가상메모리(virtual memory)

  • 가상메모리는 실제의 물리 메모리 개념과 개발자 입장의 논리 메모리 개념을 분리
  • 개발자가 메모리 크기에 관련한 문제를 염려할 필요 없이 쉽게 프로그램을 작성할 수 있게 해준다.
  • 운영체제는 가상 메모리 기법을 통해 프로그램의 논리적주소 영역에서 필요한 부분만 물리적 메모리에 적재하고, 직접적으로 필요하지 않은 메모리 공간은 디스크(Swap 영역)에 저장

요구 페이징(demand paging)

  • 당장 사용될 주소 공간을 page 단위로 메모리에 적재하는 방법을 요구 페이징(demand paging)
  • 요구 페이징 기법에서는 특정 page에 대해 cpu의 요청이 들어온 후에 해당 page를 메모리에 적재
  • 당장 실행에 필요한 page만을 메모리에 적재하기 때문에 메모리 사용량이 감소하고, 프로세스 전체를 메모리에 적재하는 입출력 오버헤드도 감소하는 장점

요구 페이징 기법에서는 유효/무효 비트(valid/invalid bit)를 두어 각 page가 메모리에 존재하는지 표시함

Page fault

CPU가 무효 비트(invalid bit)로 표시된 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 교체 알고리즘(replacement algorithm)

  • 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를 교체, 비용대비 성능이 좋지 않아 잘 쓰이진 않음

참조 : 개발남노씨 운영체제

Leave a comment