문제
1.
32bit CPU를 사용하는 컴퓨터가 가질 수 있는 물리 메모리의 최대 크기는 얼마인가?
→ 4GB
•
CPU의 bit는 한 번에 다룰 수 있는 데이터의 최대 크기를 의미한다.
•
CPU 내부부품들은 이 bit를 기준으로 제작된다. ( 레지스터, 연산장치, 버스, 대역폭 등 )
•
메모리주소를 지정하는 메모리 주소 레지스터 크기 또한 32bit 이므로 표현 가능한 메모리 주소의 범위가 0 ~ 2^32 - 1 이다. ( 16진수로는 00000000 ~ FFFFFFFF )
•
따라서 물리 메모리의 총 크기는 2^32B 이며 이는 곧 4GB이다.
2.
절대 주소는 실제 물리 주소로, 메모리 관리자 입장에서 바라본 주소이다. 절대 주소와 관계 없이 사용자 입장에서 항상 0번지부터 시작하는 주소는 무엇인가?
→ 상대주소
메모리 영역 구분
•
프로세스는 처리에 필요한 데이터를 메모리 주소를 통해 가져온다.
•
메모리는 운영체제 영역과 사용자 영역으로 나뉘어 관리되며 운영체제 영역은 침범되어선 안된다.
•
이 경계가 경계레지스터에 저장되어, 프로세스가 메모리 경계를 벗어 나 작업을 요청하면 종료된다.
→ 프로세스는 데이터를 메모리 주소를 통하여 가져오고, 이 메모리 주소는 엄격하게 구역이 나뉘어져 있다.
절대주소, 상대주소
•
물리적 메모리 주소 즉, 절대주소를 사용자가 알게되어 이용하면 보안상 좋지 않고, 주소를 파악하기도 어렵다.
•
따라서 절대 주소를 알지 않아도 메모리를 사용할 수 있게 하는 것이 상대주소이다.
•
절대주소는 물리 주소 0번지 부터 시작하고 물리 주소 공간을 사용하며, 상대 주소는 물리주소와 관계없이 사용자관점에서 항상 0번지 에서 시작하며 논리 주소 공간을 사용한다.
3.
상대 주소를 절대 주소로 변환할 때 사용하는 레지스터는 무엇인가?
→ 재배치 레지스터
•
위에서 알아본 것 처럼 상대주소는 본래의 물리 주소에서 변환된 값을 사용하는 것이다.
•
이를 컴퓨터가 프로세스를 실행하는데 사용하려면 원래의 물리주소 값으로 변환을 해야한다. 이를 재배치 레지스터를 통해 한다.
•
즉, 주소변환의 기본이 되는 주소값을 가진 레지스터 이다.
•
운영체제의 영역에 따라 재배치 레지스터에 담기는 값이 달라지며, 상대주소에 이 값을 더하면 절대주소가 나온다.
•
상대주소 + 재배치 레지스터의 값 ( 운영체제와 사용자 영역의 경계 값) = 절대주소
4.
프로세스의 크기가 물리 메모리보다 클 때 전체 프로세스를 메모리로 가져오는 대신 적당한 크기로 잘라서 가져오는 기법은 무엇인가?
→ 메모리 오버레이
•
프로그램을 모듈 단위로 잘라, 당장 필요한 모듈만 메모리에 가져와 사용한다.
•
어떤 모듈을 우선적으로 가져올지는, CPU 레지스터 중 하나인 프로그램 카운터 (PC)가 결정한다.
메모리 오버레이의 의미
•
한정된 메모리에서 메모리 보다 큰 프로그램을 실행 할 수있다. → 가상메모리 시스템의 기본 개념
•
프로그램은 일부부분만으로도 실행가능하다. 이는 메모리를 여러 조각으로 나누어 여러 프로세스에 할당할 수 있다는 의미
면접대비
•
상대주소와 절대 주소란?
◦
상대 주소는 CPU가 생성하는 가상의 주소이고,
절대 주소는 메모리가 취급하는 물리 주소이다.
•
메모리 오버레이란?
◦
프로세스의 크기가 실제 메모리(물리 메모리) 보다 클 때 전체 프로세스를 메모리에 가져오는 대신 적당한 크기로 잘라서 가져오는 기법이다.