Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Комп'ютерна документація Hardline.RU

Наша взаимовыгодная связь https://banwar.org/

Сегментна і сторінкова віртуальна пам'ять

У системах з сегментною і сторінкової адресацією віртуальний адреса має складну структуру. Він розбитий на два бітових поля: селектор сторінки (сегмента) і зміщення в ньому. Відповідно, адресний простір виявляється що складається з дискретних блоків. Якщо всі ці блоки мають фіксовану довжину і утворюють разом безперервне простір, вони називаються сторінками (рис. 5.1).

Мал. 5.1. Сторінкова віртуальна пам'ять, а невживаних частин блоковиии

Якщо довжина кожного блоку може задаватися, відповідають "дірки" в віртуальному адресному просторі, такі блоки називаються сегментами (рис. 5.2). Як правило, один сегмент відповідає коду або даних одного модуля програми. Із сторінкою або сегментом можуть бути асоційовані права читання записи і виконання.

Із сторінкою або сегментом можуть бути асоційовані права читання записи і виконання

Мал. 5.2. Сегментна віртуальна пам'ять

Така адресація реалізується апаратно. Процесор має спеціальний пристрій, зване диспетчером пам'яті або, як його називали в старій російськомовній літературі, УУП (Пристрій Управління Пам'яттю, пор. MMU - Memory Management Unit). У деяких процесорах, наприклад в MC68020 або MC68030 або в деяких RISC-системах, цей пристрій реалізовано на окремому кристалі; в інших, таких як х86 або сучасні RISC-процесори, диспетчер пам'яті інтегрований в процесор.
У PDP-11 сегментів всього вісім, тому дескриптори кожного з них розміщуються в окремому регістрі (насправді, регістрів не вісім, а шістнадцять - вісім для призначеного для користувача адресного простору і вісім для системного). На 32-розрядних машинах кількість сегментів вимірюється тисячами, а сторінок - іноді і мільйонами, тому доводиться вдаватися до більш складною схемою.
Диспетчер пам'яті містить регістр - покажчик на таблицю трансляції. Ця таблиця розміщується десь в ОЗУ. Її елементами є дескриптори кожної сторінки / сегмента. Такий дескриптор містить права доступу до сторінки, ознака присутності цієї сторінки в пам'яті і фізичну адресу сторінки / сегмента. Для сегментів в дескрипторі також зберігається його довжина.
Більшість реальних програм використовують далеко не весь адресний простір процесора, відповідно таблиця трансляції не обов'язково тримає всі допустимі дескриптори. Тому практично всі диспетчери пам'яті мають ще один регістр - обмежувач довжини таблиці трансляііі. Сторінки або сегменти, селектор яких перевершує обмежувач, що не входять у віртуальний адресний простір процесу. Як правило, диспетчер пам'яті має також кеш (cache) дескрипторів - швидку пам'ять з асоціативним доступом. У цій пам'яті зберігаються дескриптори часто використовуваних сторінок. Алгоритм доступу до пам'яті по віртуальному адресою page: off set складається з наступних кроків (рис. 5.3).

Мал. 5.3. Блок-схема алгоритму диспетчера пам'яті

  • Перевірити, чи існує сторінка page взагалі. Якщо сторінки не існує, виникає особлива ситуація помилки сегментації (segmentation violation) (поняття особливої ​​ситуації (виключення) докладніше розбирається в разд.6 ).
  • Спробувати знайти дескриптор сторінки в кеші.
  • Якщо його немає в кеші, завантажити дескриптор з таблиці в пам'яті.
  • Перевірити, чи має процес відповідне право доступу до страпіце Інакше також виникає помилка сегментації.
  • Перевірити, чи знаходиться сторінка в оперативній пам'яті. Якщо її там пет, виникає особлива ситуація відсутності сторінки або сторінкові відмова (page fault). Як правило, реакція на неї полягає в тому, що викликається спеціальна програма-обробник (trap - пастка), яка завантажує необхідну сторінку з диска. В багатопоточних системах під час такого завантаження може виконуватися інший процес.
  • Якщо сторінка є в пам'яті, взяти з її дескриптора фізичну адресу phys_addr.
  • Якщо ми маємо справу з сегментної адресацією, порівняти зміщення в сегменті з довжиною цього сегмента. Якщо зсув виявився більше, також виникає помилка сегментації.
  • Провести доступ до пам'яті за адресою phys_addr [offset].

Видно, що така схема адресації досить складна. Однак в сучасних процесорах все це реалізовано апаратно і, завдяки кешу дескрипторів і іншим хитрощів, швидкість доступу до пам'яті виходить майже такий же, як і при прямій адресації. Крім того, ця схема має неоціненні переваги при реалізації багатозадачних ОС.
По-перше, ми можемо пов'язати з кожним завданням свою таблицю трансляції, а значить і своє ВАП. Завдяки цьому навіть в багатозадачних ОС ми можемо користуватися абсолютним завантажувачем. Крім того, програми виявляються ізольованими одна від одної, і ми можемо забезпечити їх безпеку.
По-друге, ми можемо скидати на диск рідко використовуються області віртуальної пам'яті програм - не всю програму цілком, а тільки її частину. На відміну від оверлейних завантажувачів, програма при цьому взагалі не зобов'язана знати, яка її частина буде скинута.
Інша справа, що в системах реального часу програмою може бути потрібно, щоб певні її частини ніколи не скидалися на диск. Система реального часу зобов'язана гарантувати час реакції, і це гарантований час зазвичай набагато менше часу доступу до диска. Код, що обробляє подію, і використовувані при цьому дані повинні бути завжди в пам'яті.
По-третє, програма не повинна займати безперервну область фізичної пам'яті. При цьому вона цілком може бачити безперервне ВАП. Це різко спрощує боротьбу з фрагментацією пам'яті, а в системах з сторінкової адресацією проблема зовнішньої фрагментації фізичної пам'яті взагалі знімається.
У більшості систем зі сторінковим диспетчером вільна пам'ять відстежується за допомогою бітової маски фізичних сторінок. У цій масці вободной сторінці відповідає 1, а зайнятої - 0. Якщо комусь потрібна межа, система просто шукає в цій масці встановлений біт. В результаті віртуальний простір програми може виявитися відображено на Фізичні адреси дуже химерним чином, але це нікого не хвилює - швидкість доступу до всіх сторінок однакова (рис. 5.4).

