Fundamental Notes/Operating Systems

Main Memory - Paging & Segmentation

콩콩댕 2009. 1. 7. 20:25
반응형

Paging

  • Paging
    • 프로세스의 물리 주소 공간이 불연속적일 수 있음을 허용함
    • 물리 메모리는 프레임이라고 불리는 고정 된 사이즈의 블럭으로 나누어짐
    • 로지컬 메모리는 페이지라고 불리는 고정 된 사이즈의 블럭으로 나누어짐.
      • 페이지나 프레임의 사이즈는 2의 승수로 제공됨, 일반적으로 512B ~ 8KB
      • 프레임과 페이지가 용어상의 차이만 존재하지 같은 사이즈의 블락을 가짐
    • OS는 모든 프리 프레임의 정보를 유지하고 있음.
    • 페이지 매핑 테이블을 구성함.
  • 사용자의 관점
    • 사용자에게는 VAS(가상 주소 공간)를 통해서 0에서 N까지 연속적인 메모리 공간을 보여줌
    • 현실적으로 페이지는 물리 메모리상에 스케터 되어 있음
      • V2P의 페이지 매핑
      • 매핑은 프로그램에게 보여지지 않음.
    • Protection제공
      • VAS 바깥의 주소에 대해서는 접근 할 수 없기 때문에
  • Translation address
    • Virtual address는 VPN과 Offset 두 개로 구분
    • VPN은 페이지 테이블의 인덱스
    • 페이지 테이블은 페이지 프레임 넘버를 결정(PFN)
  • Pages table
    • OS에 의해서 관리됨
    • VPN to PFN
    • 하나의 페이지 테이블 엔트리(PTE)는 Virtual address 공간에서 페이지당 하나임.

  • Paging Example
    • Virtual Address 32bit, Physical address 20 bit, Page size 4KB 라면 Offset은 12 bit이고 VPN은 20 bit이며 Page table entry는 2^20이 된다.
    • Protection
      • 메모리 Protection은 각각의 프레임 마다 protection 비트를 두어서 구현
      • Valid / Invalid
        • Valid라는 말은 VAS안에 있는 연관 페이지라는 말로 정상 접근이 가능하다는 것임
        • Invalid라는 말은 프로세스의 VAS안에 없는 페이지라는 말임.
      • Valid page에 대한 좀 더 풍부한(Finer) Protection이 가능 함.
        • 다시 말해 Read only, read-write, execute-only 등
  • Page Table Entries(PTEs)
    • V, Valid bit는 PTE가 사용이 가능한지 아닌지를 나타내는 것임.
      • 매 시간 마다 Virtual address가 사용 중인지 아닌지를 나타내기 위해 사용.
    • R, Reference bit는 페이지가 액세스 되었는지 아닌지를 나타냄
      • 페이지를 읽거나 쓸 때 이 비트는 세팅됨
    • M, Modify bit는 페이지가 더티 인지 아닌지를 나타냄
      • 페이지 쓰기일 때 비트가 세팅 됨
    • P, Protection bit는 페이지 별로 어떠한 컨트롤 오퍼레이션이 가능 한지를 나타냄.
      • Read, Write, Execute등
    • 페이지 프레임 넘버(PFN) 는 Physical 페이지를 나타냄.
  • 이점
    • 물리적 메모리 할당이 쉬움
      • 물리적 메모리는 프레임의 free리스트로 부터 할당 받으면 됨
      • 할당 받는 다는 것은 단지 free 리스트에서 제거 하는 것
    • External fragmentation이 없음
      • 페이지 단위로 할당 하기 때문에 External fragmentation이 생길 수 없음
    • 프로그램의 청크를 페이지 아웃 시키기 쉬움
      • 페이지가 고정된 사이즈를 가지고 있기 때문에 모든 청크는 같은 사이즈를 가짐.
      • 페이지 아웃된 페이지를 참조 하기 위해서는 Valid비트만 확인 하면 됨.
      • 페이지 사이즈는 디스크 블록 사이트의 멀티플로 선택함.
    • 불법적인 액세스로부터 페이지를 보호하기 쉬움
    • 페이지를 공유 하기 쉬움
  • 단점
    • Internal fragmentation은 여전이 가능함.
      • 프로세스는 페이지의 배수 단위로 메모리를 사용 하지 않음.
      • Internal과 External의 차이는 사용 하지 않는 스토리지가 Allocated Region안에 있느냐 바깥에 있느냐의 차이임.
    • 메모리 레퍼런스 오버헤드
      • 어드레스 룩업당 2번의 메모리 레퍼런스가 생김. (페이지 테이블을 참조 하고 나서 메모리를 참조)
      • 하드웨어 TLB의 서포트를 받으면 이를 해결 할 수 있음
    • 페이지 테이블을 유지 하기 위한 메모리가 매우 클 수 있음.
      • PTE는 VAS만큼 필요 함
      • 4KB 사이즈의 페이지를 가지는 32비트 어드레스 공간이라면 2^20개의 PTE가 필요함
      • 하나의 PTE마다 4 바이트가 필요 하므로 페이지 테이블당 4MB가 필요함
      • OS가 일반적으로 프로세스 마다 페이지 테이블을 따로 가지고 있으므로 페이지 테이블을 유지 하기 위한 사이즈는 매우 큼
      • 이를 해결 하기 위해서는 멀티레벨 페이지 테이블, 인버티드(Inverted) 페이지 테이블등이 있을 수 있음.

