Tag: os

0

11. PIC 컨트롤러와 인터럽트 핸들러를 이용해 인터럽트를 처리하자

들어가기PIC 컨트롤러로 인터럽트를 프로세서에 전달하고 실행 중이던 코드로의 복귀를 구현해보자. 본론11.1 PIC 컨트롤러 소개11.1.1 PIC 컨트롤러란 PIC 컨트롤러는 인터럽트 처리에 관련된 세부기능을 프로그래밍할 수 있는 컨트롤러. 마스터-슬레이브 방식으로 연결해 15개의 인터럽트를 처리. PIC 컨트롤러는 각각 8개의 핀으로 총 16개를 구성하

0

10. GDT, IDT 테이블, TSS 세그먼트를 추가해 인터럽트에 대비하자

들어가기TSS 세그먼트와 IDT 테이블을 생성하는 방법에 대해 알아보고, 임시 핸들러를 등록해보자. 본론10.1 인터럽트와 예외10.1.1 인터럽트와 예외의 차이점 인터럽트와 예외의 공통점은 코드 수행 도중에 발생하거나 프로세서에 의해 처리가 필요한 이벤트. 인터럽트나 예외가 발생하면 준비한 특수 코드를 실행. 인터럽트와 예외의 차이점은 이벤트를 발생시

0

9. 키보드 디바이스 드라이버를 추가하자

들어가기키보드를 제어하는 방법에 대해서 알아보고 스캔 코드를 ASCII 코드로 변환해보자 본론9.1 키보드 컨트롤러의 구조와 기능9.1.1 키보드 컨트롤러, I/O 포트, 레지스터 할당된 포트는 두 개이지만 포트에서 데이터를 읽을 때와 쓸 때 접근하는 레지스터가 다름. 그중 상태 레지스터는 키보드 컨트롤러의 상태를 표시하는 레지스터. 9.2 키보드 컨트

0

8. 64비트 모드로 전환하자

들어가기64비트 모드로 전환하는데 필요한 페이징 기능 활성화와 IA-32e 모드 커널을 작성 본론8.1 프로세서의 제조사와 IA-32e 지원 여부 검사 프로세서마다 지원하는 기능이 조금씩 다름. 프로세서 제조사는 지원하는 기능을 확인할 수 있는 CPUID 명령어 제공. 8.1.1 CPUID를 사용하여 프로세서 정보 확인 방법 CPUID 명령어는 EAX에

0

7. 페이징 기능을 활성화하여 64비트 전환을 준비하자

들어가기페이징 설정을 통한 64비트 모드로의 전환 준비! 본론7.1 선형 주소화 4단계 페이징 기법 페이징에 사용하는 각 테이블은 512(2^9)개의 엔트리로 구성, 다음 레벨에서 사용할 테이블의 기준 주소를 포함. 그림과 구현한 페이징의 차이점은 2MB 페이지를 만들 계획, 따라서 페이지 테이블 엔트리없이 페이지 디렉터리에서 바로 물리 주소. 선형 주소

0

6. A20 게이트를 활성화하여 1MB이상 영역에 접근해보자

들어가기A20 게이트에 대해 공부 해보자. 본론6.1 IA-32e 모드 커널과 메모리 맵 1MB(0x100000) 이하의 공간은 IA-32e 모드 커널의 공간으로 활용하기에는 부족. IA-32e 모드 커널을 2MB ~ 6MB까지 위치 시킬 예정. 6.2 IA-32e 모드 커널을 위한 메모리 초기화6.2.1 메모리 초기화 기능 추가BOOL kIntia