Jak to działa?

Bochs tworzy symulację procesora, pamięci i innych elementów architektury za pomocą modułów pisanych w C++.  

Dostarcza interpreter języka emulowanej maszyny. 

Emuluje urządzenia we/wy (urządzenia wirtualne lub rzeczywiste). 

Ponieważ instrukcje są obsługiwane przez program, prędkość emulacji jest obarczona znacznym narzutem czasowym.

Przy starcie Bochs główny moduł wczytuje plik konfiguracyjny i obrazy systemu plików z dysku. Bochs ma tylko jeden plik konfiguracyjny. Są z niego wczytywane ustawienia wszystkich komponentów. Można tu ustalić początkowe rejestry i zawartość pamięci, ustawienia urządzeń, BIOS itd.

 

BIOS

Bochs zawiera plik z zapisanym programem BIOS'u.

BIOS w rzeczywistości jest kawałkiem kodu maszynowego. Kiedy BIOS kończy inicjalizację następuje przeskok do bootsectora emulowanego systemu operacyjnego, który kontynuuje ładowanie systemu.

 

cpu : zawiera większość kodu odpowiedzialnego za implementację procesora (operacje arytmetyczne i logiczne, przepływ danych, stronicowanie itd...)T
memory : czytanie/pisanie do pamięci, sprowadzanie danych i instrukcji z pamięci
iodev : obsługa urządzeń zewnętrznych w tym we/wy. Emulowanie obsługi sprzętu (floppy , CDROM , HD , klawiatura, mysz, wsparcie dla VGA, karty sieciowe, DMA itd.)
bios : symulacja BIOs-u x86
debug : debuger
fpu : operacje zmiennoprzecinkowe
gui : wsparcie dla GUI bochs-a. (X11 ,BeOs)
misc : Różne inne opcje, takie jak wsparcie dla SB16

 

 

CPU

Komponent CPU jest kompletną implementacją instrukcji procesora Pentium.

Najpierw instrukcja zostaje sprowadzona z pamięci. Potem CPU oddziela kod instrukcji, parametry i flagi. W zależności od instrukcji kontrolę przejmuje odpowiedni moduł Bochsa. (na przykład dla instrukcji zmiennopozycyjnej - FPU). Podczas fazy wykonawczej, mogą pojawić się wyjątki, które zakłócą normalny przebieg. W zależności od wyjątku instrukcja zostaje obsłużona w odpowiedni sposób. Kiedy w końcu wynik jest gotowy, zostaje zapisany z powrotem do pamięci. Ta technika nazywa się fetch-decode-execute loop.

CPU zajmuje się również urządzeniami. Niektóre urządzenia komunikują się z CPU poprzez DMA. To oznacza zapis i odczyt do konkretnej komórki pamięci wysyła informacje do urządzenia, zamiast do pamięci. Inne urządzenia korzystają z przerwań. CPU trzyma tablicę przerwań zawierającą kod obsługi przerwań. W pętli fetch-decode-execute CPU sprawdza czy zostało wywołane przerwanie. Jesli tak, to w następnym obrocie pętli wykonywana jest obsługa przerwania a nie następna instrukcja.

 

Instalacja.

spis tresci

Debugging.