Регіони під ці блоки резервуються і звільняються у міру створення і руйнування потоків в процесі.
Але, вимагаючи від Вас резервувати регіони з урахуванням гранулярності виділення пам'яті (а ця гранулярность на сьогоднішній день складає 64 Кб), сама система цих правил нс дотримується Тому цілком ймовірно, що грапіци регіону, зарезервованого під РЕВ- і ТЕВ-блоки, що не будуть кратні 64 Кб. Проте розмір такого регіону обов'язково кратний розміру сторінок, характерному для даного типу процесора.
Якщо Ви спробуєте зарезервувати регіон розміром 10 Кб, система автомати чески округлити задане Вами значення до більшої кратної величини. А зто значить що на x86 буде виділено регіон розміром 12 Кб, а на AIpha - 16 Кб.
Передача регіону фізичної пам'яті
Коли фізична пам'ять, передана зарезервувати регіону, більше не потрібна, її звільняють. Ця операція - повернення фізичної пам'яті (decommitting physical storage)
- виконується викликом функції VirtualFree
У старих операційних системах фізичної пам'яттю вважалася вся оперативна Я пам'ять (RAM), встановлена в комп'ютері. Інакше кажучи, якщо у Вашій машині було Я 16 Мб оперативної пам'яті, Ви могли завантажувати та запускати програми, использу-
ющие аж до 16 Мб пам'яті Сучасні операційні системи вміють імітувати пам'ять за рахунок дискового простору. При цьому на диску створюється сторінковий файл (paging file), який і містить віртуальну пам'ять, доступну всім процесам.
Зрозуміло, операції з віртуальною пам'яттю вимагають відповідної підтримки від самого процесора. Коли потік намагається звернутися до якогось байту, процесор повинен знати, де знаходиться цей байт - в оперативній пам'яті або на диску.
З точки зору прикладної програми, сторінковий файл просто збільшує обсяг пам'яті, якої вона може користуватися Якщо у Вашій машині встановлено 64 Мб оперативної пам'яті, а розмір сторінкового файлу на жорсткому диску становить 100 Мб, додаток вважає, що обсяг оперативної пам'яті дорівнює l64 Мб.
Звичайно, l64 Мб оперативної пам'яті у Вас насправді уст Операційна система в тісній координації з процесором скидає вміст частини оперативної пам'яті в сторінковий файл і в міру необхідності підвантажує його порції назад в пам'ять Якщо такого файлу немає, система просто вважає, що додаткам доступний менший обсяг пам'яті, - ось і все Але, оскільки сторінковий файл явним чином збільшує обсяг пам'яті, доступний додатків, його застосування дуже бажано. Це дозволяє програмам працювати з великими наборами даних.
системі - головний фактор, що визначає кількість фізичної пам'яті, доступне додатків Реальний обсяг оперативної пам'яті має набагато менше значення
У другому сценарії дані, до яких звертається потік, відсутні в оперативній пам'яті, але розміщені десь в сторінковому файлі. Спроба доступу до даних генерує помилку сторінки (page fault), і процесор таким чином Повід.про ляє операційну систему про цю спробу. Тоді операційна система начинае! шукати вільну сторінку в оперативній пам'яті; якщо такої немає, система змушена звільнити одну з зайнятих сторінок. Якщо зайнята сторінка не модифікувалася, вона просто звільняється; в іншому випадку вона спочатку копіюється з оператив-
ної пам'яті в сторінковий файл Після цього система переходить до сторінкового файлу, відшукує в ньому запитаний блок даних, завантажує цей блок на вільну сторінку
Чим частіше системі доводиться копіювати сторінки пам'яті в сторінковий файл і навпаки, тим болипой навантаження на жорсткий диск і тим повільніше працює операційна система (При цьому може вийти так, що операційна система буде грата весь свій час на підкачування сторінок замість виконання програм.) Тому, додавши комп'ютера оперативної пам'яті, Ви знизите частоту звернення до жорсткого диска і тим самим збільшите загальну продуктивність системи до речі, у багатьох випадках збільшення оперативної пам'яті дає більший виграш в виробляє льности, ніж зяменя старого процесора на новий
Фізична пам'ять в сторінковому файлі не зберігається
Однак система действуег не так, інакше на завантаження і підготовку програми до запуску йшло б занадто багато часу Насправді відбувається ось що. при запуску