본문 바로가기

Today I Learned

운영체제와 정보기술의 원리7 메모리 관리

1. 주소 바인딩

논리적 주소(가상 주소) : 프로세스만의 독자적인 가상 메모리 주소 공간
물리적 주소 : 물리적 메모리에 실제 올라가는 위치

주소 바인딩 : 주소를 결정하는 . 논리적 주소를 물리적 주소로 변환.
Symbolic Address → Logical Address → Pysical Address

시점에 따른 주소 바인딩
- 컴파일 타임 바인딩 : 컴파일 시점에 물리적 메모리 주소가 결정되는 방식. 비현실적이고 현대에는 사용하지 않음. 절대 코드 생성.
- 로드 타임 바인딩 : 실행이 시작될 물리적 메모리 주소가 결정되는 방식. 재배치 가능 코드 생성.
- 실행 시간 바인딩 : 프로그램 실행이 시작될 물리적 메모리 주소가 결정되고, 실행 후에도 물리적 메모리 주소가 변경될 있는 방식. MMU 하드웨어 지원이 필용하다.

2. 관련 용어

동적 로딩
프로세스 전체를 메모리에 한꺼번에 올리는 것이 아니라 실행되는 부분만을 올려서 효율을 높이는 기법. 운영체제의 지원없이 프로그램 자체에서 구현 가능.
로드 : 메모리에 프로그램을 올리는 .

중첩 Overlays
실제 필요한 정보만 메모리에 올리는 . 프로그래멍에 의해 구현됨.

스와핑
메모리에 올라온 프로세스를 전체 디스크의 스왑 영역으로 일시적으로 내려놓는 . 메모리에 존재하는 프로세스의 수를 조절하는 목적을 가지고 있다. 런탕임 바인딩 기법에서 사용되는 것이 좋다.

동적 연결
연결 : 소스 코드 파일과 컴파일된 파일을 묶어서 하나의 실행 파일을 생성하는 과정
동적 연결 : 라이브러리 실행시 연결되는 . 라이브러리 호출 부분에 스텁(stub)이라는 작은 코드를 두어서 해당 라이브러리의 위치를 찾는다. (Shared library)

3. 물리적 메모리의 할당 방식

연속 할당
물리적 메모리의 곳에 연속적으로 적재하는 방식. 고정 분할 방식과 가변 분할 방식이 있다. 전자는 외부 조각과 내부 조각이 생겨서 메모리가 낭비된다.

불연속 할당
물리적 메모리의 여러 위치에 분산되어 적재하는 방식.

4. 페이징 기법

불연속 할당의 기법 하나. 프로세스의 가상 메모리를 동일한 크기의 단위(페이지) 나누어서 물리적 메모리의 다른 위치에 저장하는 방식.

프레임 : 물리적 메모리와 동일한 크기로 나누는 단위
페이지 : 프로세스의 가상 메모리를 나누는 단위
페이지 테이블 : 프로세스 각각의 주소 변환을 위한 테이블. 페이지 개수만큼 엔트리를 가진다. 물리적 메모리에 위치하고 있다.
TLB : 페이지 테이블 접근 오버헤드를 줄이기 위한 고속의 주소 변환용 하드웨어 캐시. 모든 정보를 갖고 있지 않기 때문에 TLB miss 나는 경우 페이지 테이블로 간다.

Logical Address → TLB → (Page Table) → Pysical Address

2단계 페이징(two-level paging) 기법 : 외부 페이지 테이블과 내부 페이지 테이블 단계에 걸친 테이블 기법이다. 1단계에 비해 메모리 낭비를 줄일 있응나 테이블의 수가 증가하므로 시간 낭비가 생긴다.
역페이지 테이블(inverted page table) 기법 : 물리적 주소에 대한 페이지 테이블을 만드는 기법.

5. 세그멘테이션 Segmentation

프로세스의 주소 공간을 기능/의미 단위로 나누어서 물리적 메모리에 올리는 기법이다. 단위가 세그먼트이다. 논리적 단위로 나누었기 때문에 크기가 균일하지 않다. 부가적인 오버헤드가 뒤따르게 된다. 공유와 보안 측면에서 페이징 기법보다 효과적이다.

6. 페이지드 세그멘테이션 Paged Segmentation

프로그램을 의미 단위의 세그먼트로 나누는데, 크기가 동일한 페이지 집합으로 구성하는 기법이다. 단계의 테이블을 이용한다.