문제

X86의 실제 모드에서 멀티 프로세서 시스템에서 다른 프로세서에서 코드를 실행하기 위해 어떤 지침을 사용해야합니까?

(조립체에 특정 CPU 레지스터를 설정 해야하는 사전 부팅 코드를 작성하고 실제 운영 체제 부츠 전에 시스템의 모든 CPU 에서이 작업을 수행하고 있습니다.)

도움이 되었습니까?

해결책

따라서 부트 로더와 같은 독립형 ( "사전 부팅") 프로그램이 실제 모드로 실행됩니까? 그리고 이것은 일반적인 BIOS와 함께하는 사람입니까?

이 경우 CPU가 하나만 실행됩니다. 다른 CPU 장치를 회전시키기 위해 운영 체제는 일반적으로 호출되는 것을 실행합니다. 범용 시작 알고리즘 다음과 같이됩니다.

BSP sends AP an INIT IPI
BSP DELAYs (10mSec)
If (APIC_VERSION is not an 82489DX) {
  BSP sends AP a STARTUP IPI
  BSP DELAYs (200μSEC)
  BSP sends AP a STARTUP IPI
  BSP DELAYs (200μSEC)
}
BSP verifies synchronization with executing AP

BSP는 부팅 프로세서입니다. AP는 애플리케이션 프로세서입니다. IPI는 프로세서 간 인터럽트입니다. IPI를 수행하려면 Bootup에서 활성화되지 않은 PC 아키텍처의 인터럽트 컨트롤러 확장 인 APIC를 활성화해야합니다. 그렇기 때문에 코드가 어떤 종류의 ICU 버전이 실행되는지 걱정하는 이유입니다. 이 모든 것은 상당히 깊은 커널 마법입니다. 예를 들어 Linux, NetBSD 또는 기타 *BSD 소스 코드를 살펴볼 수도 있지만 읽기 쉽지는 않습니다. 실제로 이기면 어딘가에 작은 커널 또는 독립형 SMP 테스트 프로그램을 찾을 수 있습니다.

자세한 내용은 인텔 멀티 프로세서 사양.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top