sunsetting
Pytanie może głupie, ale w jaki sposób procesor może wykonywać wiele programów na raz, skoro ma np, tylko 1 rejestr eax?
Co się dzieje jeżeli 1 program chce, żeby w eax była liczba 1 a 2, żeby liczba 2?
w rzeczywistosci programy nie sa wykonywane jednoczesnie. istnieje takie co jak kolejkowanie procesow ktore sie wykonuja i w rzeczywistosci procek liczy tylko jedna rzecz (pomijajac obliczenia zmienno i stalo przecinkowe ktore na procesorze wykonuja sie jedoczesnie). a w prockach wielordzeniowych kazdy rdzen ma wlasny zestaw rejestrow wiec nie ma problemu
No dobra, ale w jaki sposób to działa?
Jeżeli w danym momencie każdy proces chce mieć w jakimś rejestrze coś innego, to procesor musiałby być kilkuset-rdzeniowy, żeby je wszystkie obsłużyć...
Jeśli w systemie jednoprocesorowym działają "jednocześnie" np. 2 wątki:
System najpierw wykonuje strumień kodu wątku pierwszego przez jakąś ilość czasu. Jeśli wątek w tym czasie nie zakończy działania, to system zapisuje w pamięci informacje o jego stanie (rejestry procesora, wskaźniki stosu, licznik), żeby można było wznowić jego wykonywanie w punkcie wstrzymania. Teraz bierze się za drugi wątek. Z wątkiem nr 2 system radzi sobie identycznie i wraca do 1 wątku wczytując najpierw zapisany stan procka. Jeden proces może mieć wiele wątków, dochodzą też priorytety wątków wg których system ustala kolejność wykonywania wątków, może przerywać wątki o słabszym priorytecie itp. Windows to skomplikowana bestia
Dzięki, teraz rozumiem
Ale jak on wstrzymuje wykonanie 1 procesu, to gdzie zapisuje stan rejestrów?
Chyba nie w pamięci RAM (ty byłoby wolne)?
Oczywiście że w pamięci RAM (taki obszar w pamięci nazywa się TLS). To może wydawać się wolne, ale zapisanie lub odczytanie stanu procka to nic w porównaniu do ilości kodu jaka wykonywana jest przez porcję czasu dla wątku. To tak jakby się przyczepić do wywołania jakiejś funkcji - najpierw skok do funkcji, po jej wykonaniu znowu skok.
EDIT:
Teraz zauważyłem że używasz Linuxa Nie znam się na Linuxach, ale tam na 99% jest ta sama sytuacja.
http://www.cs.put.poznan....op_procesor.pdf
http://jarek.jamrozik.webpark.pl/bud.htm