Chapter 8-1. Memory Management I
메모리란 주소를 통해 접근하는 객체로 Main Memory는 주기억장치를 의미한다.
(따로 언급이 없으면 메모리가 Main memory를 의미한다.)
주소의 종류
Logical Address(=virtual address)
프로세스마다 독립적으로 갖는 공간으로 0번지부터 시작한다.
이 주소는 CPU가 인식하는 주소 체계이다.
Physical Address
말 그대로, 물리적인 메모리 주소로 실제 하드웨어에 올라가는 위치를 뜻한다.
Symbolic Address
프로그래머들이 특정 이름을 통해 변수를 지정하고 값을 저장할 때,
그 변수를 하드웨어의 몇 번지에 저장할 지 정하지 않는다.
또한 그 변수를 CPU가 어떻게 인식할지도 정하지 않는다.
그저 변수의 이름을 통해서 그 값에 접근할 수 있는 것이다.
그 변수를 Symbolic Address라고 한다.
이 주소가 컴파일 되어 숫자 주소가 만들어지고 이것이 물리적인 메모리와 매핑되는 것이다.
이를 주소 바인딩이라고 한다.
주소 바인딩
작게는 Data의 주소를 결정하는것이고,
크게는 어떤 프로그램이 물리적인 메모리에서 어느 부분에 적재될 지 결정하는 것이다.
Symbolic Address -> Logical Address -> Physical Address 의 과정을 거치게 된다.
그렇다면 주소는 언제 바인딩(결정)되는가?
바인딩 되는 순간에 따라서 세 가지로 분류할 수 있다.
Compile time binding
주소 변환이 컴파일 시에 이루어지는 방법이다.
물리적인 메모리가 많이 비었어도 이미 주소가 결정되어서 변경할 수가 없는 비효율적인 방법이다.
변경해야하는 경우에는 컴파일을 다시 해줘야 한다.
변경할 수가 없으므로 컴파일된 코드를 absolute code라고 한다.
Load time binding
프로그램이 실행되었을 때, 바인딩이 이루어지는 방법이다.
컴파일러가 재배치 가능한 코드라고 해서 relocatable code라고 한다.
Execution time binding(=Runtime binding)
현재의 컴퓨터들이 지원하고 있는 바인딩 방법
프로그램이 실행된 후에도 주소를 변경할 수 있다.
그래서 CPU가 주소를 참조할 때마다 새로 binding 상태를 점검해야 한다.
MMU(Memory Management Unit)이라는 하드웨어의 지원이 필요하다.
MMU는 logical address를 physical address로 매핑(Mapping)해주는 Hardware Device이다.
두 가지의 레지스터를 이용하여 매핑을 수행한다.
relocation register : 접근할 수 있는 물리적 메모리 주소의 최소값(시작값)
limit register : 논리적 주소가 존재할 수 있는 범위(오류 방지 for trap)
MMU Scheme
CPU에서 논리적 주소로 메모리에 접근을 할 때,
MMU에서 물리적 메모리로 매핑된다.
limit register는 프로세스가 존재하는 범위를 나타내고 있으며,
CPU가 그 범위를 벗어나는 주소를 요청할 경우 trap(software interrupt)를 통해 오류를 알린다.
Chapter 8-1. 끝
이 포스팅은 이화여대 반효경 교수님 강의를 듣고 요약한 내용을 담고 있습니다.
'Dev.Basic > 운영체제' 카테고리의 다른 글
[OS] 8-3. Memory Management III (0) | 2016.06.05 |
---|---|
[OS] 8-2. Memory Management II (0) | 2016.06.05 |
[OS] 7. Deadlock (0) | 2016.06.04 |
[OS] 6-2. Process Synchronization II (0) | 2016.06.04 |
[OS] 6-1. Process Synchronization I (0) | 2016.06.03 |