본문 바로가기
Computer Science/Operating System(OS)

Memory Management(3)-메모리 관리

by J._.cobb 2022. 3. 22.

Multilevel Paging and Performance

  • Address space가 더 커지면 다단계 페이지 테이블 필요
  • 각 단계의 페이지 테이블이 메모리에 존재하므로 logical address의 physical address 변환에 더 많은 메모리 접근 필요
  • TLB를 통해 메모리 접근 시간을 줄일 수 있음
  • 4단계 페이지 테이블을 사용하는 경우
    • 메모리 접근 시간이 100ns, TLB 접근 시간이 20ns이고
    • TLB hit ratio가 98%인 경우
      • effective memory access time = 0.98 x 120 + 0.02 x 520 = 128 nanoseconds.
      • 결과적으로 주소변환을 위해 28ns만 소요

 

Valid(v) / Invalid(i) Bit in a Page Table

  • Page table의 각 entry 마다 아래의 bit를 둔다.
    • Protection bit
      • Page 연산에 대한 접근 권한(read/write/read-only)
      • Page Table은 프로세스마다 독립적으로 존재, 본인의 Page에 대해서만 주소변환이 가능하고 다른 프로세스의 접근은 애초에 불가능하다.
    • Valid-invalid bit
      • valid: 해당 주소의 frame에 그 프로세스를 구성하는 유효한 내용이 있음을 뜻함 (접근 허용)
      • invlid: 해당 주소의 frame에 유효한 내용이 없음을 뜻함 (접근 불허)
        1. 프로세스가 그 주소 부분을 사용하지 않는 경우
        2. 해당 페이지가 메모리에 올라와 있지 않고 swap area에 있는 경우

 

Inverted Page Table

  • Page table이 매우 큰 이유
    • 모든 preocess 별로 그 logical address에 대응하는 모든 page에 대해 page table entry가 존재
    • 대응하는 page가 메모리에 있든 아니든 간에 page table에는 entry로 존재
  • Inverted page table
    • 프로세스가 아닌 시스템 당 1개의 page table을 가지며 entry의 수 = page frame의 수
    • Page frame 하나당 page table에 하나의 entry를 둔 것(system-wide)
    • page table entry는 각각의 물리적 메모리의 page frame이 담고 있는 내용 표시 (process-id, process의 logical address)
    • pid에 따른 p를 통해 page table 내 entry 위치를 확인하고 해당 위치를 framenumber (f)에 넣음으로써 주소변환 가능
    • 목적: Page Table을 위한 공간을 절약하기 위해.
    • 구성
      • pid: 프로세스마다 p가 다르기 때문에 어떤 프로세스의 p인지 구분하기 위한 pid.
    • 단점
      • 테이블 전체를 탐색해야 함 (시간적 Overhead 존재)
    • 조치
      • 병렬적으로 탐색하기 위해 associative register 사용 (expensive)

 

Shared Page

  • Shared code
    • Re-entrant code (=Pure code), 재진입 가능 코드
    • 여러 프로세스가 공유할 수 있는 코드 부분을 같은 물리적인 메모리 프레임으로 맵핑해주는 기법
    • read-only로 하여 프로세스 간에 하나의 colde메모리 얼림
    • (eg. text editors, comilers, window systems)
    • Shared code는 모든 프로세스의 logical address space에서 동일한 위치에 있어야 함
  • Private code and data
    • 각 프로세스들은 독자적으로 메모리에 올림
    • Private data는 logical address space의 아무 곳에 와도 무방

 

Segmentation

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

 

Segmentation Architecture

  • Logical address는 다음의 두 가지로 구성: <segment-number, offset>
    • segment-number: 세그먼트 번호
    • offset: 세그먼트 안에서 얼마나 떨어져 있는지 나타내는 수
  • Segment table
    • each tble entry has
      • 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 number s is legal if s < STLR

 

Segmentation Hardware

  1. CPU가 논리 주소를 주면 Segmentnumber와 offset으로 나눔
  2. Segment table의 시작위치는 레지스터가 갖고 있으므로 거기서부터 Segmentnumber만큼 떨어진 위치에 가면 해당 Segment가 물리적 메모리에 어떤 번지수에 올라가 있는지를 갖고 있음
  3. 따라서 Physical Address Space에서 요청된 Segment의 위치는 Base Add+Limit이라고 볼 수 있음
  • Paging과는 다르게 entry에 두 가지 정보를 가짐
    • limit : segment의 길이 (의미단위로 자르기 때문에 동일한 크기를 page로 갖는 paging 기법과 달리 limit이 필요함)
  • 2가지 체크사항
    • Segmentnumber 가 STLR보다 큰가?
      • STLR은 Segment의 개수를 나타내므로 STLR보다 크다면 trap
    • Segment의 길이보다 offset이 더 큰가?
      • Segment의 길이보다 offset(요청)이 더 크다면 trap

 

Segmentation Architecture(Cont.)

  • Protection
    • 각 세그먼트 별로 protection bit가 있음
    • Each entry
      • Valid bit = 0 → illegal segment
      • Read/Write/Execution 권한 bit
  • Sharing
    • shared segment
    • same segment number
    *segment는 의미 단위이기 때문에 공유(sharing)와 보안(protection)에 있어 paging보다 훨씬 효과적이다.
  • Allocation
    • first fit/ best fit
    • external fragmentation 발생
    *segment의 길이가 동일하지 않으므로 가변분할 방식에서와 동일한 문제점들이 발생

 

Example of Sementation

  • 개수가 많은 페이지에 비해 Sementation은 개수가 많지 않음
  • Table을 위한 메모리 낭비는 Sementation이 Paging보다 적음

 

Sharing of Segmentations

  • 공유되는 Segment는 table이 나타내는 limit-base가 같음.

 

Segmentation with Paging

  • Pure segmentation과의 차이점
    • Segment-table entry가 segment의 base address를 가지고 있는 것이 아니라 segment를 구성하는 page table의 base address를 가지고 있음
    • Segment 당 page table이 존재함
    • p: page number, d’: offset in page
    • Page 형태로 메모리에 올라감으로써 Allocation문제 방지 가능
    • Segmentation을 쓰더라도 Paging기법과 혼합해서 사용하는 것이 대부분임.

*주소 변환을 위한 OS의 역할

없음. 온전히 하드웨어의 몫.

어떠한 프로세스가 CPU를 갖고 메모리에 접근하여 주소변환을 하는 데에는 OS의 개입이 필요 없기 때문

 

 

 

 

 

 

 

출처

 

KOCW :  이화여대 반효경 교수님 <운영체제, 2014>

'Computer Science > Operating System(OS)' 카테고리의 다른 글

Virtual Memory(2)  (0) 2022.03.25
Virtual Memory(1)  (0) 2022.03.25
Memory Management(2)-메모리 관리  (1) 2022.03.21
Memory Management(1)-메모리 관리  (0) 2022.03.21
Deadlock-데드락  (0) 2022.03.17