CH9: Memory Management

김마사키·2022년 5월 8일

OS

목록 보기
4/4

Address

Logical address

  • virtual address
  • 프로세스마다 독립적으로 가지는 주소 공간
  • 0번지 부터 시작
  • CPU가 보는 주소

Physical address

  • 메모리에 실제 올라가는 위치

주소 바인딩

  • Symbolic Address -> Logical Address -> ? -> Physical address
  • 주소를 결정하는 것 ( logical -> physical 하는 시점이 언제인가? )

Address Binding (주소 바인딩)

1. Compile time binding

  • physical address가 컴파일 시 알려진다
  • 시작 위치를 변경하게 되면 재컴파일
  • 컴파일러는 절대 코드 absolute code 생성

2. Load time binding

  • Loader의 책임하에 physical address 부여
  • 컴파일러가 재배치가능코드 relocatable code 생성

3. Execution time binding = Runtime binding

  • 수행이 시작된 이후, 프로세스의 메모리 상 위치를 옮길 수 있음
  • CPU가 주소를 참조할 때마다 binding을 점검 ( address mapping table ? )
  • H/W 지원 (base and limit registers, MMU) 필요

Picture<<


Memory-Management Unit (MMU)

logical address -> physical address로 mapping 해주는 H/W device

사용자 프로세스가 CPU에서 생성해내는 모든 주소값에 + base register (=relocation register)

User program ?

  • logical address 만 다룸. physical address 볼 수 X, 필요 X

Dynamic Relocation

Picture<<


H/W Support for Address Translation

운영체제 및 사용자 프로세스 간 메모리 보호를 위해 사용하는 Register

1. Relocation register

  • 접근할 수 있는 물리적 메모리 주소의 최솟값

2. Limit register

  • 논리적 주소의 범위

Terminologies

Dynamic Loading

  • 프로세스의 해당 루틴이 불려질 때 메모리에 load하는 것
  • 프로세스 전체를 미리 메모리에 올리지 X

GODD

  • memory utilization 향상
  • 유용할 때 = 사용 빈도가 적은, 긴 코드
  • 프로그램 자체에서 구현 가능 ( OS의 특별한 지원 필요 X )
  • OS는 라이브러리를 통해 지원 가능

Dynamic Linking

  • linking을 실행 시간까지 미루는 기법

  • 라이브러리가 프로그램 실행시 연결(link)

  • stub

    • 라이브러리 호출 부분
    • 라이브러리 루틴의 위치를 찾기 위한 목적
  • 이미 메모리에 해당 라이브러리 존재 -> 그 루틴에 주소로 간다

  • 존재하지 않는 경우 -> 디스크에서 읽어온다

  • OS의 도움이 필요 O

Static linking

  • 라이브러리가 프로그램의 실행 파일 코드에 포함
  • 실행 파일의 크기 up up
  • 동일한 라이브러리(e.g printf)가 각각 프로세스 메모리에 올라감 -> 메모리 낭비

Overlays

  • 메모리에 프로세스의 부분 중 실제 필요한 정보만을 올림
  • 유용할 때 = 프로세스의 크기 > 메모리의 크기
  • OS 지원 X, 사용자에 의해 구현 O

Manual Overlays

  • 작은 공간 메모리를 사용하던 초창기 시스템
  • 수작업으로 프로그래머가 직접 구현
  • 매우 복잡한 프로그래밍

Swapping

  • 프로세스를 일시적으로 메모리에서 backing store로 쫓아내는 것

Backing store (=swap area)

디스크

  • 많은 사용자들의 프로세스 이미지를 담을 만큼 충분히 빠르고 큰 저장 공간

Swap in / Swap out

  • 중기 스케줄러 Swapper 에 의해 swap out 시킬 프로세스 선정
  • priority-based CPU scheduling
    -> priority가 낮은 프로세스를 swap out
    -> priority가 높은 프로세스를 메모리에 올려 놓음
  • Compile time binding, load time binding -> 원래 메모리 위치로 swap in 해야 한다~
  • Execution time binding -> 빈 메모리 영역 아무 곳에 올릴 수 있다~
  • Swap time 은 대부분 transfer time 이다 ( = swap 되는 양에 비례하는 시간 )

Schematic View of Swapping

Picture <<


Allocation of Physical Memory

Memory = OS 상주 영역 + 사용자 프로세스 영역

  • OS 상주 영역 = interrupt vector, 낮은 주소 영역
  • 사용자 프로세스 영역 = 높은 주소 영역

Contiguous allocation

각각의 프로세스가 메모리의 연속적인 공간에 적재

1. Fixed partition allocation

2. Variable partition allocation

Non-contiguous allocation

하나의 프로세스가 메모리의 여러 영역에 분산

1. Paging

2. Segmentation

3. Paged Segmentation


연속적 할당 Contiguous Allocation

고정분할 방식

  • 물리적 메모리를 영구적 분할 partition으로 나눔
  • 방식 1) 동일한 분할 크기 2) 서로 다른 분할 크기
  • 하나의 분할 -> 하나의 프로그램
  • 최대 수행 가능 프로그램 크기가 제한
  • 동시에 메모리에 load되는 프로그램 수 고정
  • Internal fragmentation O, External fragmentation O

