Керування простором обміну під час чистого опитування попиту


12

Далі є сумніви, на які я зіткнувся, виконуючи домашнє завдання на ОС - однак, це здається більш концепційним, ніж простою проблемою кодування, тому IMHO я не думаю, що тег домашнього завдання підходить для цього.

У чистому режимі пейджингу попиту для декількох процесів, що працюють одночасно, з урахуванням фіксованого обсягу оперативної пам’яті та пам’яті Swap, що відбувається у наступних 2 випадках wrt простору заміни, коли

  1. У процесі виникає помилка сторінки, і в оперативній пам’яті немає вільних кадрів, отже потрібно вимагати, щоб одна з сторінок з фрагмента процесора ядра Kernel була виписана для заміни (для простоти, я не розглядаю копію -запишіть справу). Явно, де в просторі Swap був би записаний цей кадр, і які структури даних для цього потрібно оновити?

  2. Коли процес потребує розміщення сторінки на певній сторінці, де він виглядає в пам'яті Swap, і як би він знав, якщо ця конкретна сторінка взагалі присутня в Swap?

Як ви добре уявляєте, мені важко зрозуміти, яким чином керувати простором своп під час чистої схеми управління попитом та які структури даних були б важливими. Було б чудово, якби ви могли посилатися на будь-які посилання у своїй відповіді (я шукав у "Концепціях операційної системи - 8-е видання Silberschatz, я не зміг знайти чіткої відповіді на своє запитання).


3
Приємне жорстке питання CS!
Дейв Кларк

Відповіді:


8

Щоб відповісти на це питання, я відвідаю певну передумову. Чистого підключення до вимог неможливо виконати без апаратної підтримки. Усі сучасні комп'ютерні архітектури підтримують пейджинговий доступ, однак у багатьох є різні деталі реалізації.

Процесори x86 використовують те, що називається таблицею сторінок, для відстеження віртуальних адресних просторів та відображень сторінок, а також бітів про привілеї доступу та, що більш актуально, чи ця сторінка навіть присутня у фізичній пам'яті. Порушення несправностей помилок сторінки, які захоплені ОС.

Більш детальну інформацію про це дивіться у цій статті .

Для того, щоб відповісти на запитання про заміну сторінок, спершу слід відвідати питання про те, як операційна система відслідковує, які сторінки використовуються для якого процесу та як вони розподіляються. Існує багато різних структур даних, які можна використовувати для таких. Плоский бітовий масив, який позначає, виділяється чи ні кадр, є одним із способів. Зв'язані списки чи стеки - це ще одне. При чистому підшукуванні попиту виділені сторінки фактично не позначаються такими, що існують, коли вони виділяються. Це призводить до того, що жоден фізичний баран не відкладається під час процесу, поки він фактично не запише до нього. Після цього апаратне забезпечення видаляє помилку, в яку потрапляє ОС, і тоді ОС використовує алгоритм заміни, якщо немає доступних фізичних сторінок, щоб призначити вже виділену віртуальну сторінку.

Більш детальну інформацію про розподіл кадрів сторінки див. Тут . Там ви побачите загальний огляд деяких відповідних структур даних.

Як тільки реалізований відповідний алгоритм розподілу сторінок, слід вибрати інший для виділення місця на диску для заміни. Windows, як приклад, історично використовував плоский файл у файловій системі для заміни сторінки. Я б міг уявити, що для кожного вузла в структурі даних, що відстежує виділені сторінки, є присвоєний вказівник на зсув у файлі, що вказує положення сторінки на диску. Unix-подібні операційні системи традиційно використовують окремі розділи для заміни сторінки, що, можливо, швидше, оскільки немає файлової системи.

Можна також відокремити структури даних алгоритму заміщення від структур алгоритму розподілу, однак обидві пов'язані, тому це, мабуть, не часто робиться.

Я сподіваюся, що відповість на ваше запитання, незважаючи на відносну стислість, з якою я поставився до цього. Я виявив, що найкращий спосіб дізнатися про операційні системи - це зануритися в інколи неприємні архітектурні деталі, які можна знайти на таких сайтах, як wiki.osdev.org та www.osdever.net, які спеціально займаються хобі створення ОС та надають чудові навчальні посібники. на такі деталі.


Так, тепер я розумію, як деталі структур даних тощо можуть різко відрізнятися між ОС - +1 для посилань на osdev.org!
TCSGrad
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.