이것저것 공부 기록하기

[OS] 세그멘테이션(Segmentation) 본문

CS/OS

[OS] 세그멘테이션(Segmentation)

얍욥얍 2021. 5. 22. 22:25

Segmentation 기법

  • 가상 메모리를 서로 크기가 다른 논리적 단위인 세그먼트(Segment)로 분할
    • 페이징 기법에서는 가상 메모리를 같은 크기의 블럭으로 분할
    • ex) x86 리얼모드
      • CS(Code Segment), DS(Data Segment), SS(Stack Segment), ES(Extra Segment)로 세그먼트를 나누어 메모리 접근
  • 세그먼트 가상주소
    • v = (s,d): s는 세그먼트 번호, d는 블럭 내 세그먼트의 offset(변위)
    • 물리주소 계산방식은 페이징 시스템과 동일
    세그먼트 가상주소

Segmentation과  Paging Process 비교

  • 세그멘테이션은 크기가 다른 segment 단위별로 물리 메모리에 로딩
  • 페이징은 스택이든 힙이든 공유라이브러리든 이런 거 상관없이 그냥 일괄적으로 4KB씩 쪼개서 물리 메모리에 로딩
    segmentation과 paging

단편화

  • 내부 단편화(페이징 기법)
    • 페이지는 고정된 크기를 갖기 때문에 페이지 블럭만큼 데이터가 딱 맞게 채워져있지 않을 때 공간 낭비됨
  • 외부 단편화(세그멘테이션 기법)
    • 물리 메모리가 원하는 연속된 크기의 메모리를 제공해주지 못하는 경우 발생
  • 세그멘테이션이랑 페이징 모두 하드웨어 지원 필요
    • 다양한 컴퓨터 시스템에 이식성을 중요시하는 리눅스는 페이징 기법을 기반으로 구현(유닉스 계열 시스템들은 intel CPU 뿐 아니라 ARM 등 다양한 CPU를 지원하는데 일부 CPU들은 페이징 기법만 지원하기 때문)
      •  

References

fastcampus 컴퓨터공학 올인원 패키지

쉽게 배우는 운영체제

반응형

'CS > OS' 카테고리의 다른 글

[OS] 페이징 시스템(Paging System)  (0) 2021.05.19
[OS] 가상 메모리 기본 개념  (0) 2021.05.17
[OS] 프로세스와 기본 스케쥴링 알고리즘  (0) 2021.05.09
Comments