가상 메모리 (OS) - 1

jm·2022년 12월 7일
0

OS

목록 보기
10/13

Non-continuous allocation (비연속적 메모리 할당)
사용자 프로그램을 여러 개의 block으로 분할
실행 시, 필요한 block들만 메모리에 적재 (나머지 block들은 swap device에 존재)

📌가상 메모리

물리적인 메모리 공간은 한정적이다. 그래서 프로세스 전체를 메모리에 올리지 않고 가장 많이 사용되는 일부 프로세스만 메모리에 적재하고 나머지는 Swap-device에 놔두고 Swap-device까지 메모리 처럼 사용하는 것이다. (파레토 법칙 : 전체 결과80%는 20%원인으로 발생)

즉, 가상 메모리는 실제 메모리보다 크다고 착각하게 만들어주는 기술.

Non-continuous allocation

  • Virtual address(가상주소) = relative address(continuous allocation)
    • 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를 가짐

      전체 프로세스는 swap device에 있음
      block number : block의 번호
      residence bit : 적재 여부
      real address : 실제 주소

실제 Mapping

  • 가상주소(b, d)

📌Virtual Storage Methods

📌 Paging System

  • 프로그램을 같은 크기의 블록으로 분할 (pages)
  • Terminologies
    • Page : 프로그램의 분할된 blok
    • Page frame : page와 같은 크기로 분할 된 메모리 영역
  • SwapDevice(가상메모리)에 Process가 page크기로 나눠진 형태로 들어가 있음
  • 특징
    • 논리적 분할이 아님(크기에 따른 분할)
      • segmentation 대비 공유 및 보호 과정이 복잡함, function 단위가 아님
    • segmentation 대비 간단하고 효율적임
    • 외부 단편화가 발생되지 않음(같은 페이징 크기 이므로, 공간이 충분한데 못올라가는 경우는 없음) ↔ 내부단편화는 있음

Demand paging (요구 페이징)

  • Demand : 페이지를 요구 했을 경우에만 메모리에 적재

페이징 기법을 바탕으로 프로세스의 필요한 페이지들만 메모리에 적재하고 나머지는 swap-device에 두었다가 필요한 페이지들만 메모리를 할당 받고 적재하는 메모리 관리 기법이다.

📌Address Mapping - Paging

  • Virtual address : v = (p, d)
    • p : page number , d : displacement(offset)
  • Address mapping = PMT(Page Map Table) 사용

    page frame 번호로 올라간 메모리 위치 확인
    secondary storage address : swap device에서 저장되어 있는 위치

  • Address mapping mechanism
    • Direct mapping (직접 사상), block mapping과 유사
    • Associative mapping (연관 사상)
    • Hybrid direct/associative mapping

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가 메모리에 적재 되었는 지 검사 (residence bit)
    • Residence bit = 0 인 경우 (page falut)❗가 발생

      swap device에서 해당 page를 메모리에 적재한다.
      ➡ running에서 asleep으로 내려오고 다시 running 된다.
      asleep상태가 되면 context switching이 발생 된다 = 오버헤드가 큼

  4. p'와 가상 주소의 위치 d를 사용하여 실제 주소 r을 구한다.
    • r = p'*pageSize + d
  5. 실제 주소 r로 주기억장치에 접근한다.
  • 문제점
    • PMT가 kernel에 있어서 메모리 한번 접근한 후 main memory를 다시 접근한다.
      메모리 접근 횟수가 2배 ➡ 성능 저하 발생
    • PMT를 위한 메모리 공간 필요
  • 해결방안
    • Associative mapping (TLB)
    • PMT를 위한 전용 기억장치(공간)사용
    • Hierarchical paging, Hashed page table, Inverted page table 등

