CS/운영체제

#10 메모리 관리(Memory Management) - 용어정리

Scala0114 2022. 1. 7. 13:33

1. 메모리 계층구조

  • 레지스터(Register)에서 보조기억장치(Auxiliary Memory)로 갈수록 용량은 커지고
    가격은 싸지며 접근 속도는 느려진다.

  • Word
    • 주기억장치(Main Memory)와 레지스터(Register) 사이의 데이터 전송 단위
    • 16~64bit의 크기를 가진다.

  • Block
    • 보조기억장치(Auxiliary Memory)와 주기억장치(Main Memory) 사이의 데이터 전송 단위
    • 1~4KB의 크기를 가진다.

 

 

2. 주소 바인딩(Address Binding)

  • 프로그램 상에서 사용되는 논리 주소를 실제 메모리의 주소인 물리 주소와 매핑시켜주는 작업

  • 컴파일 시간 바인딩(Compile Time Binding)
    • 컴파일 시간에 주소를 바인딩하는 방식
    • 프로세스 전체를 메모리에 적재해야한다.
    • 프로세스가 메모리상의 어느 위치에 적재될지를 컴파일러가 알고있어야 한다.

  • 적재 시간 바인딩(Load Time Binding)
    • 프로세스가 메모리상의 어느 위치에 적재될지를 컴파일러가 모르는 경우 상대주소를 사용
    • 적재 시점에서 프로세스가 적재된 시작위치를 기준으로 상대주소를 실제주소로 변환하여 매핑하는 방식
    • 마찬가지로 프로세스 전체를 메모리에 적재해야한다.

  • 실행 시간 바인딩(Run Time Binding)
    • 주소 바인딩을 실행시간 전까지 미루는 방식
    • 프로세스의 메모리 주소가 실행 도중에 변경될 수 있는 경우에 사용
    • 주소 변환(relocation)을 위한 레지스터가  필요 - MMU(Memory Management Unit)
    • 대부분의 OS는 이 방식을 사용

 

 

3. 스와핑(Swapping)

  • 메모리 공간의 효율적인 사용을 위해 당장 실행되지 않는 프로세스를 디스크의 swap 영역으로
    swap out해두고 실제로 사용되는 시점에 다시 메모리로 swap in 해주는 방식
  • 할당받은 프로세서 사용시간이 만료된 프로세스는 디스크의 swap 영역으로 swap out 되어
    메모리상에서 해제된다.

  • 실행될 프로세스는 swap 영역에서 swap in 되어 메모리에 적재된다.