Мал. 5.4. Розподіл адресного простору з фізичної пам'яті

По-четверте, система може забезпечувати не тільки захист програм один від одного, але до певної міри і захист програми від самої себе - наприклад, від помилкового запису даних на місце коду або спроби виконати дані.
По-п'яте, різні завдання можуть використовувати загальні області пам'яті для взаємодії або, скажімо, просто для того, щоб працювати з однією копією бібліотеки підпрограм.
Перераховані переваги настільки серйозні, що вважається неможливим реалізувати многозадачную систему загального призначення, таку як UNIX або System / 390 на машинах без диспетчера пам'яті.
Для систем реального часу, втім, віртуальна пам'ять виявляється скоріше шкідлива, ніж марна: наявність диспетчера пам'яті збільшує обсяг контексту процесу (це поняття докладніше обговорюється в разд. витісняє багатозадачність ), Скористатися же головною перевагою - можливістю сторінкового обміну - завдання реального часу в повній мірі не можуть. Тому такі системи, навіть працюють на процесорах з вбудованим диспетчером пам'яті, часто цей диспетчер не використовують. Навіть якщо віртуальна пам'ять доступна, система РВ (реального часу) зобов'язана надавати кошти блокування коду і даних (не обов'язково всіх) призначеного для користувача процес са у фізичній пам'яті.
Окремою проблемою при розробці системи з сторінкової або сегментної адресацією є вибір розміру сторінки або максимального розміру сегмента. Цей розмір визначається шириною відповідного бітового поля адреси і тому повинен бути ступенем двійки.
З одного боку, сторінки не повинні бути занадто великими, так як це може призвести до внутрішньої фрагментації і перекачуванні занадто великих обсягів даних при скиданні сторінок на диск. З іншого боку, сторінки не повинні бути занадто маленькими, так як це призведе до надмірного збільшення таблиць трансляції, необхідного обсягу кешу дескрипторів і т. Д.
У реальних системах розмір сторінки змінюється від 512 байт у машин сімейства VAX до декількох кілобайт. Наприклад, х86 має сторінку розміром 4 Кбайт. Деякі диспетчери пам'яті, наприклад у МС6801 / 2/30, мають змінний розмір сторінки - система при запуску програмує диспетчер і встановлює, крім іншого, цей розмір, і далі працює зі сторінками обраного розміру. У процесора i860 розмір сторінки перемикається між 4 Кбайтами і 4 Мбайтами.
З сегментними диспетчерами пам'яті ситуація складніша. З одного боку, хочеться, щоб один програмний модуль збожеволів в сегмент, тому сегменти зазвичай роблять великими, від 32 Кбайт і більше. З іншого боку, хочеться, щоб в адресному просторі можна було зробити багато сегментів. Крім того, може виникнути проблема: як бути з великими нероздільними об'єктами, наприклад хеш-таблицями компіляторів, під які часто виділяються сотні кілобайт.
В результаті ряд машин надає двоступеневу віртуальну пам'ять - сегментну адресацію, в якій кожен сегмент, в свою чергу, розбитий на сторінки. Це дає ряд дрібних переваг, наприклад, дозволяє давати права доступу сегментам, а підкачування з диска здійснювати посторінково. Таким чином, організована віртуальна пам'ять в IBM System 370 і ряді інших великих комп'ютерів, а також в х86. Правда, в останньому віртуальна пам'ять використовується дещо дивним чином.

Адресний простір х86
х86 може працювати з двома типами адрес:
32 розрядною адресою, в якому 16 біт задають зміщення в сегменті, 14 біт номер сегмента і 2 біти використовуються для різних загадкових цілей. При цьому розмір сегмента не більше 64 Кбайт, а загальний обсяг віртуальної пам'яті не перевищує 1 Гб.
48- розрядною адресою, в якому зміщення в сегменті займає 32 біта. У цьому випадку розмір сегмента може бути до 4 Гбайт, а загальний обсяг віртуальної пам'яті до 244 байт. В обох випадках сегмент може бути розбитий на сторінки по 4 Кбайт.
При цьому сегментна частина адреси і його зміщення лежать в різних регістрах, і з ними можна працювати окремо. У реальному режимі можливість такої роботи породжує весь "зоопарк моделей пам'яті", з якими знайомі ті, хто писав на С для MS DOS. У захищеному режимі х86 більшість систем програмування виділяють програмі один сегмент з 32-розрядних зміщенням, і програма живе там так, ніби це звичайна машина з 32-розрядних лінійним адресним простором. Так чинять усі відомі авторам реалізації Unix для х86, ряд так званих розширювачів ДОС (DOS extenders), Oberon / 386, Novell Netware, реалізації Win32 і т. Д.

Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: