Home

0

백준[14697] - 방 배정하기

문제백준 14697 문제 보기 접근 방법처음에는 dfs로 문제를 접근하려했다. 하지만 dfs로 문제를 풀 경우 O(3^N)이라는 큰 시간복잡도를 보인다. 이를 해결하기 위해 복잡한 예외 처리 및 메모이제이션을 사용해야할 것 같아 다른 방법을 생각해 보았다. 결과적으로 브루스포스로 접근하면 O(N^3)으로 쉽게 해결할 수 있다. 코드 #include <i

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