본문 바로가기

개발일지

[OS개발] 2. 64비트 프로세서

OS를 개발하는 과정에서 큰 비중을 차지하는 레지스터는 범용 레지스터, 세그먼트 레지스터, 컨트롤 레지스터 3가지.

 

레지스터 정리

범용 레지스터

- 계산, 메모리 어드레스 지정, 임시 저장 공간 등의 목적으로 사용.

- 16, 32비트 모드를 지원하는 x86계열은 8개, x86-64는 16개이다. x86-64에는 R8~R15로 이름 붙여진 8개의 레지스터가 더 있다. 특수한 용도가 정의되지 않음.

- 범용 레지스터가 늘어나면 수행 속도가 개선된다.

 

범용 레지스터 이름 용도
AX 산순 연산 수행 시 누산기
BX 데이터의 어드레스를 지정할 때 데이터 포인터로 사용
CX 루프 또는 문자열의 카운터로 사용
DX I/O 어드레스를 지정할 때 사용. 산술 연산 시 보조 레지스터로 사용
SI 문자열에 관련된 작업 수행 시 원본 문자열의 인덱스로 사용
DI 문자열에 관련된 작업 수행 시 목적지 문자열의 인덱스로 사용
SP 스택의 포인터로 사용
BP 스택의 데이터에 접근 시 데이터의 포인터로 사용
R8~R15 x86-64 프로세서에서 추가된 범용 레지스터. 다양한 용도로 사용

 

세그먼트 레지스터

- 16비트 레지스터. 어드레스 영역을 다양한 크기로 구분하는 역할

- 주소 공간을 목적에 따라 구분하는게 목표. 메모리 관리 기법과 연관됨. (메모리 관리 기법은 크게 세그멘테이션과 페이징으로 나눌 수 있음)

 

컨트롤 레지스터

- 운영 모드를 변경하고 운영 중인 모드의 특정 기능을 제어하는 레지스터

 

 

운영 모드와 메모리 관리 기법

 

각 모드 별 메모리 관리 방식을 설명한다

 

1. 리얼 모드의 메모리 관리 방식