가상 메모리

  • Non-continuous allocation

  • 사용자 프로그램을 여러개의 block으로 분할

  • 실행 시, 필요한 block들만 메모리에 적재

    • 나머지 block들은 swap device에 존재

  • 기법들

    • Paging syste

    • Segmentation system

    • Hybrid paging/segmentation system

Address Mapping

  • Continuous allocation

    • Relative address (상대 주소)

      • 프로그램의 시작 주소를 0으로 가정한 주소

    • Relocation (재배치)

      • 메모리 할당 후, 할당된 주소(allocation address)에 따라 상대 주소들을 조정하는 작업

  • Non-continuous allocation

    • Virtual address (가상주소) = relative address

      • Logical address (논리주소)

      • 연속된 메모리 할당을 가정한 주소

    • Real address (실제주소) = absolute (physical)

      • 실제 메모리에 적재된 주소

    • Address mapping

      • Virtual address -> real address

      • 사용자/프로세스는 실행 프로그램 전체가 메모리에 연속적으로 적재되었다고 가정하고 실행 할 수 있음

Block Mapping

  • 사용자 프로그램을 block 단위로 분할/관리

    • 각 block에 대한 address mapping 정보 유지

  • Virtual address : v = (b,d)

    • b = block number

    • d = displacement(offset) in a block

  • Block map table (BMT)

    • Address mapping 정보 관리

      • Kernel 공간에 프로세스마다 하나의 BMT를 가짐

  • 동작 과정

    • 1. 프로세스의 BMT에 접근

    • 2. BMT에서 block b에 대한 항목(entry)를 찾음

    • 3. Residence bit 검사

      • 1. Residence bit = 0인 경우 (메모리에 없는 경우) swap device에서 해당 블록을 메모리로 가져오고 BTM 업데이트 후 2단계 수행

      • 2. Residence bit = 1인 경우 (메모리에 있는 경우) BMT에서 b에 대한 real address 값 a확인

    • 4. 실제 주소 r 계산 (r = a +d)

    • 5. r을 이용하여 메모리에 접근

Paging System

  • 프로그램을 같은 크기의 블록으로 분할 (Pages)

  • 용어

    • Page

      • 프로그램의 분할된 block

    • Page frame

      • 메모리의 분할 영역

      • Page와 같은 크기로 분할

  • 특징

    • 논리적 분할이 아니라 크기에 따른 분할

      • Segmentation 대비 Page 공유 및 보호 과정이 복잡함

    • Segmentation 대비 Simple and Efficient

    • 외부 단편화 X, 내부 단편화 발생 가능

  • Address Mapping

    • Virtual address : v = (p,d)

      • p: page number

      • d: displacement(offset)

    • Address mapping

      • PMT(Page Map Table) 사용

    • Address mapping mechanism

      • Direct mapping (직접 사상)

      • Associative mapping (연관 사상)

        • TLB(Translation Look-aside Buffer)

      • Hybrid direct/associative mapping

    • Page Map Table (PMT)

Direct mapping (직접 사상)

  • Block mapping 방법과 유사

  • 가정

    • PMT를 커널 안에 저장

    • PMT entry size = entrySize

    • Page size = pageSize

  • 동작과정

    • 1. 해당 프로세스의 PMT가 저장되어 있는 주소 b에 접근

    • 2. 해당 PMT에서 page p에 대한 entry 찾음

      • p의 entry 위치 = b + p * entrySize

    • 3. 찾아진 entry의 존재 비트 검사

      • 1 Residence bit = 0 인 경우 (page fault->Context switching 발생 -> Overhead가 큼), swap device에서 해당 page를 메모리로 적재 PMT를 갱신한 후 3-2 단계 수행

      • 2 Residence bit = 1인 경우, 해당 entry에서 page frame 번호 p’를 확인

    • 4. p’와 가상 주소의 변위 d를 사용하여 실제 주소 r 형성

      • r = p’ * pageSize + d

    • 5. 실제 주소 r로 주기억장치에 접근

  • 문제점

    • 메모리 접근 횟수가 2배 -> 성능 저하

    • PMT를 위한 메모리 공간 필요

  • 해결방안

    • Associative mapping (연관사상)

    • PMT를 위한 전용 기억장치(공간) 사용

Associative mapping (연관사상)

  • TLB(Translation Look-aside Buffer)에 PMT 적재

    • Associative high-speed memory

  • PMT를 병렬 탐색

  • Low overhead, hihg speed

  • Expensive hardware

    • 큰 PMT를 다루기 어려움

Hybrid Direct/Associative Mapping (집합-연관 사상)

  • 두 기법을 혼합하여 사용 (집합 + 연관)

    • HW 비용은 줄이고, Associative mapping의 장점 활용

  • 작은 크기의 TLB 사용

    • PMT: 메모리(커널공간)에 저장

    • TLB: PMT 중 일부 entry들을 적재

      • 최근에 사용된 page들에 대한 entry 저장

    • Locality (지역성) 활용

      • 프로그램의 수행과정에서 한번 접근한 영역으르 다시 접근 (temporal locality) 또는 인접 영역을 다시 접근(spatial locality)할 가능성이 높음

  • 프로세스의 PMT가 TLB에 적재되어 있는지 확인

    • 1. TLB에 적재되어 있는 경우,

      • residence bit를 검사하고 page frame 번호 확인

    • 2. TLB에 적재되어 있지 않은 경우,

      • Direct mapping으로 page frame 번호 확인

      • 해당 PMT entry를 TLB에 적재함

