2009-10-25 13 views
10

x86 üzerinde gerçek modda, çok işlemcili bir sistemde farklı bir işlemcideki kodu çalıştırmak için hangi yönergelerin kullanılması gerekir?Farklı işlemci (x86 aksamı) üzerinde kod çalıştırma

(Ben gerçek işletim sistemi başlatılmadan önce, belirli CPU kayıtlarını ayarlayın ve sistemdeki her CPU bu yapması gereken assembler bazı önyükleme öncesi kodunu yazıyorum.)

+1

MP'yi gerçek modda yapabilir misiniz? – Draemon

+0

neden olmasın. MP hakkında mod özel bir şey yok. –

+1

http://stackoverflow.com/questions/980999/what-does-multicore-assembly-language-look-like –

cevap

9

Yani sahip bir tek başına ("önyükleme" dediniz), gerçek modda çalışan bir bootloader gibi mi? Ve bu her zamanki BIOS ile bir PeeCee üzerinde mi?

Bu durumda yalnızca bir CPU'nuz çalışıyor.

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 Önyükleme İşlemci geçerli: spin-up için bir işletim sistemi tipik ne denir çalıştırır diğer CPU üniteleri böyle gider evrensel başlangıç ​​algoritmasını amacıyla. Bir AP, bir Uygulama İşlemcisidir. Bir IPI, işlemci arası bir kesintidir. Bir IPI yapmak için, önyüklemede etkin olmayan PC mimarisine bir kesme denetleyicisi uzantısı olan APIC'yi etkinleştirmeniz gerekir. Bu yüzden kod, hangi tür ICU sürümünün çalıştığı konusunda endişeleniyor. Bütün bunlar oldukça derin bir çekirdek sihiridir. Bir örnek için Linux, NetBSD veya başka bir BSD kaynak koduna bakmayı deneyebilirsiniz, ancak okunması kolay olmayacaktır. Gerçekten kazanırsanız, bir yerde küçük bir çekirdek veya bağımsız SMP test programı bulabilirsiniz.

Daha fazla bilgi için, bkz. Intel Multiprocessor Specification.

+0

Teşekkürler Bu sadece ihtiyacım olan bilgiler! Bu bir meydan okuma olmalı ... –