[시스템 소프트웨어] 06-2 Memory Management2

yesman·2022년 1월 11일
0

시스템 소프트웨어

목록 보기
21/23

Address Binding

프로그램은 실행되기 위해 메모리 상에 레벨이 큰쪽에서 작은 쪽으로 올라와야 한다.
Address Binding은 논리주소에서 물리주소로 맵핑하는 것이다. 소스 프로그램에서의 주소는 보통 변수 같은 기호로 나타내진다. 컴파일러를 거치면서 상징적인 주소에서 재지정 가능한 주소로 바뀌고 linker/loader를 거치면 재지정가능한 주소에서 절대주소로 바뀐다.

logical/physical address space

logical address: 가상 주소라고도 하며 논리 주소이다. cpu에 의해 생성된 주소이다.
physical address: 메모리 주소라고도 하며 물리 주소이다. 메모리에서 바라본 주소이다.

논리 주소에서 물리 주소로 바인딩하는 것은 MMU(memory management unit)에 의해 행해진다.

Ap = [Rb] + Al < [Rb] + Limit(주소 비트수에 따라 달라진다.)

바인딩할 때에는 논리주소에 시작주소를 더하면서 블록을 재지정 한다. 논리주소의 범위는 0부터 max이고 물리주소의 범위는 0+Rb 부터 max+Rb이다.

메모리 구성

메모리 분할 방법에 따라 연속 할당, 비연속 할당으로 나눌 수 있다.

연속할당은 프로그램 전체를 한꺼번에 메모리에 올리는 것이다.

비연속할당은 프로그램을 잘라서 할당하는 방법이다. paging은 일정하게 자르고 segmentation은 융통성있게 프로그램의 특성에 따라 자른다.

연속할당

프로그램 전체를 한꺼번에 메모리에 올리는 것이다.
메인 메모리는 O.S.와 유저 프로세스로 나뉜다. 유저 프로세스에 의한 변경으로부터 O.S. 코드와 데이터를 보호한다. 유저프로세스를 다른 것으로부터 보호한다.

Single-partition allocation은 유저 영역에 프로세스 하나를 할당하는 것이다. relocation 레지스터는 시작주소에서 가장 작은 물리 주소로 바꾼다. limit 레지스터는 최대 논리 주소 값이다. MMU는 논리주소를 relocation 레지스터에서 값을 더함으로써 동적으로 맵핑한다.

cpu에서 논리주소를 생성하면 limit 레지스터의 최대 논리 주소 값보다 작은지 확인해야한다. 작다면 relocation 레이스터의 시작주소를 더하여 물리주소로 맵핑한다.

multiple-partition allocation은 유저 영역에 프로세스 여러개를 할당하는 것이다. 고정된 크기의 파티션의 개수로 메모리를 나눈다. 각 파티션은 1개의 프로세스를 포함한다. 멀티 프로그래밍의 수는 파티션의 개수에 의해 결정된다. O.S.는 어느 부분이 사용가능한지 알려주는 테이블을 관리한다. 사용가능한 메모리의 블록은 hole이라고 한다.


위 사진을 다음과 같이 할당할 수 있다.

하지만 이런식으로 할당하다보면 external fragmentation(외부 조각화) 현상이 일어난다.

동적 메모리 할당 알고리즘(multiple-partition)

4가지의 할당 알고리즘이 있다.
1. first-fit algorithm
2. best-fit algorithm
3. worst-fit algorithm
4. buddy system

profile
유니티

0개의 댓글