[OS] Address binding

0
post-thumbnail

📚 주소의 종류

1. Physical address (물리적 주소)

  • 데스크탑 커뮤터 혹은 노트북을 열어서 눈으로 볼 수 있고 만질 수 있는 물리 메모리의 주소, 실제로 올라가는 위치

2. Logical Address(Virtual Address)

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

3. Symbolic Address

  • 프로그래밍을 할 때 변수를 지정하면 변수의 이름을 통해 값을 접근할 수 있는 방법.

📚 Address binding

  • DATA의 주소를 결정하는 것. 물리적 메모리의 어느 부분에 적재할 지 결정하는 것
  • 언제 바인딩 되는지에 따라 종류가 나뉨 (3가지)

1️⃣ Compile time binding

  • 컴파일 할 때 바인딩이 이루어짐. (컴파일을 하는 순간 프로그램이 몇 번지에 올라가서 수행되는 것이 결정된다는 뜻)
  • 쉽게 말해, 프로그램 내부에서 사용하는 주소와 physical 주소와 똑같다는 것.
  • 물리적인 메모리가 많이 비었어도 이미 주소가 결정되어 변경할 수 없는 비효율적인 방법.
  • 임베디드에서 사용함.
  • 변경할 수 없으므로 컴파일된 코드를 absolute code라고 한다.

    💡 absolute code
    어셈블리어가 정한 위치에 물리적으로 고정되어 위치되는 코드

2️⃣ Load time binding

  • 프로그램이 실행 되었을때 바인딩이 이루어진다. 컴파일러가 재배치 가능한 코드라 해서 relocatable code라고 한다. (absolute code랑 반대개념임)
  • 프로그램 내부에서 사용하는 주소하고 physical address랑 다름!
  • data라는 것은 0번지에서부터 98000번 위치에 있으니까 (그림) 이 프로그램을 메모리에 로딩할 때, data주소값에 10만을 더함.
  • 프로그램 전체를 로딩할 때 메모리에 주소를 바꿈.
  • MOVE 다음에 나와있는 값만큼 옮김.
    이렇게 주소가 변경되기 때문에 Compile time binding과 다르게 relocatable code 특징을 띔.
  • 컴파일 타임 바인딩과 다르게 multiprogramming이 가능함.
  • 하지만 수 많은 메모리 참조 코드를 다 바꿔줘야 하기 때문에 메모리 로딩할때 시간이 많이 걸린다는 단점을 가지고 있다.

3️⃣ Execution time binding

  • 현재 사용하는 방법. 실행 할때 주소를 바꾸는 방법임.
  • CPU가 주소를 참조할 때마다 새로 binding 상태를 점검해야한다.
  • 하드웨어적 지원이 필요함. (MMU)

📚 MMU ?

  • 가상 주소를 실제 메모리 주소로 변환해주는 장치

Contiguous allocation(연속 메모리 할당)

  • logical address가 연속적이면 physical address도 연속적으로 배치됨
  • MMU가 더하기만 하면됨, 하드웨어 만들기가 매우 쉽다.
  • 하지만 쓰이지 않고 paging이 나오게 된 계기.
  • 단점 : 단편화 발생함.

Memory protection

  • 잘못된 메모리 주소를 참조하지 않도록 막아줌
  • limit register => limit보다 가상 주소 값이 크면 memory protection fault발생

External Fragmentation(외부단편화)

  • contiguous allocation을 반복해서 진행하다가 중간중간 비어있는 공간보다 큰 메모리가 들어왔을때 총 공간은 충분하지만 실제로 할당 할 수 없는 문제

Compaction

  • 단편화를 해결하기위해 비어있는 공간을 연속적인 공간으로 만들고 메모리주소를 움직이는 작업을 말함
  • first-fit(최초적합) = 가장 최초로 발견되는 hole 에다가 할당
  • best-fit(최적적합) = 여기다 넣을지 저기다 넣을지 다 대보는것, 가급적이면 남는 공간 최소화
  • worst-fit(최악적합) - 가장 큰 공간에 넣음(딱 맞는 공간이 있어도 가장 큰 곳에다 넣겠다고 해서 worst임)

0개의 댓글