У цій та наступній лекціях мова піде про найбільш поширеною в даний час схемою управління пам'яттю, відомої як віртуальна пам'ять. в рамках якої здійснюється складний зв'язок між апаратним та програмним забезпеченням. На початку будуть розглянуті апаратні аспекти віртуальної пам'яті. а потім питання, що виникають при її програмної реалізації.
Поняття віртуальної пам'яті
Розробникам програмного забезпечення часто доводиться вирішувати проблему розміщення в пам'яті великих програм, розмір яких перевищує обсяг доступної оперативної пам'яті. Один з варіантів вирішення даної проблеми - організація структур з перекриттям - розглянутий в попередній лекції. При цьому передбачалося активну участь програміста в процесі формування перекриваються частин програми. Розвиток архітектури комп'ютерів і розширення можливостей операційної системи по управлінню пам'яттю дозволило перекласти вирішення цього завдання на комп'ютер. Одним з головних досягнень стала поява віртуальної пам'яті (virtual memory). Вперше вона була реалізована в 1959 р на комп'ютері "Атлас", розробленому в Манчестерському університеті.
Таким чином, в комплектацію процесу в основній пам'яті необхідності немає. Важливим наслідком такої організації є те, що розмір пам'яті, займаної процесом, може бути більше, ніж розмір оперативної пам'яті. Принцип локальності забезпечує цій схемі потрібну ефективність.
Можливість виконання програми, що знаходиться в пам'яті лише частково, має ряд цілком очевидних переваг.
- Програма не обмежена об'ємом фізичної пам'яті. Спрощується розробка програм, оскільки можна задіяти великі віртуальні простори, не піклуючись про розмір використовуваної пам'яті.
- Оскільки з'являється можливість часткового приміщення програми (процесу) в пам'ять і гнучкого перерозподілу пам'яті між програмами, можна розмістити в пам'яті більше програм, що збільшує завантаження процесора і пропускну здатність системи.
- Обсяг введення-виведення для вивантаження частини програми на диск може бути менше, ніж у варіанті класичного свопінгу, в результаті кожна програма буде працювати швидше.
Наприклад, 16-розрядний комп'ютер PDP-11/70 з 64 Кбайт логічної пам'яті міг мати до 2 Мбайт оперативної пам'яті. Операційна система цього комп'ютера проте підтримувала віртуальну пам'ять. яка забезпечувала захист і перерозподіл основної пам'яті між призначеними для користувача процесами.
Хоча відомі і чисто програмні реалізації віртуальної пам'яті. цей напрямок одержав найбільш широкий розвиток після відповідної апаратної підтримки.
Будь-яка з трьох раніше розглянутих схем управління пам'яттю - сторінкової. сегментной і сегментно-сторінкової - придатна для організації віртуальної пам'яті. Найчастіше використовується cегментно- сторінкова модель. яка є синтезом сторінкової моделі і ідеї сегментації. Причому для тих архітектур, в яких сегменти не підтримуються апаратно, їх реалізація - завдання архітектурно-незалежного компонента менеджера пам'яті.
Сегментна організація в чистому вигляді зустрічається рідко.