드디어 긴긴 Single Core Processor 관련 부분을 마무리하고 Multicore Processor쪽으로 들어갔습니다. 이번에는 가장 기본이 되는 MP Configuration Table을 분석하는 기능을 추가했습니다. MP Configuration Table은 BIOS에서 만드는 것으로, 코어의 개수와 인터럽트 연결에 관련된 포괄적인 정보를 담고 있습니다. ;) 아래 그림을 보는 게 더 빠를 듯...
MP Configuration Table을 분석하는 이유는 실제 Core의 개수를 찾는 것과 나중에 인터럽트를 모든 Core로 전달하기 위해서입니다. BIOS는 부팅 과정에서 부팅을 담당하는 프로세서인 BSP(Bootstrap Processor)로 PIC 컨트롤러의 인터럽트 라인을 연결하므로, AP(Application Processor)를 깨운다 해도 PIC 컨트롤러의 인터럽트는 전달되지 않습니다. ;) 전달된다 하더라도 PIC 컨트롤러는 Multicore Processor를 지원할 능력이 없으므로 오동작하겠지요. ;)
따라서 Local APIC와 I/O APIC를 이용해서 모든 Core로 전달되도록 설정해야 하는데, 이때 MP Configuration Table에 저장된 정보가 아주 중요한 역할을 합니다. 실제 메인보드 제조사는 인터럽트를 어떻게 연결했는지를 알고 있으므로, BIOS에 그 정보를 저장해 둡니다. 이 정보가 MP Configuration Table에 들어 있는 것입니다. 만약 MP Configuration Table을 사용하지 않는다면... ㅎㄷㄷ... 생각만 해도 이건... ㅠㅠ
여튼~!!! 분석하는 게 끝났으니 이제 깨워서 일 시키는(?) 일만 남았군요. ㅎㅎ 아우 진짜 죽겠습니다. 이것만 끝나면 GUI로 바로 날아갈 텐데... ㅠㅠ 좀이 쑤셔 죽겠군요. ㅎㅎ 다음 작업도 끝나는 대로 인증 샷을 올리겠습니다. 다음 인증 샷에는 쌍둥이(?)가 열심히 일을 하는 화면이 나오겠군요. ;)
그럼 다들 좋은 저녁 되세요 ;)
ps) 아래는 QEMU의 MP Configuration Table의 내용입니다. 실제 PC와는 좀 다른 모습이군요. ;)
'OS Kernel > MINT64 OS' 카테고리의 다른 글
어흑... 행복한 주말이 거의 다 지나갔군요. ㅠㅠ (1) | 2009.07.26 |
---|---|
[MileStone] 최대 16개 멀티코어 프로세서 또는 멀티 프로세서 지원 기능을 추가했습니다 (18) | 2009.07.10 |
[Milestone] MINT64 OS에 시리얼 포트 디바이스 드라이버가 추가되었습니다~!!! (10) | 2009.06.12 |
[Milestone] MINT 파일 시스템을 구현했습니다. ;) (10) | 2009.05.16 |
[Milestone] 하드 디스크 드라이버를 추가했습니다. ;) (9) | 2009.04.29 |