본문 바로가기
CS 지식/운영체제

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

by CSEGR 2024. 8. 25.
728x90

✔️ 페이징과 세그먼테이션이 필요한 이유

어떠한 프로그램을 실행할 때, 프로그램들을 메모리 공간에 연속적으로 할당하게 된다.
만약 여러 프로그램들이 메모리에 할당되고 해제되는 것이 반복되다 보면, 메모리 공간이 조각조각 나뉘게 되어 사용 가능한 메모리 공간이 충분함에도 불구하고 프로그램에 메모리를 할당하는 것이 불가능한 상태가 발생한다. 

 

이러한 현상을 Memory Fragmentation(메모리 단편화) 라고 한다. 

 

  • 고정 분할 기법 : 메인 메모리가 고정된 파티션으로 분할 → 내부 단편화 발생 
  • 동적 분할 기법 : 파티션들이 동적 생성되며 자신의 크기와 같은 파티션에 적재 →외부 단편화 발생

 

  • 내부 단편화 ( Internal Fragmentation ) → 오른쪽 그림에 해당
    : 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어 프로세스에서 사용하는 메모리 공간이 낭비되는 상황
    ex) 필요한 메모리는 1Kb 이지만, 4Kb를 할당 받은 경우 내부 단편화는 3Kb만큼 생김. 

  • 외부 단편화 ( external Fragmnetation) → 왼쪽 그림에 해당
    : 중간 중간에 생긴 사용하지 않는 메모리가 존재해서 사용가능한 총 메모리 공간은 충분하지만 실제로 할당할 수 없는 상황 

이러한 메모리 단편화 문제를 해결하기 위해 1) 페이징과 2) 세그먼테이션을 이용한다. 


 

페이징 : 돼지를 일정한 크기 2cm 간격으로 나눔. 

↕︎

세그멘테이션 : 돼지를 부위별로 목살, 삼겹살, 갈비 등으로 나눔

✔️ 페이징 (Paging) 

페이징(Paging) 이란?

페이징(Paging)프로세스를 일정한 크기의 페이지로 분할해서 메모리에 적재하는 방식이다. 
즉, Address Space를 연속적으로 할당하지 않고, '페이지' 라는 단위로 쪼개는 것이다. 

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

→ 연속적이지 않은 공간도 활용할 수 있기 때문에 외부 단편화 문제 해결

➕ 페이지 테이블 (Page Table)

Virtual Address의 페이지를 Physical Memory 의 프레임으로 매핑(mapping) 한다. 

이때, VPN(Virtual Page Number)를 PFN(Physical Frame Number)로 매핑해주는 표를 Page Table이다. 

https://ddongwon.tistory.com/49

  • 각각의 프로세스는 자신만의 page table을 가진다. 
  • 각 프로세스의 page table이 저장되어 있는 주소를 page table base register가 저장하고 있다. 
  • page table은 OS memory 영역에 저장되고, OS로 부터 관리된다. 

이 page table 을 통해 하나의 프로세스를 나눈 가상 메모리 페이지들이 각각 실제 메인 메모리의 어느 프레임에 적재 되어 있는지 알 수 있다.

 

이때, 메모리 관리 장치(MMU, Memory Management Unit)가 가상 주소를 이용해 실제 데이터가 담겨있는 주소로 변환 해준다. 

 

➕ 페이징의 단점

  • 단점 : 내부 단편화 문제를 해결하지 못 한다. 

 


✔️ 세그멘테이션 (Segmentation) 

세그멘테이션(Segmentation) 이란?

세그멘테이션(Segmentation)은 프로세스를 물리적 단위인 페이지가 아닌 논리적 내용을 기반으로 나눠서 메모리에 배치하는 것이다. 즉, 세그멘테이션은 프로세스를 세그먼트(segment)의 집합으로 표현한다. 
주로 논리적인 블록단위 세그먼트로 code, data, stack, heap 으로 분리한다. 

→ 프로세스가 요구하는 메모리 크기에 맞게 할당하기 때문에 내부 단편화 해결

➕ 세그멘트 테이블 (Segment Table)

페이지 테이블(page table)과 매핑 테이블의 동작방식이 동일하다.

Paging과 달리 논리 주소(VPN)의 앞 비트들은 페이징 번호가 아니라 세그먼트 번호가 된다. 

 

 

➕ 세그멘테이션 의 단점

  • 단점 : 외부 단편화 문제를 해결하지 못 한다. 

✔️ 페이징 vs 세그멘테이션

  Paging(페이징) Segmentation(세그멘테이션)
프로세스 단위 고정 단위(일정한 길이) 가변 단위
해결 외부 단편화 해결 내부 단편화 해결

 

# 참고 자료

https://steady-coding.tistory.com/524

https://cocoon1787.tistory.com/860

 

 

 

728x90