[OS] Main memory

박의진·2023년 7월 5일
0

TABA3기

목록 보기
6/16
post-custom-banner

Address binding

Address Binding은 어떤 프로그램이 메모리의 어느 위치에, 즉 어떤 물리적 주소에 load 될지를 결정하는 과정이다. 프로세스의 주소(Address)는 논리적 주소(Logical address)와 물리적 주소(Physical address)로 나뉜다.
논리적 주소는 가상 주소(Virtual address)라고도 하며, CPU가 생성하는 주소이다. 프로세스마다 독립적으로 가지는 주소 공간이기 때문에 프로세스의 내부에서 사용하고, 각 프로세스마다 0부터 시작한다. 물리적 주소는 프로세스가 실행되기 위해 실제로 메모리(RAM)에 올라가는 위치이다.

Address binding schemes

  • Compile time binding scheme: 컴파일을 할 때 프로세서의 물리적 주소가 정해진다.
  • Load time binding scheme: Loader가 프로세스를 메모리에 Load하는 시점에서 주소를 결정한다.
  • Execution time binding scheme: 프로세스가 수행이 시작된 이후에 프로세스가 실행될 때 메모리 주소를 바꾸는 방법이다. 즉, Runtime때 물리적 주소가 결정되며 실행 도중에 주소가 바뀔 수 있다.

Memory-Management Unit(MMU)

Run-time(실행 시간) 동안 가상 주소를 물리적 주소로 변환해주는 하드웨어이다.
논리적 주소는 반드시 사용되기 전에 물리적 주소로 변환되어야 한다.

Dynamic loading

런타임에 필요한 부분을 그때그때 메모리에 올리는 것을 Dynamic loading이라고 한다.

Dynamic linking

Dynamic linking이란 실행 가능한 목적 파일을 만들 때 프로그램에서 사용하는 모든 라이브러리 모듈을 복사하지 않고 해당 모듈의 주소만을 가지고 있다가, 런타임에 실행 파일과 라이브러리가 메모리에 위치될 때 해당 모듈의 주소로 가서 필요한 것을 들고 오는 방식이다.

Contigous allocation

Contiguous Allocation 시스템은 말 그대로, 각 프로세스들이 연속적인 메모리 공간을 차지하게 되는 것이다. 각 프로세스를 메모리에 담기 위해 메모리는 미리 공간을 분할해두는데, 고정된 크기로 나누는 고정 분할 방식과 프로세스의 크기를 고려해서 나누는 가변 분할 방식이 있다.

Dynamic storage-allocation problem

algorithm

  • First-fit: 가장 최초로 발견된 hole에 할당한다.

  • Best-fit: 가장 작은 hole을 찾아 할당한다. 거의 딱 맞는 크기를 할당하기 때문에 아주 작은 hole들이 많이 생성된다.

  • Worst-fit: 가장 큰 hole에 할당한다.

Fragmentation

프로세스들이 메모리에 적재되고 제거되는 일이 반복되면 프로세스들이 차지하는 메모리 틈 사이에 사용하지 못할 만큼의 작은 공간들이 늘어나게 되는 현상을 fragmentation이라 한다.

  • Internal fragementation - 프로세스가 사용하는 메모리보다 쪼개진 공간이 더 큰 경우

  • External fragmentation - 남은 공간을 다 했을 프로세스가 들어갈 수 있는 공간은 있지만 연속된 공간이 없어 사용을 못하는 경우

    • external fragmentation을 해결하기 위해 프로세스가 사용하는 공간을 한 쪽으로 몰아 공간을 확보하는 방법을 Compaction(압축) 이라 한다.

Segmentation

Segmentation는 프로세스를 논리적 내용을 기반으로 나눠서 메모리에 배치하는 것을 말한다. 최대의 장점은 공유가 쉽다.

  • Segmentation architecture

  • Segment table: 2차원적 물리적 주소를 매핑해준다.

  • Base: 물리적 주소

  • Limit: 세그먼트 길이

Paging

Paging은 프로세스가 차지하는 물리적 메모리 공간이 비연속적이 되도록 허용하는 메모리 관리 기법이다. 쉽게 말해 fixed-size. 즉, 크기를 다 같게 하는 것이다. 크기가 같기 때문에 똑같이 할당을 하여 External fragmentation은 발생하지 않지만 메모리 크기가 딱 맞아 떨어지지는 않기 때문에 internal fragmentation은 발생한다.

post-custom-banner

0개의 댓글