mechanizm wywłaszczania

0

mam takie wątpliwości co do mechanizmu wywłaszczania wątku w aplikacji.
jak wiadomo, wywłaszczenie może zajść w dowolnym miejscu kodu. jak mam jednak to rozumieć ? czy pisząc kod oznacza to
'w każdym miejscu między linijkami'
czy też
'między każdą jedną operacją procesora',
więc w ostatnim przypadku, jeśli wątek wykonuje operacje np.

a:=b+c*d

to takie wywłaszczenie może się odbyć po obliczeniu iloczynu 'c*d' a przed dodaniem go do 'b' i przypisaniem do zmiennej ?

0

Poczytaj o operacjach atomowych (niepodzielnych).

0

O ile mi wiadomo to jest tak
W każdym systemie operacyjnym jest tak zwane przerwanie zegarowe. W linuxie jest ono wykonywano co 1/1000 sekundy. Wykonywany kod programu zostaje przerwany a wszystkie wartości z rejestrów procesora, wskażnik stosu itp zostają zapisane co powoduje że system może powrócić do stanu programu z przed jego przerwaniem i dalej go wykonywać. I np. aby dodac dwie liczby to w procku wykonywana jest pojedyncza operacja w asmie można to wyrazić tak

mov eax,2

W trakcie wykonywania tej instrukcji procesor niemoże wywolać przerwania ale po zakonczeniu jej już tak. Wieć twój zapis w c zostaje podzielny na kilka mniejszych instrukcji procesora w trakcie których może zostać wywlaszczony. Więc jak używasz wielu wątków w których odwolujesz się do tej samej zmiennej spowoduje to nielada balagan chyba że odpowiednio o to zadbasz

0

Przepraszam o ile pamietam ze studiów twój zapis jest w pascalu :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1