Pracuję nad wbudowanym programem dla intel i386, i staram się dowiedzieć, jak korzystać z zegara sprzętowego. Przeczytałem here (i innych miejsc), że przerwanie timera jest 0x08, ale this page (I różne inne źródła) mówią, że pierwsze 32 przerwań są zarezerwowane dla wyjątków, a przerwać 0x08 w szczególności dla podwójnego błędu. Która prawda? Jak ustawić przerywacz czasomierza, używając albo zespołu albo bardzo niskiego poziomu C bez wywołań systemu operacyjnego?W jaki sposób przerwanie timera może być 0x08, jeśli pierwsze 32 przerwań są zarezerwowane dla wyjątków?
Pracuję nad prostym systemem operacyjnym, aby dowiedzieć się więcej o rozwoju systemu operacyjnego, więc nie mam dostępu do niczego takiego jak Linux lub wywołania systemowe (chyba że sam implementuję wywołania systemowe, ale tworzenie w pełni zgodnego z POSIX OS jest daleko poza zakresem tego projektu, więc wolę trzymać się prostych, choć nieco hackowskich rozwiązań).
Jeśli to ma znaczenie, używam tego na QEMU, a nie na rzeczywistym fizycznym i386.
Zazwyczaj remapuje się przerwań. Zobacz [artykuł osdev] (http://wiki.osdev.org/8259_PIC). – Jester
Czy zamierzasz napisać system operacyjny w trybie rzeczywistym lub tryb chroniony numer jeden? Zakładam tryb chroniony. –
@MichaelPetch Ponieważ nie wiem, co to oznacza, przypuszczam, że powinienem założyć to samo co ty. (Sprawdzę, co to znaczy i wrócisz do ciebie) – ItsTimaiFool