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 되어 메모리에 적재된다.