Paging System Memory Management

  • Page와 같은 크기로 미리 분할 하여 관리/사용

    • Page frame

    • Fixed Partition Multi-programming (고정분할) 기법과 유사

  • Frame table

    • Page frame당 하나의 entry

    • 구성

      • Allocated/available field

      • PID field

      • AV (free list의 시작점)

Page Sharing

  • 여러 프로세스가 특정 page를 공유 가능

    • Non-continuous allocation이기 때문에 가능

  • 공유 가능 page

    • Procedurepages

      • Pure code (reenter code)

    • Data page

      • Read-only data

      • Read-write data

  • 프로세스들이 shared page에 대한 정보를 PMT의 같은 entry에 저장하도록 함.

Page Protection

  • 여러 프로세스가 page를 공유 할 때, Protection bit 사용

Paging System 요약

  • 프로그램을 고정된 크기의 block으로 분할(page)/ 메모리를 block size로 미리 분할 (page frame)

    • 외부 단편화 X, 내부 단편화 발생 가능

    • 메모리 통합/압축 불필요

    • 프로그램의 논리적 구조를 고려하지 않음

      • Page sharing/protection이 복잡

      • Segmentation system으로 해결

  • 필요한 page만 page frame에 적재하여 사용

    • 메모리의 효율적 활용

  • Page mapping overhead

    • 메모리 공간 및 추가적인 메모리 접근이 필요

    • 전용 HW 활용으로 해결가능 -> 하드웨어 비용 증가

Segmentation System

  • 프로그램을 논리적 block으로 분할 (segment)

    • Block의 크기가 서로 다를 수 있음

    • 예) stack, heap, main procedure, shared lib, ETc.

  • 특징

    • 메모리를 미리 분할 하지 않음

      • Variable Partition Multi-programming (가변 분할)과 유사

    • Segment sharing/protection이 용이함

    • Address mapping 및 메모리 관리의 overhead가 큼

    • 내부 단편화 X, 외부 단편화 발생 가능

  • Address mapping

    • Virtual address: v = (s, d)

      • s: segment number

      • d: displacement in a segment

    • Segment Map Table (SMT)

    • Address mapping mechanism

      • Paging system과 유사

  • Segment Map Table

  • Address mapping (direct mapping)

    • 동작 과정

      • 1. 프로세스의 SMT가 저장되어 있는 주소 b에 접근

      • 2. SMT에서 segment s의 entry 찾음

        • s의 entry 위치 = b + s * entrySize

      • 3. 찾아진 Entry에 대해 다음 단계들을 순차적으로 실행

        • 1. 존재 비트가 0 인 경우, (missing segment fault) swap deive로부터 해당 segment를 메모리로 적재 하고 SMT를 갱신

        • 2 변위(d)가 segment 길이보다 큰 경우 (d > ls), segment overflow exception 처리 모듈을 호출

        • 3 허가되지 않은 연산일 경우 (protection bit field 검사), segment protection exception 처리 모듈을 호출

      • 4. 실제 주소 r 계산 (r = as + d)

      • 5. r로 메모리에 접근

Segmentation System Memory Management

  • Variable Partition Multi-programming (가변 분할)과 유사

    • Segment 적재 시, 크기에 맞춰 분할 후 적재

Sharing/Protection

  • Segment sharing/protection

    • 논리적으로 분할되어 있어, 공유 및 보호가 용이함

Segmentation System 요약

  • 프로그램을 논리 단위로 분할 (segment)/ 메모리를 동적으로 분할

    • 내부 단편화 X, 외부 단편화 발생 가능

    • Segment sharing/protection이 용이함

    • Paging system 대비 관리 overhead가 큼

  • 필요한 segment만 메모리에 적재하여 사용

    • 메모리의 효율적 활용

  • Segment mapping overhead

    • 메모리 공간 및 추가적인 메모리 접근이 필요

    • 전용 HW 활용으로 해결 가능

Hybrid Paging/Segmentation

  • Paging과 Segmentation의 장점 결합

  • 프로그램 분할

    • 논리 단위의 segment로 분할

    • 각 segment를 고정된 크기의 page들로 분할

  • Page 단위로 메모리에 적재

  • Address mapping

    • Virtual address : v = (s, p, d)

      • s : segment number

      • p : page number

      • d : offset in a page

    • SMT와 PMT 모두 사용

      • 각 프로세스 마다 하나의 SMT

      • 각 segment마다 하나의 PMT

    • Address mapping

      • Direct, associated 등

    • 메모리 관리

      • Fixed Partition Multi-programming (고정 분할)과 유사

  • Direct (address) mapping

Hybrid Paging/Segmentation 요약

  • 논리적 분할(segment)와 고정 크기 분할(page)을 결합

    • Page sharing/protection이 쉬움

    • 메모리 할당/관리 overhead가 작음

    • 외부 단편화 X, 내부 단편화 발생 가능

  • 전체 테이블의 수 증가

    • 메모리 소모가 큼

    • Address mapping 과정이 복잡

  • Direct mapping의 경우, 메모리 접근이 3배

    • 성능이 저하될 수 있음

[참고] https://drive.google.com/file/d/1TfHzj3nz47y4eQX8Ij0J3aZhFQm-I-y6/view

profile
계속해서 배우고 성장하고 싶다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN