- •4. Системне програмне забезпечення
- •1. Поняття обчислювального процесу і ресурсу . Діаграма станів процесу.
- •2. Планування і диспетчеризація процесів і задач в ос. Стратегії планування. Дисципліни диспетчеризації.
- •3. Переривання. Розподіл переривань по рівнях пріоритету. Облік пріоритету. Дисципліни обслуговування переривань.
- •Сторінковий спосіб організації віртуальної пам'яті
- •Сегментно-сторінковий спосіб організації віртуальної пам'яті
- •6. Транслятори, компілятори й інтерпретатори — загальна схема роботи. Визначення транслятора, компілятора, інтерпретатора
- •Найпростіші методи побудови таблиць ідентифікаторів
- •Етапи трансляції. Загальна схема роботи транслятора
- •7. Призначення й особливості побудови таблиць ідентифікаторів. Найпростіші методи побудови таблиць ідентифікаторів Призначення й особливості побудови таблиць ідентифікаторів
- •8. Призначення й особливості побудови таблиць ідентифікаторів. Побудова таблиць ідентифікаторів на основі хеш-функцій Побудова таблиць ідентифікаторів на основі хеш-функцій
- •9. Призначення й особливості побудови таблиць ідентифікаторів. Побудова таблиць ідентифікаторів методом ланцюжків
- •10. Призначення й особливості побудови таблиць ідентифікаторів. Комбіновані способи побудови таблиць ідентифікаторів
- •13. Визначення формальної мови і граматики. Типи формальних граматик. Способи завдання схем граматик.
- •14. Сімейство операційних систем unix. Історія розвитку ос unix. Загальна характеристика сімейства операційних систем unix. Файлова система.
- •15. Загальна характеристика сімейства операційних систем unix, особливості архітектури сімейства ос unix. Основні поняття системи unix. Функціонування системи unix.
8. Призначення й особливості побудови таблиць ідентифікаторів. Побудова таблиць ідентифікаторів на основі хеш-функцій Побудова таблиць ідентифікаторів на основі хеш-функцій
Хеш-функціею F називається деяке відображення множини вхідних елементів R на множину цілих невід’ємних чисел Z: F(r) = n, r R, n Z.
Існують різні варіанти хеш-функцій. Одержання результату хеш-функції — «хешування» — звичайно досягається за рахунок виконання над ланцюжком символів деяких простих арифметичних і логічних операцій.
Ситуація, коли двом чи більш ідентифікаторам відповідає те саме значення функції називається колізією.
Природно, що хеш-функція, що допускає колізії, не може бути прямо використана для хеш-адресації в таблиці ідентифікаторів.
Очевидно, що для повного виключення колізій хеш-функція повинна бути взаємно однозначна: кожному елементу з області визначення хеш-функції повинне відповідати одне значення з її множини значень, але і кожному значенню з множини значень цієї функції повинний відповідати тільки один елемент з області її визначення. Тоді будь-яким двом довільним елементам з області визначення хеш-функції будуть завжди відповідати два різні її значення.
Для рішення проблеми колізії можна використовувати багато способів. Одним з них є метод «рехешування» (або «розміщення»). Відповідно до цього методу, якщо для елемента А адреса h(А), обчислена за допомогою хеш-функції вказує на уже зайняту комірку, то необхідно обчислити значення функції n1=h1(А) і перевірити зайнятість комірки за адресою n1. Якщо і вона зайнята, то обчислюється значення h2(A), і так доти, поки або не буде знайдений вільна комірка, або чергове значення hi(А) співпаде з h(А). В останньому випадку вважається, що таблиця ідентифікаторів заповнена і місця в ній більше.
Таку таблицю ідентифікаторів можна організувати по наступному алгоритму розміщення елемента.
Крок 1. Обчислити значення хеш-функції n=h(A) для нового елемента А..
Крок 2. Якщо комірка за адресою n порожня, то помістити в неї елемент А і завершити алгоритм, інакше i:=l і перейти до кроку 3.
Крок 3. Обчислити ni=hi(А). Якщо комірка за адресою ni порожня, то помістити в неї, елемент А і завершити алгоритм, інакше перейти до кроку 4.
Крок 4. Якщо n=ni, то повідомити про помилку і завершити алгоритм, інакше і:=і+1 і повернутися до кроку 3.
Тоді пошук елемента А в таблиці ідентифікаторів, організованої таким чином, буде виконуватися по наступному алгоритму.
Крок 1. Обчислити значення хеш-функції n = h(A) для нового елемента А.
Крок 2. Якщо комірка за адресою n порожня, то елемент не знайдений, алгоритм завершений, інакше порівняти ім'я елемента в комірці n з ім'ям шуканого елемента А. Якщо вони збігаються, то елемент знайдений і алгоритм завершений, інакше і:=1 і перейти до кроку 3.
Крок 3. Обчислити ni=hi(А). Якщо комірка за адресою ni порожня чи n=ni , то елемент не знайдений і алгоритм завершений, інакше порівняти ім'я елемента в комірці ni з ім'ям шуканого елемента А. Якщо вони збігаються, то елемент знайдений і алгоритм завершений, інакше і:=і+1 і повторити крок 3.
