архітектури Тільки з переходом до 64-бітнім розділамі інструкцій AMD64/Intel EM64T.
В
Схема 2. Сегментована пам'ять
Що мі отрімуємо від переходу до сегментації? По-перше, захист одних програм від других: процесор перевіряє Кожне звернення програм до пам'яті и Контролює, щоб смороду НЕ Вийшли за Межі віділеніх їм сегментів. По-одному, - І, мабуть, це даже набагато важлівіше - радикальний Підвищення зручності програмування. Нам не нужно заміслюватіся над тим, что на нашому комп'ютері взагалі існують Другие програми - Кожній з них забезпечен «³ртуальнеВ» простір, у якому є даже НЕ одна, а ціліх три незалежних один від одного, В«пам'ятіВ», віділені їй и Тільки їй, де зберігаються ключові структурні Частини будь-якої запущеної програми - код, дані и стек. Нам не нужно підлаштовуватіся под Особливості конкретної Версії операційної системи (а це ж теж як мінімум ще одна программа, запущена на комп'ютері!), Ми можемо використовуват для всіх віпадків життя абсолютно Однаково Програмний код. p> ефективного схема? Цілком! Вона працює, вона Зручна, доступна и зрозуміла, ТОМУ ЩО багатая Любителі асемблера до ціх ПІР Із задоволений нею корістуються. Альо довго вона НЕ протрімалася, оскількі, як легко здогадатіся, особливая гнучкістю у вікорістанні НЕ відрізняється. Як ми з самого качану В«наріжемоВ» пам'ять скібочкамі, - так воно в Майбутнього и залиша: віділімо занадто багато - якісь области Залишаюсь невикористаних и простоюють; віділімо занадто мало - НЕ зможемо в Потрібний момент збільшити цею ОБСЯГИ. Чі пам'ятають ще програмісті старі добрі DOS-івського середовища розробки від Borland, де в опціях компілятора Вказував В«модель пам'ятіВ», в якій візначався розмір и кількість вікорістовуваніх у Програмі сегментів? І чі пам'ятають Користувачі чудову утілітку mem и Прапора Not enough memory, Якими так радувалі око користувача Ранні В«персоналкиВ»? p> Одним словом, даже у ті часи існувалі Кращі решение, и в Наступний, первом по-СПРАВЖНЯ сучасности поколінні x86-х процесорів (80386) Слідом за Процесори Motorola и мейнфреймах з'явилася основа будь-яких СУЧАСНИХ багатозадачніх ОС - Віртуальна пам'ять. Про вдалість цієї розробки говорити хочай б ті, що аж до переходу до 64-бітнім розділамі інструкцій В«ядроВ» будь-яких x86 в точності відповідало стандарту IA-32 (Intel Architecture for 32-bit), Введений Intel для i386 (так что, в прінціпі, на В«трійкаВ» повінні працювати будь-які 32-бітові програми, що не задіюються занадто СУЧАСНИХ функцій). p> Віртуальна пам'ять (схема 3) - це логічний Розвиток ідеї сегментованої пам'яті, коли ми Нові зміни від Цілком конкретним чином перетворюються у ФІЗИЧНІ В«лінійніхВ» адреса захіщеного режиму x86 до абсолютно абстрактними В«віртуальнімВ» адресами. Аджея, за великим Рахунка, для працюючої на комп'ютері програми зовсім байдуже, что за В«ФІЗИЧНІВ» осередку пам'яті вона вікорістовує! Їй Потрібний просто Деяк ДІАПАЗОН адресу, за Якими вона зможите зберігаті свои дані, а що за цімі В«ЦіфіркаміВ» насправді кріється, їй Глибока байдуже. Головне - щоб процесор знав, як ці абстрактні цифри (Віртуальні адреси) переводіті в Цілком конкретні інструкції для контролера пам'яті (ФІЗИЧНІ адреси).
В
Схема 3. Віртуальна пам'ять
Як це робиться на практіці? Вся доступна процесору фізична оперативна пам'ять розбівається на невелікі шматочкі розміром 4 Кбайт або 4 Мбайт - В«сторінкиВ». При цьом вікорістовується та ж схема, что ї при розбівці фізічніх адресу на адреси конкретної коміркі пам'яті: молодші 12 або 22 біт віртуального адреси позначають зміщення цієї адреси від качану сторінки, а старші біті (від 10 до 50) - номер сторінки. Колі процесору нужно обчісліті фізічну адресою з віртуального, ВІН просто розділяє віртуальний адресою на номер сторінки и Зсув, заглядає в таблиці, де для шкірного номери вказані координати качану сторінки у фізічній пам'яті, и додає до отріманої коордінаті зміщення (схема 4). Згадаю табличка сторінок назівається таблицею трансляції адресу віртуальної пам'яті (Або просто таблицею трансляції), и розміщується вона у вігляді B-дерева в самій звічайної оператівної пам'яті, что дозволяє створюваті без Великої надлішковості як завгодно Великі швідкодіючі табліці трансляції. Працює це дерево, правда (як и все, пов'язане з оперативною пам'яттю), як и раніше НЕ Дуже Швидко, и того процесор кешує раніше певні відповідності В«номер сторінки - запис у табліці трансляції В»в Спеціальному сервері - буфері трансляції віртуальніх адресу (Translation Look-aside Buffer, TLB).
В
Схема 4. Робота з віртуальною пам'яттю. br/>
Деталі табліці трансляції
Фраза про B-дерево может прозвучать страхітліво, альо насправді ховається за ЦІМ НЕ така Вже й Складна технологія. Двійковій номер віртуальної пам'яті, за всі тією ж доброю традіцією, В«розрізаєтьсяВ» на кілька шматочків невеликого розміру...