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. 리얼 모드의 메모리 관리 방식
'개발일지' 카테고리의 다른 글
[OS개발] 4.플로피 디스크에서 OS 이미지 로딩 (0) | 2022.08.02 |
---|---|
[OS개발] 3. 부트로더 만들기 (0) | 2022.08.01 |
[OS개발] 1. 프롤로그 (0) | 2022.07.30 |
[CANVAS - 체스] 9. 체스말 이동 가능조건 추가 (0) | 2022.04.16 |
[사이드프로젝트] 자동 배포 (0) | 2022.04.16 |