Segmentation

  • Segmentation은 로지컬리 관련된 데이터 유닛끼리 파티션 메모리를 구성하는 기술.
    • 예를 들면 코드 세그먼트, 스택, 힙과 같은 것들이 있다.
  • 사용자의 메모리 뷰는 가변적 세그먼트의 컬렉션으로 제공된다. 그들 사이에 오더링에 대해서는 관심이 없다.
  • 다른 세그먼트들은 서로 영향을 주지 않으면서 독립적으로 grow하거나 shrink한다.
  • 가변 사이즈 파티션의 자연스러운 확장이다.
    • 가변 사이즈 파티션은 프로세스당 하나의 세그먼트를 할당 하는 것과 같음
    • 세그멘테이션은 프로세스당 많은 세그먼트를 할당하는 차이가 있음
  • 하드웨어 서포트
    • 세그먼트 테이블이 존재
    • 세그먼트 테이블은 세그먼트 번호를 인덱스로 하여 세그먼트의 리밋과 베이스로 구성한 테이블
  • 이점
    • Growing 또는 shrink하는 데이터 구조체를 핸들링 하는 것이 쉬움
    • 세그먼트를 Protect하는 것이 쉬움
      • 세그먼트 테이블의 각 엔트리 마다 valid 비트를 두고 있음
      • Protection bit들 역시 각 세그먼테 테이블 엔트리마다 존재 하기 때문에 관리가 쉬움
    • 세그먼트 공유가 쉬움
      • 같은 베이스와 리밋으로 번역하면 공유가 됨.
      • 코드와 데이터는 같은 세그먼트 레벨을 공유함.
      • 공유 라이브러러리가 좋은 예임.
  • 단점
    • Cross-Segment address
      • 세그먼트는 프로세스간 공유를 위해 같은 세그먼트 넘버를 가리키는 포인터를 가질 필요가 있다.
      • 다른 경우는 간접 어드레싱만 사용한다.
    • Large segment tables
      • 메인 메모리에 유지하고 스피드를 위해서 하드웨어 캐시를 사용한다.
    • External fragmentation
      • 세그먼트가 다양한 길이를 가지기 때문에 메모리 할당은 다이나믹 스토리지 할당 문제를 가지게 된다.

Paging versus Segmentation


Kind

Paging

Segmentation

Block size

Fixed(4KB ~ 64KB)

Variable

Linear address space

1

Many

Memory addressing

One-word (PN + offset)

Two-ward (SN + offset)

Replacement

Easy

Difficult

Fragmentation

Internal

External

Disk traffic

Efficient

Inefficient

Transparent to the programmers

Yes

No

Exceed the size of physical memory

Yes

Yes

Code, data 의 구분, 각각 보호 가능

No

Yes

Fluctuate size를 가진 테이블 수용

No

Yes(Shrink, Grow)

사용자 편의에 의한 코드 공유

No

Yes

발명된 이유

Physical memory 공간보다 더 큰 공간 제공

VAS에 관계 없이 코드 데이터 분리, 공유, 보호를 위해서 제작.

  • 하이브리드 어프로치
    • 페이지된 세그먼트
      • 페이징이 가능한 세그먼트
      • 세그먼트는 다수의 페이지로 구성.
    • 페이지 사이즈의 배수
      • IA32에서는 4KB, 2MB그리고 4MB 페이지 사이즈가 지원됨
      • AXP 아키텍쳐에서는 8,16,32,64KB 지원
  • 세그먼테이션과 페이징의 결합
    • 로지컬리 관련 있는 유닛들을 관리 할때는 세그먼트를 사용
      • 코드, 데이터, 힙, 스텍등.
      • 세그먼트는 다양한 사이즈 이지만 페이지 사이즈의 배수로 구성되는 큰 크기
    • 고정된 사이즈 청크로 세그먼트로 파티션하기 위해 페이지들을 사용
      • 세그먼트는 물리 메모리의 좀 더 쉽게 만듦
      • 세그먼트가 페이지어블 가능 하기 때문에 메모리에서 나갈 때 세그먼트가 아니라 페이지 단위로 이동 시킬 수 있음
      • External fragmentation이 없어짐
      • 세그먼트가 할당 된 경우에면 페이지 테이블 엔트리의 할당이 필요함.
        • MULTICS
        • IA32

         

'Fundamental Notes > Operating Systems' 카테고리의 다른 글

File System  (0) 2009.01.07
Virtual Memory  (0) 2009.01.07
Main Memory - Swapping & Contiguous Memory Allocation  (0) 2009.01.07
Deadlock  (0) 2009.01.07
Process Synchronization  (0) 2009.01.07