Nie mam pojęcia o wewnętrznym działaniu systemu operacyjnego, ale mogę mniej więcej zgadnąć przybliżone zachowanie wielu funkcji. Jednej rzeczy, której nie jestem w stanie zrozumieć, jest wielozadaniowość.
Teoretycznie system operacyjny zarządza czasem, dostosowując procesor w krótkich odstępach czasu do różnych uruchomionych programów. Ale nie jest jasne, jak to naprawdę działa.
Powiedz, że system operacyjny chce uruchomić mój program. Kod maszynowy jest ładowany gdzieś w pamięci RAM, zaczynając od określonego adresu. Myślę, że wtedy należy wykonać skok do tego adresu, umożliwiając wykonanie mojego kodu. Ale w ten sposób system operacyjny nie może odzyskać kontroli, dopóki nie odskoczę.
Zasadniczo mogę sobie wyobrazić tylko dwa sposoby wykonania tej pracy, ale żaden z nich nie wydaje się odpowiedni:
System operacyjny może odczytać instrukcje komputera, które chcę wykonać, i emulować je zamiast wykonywać bezpośrednio. Celowo jestem niejasny, ponieważ nie wiem, jak to by działało, ale wydaje się, że znacznie spowolniłoby to program.
Alternatywnie system operacyjny może poczekać, aż wykonam wywołanie systemowe. W tym momencie odzyskuje kontrolę i może sprawdzić, jak długo działam, i wykonywać czynności związane z dzieleniem czasu. Może to działać, ale wydaje się niewiarygodne, ponieważ mógłbym wykonać długie obliczenia, które nie obejmują wywołań systemowych i zawiesić wszystko na chwilę.
Wygląda więc na to, że żaden mechanizm nie działałby zbyt dobrze. Jak faktycznie wykonuje się wielozadaniowość?
interrupt
INT
instrukcji. Nadal jest dla mnie coś tajemniczego