메모리 관리 1
각 저장공간끼리 DATA 전송 단위
block
보조기억장치에서 메인 메모리의 전송 단위
보조기억장치에서 1bit를 메인 메모리에 적재하고 싶다면
DATA 1bit라도 1 ~ 4 KB 단위로 이동됩니다.
word
메인 메모리에서 processor의 레지스터로 데이터를 전송한다면
16 ~ 64BIT의 단위로 전송됩니다.
흔히 64bit, 32bit cpu라는 말에서
앞의 단위는 word의 단위를 지칭한다고 봅니다.(엄밀히는 아님)
address binding
program을 논리적 주소를 물리적 저장공간에 할당(매핑)하는 방법
int A, int B가 존재하고
A의 물리적 저장공간 100에 저장할게
B의 물리적 저장공간 200에 저장할게
가 있다면 address binding 하는 순간마다 서로의 상대적 주소는 동일하지만
물리적 저장공간이 다르다는 차이점이 있습니다.
3가지의 순간에 address binding이 일어납니다.
1. compile time binding
2. load time binding
3. runtime time binding
위 도식처럼
1. 컴파일을 할 때
2. 메인 메모리에 적재될 때
3. 프로세서를 점유할 때
때에 address binding이 일어납니다.
compile time binding
int A, int B가 코드에 있을 때
A를 위치 100에
B를 위치 200에
적재한다고 설정되며
이 값은 변하지 않습니다.
load time binding
이제 우리 프로그램은 메모리의 어느 공간에 적재되어야 할지 모릅니다.
compile time 때 정한 100과 200의 값을 사용합니다.
저장공간의 시작 위치는 다를지라도
100과 200의 격차는 동일하게 유지합니다.
이를 상대적 주소를 사용한다고 표현합니다.
또 다른 특징은 프로그램 전체가 메모리에 올라갑니다.
run time binding
런타임 말 그대로 프로그램이 프로세스가 된 후 cpu를 점유할 때마다 새로 할당됩니다.
프로세스 상태 전이 도중 최소 main memory에 올라왔을 때부터 표현했습니다.
ready에서 cpu를 점유하여 running상태가 될 때 주소를 할당합니다.
그 후 block상태가 되었다가 필요한 자원을 다시 할당받고
ready에서 다시 running상태가 될 때마다 계속 재할당을 합니다.
swapping
프로세스 상태 전이 도중에서 swap in, swap out의상태 전이을 말합니다.
전이도처럼 in, out시 메인 메모리에 적재될 때, 적재가 해제될 때를 표현합니다.