[운영체제] 페이징(Paging)과 세그먼테이션(Segmentation)

림예·2024년 3월 29일
0

CS_운영체제

목록 보기
10/11

가상기억장치를 모두 같은 크기의 블록으로 편성하여 운용하는 기법

다중 프로그래밍 시스템에 여러 프로세스를 수용하기 위해 주기억장치를 동적 분할하는 메모리 관리 작업이 필요


메모리 관리 기법

  1. 연속 메모리 관리

프로그램 전체가 하나의 커다란 공간에 연속적으로 할당되어야 함

  • 고정 분할 기법 : 주기억장치가 고정된 파티션으로 분할 (내부 단편화 발생)
  • 동적 분할 기법 : 파티션들이 동적 생성되며 자신의 크기와 같은 파티션에 적재 (외부 단편화 발생)

  • 내부 단편화 : 프로세스가 사용하는 메모리 공간에 남는 부분
    프로세스가 요청한 양보다 더 많은 메모리를 할당할 때 발생하며, 메모리 분할 자유 공간과 프로세스가 사용하는 공간의 크기 차이를 의미함
  • 외부 단편화 : 메모리 공간 중 사용하지 못하게 되는 부분
    메모리 할당 및 해제 작업의 반복으로 작은 메모리가 중간 중간 존재할 수 있음, 이렇게 사용하지 않는 메모리가 존재해서 총 메모리 공간은 충분하지만 실제로 할당할 수 없는 상황임

  1. 불연속 메모리 관리

프로그램의 일부가 서로 다른 주소 공간에 할당될 수 있는 기법

고정 크기 : 페이징(Paging)
가변 크기 : 세그먼테이션(Segmentation)

페이지 : 고정 사이즈의 작은 프로세스 조각
프레임 : 페이지 크기와 같은 주기억장치 메모리 조각

단편화 : 기억 장치의 빈 공간 or 자료가 여러 조각으로 나뉘는 현상
세그먼트 : 서로 다른 크기를 가진 논리적 블록이 연속적 공간에 배치되는 것



페이징(Paging)

프로세스를 일정한 크기의 페이지로 분할해서 메모리에 적재하는 방식

하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 방법


페이징 테이블

  • 물리 메모리는 고정 크기의 프레임으로, 가상 메모리는 고정 크기의 페이지로 분리되어 있음
  • 개별 페이지는 순서에 상관없이 물리 메모리에 있는 프레임에 매핑되어 저장됨
  • 모든 프로세스는 하나의 페이징 테이블을 가지고 있으며, 여기에는 메인 메모리에 적재되어 있는 페이지 번호와 해당 페이지가 위치한 메인 메모리의 시작 주소가 있음
  • 이를 통해 하나의 프로세스를 나눈 가상 메모리 페이지들이 각각 실제 메인 메모리의 어디 프레임에 적재되어 있는지 알아낼 수 있음


페이지 교체 알고리즘
페이지 부재 발생 → 새로운 페이지를 할당해야 함 → 현재 할당된 페이지 중 어떤 것 교체할 지 결정하는 방법

  1. FIFO 알고리즘 : First-in First-out, 메모리에 먼저 올라온 페이지를 먼저 내보내는 알고리즘
  2. OPT 알고리즘 : Optimal Page Replacement 알고리즘, 앞으로 가장 사용하지 않을 페이지를 가장 우선적으로 내보냄
  3. LRU 알고리즘 : Least-Recently-Used, 최근에 사용하지 않은 페이지를 가장 먼저 내려보내는 알고리즘




세그먼테이션(Segmentation)

가상 메모리를 서로 크기가 다른 논리적 단위로 분할한 것을 의미

프로세스를 물리적 단위인 페이지가 아닌 논리적 단위인 세그먼트로 분할해서 메모리에 적재하는 방식
세그먼트는 의미가 같지 않은 논리적 내용을 기준으로 프로그램을 분할하기 때문에 크기가 같지 않음




단순 페이징
각 프로세스는 프레임들과 같은 길이를 가진 균등 페이지로 나뉨
외부 단편화 X
소량의 내부 단편화 존재

단순 세그먼테이션
각 프로세스는 여러 세그먼트들로 나뉨
내부 단편화 X, 메모리 사용 효율 개선, 동적 분할을 통한 오버헤드 감소
외부 단편화 존재

가상 메모리 페이징
단순 페이징과 비교해 프로세스 페이지 전부를 로드시킬 필요X
필요한 페이지가 있으면 나중에 자동으로 불러들어짐
외부 단편화 X
복잡한 메모리 관리로 오버헤드 발생

가상 메모리 세그먼테이션
필요하지 않은 세그먼트들은 로드되지 않음
필요한 세그먼트 있을때 나중에 자동으로 불러들어짐
내부 단편화X
복잡한 메모리 관리로 오버헤드 발생






면접 질문


페이지 교체 알고리즘에 대해 설명해주세요.
  • 페이징 기법으로 메모리를 관리하는 운영체제에서 필요한 페이지가 주기억장치에 적재되지 않았을 시(페이징 부재시) 어떤 페이지 프레임을 선택해 교체할 것인지 결정하는 방법을 페이지 교체 알고리즘이라고 합니다.
  • FIFO(first in first out)
    가장 간단한 알고리즘으로, 메모리에 올라온 지 가장 오래된 페이지를 교체합니다. 간단하고, 초기화 코드에 대해 적절한 방법이며, 페이지가 올라온 순서를 큐에 저장합니다.
  • 최적(Optimal) 페이지 교체
    앞으로 가장 오랫동안 사용되지 않을 페이지를 교체하는 알고리즘입니다. 최적 페이지 교체는 선행 조건이 있는데, 프로세스가 앞으로 사용할 페이지를 미리 알아야 한다는 것입니다. 이 조건은 실제 활용에선 알 방법이 없기 때문에 최적 알고리즘은 구현이 불가능한 알고리즘입니다. 때문에 연구를 목적으로 주로 사용됩니다.
  • LRU(least-recently-used)
    가장 오래 사용되지 않은 페이지를 교체하는 알고리즘입니다. OPT 알고리즘의 방식과 비슷한 효과를 낼 수 있는 방법이며, OPT 알고리즘보다 페이지 교체 횟수가 높지만 FIFO 알고리즘 보다 효율적입니다.

운영체제는 프로세스를 메모리로 올릴 때 메모리 관리를 어떻게 하는지 설명해주세요.

  • 효율적으로 프로세스들에게 메모리를 할당해주기 위해 페이징과 세그멘테이션 기법을 사용합니다.




profile
Think big 🌏

0개의 댓글