가변분할 방식

  • 프로그램의 크기를 고려해서 할당 => 기술적 관리 필요
  • 분할의 크기, 분할의 개수가 변할 수 있음
  • Internal fragmentation X, External fragmentation O (메모리 중간에 Hole 생길 가능성 O)

Fragmentation

Internal fragmentation 내부 조각

  • 프로그램 크기 < 분할의 크기
  • 비어있는 공간에 프로그램이 올라갈 수 없는 작은 분할

External fragmentation 내부 조각

  • 프로그램 크기 > 분할 크기
  • 분할 내부에서 발생하는 사용되지 않는 메모리 조각
  • 이미 배정되어 있지만 사용되지 않는 공간

pic

Hole

  • 할당되기 전 가용 메모리 공간
  • 다양한 크기
  • 프로세스가 도착하면 수용가능한 hole을 할당
  • 운영체제는 메모리를 유지 1) 할당 공간 2) 가용 공간 (hole)

Dynamic Storage-Allocation Problem

가변 분할 방식에서 가장 적절한 hole을 찾는 문제

1) First-fit
2) Best-fit
3) Worst-fit

1) First-fit

  • size 가 n 이상인 것 중 최초

2) Best-fit

  • size 가 n 이상인 가장 작은 hole
  • 정렬되지 않은 경우 -> 전체 탐색
  • Best-fit 사용시, 많은 수의 아주 작은 hole들이 생성

3) Worst-fit

  • 가장 큰 hole -> 전체 탐색
  • worst-fit 사용시, 아주 큰 hole들이 생성
  • 나중에 더 큰 프로그램이 들어갈 수 있는 hole을 미리 사용할 수 있어서 좋은 방법 X

compaction

  • 목적 : External fragmentation 문제 해결
  • 방법 : 사용 중인 메모리 영역을 재배치하여, 아주 큰 hole을 만든다
  • 단점 : 비용이 많이 듬
  • 해결 : 최소한의 메모리 이동으로 compaction
  • 조건 : 프로세스의 주소가 실행 시간에 동적으로 재배치가 가능한 경우

불연속적 할당 Non-contiguous Allocation

Paging

  • process의 virtual memory를 동일한 사이즈page로 나눔
  • virtual memory 의 내용이 page 단위noncontiguous하게 저장
  • 일부는 backing storage, 일부는 physical memory에 저장

Basic Method

  • logical memory -> 동일한 크기의 page 로 나눔
  • physical memory -> 동일한 크기의 frame으로 나눔
  • page size = frame size
  • Paging에서, 할당 가능한 가용 frame을 관리해야 한다.
  • Internal fragmentation O, External fragmentation X

CPU가 사용하는 Virtual address 의 구성

1) p : page number

  • page table의 index, 해당 index에는 물리적 메모리 상의 base address 저장

2) d : page offset

  • physical address = base address + page offset(d)

Pic) Address Translation Architecture

Pic) Paging Example


Implementation of Page Table

  • page table은 main memory 에 상주

PTBR

page-table base register - page table을 가르킴

PTLR

page-table length register - 테이블 크기를 보관

  • 모든 메모리 접근 연산 = 2번의 memory access 필요
    1) page table 접근
    2) data/instruction 접근

TLB

translation look-aside buffer = Associative Register
고속 lookup H/W cache 사용

TLB

TLB
= associative register
= translation look-aside buffer

설명

  • page table 중 일부가 보관되어 있다
  • TLB hit : 해당 page #가 TLB에 있는 경우 -> 바로 frame # 얻음
  • TLB miss : 해당 page #가 TLB에 없는 경우 -> main memory의 page table 접근 후 frame #
  • TLB flush : context switch 발생 (process 마다 달라져야 하는 정보)

Paging H/W with TLB

> Pic

Effective Access Time

EAT
= hit 일 때 접근 시간 + miss 일 때 접근 시간
= 2 + e - a


Two-Level Page Table

등장 : 현대 컴퓨터의 대부분 프로그램은 4G의 주소 공간 중 일부분만 사용하므로 page-table의 공간이 심하게 낭비

해결
1. page table 자체를 page로 구성
2. 사용되지 X 주소 공간 -> outer page table의 엔트리 값을 NULL로 설정

사진 1

logical address의 구성 계산하기
1) page offset (d)
2) page number 의 page offset (p2) - outer page table의 page의 d
3) 나머지 = page number (p1) - outer page table index

사진 2


Multilevel Paging and Performance

등장 : address space가 커짐에 따라서 page table을 다단계 구성
특징

  • logical address -> physical address 변환에 더 많은 메모리 접근
  • 많은 수의 메모리 접근 해결 = TLB 주소 변환을 전담하는 cache memory

Memory Protection

  • page table 은 각 entry 를 가진다
  • 각 entry 는 1) protection bit, 2) valid-invalid bit 을 추가로 가진다

protection bit

page에 대한 접근 권한 관리

valid-invalid bit

< valid >
해당 주소의 frame에 유효한 내용이 있음 (접근 가능)

< invalid > (접근 불허)

1) 프로세스가 그 주소 부분 사용하지 X 경우
2) 해당 페이지가 swap area에 있는 경우

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


Inverted Page Table

Inverted Page Table Architecture

Shared Page

Shared Pages Example


Segmentation

Segmentation Architecture

Segmentation Hardware

Example of Segmentation

Sharing of Segments

Segmentation with Paging

0개의 댓글