Associative mapping

  • TLB(Translation Look-aside Buffer)에 PMT 적재
    • Address mapping을 할 때 옆에 두고 사용하는 특별한 장치
    • associative high-speed memory : PMT 탐색 전용 HW
  • PMT를 병렬 탐색 (HW로 따로 계산 안하고 바로 찾을 수 있음)
  • Low overhead, high speed
  • Expensive hardware ➡ 비싸서 크기가 작다(12bits), PMT를 다루기가 어려움

Hybrid direct/associative mapping

  • 두 기법을 혼합해서 사용
    • HW 비용은 줄이고, Associative mapping의 장점을 활용
  • 작은 크기의 TLB 사용
    • PMT : 메모리(커널 공간) 에 저장
    • TLB : PTM 중 일부 entry만 적재 (최근에 사용된 page들에 대한 entry 저장)
    • Locality(지역성) 활용
      • 한번 접근한 영역을 다시 접근 또는 인접 영역을 다시 접근할 가능성이 높음
  • 프로세스의 PMT가 TML에 적재 되어 있는 지 확인
    1. TLB에 적재 되어 있는 경우 ➡ residence bit를 검사하고 page frame 번호를 확인
    2. 적재되어 있지 않은 경우
      ➡ Direct mapping으로 page frame 번호 확인 후 해당 PMT entry를 TML에 적재

Memory Management - Paging

  • Page와 같은 크기로 미리 분할하여 관리/사용
    • Page frame
    • FPM 기법과 유사
  • Frame table
    • Page frame당 하나의 entry
    • 구성
      • Allocated/available field(할당,사용 가능)
      • PID field(실제 페이지)
      • Link field: For free list(빈 공간관리 배열), 빈 entry에 대한 linked list
      • AV: Free list headr (free list(빈공간)의 시작점을 지칭)

Page Sharing

  • 여러 프로세스가 특정 page를 공유 가능
    • Non-continuous allocation이기 때문에 (프로세스를 쪼개서 적재 가능함)
  • 공유 가능 page 종류
    • Procedure pages (재 진입이 가능해서 Pure,reenter code라고도 불림)
    • Data page
      - Read-only: 직관적으로 바로 공유가능
      - Read-write: 상호배제 문제로 병행성 제어 기법 관리하에서 사용 가능

      여러개의 Editor 프로그램을 사용할 때
      실제 작성하는 문서인 Data만 따로 다른 곳에 기록

  • Data page sharing
    • page frame number를 같은 곳을 공유
  • Procedure Page Sharing
    • Problem : 메인메모리에서 부르는 이름이 다름(P1(k1)과 P2(k1)의 위치는 서로 다른데 함수를 부른땐 똑같이 Branch(K1, d)가 되기 때문에 문제 발생)
    • 해결방법 : 각 페이지에서 부르는 이름을 통일
      • 프로세스들이 공유하는 페이지에 대한 정보를 PMT의 같은 entry에 저장하도록

Page Protection

  • 여러 프로세스가 page를 공유 할 때 보안 문제 발생
    • Protection bit (V:메인메모리 적재여부 + RWE:접근권한 설정)를 사용

요약

  • 프로그램을 고정된 크기의 block으로 분할 (page) / 메모리를 block size로 미리 분할 (page frame)
    • 외부 단편화 문제 없음
    • 메모리 통합/압축 불필요(오버헤드 감소)
    • 프로그램의 논리적 구조 고려하지 않음
      • 프로그램이 여러개로 걸쳐 적재 되어 있어서, 공유 및 보호가 복잡
      • ➡ Segmentation System으로 논리적 구조 고려
  • 필요한 page만 page frame에 적재하여 사용
    • 메모리의 효율적 활용
  • Page mapping overhead
    • 메모리 공간 및 추가적인 메모리 접근(*2)이 필요
    • 전용 HW 활용으로 해결 가능하나 HW 비용 증가 ➡ Hybrid

https://youtu.be/EdTtGv9w2sA [Course] Operating System (CPA310) - 운영체제 강의. HPC Lab. KOREATEC

profile
ㅎㅎ

0개의 댓글