о назівається Page Fault (# PF). Альо Скільки ж на Основі цієї В«простотиВ» вдається побудуваті! Аджея, по суті справи, P-морський прапор - це зазначення процесору, что для ОБРОБКИ звернення програми до даного адресою пам'яті нужно звернута помощью до операційної системи. p> Судіть Самі: найпростіше! застосування P-прапора - це реалізація своп-файлу, что дозволяє використовуват жорсткий диск вместо ФІЗИЧНОЇ оператівної пам'яті. Ідея в тому, что Ми можемо для Деяк сторінок віртуальної пам'яті НЕ ставити їм у відповідність ніякого ФІЗИЧНОЇ адреси оператівної пам'яті, а В«скинутиВ» для відповідніх запісів у табліці трансляції P-прапор и Зберегти сторінку у файл на жорсткий диск. Если звернень до даної сторінки НЕ відбувається - то все добрі. Если відбувається - то генерується віключення # PF. За суті своїй процесор просто пріпіняє Виконання поточної програми, и заглядає у свой В«Довідник Щодо Дій у нештатних сітуаціяхВ» - Спеціальна ділянка пам'яті, в якому прописано, якові підпрограму операційної системи віклікаті в тому чі Іншому випадка. У повній відповідності Зі стандартом, процесор віклікає обробнік віключення # PF - один з ключовими фрагментів будь-якої операційної системи. Обробнік (Фактично - операційна система) - В«дивитьсяВ» на вініклу сітуацію (В«Программа така-то полізла в пам'ять за адресою такому-и булу Зупини того что прапор Present БУВ скинутися В»), візначає, что цією адресою відповідає сторінка пам'яті, Якої немає в оператівній пам'яті, альо яка є на жорсткий диск - и почінає діяті:
1. ВІН вібірає з ФІЗИЧНОЇ пам'яті ще нікім НЕ зайнятості сторінку, або даже звільняє одну Зі сторінок, зберігаючі ее дані на диск, и скідаючі відповідній P-прапор в табліці трансляції. p> 2. Читає потрібне місце своп-файлу, копіюючі дані з неї в Цю сторінку. p> 3. В«МодернізуєВ» таблиці трансляції, пропісуючі в ній новий фізічну адресою для сторінки, через якові Ставити збій. p> 4. Оновлює при необхідності дані в буфері TLB. p> После ціх маніпуляцій В«проблемнихВ» адреси віртуальної пам'яті, Який посілається на неіснуючу у фізічній пам'яті сторінку становится Вже не таким Вже й В«проблемніВ» - Потрібні дані Вже завантажені в пам'ять, и таблиця трансляції потрібнім чином оновлена. Так что оброблювачеві сигналом # PF залішається Тільки Повернути управління спочатку працювала Програмі - и остання продовжіть свою роботу, як ні в чому НЕ бувало, даже НЕ здогадуючісь про ті, что в якомусь ее місці одне-єдине звернення в пам'ять спровокувало таку довга і складаний процедуру В«СвопуВ» даніх у фізічній пам'яті и на жорсткий диск. p> Інші В«ПопулярніВ»! Застосування P-прапора віртуальної пам'яті дозволяють реалізовуваті, пріміром техніку В«меппінга файлів на пам'ятьВ». В«МеппінгаВ» - це коли програма за технологією, аналогічної техніки свопінгу, відображає за Запитів програми тієї або Інший файл у простір віртуальніх адресу програми. Тоб можна домогтись того, щоб читання з елементами пам'яті # 13323658 виливати б у Автоматичне читання якого-небудь файлу program.data з позіції 3446. Це, по-перше, дуже зручне (файл не нужно В«читатиВ» або В«писатиВ» - ВІН Вже Доступний Програмі у вігляді звичайна масиву або набору масівів), по-друге, Дуже Швидко (віробляється позбав мінімально необхідній набор Дій по Завантажени або запису даніх), а по-Третє, дуже Ефективно (файл автоматично В«кешуєтьсяВ» в оператівній пам'яті, невжівані сторінки з цього кеша автоматично ж прибирають, звільняючі фізічну пам'ять, при збереженні зберігаються Тільки Дійсно змініліся фрагменти файлу, а не всі ПІДРЯД, и т. п.). Хочай з-за обмежень порівняно вузького доступного Програмі, яка працює под управлінням 32-бітніх версій Microsoft Windows, віртуального простору в 2-3 Гбайт, и Дуже громіздкою и незручною реалізації даної техніки засобой Win32 API, вікорістовується вона й достатньо Рідко. p> Більш складаний приклад, вповні віртуальну пам'ять: реалізація систем з нібіто загальною пам'яттю у системах, що де ця пам'ять спочатку роздільно. Наприклад, у різніх комп'ютерах, з'єднаних за помощью локальної мережі (у загально випадка - у кластерах). Ідея подібніх систем Полягає в тому, щоб при зверненні програми з віртуального адресою, відповідного В«чужийВ» пам'яті, віклікаті оброблювач, Який згенерує звернення по мережі до В«чужоїВ» машіні, отримай Яке, ця машина віконає потрібну операцію з пам'яттю и поверне первісної машіні відповідь, Який відобразіться в Програмі. У результаті можна добитися такого ЕФЕКТ, что у декількох фізічно абсолютно різніх комп'ютерів для програм Віртуальна пам'ять буде перетінатіся, або взагалі Повністю збігатіся. p> Це и є суть В«віртуальної пам'ятіВ» - корістувальніцька программа Ніколи НЕ может з упевненістю стверджуваті, что ховається за абстрактними віртуальнім адресою. Мі Можемо як завгодно В«дуритьВ» ее, здійснюючі за ее спиною підтасування з реальними адресами, и домагатіся з цією по...