Page 58 - 6571
P. 58
Якщо вираз x = y + z реалізовано завантаженням значення
змінної y в регістр і подальшим додаванням значення змінної z,
то кінцевими значеннями змінної x можуть бути значення 0, 1, 2
або 3. Це відбувається тому, що ми можемо отримати як початко-
ві значення yта z, так і їх кінцеві значення або деяку комбінацію
значень, в залежності від ступеня виконання другого процесу. Ще
одна особливість наведеної програми полягає в тому, що кінце-
вим значенням змінної x може бути і значення 2, хоча неможливо
зупинити програму і побачити стан в якому сума y + z рівна
значенню 2.
Передбачається, що обчислювальні машини володіють на-
ступними характеристиками:
1. Значення базових типів (наприклад int) зберігаються в
елементах пам’яті (наприклад словах), які зчитуються і запису-
ються неподільними операціями.
2. Значення обробляються в наступній послідовності: спочат-
ку їх поміщають в регістри, там до них застосовують операції і
потім записують результати назад в пам’ять.
3. Кожен процес має свій власний набір регістрів. Це реалізу-
ється або шляхом надання кожному процесу окремого набору ре-
гістрів, або шляхом збереження і відновлення значень регістрів
при виконанні різних процесів (це називається перемиканням
контексту, оскільки регістри утворюють контекст виконання
процесу).
4. Будь-які проміжні результати, що з’являються при обчис-
ленні складних виразів, зберігаються в регістрах або областях
пам’яті, що належать до виконуваного процесу, наприклад, в йо-
го стеку.
У такій моделі обчислювальної машини, якщо вираз e в од-
ному процесі не звертається до змінної, зміненої іншим проце-
сом, обчислення виразу завжди буде неподільної операцією, на-
віть якщо для цього необхідно виконати декілька дрібномодуль-
них дій. Це відбувається тому, що при обчисленні виразу e жодна
змінна, від якої залежить значення e, не змінює свого значення, і
жоден процес не може бачити тимчасові значення змінної, що
створюються при обчисленні виразу. Аналогічно, якщо операція
присвоєння x = e в одному процесі не посилається на змінні, з
57