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
   53   54   55   56   57   58   59   60   61   62   63