Memory management

정하윤·2022년 9월 5일
0

Logical address (=virtual address)

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

Physical address

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

주소 바인딩(Address Binding) : 주소를 결정하는 것

Compile time binding

  • 물리적 메모리 주소가 컴파일 시 알려짐
  • 시작 위치 변경시 재컴파일
  • 컴파일러는 절대 코드생성

Load time binding

  • Loader의 책임하에 물리적 메모리 주소 부여

  • 컴파일러가 재배치가능코드를 생성한 경우 가능

    Execution time binding

  • 수행이 시작된 이후에도 프로세스의 메모리 상 위치를 옮길 수 있음

  • CPU가 주소를 참조할 때마다 binding을 점검

  • 하드웨어적인 지원이 필요

logical address의 요청이 limit register 벗어나는 요청이면 trap이 걸리게됨. 만약 벗어나지 않는 요청이라면 logical address가 relocation register의 값을 더해서 주소 변환을 한다음에 메모리 어딘가에 있는 내용을 읽어서 CPU에 전달함.

Some Terminologies

  • Dynamic Loading
  • Dynamic Linking
  • Overlays
  • Swapping

Dynamic Loading

  • 프로세스 전체를 메모리에 미리 다 올리는 것이 아니라 해당 루틴이 불려질 때 메모리에 load 하는 것
  • 가끔씩 사용되는 많은 양의 코드의 경우 유용 ex) 오류 처리 루틴
  • 운영체제의 특별한 지원 없이 프로그램 자체에서 구현 가능(OS는 라이브러리를 통해 지원 가능)

Overlays

  • 메모리에 프로세스의 부분 중 실제 필요한 정보만을 올림 ( 프로그래머가 직접 코딩통해서 함)
  • 프로세스의 크기가 메모리보다 클 때 유용
  • 운영체제의 지원없이 사용자에 의해 구현
  • 작은 공간의 메모리를 사용하던 초창기 시스템에서 수작업으로 프로그래머가 구현

Swapping

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

Backing store

디스트

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

Swap in / Swap out

  • 일반적으로 중기 스케줄러에 의해 swap out 시킬 프로세스 선정
  • priority-based CPU scheduling algorithm

-priority가 낮은 프로세스를 swapped out 시킴

-priority가 높은 프로세스를 메모리에 올려 놓음

  • Compile time 혹은 load time binding에서는 원래 메모리 위치를 swap in 해야함
  • Execution time binding 에서는 추후 빈 메모리 영역 아무 곳에나 올릴 수 있음
  • swap time은 대부분 transfer time임

Dynamic Linking

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

Static linking

  • 라이브러리가 프로그램의 실행 파일 코드에 포함됨
  • 실행 파일의 크기가 커짐
  • 동일한 라이브러리를 각각의 프로세스가 메모리에 올리므로 메모리 낭비

Dynamic linking

  • 라이브러리가 실행시 연결됨
  • 라이브러리 호출 부분에 라이브러리 루틴의 위치를 찾기 위한 stub이라는 작은 코드를 둠
  • 라이브러리가 이미 메모리에 있으면 그 루틴의 주소로 가고 없으면 디스크에서 읽어옴
  • 운영체제의 도움이 필요

고정 분할 방식에서 분할 1에 프로그램A를 넣고 분할 2에 프로그램 B 를넣으려 했으나 분할 2의 크기가 작아서 넣지 못하고 분할 3에 프로그램 B를 넣게된다 그렇게 분할 2는 외부조각이 되고 프로그램 B가 분하 3에 들어왔지만 안에서 남는 메모리 조각이 생기는데 그것이 내부 조각(사용이 안되는 공간) 이 된다.

고정분할 방식

  • 물리적 메모리를 몇 개의 영구적 분할로 나눔
  • 분할의 크기가 모두 동일한 방식과 서로 다른 방식이 존재
  • 분할당 하나의 프로그램 적재
  • 융통성이 없음

가변분할 방식

  • 프로그램의 크기를 고려해서 할당
  • 분할의크기, 개수가 동적으로 변함
  • 기술적 관리 기법 필요

First-fit

  • Size 가 n 이상인 것 중 최초로 찾아지는 hole에 할당

Best-fit

  • Size가 n 이상인 가장 작은 hole을 찾아서 할당
  • Hole들의 리스트가 크기순으로 정렬되지 않은 경우 모든 hole의 리스트를 탐색해야함
  • 많은 수의 아주 작은 hole들이 생성됨

Worst-fit

  • 가장 큰 hole에 할당
  • 역시 모든 리스트를 탐색해야 함
  • 상대적으로 아주 큰 hole들이 생성됨

0개의 댓글