Computer Science/운영체제

[운영체제] 20. Memory Management (3) - Segment

minjiwoo 2023. 11. 26. 19:32
728x90

Segmentation 

  • 프로그램을 의미 단위인 여러개의 segment로 구성
    • 작게는 프로그램을 구성하는 함수 하나하나를 세그먼트로 정의 
    • 크게는 프로그램 전체를 하나의 세그먼트로 정의 가능 
    • 일반적으로는 code, data, stack 부분이 하나씩의 세그먼트로 정의됨 
  • Segment 는 다음과 같은 logical unit 들이다. 
    • main(), function, global variables, stack, symbol table, arrays 

 

Segmentation Architecture 

  • locigal address는 다음의 두가지로 구성 
    • <segment-number, offset>
  • segment table : 각각의 테이블 엔트리는 base 와 limit 을 가지고 있음 
    • base : starting physical address of the segment 
    • limit : length of the segment 
  • Segment-table base register (STBR) : 물리적 메모리에서의 segment table의 위치 
  • Segment-table length register (STLR) : 프로그램이 사용하는 segment의 수 
  • 단점 : segment 단위는 의미에 기반하므로 크기가 각각 달라져서, 외부 단편화 문제가 발생한다. 
  • 장점: 의미 단위로 해야 하는 일을 수행할 때 paging 기법보다 유리하다. 
  • Protection
    • 각 세그먼트 별로 protection bit가 있음 
    • Each entry
      • Valid bit 0 -> illegal segment 
      • Read/Write/Execution 권한 bit 
  • Sharing 
    • segment는 의미 단위이기 때문에 공유와 보안에 있어서 페이징 기법보다 효과적이다. 
      • ex. stack 세그먼트의 경우, stack 은 함수 호출 및 실행을 위한 공간이므로 read , write 권한이 모두 필요할 것이다. 
      • ex. code 세그먼트의 경우 코드는 바뀌면 안되기 때문에 read-only로 관리해야 할 것이다. 
      • 이러한 세그먼트 단위로 protection 을 하게 되면 훨씬 관리가 효과적이다.  
  • Allocation 
    • first fit / best fit 
    • 외부 단편화 발생 : segment 의 길이가 동일하지 않으므로 가변 분할 방식에서와 동일한 문제점들이 발생한다.  
    • segment 라는 구성 단위가 개수로는 paging 에 비해 작다. segment table은 entry 수가 page table에 비해 훨씬 적을 것이다. 구현 측면에서는 주소 변환을 위한 메모리 공간 낭비는 paging 기법이 훨씬 심하다. 
    • 현실적으로 pure segmentation 을 구현해서 사용하기는 어렵다. 실제 시스템에서는 paging 기법을 근간으로 사용한다. 
    • segmentation 과 paging 을 혼합해서 사용하는 방법이 있다. 

Segmentation with Paging 

  • segment 크기가 page 크기의 배수가 되도록 한다. (의미 단위로 관리)
  • segment 단위로 메모리에 올라가는 것이 아니라 segment를 구성하는 page 단위로 물리적인 메모리에 올라가게 한다. 
  • 의미 단위로 관리하는 것들은 segment table로 관리하게 된다. 
728x90