ЗНАЕТЕ ЛИ ВЫ?

Дисципліни розподілу ресурсів: одно чергові (FIFO, LIFO, RR) та і багато чергові (безпріоритетні та пріоритетні).



беспріорітетні

• лінійні
• • в порядку надходження (FIFO)
• • в інверсному порядку (LIFO)
• • випадковий вибір (RAND)
• циклічні
• • циклічний алгоритм (RR)
• • багаторівневий циклічний алгоритм (FB)
• • змішаний алгоритм
пріоритетні
• з фіксованим пріоритетом
• • ДО з відносним пріоритетом (ОП)
• • з абсолютним пріоритетом (АП)
• • адаптивне обслуговування
• з динамічним пріоритетом
• • в залежності від tочік.
• • в залежності від tобслуг.

31. Концепція віртуалізації. Віртуалізація ресурсів, приклади. Поняття віртуальної машини.Віртуалізація в обчисленнях — процес представлення набору обчислювальних ресурсів, або їх логічного об'єднання, який дає які-небудь переваги перед оригінальною конфігурацією. Це новий віртуальний погляд на ресурси, не обмежених реалізацією, географічним положенням або фізичною конфігурацією складових частин. Зазвичай віртуалізовані ресурси включають обчислювальні потужності і сховище даних.Прикладом віртуалізації є симетрична мультипроцесорна комп'ютерна архітектура, яка використовує більш за один процесор. Концепція віртуалізації. Новий напрям віртуалізації, який дає загальну цілісну картину всієї інфраструктури мережі за допомогою техніки агрегації. Віртуальна машина - модель обчислювальної машини, створеної шляхом віртуалізації обчислювальних ресурсів: процесора, оперативної пам'яті, пристроїв зберігання та вводу і виводу інформації. Віртуальна машина — це оточення, яке представляється для «гостьової» операційної системи, як апаратне. Проте насправді це програмне оточення, яке симуліруєтся програмним забезпеченням хостової системи. Ця симуляція має бути досить надійною, щоб драйвери гостьової системи могли стабільно працювати. При використанні паравіртуалізациі, віртуальна машина не симулює апаратне забезпечення, а, замість цього, пропонує використовувати спеціальне API. Віртуалізація ресурсів . 1)Розділення ресурсів (partitioning) — це розділення єдиного, зазвичай чималого для цього, ресурсу (наприклад дисковий простір або пропускний канал мережі) на деяку кількість менших, легше використовуваних ресурсів того ж типа. Наприклад, до реалізації розділення ресурсів можна віднести Проект Crossbow, що дозволяє створювати декілька віртуальних мережевих інтерфейсів на основі одного фізичного. 2) Агрегація, розподіл або додавання безлічі ресурсів у великі ресурси або об'єднання ресурсів. Наприклад, симетричні мультипроцесорні системи об'єднують безліч процесорів; RAID і дискові менеджери об'єднують безліч дисків в один великий логічний диск; RAID і мережеве устаткування використовує безліч каналів, об'єднаних так, щоб вони представлялися, як єдиний широкосмуговий канал. На мета-рівні комп'ютерні кластери роблять все вищеперелічене. Інколи сюди ж відносять мережеві файлові системи абстраговані від сховищ даних на яких вони побудовані, наприклад, Vmware VMFS, Solaris ZFS, Netapp WAFL.

32. Функції менеджера віртуальних машин. Менеджер віртуальних машин (VMM) - це справжня операційна система, лежача в основі Windows . Вона створює і підтримує робоче середовище для управління віртуальними машинами. Вона також надає безліч важливих сервісів іншим VXD. Три головні сервіси наступні:

-управління пам'яттю;

-обробка переривань;

-перемикання гілок.

Управління гілками VMM використовує два компоненти для втілення попереджуючої багатозадачності між гілками і віртуальними машинами.

• основний планувальник

• роздільник машинного часу або вторинний планувальник

Завдання основного планувальника - вибір гілки з найбільшим пріоритетом, яку потрібно виконати. Цей вибір відбувається, поки VMM обслуговує переривання (таке як переривання таймера). Результат визначає яка гілка/віртуальна машина отримає контроль, коли VMM припинить обробку переривання. Основний планувальник працює за правилом "все або нічого". Або гілка буде запущена, або ні. Вибирається лише одна гілка. VMM і інші VXD можуть підвищувати/понижати пріоритет виконання гілок, VMM підвищить пріоритет обробника переривання, щоб у нього був шанс виконати своє завдання в максимально короткий термін. Вторинний планувальник використовує сервіси основного планувальника, щоб резервувати час CPU для гілок, які розділяють високий пріоритет виконання, шляхом виділення кожній гілці кванта машинного часу (time-slice). Коли гілка виконується, поки її time-slice не витік, вторинний планувальник підвищує пріоритет виконання наступної гілки, щоб вона була вибрана основним планувальником для запуску. Ви можете отримати більше інформації по цій темі з "Системного програмування для Windows 95" Вальтера Вони (Walter Oney''s Systems Programming for Windows 95) і документація по Windows 95 DDK. [C] Iczelion, пер. Aquila.

33. Задачі. Різновидності задач: процеси та потоки (нитки). Задача - програма в процесі виконання (в термінології операційних систем UNIX використовують термін "процес"). Послідовна зміна предметів і явищ, що відбувається закономірним порядком.Сукупність ряду послідовних дій, спрямованих на досягнення певного результату. Кожна задача фактично виконується у власному адресовому просторі, тобто таким чином, якби вона виконувалась в одно-задачній операційній системі, завдяки чому значно зменьшується вплив окремих задач однією на одну та на ядро ситеми, а завдяки цьому - і надійність системи.Кожна задача отримує стільки віртуальної оперативної пам'яті, скільки потрібно, а не стільки, скільки є наявної фізичної оперативної пам'яті. Процеси і потоки. Додаток, розроблений для Windows, складається з одного або більше процесів.

Процес– це набір віртуального простору пам'яті, кодів, даних і системних ресурсів. Процесор виконує нитки, не процеси, тобто будь-яке 32-бітове застосування має як мінімум один процес, а процес завжди має як мінімум одну нитку виконання, відому як основну нитку. Потік (Thread, нитка) - це об'єкт операційної системи, ув'язнений в процес і що реалізовує яке-небудь завдання. Кожен додаток (процес) Win32 має принаймні один потік, який називається головним (основним, стандартним). Кожен процес може містити декілька потоків. (Примітка. Вживання потоків можливе лише для 32-розрядних застосувань. У 16-розрядній ОС, додатки, що використовують потоки, працювати не будуть). Таким чином, потік - це основна одиниця, якою операційна система виділяє процесорний час, і мінімальний «квант» кода, який може бути запланований для виконання. Крім того, це частина процесу, що виконується в кожен момент часу. Потік працює в адресному просторі процесу і використовує ресурси, виділені процесу. Будь-який процес містить хоч би один потік. Кожен процес 16-розрядного windows-застосування або програми MS-DOS має лише один потік, тоді як процеси 32-розрядних windows-застосувань можуть включати їх декілька.

34. Черга задач. Пріоритети задач: статичні і динамічні. Черги. Ці механізми можуть забезпечувати передачу або використання спільних даних без переміщення даних, а з передачею елемента черги, який містить вказівник даних і об’єм масиву даних. Черга використовується разом з механізмом загальної пам’яті. Елемент черги може бути зчитаний із знищенням або без знищення цього елемента. Зчитування елемента черги може здійснюватися у відповідності з механізмом черги або стека. Зчитування елементів черги здійснює тільки створюючий черги процес. Створюючий процес може виконувати слідуючі дії над чергою: 1. Створення черги; 2. Зчитування черги; 3. Перегляд черги; 4. Закриття черги. Записуючий процес виконує слідуючи дії: 1. Відкрити чергу; 2. Записати в чергу; 3. Закрити чергу;

Кожна задача, поставлена на виконання за допомогою системи черги, поміщується в чергу. Після того, як задача є виконаною та звільнені ресурси, які вона використовувала під час обчислень, може виконуватися наступна поставлена в чергу задача. Система черги здійснює моніторинг кожного вузла кластера та задач, що на них виконуються. Якщо кількість ресурсів є достатньою для виконання наступної задачі певної черги, система черги запускає цю задачу на відповідних доступних вузлах. У чергу на виконання можна поставити багато задач, які будуть запущені по мірі звільнення ресурсів без будь-якого втручання користувача. Отже, головною задачею користувача є постановка задачі на виконання з вказівкою необхідних завданню ресурсів, а задачею системи черги запуск цього завдання та контроль за його виконанням.Існує декілька загальнодоступних систем черг, що розповсюджуються безкоштовно. PBS - одна з найбільш поширених та популярних систем, забезпечує більшість вимог, що ставляться до систем такого типу, крім того є найбільш зручною для використання.В залежності від вибору черги, задача може мати різний пріоритет. Однак різні черги мають різні обмеження на типи та кількість ресурсів, що може використовувати задача, поставлена в цю чергу.Пріоритет - це число, що характеризує міру привілейованої процесу при використанні ресурсів обчислювальної машини, зокрема, процесорного часу: чим вище пріоритет, тим вищий привілей. Пріоритет може виражатися цілими або дробами, позитивним або негативним значенням. Чим вищий привілей процесу, тим менше часу він проводитиме в чергах.Задачі, що формують пакет, можуть мати різні пріоритети — статичні та динамічні. Перші надаються задачам заздалегідь, другі визначаються керуючими програмами в ході розв'язування задач. Диспетчеризація з динамічними пріоритетами вимагає додаткових витрат на обчислення значень пріоритетів задач, що виконуються, тому в багатьох ОС реального часу використовуються методи диспетчеризації на основі статичних (постійних) пріоритетів. Хоча треба помітити, що динамічні пріоритети дозволяють реалізувати гарантії обслуговування задач.

35. Основні алгоритми планування задач.Відповідно до алгоритмів, заснованих на квантуванні, зміна активного процесу відбувається, в наступних випадках: 1) процес закінчився і покинув систему; 2)сталася помилка; 3) процес перейшов в стан очікування; 4) вичерпаний квант процесорного часу, відведений даному процесу. Процес, який вичерпав свій квант, переводиться в стан готовність і чекає, коли йому буде наданий новий квант процесорного часу, а на виконання відповідно до певного правила вибирається новий процес з черги готових. Таким чином, жоден процес не займає процесор надовго, тому квантування широко використовується в системах розділення часу. Граф станів процесу, змальований на малюнку 5.1, відповідає алгоритму планування, заснованому на квантуванні. Процеси, які не повністю використовували виділений ним квант (наприклад, із-за відходу на виконання операцій введення-виводу), можуть отримати або не отримати компенсацію у вигляді привілеїв при подальшому обслуговуванні. По різному може бути організована черга готових процесів: беспріоритетні; лінійні; в порядку вступу, "перший прийшов - перший обслужився" FIFO (First In, First Out); у інверсному порядку, "останній прийшов - перший обслужився" LIFO (Last In, First Out); випадковий вибір, обслуговування в довільному порядку RAND; циклічні; циклічний алгоритм RR (Robin Round); багаторівневий циклічний алгоритм FB (Feed Back (зворотний зв'язок); змішаний алгоритм; пріоритетні; з фіксованим пріоритетом ДО; з відносним пріоритетом (ОП); з абсолютним пріоритетом (АП); адаптивне обслуговування; з динамічним пріоритетом;залежно від часу чекання; залежно від часу обслуговування. Середній час перебування процесу в стані чекання (t_ож.) залежить від наступного: - швидкодії ЦП; - дисципліни обслуговування; - трудомісткості завдання; - інтенсивності вирішуваних завдань. Середній час чекання це є: W = f (B, ДО, Tr, IZ, M), де:B - швидкодія; ДО - дисципліна обслуговування; Tr - трудомісткість; IZ - інтенсивність завдань; M - число завдань (робіт). Розрахунок середнього часу перебування завдання в системі, при алгоритмі обслуговування FIFO для ДО(дисципліна обслуговування) з відносним пріоритет (ОП) можна представити в наступному вигляді:

де: WSM - середній час перебування завдання в системі; М-код - число завдань; IZ - інтенсивність завдань; ZZ - завантаження процесора; SDZ - середній час обслуговування; До - яке-небудь завдання; ZZP - коефіцієнт використання процесора.

На рисунке 5.3 представлена схема алгоритма обслуживания ДО (абсолютный приоритет - АП) При этом, приоритетная задание может прервать выполнение менее приоритетной. Приоритет складывается из статических и динамически составляющих, где DZ – трудоемкость обслуживания для приоритетных дисциплин.


Рис.5.4. Диаграмма качества обслуживания для приоритеных заданий

На Рис. 5.4 представлена диаграмма качества обслуживания приоритетнх. заданий.

Cмешанный режим -когда различным группам работ присваиваются различные виды приоритетов. Используется этот метод тогда, когда ни одна из частных ДО не обеспечивает выполнения заданных ограничений.

ZZ(1)*WSM(1)+…..+ ZZ(K)*WSM(K)=const

WSM - среднее время пребывания i работы в системе;

ZZ - загрузка ЦП(%);

БП - безприоритетные ДО.
При изменении ДО время ожидания работ одних типов сокращается за счет увеличения tожид. других типов.

На рисунке 5.5 представлена схема обслуживания заявок в смешанном режиме

Адаптивное ДО - в этом случае решения об абсолютном или относительном приоритетах принимаются в зависимости от обстановки. Для решения этого вопроса взвешивается - "что стоит" прерывание.
Пусть Сi - "стоимость" ожидания задания для i-ой работы (т.е. высокоприоритетная), Сj - "стоимость" ожидания задания для j-ой работы (низкоприоритетной), т.е. j>i (отсчет от меньшего к большему).
С - коэффициент, штраф за задержку задания на единицу времени (целое число);

Тj - время обслуживания j-ой задания;

Тi - время обслуживания i-ой задания, тогда, если ТjСi <Тi Сj , то работа (задание) не прерывается.

Если будет прервана, то будет "стоить" Тi Сj,

Витісняючі і невитісняючі алгоритми планерування. Існує два основні типи процедур планерування процесів - що витісняють (preemptive) і не витісняють (non-preemptive).

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

Preemptive multitasking - витісняюча багатозадачність - це такий спосіб, при якому рішення про перемикання процесора з виконання одного процесу на виконання іншого процесу приймається планувальником операційної системи, а не найактивнішим завданням.

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

36. Функції ОС по управлінню пам'яттю.Головне завдання комп'ютерної системи - виконувати програми. Програми, протягом виконання, разом з даними, до яких вони мають доступ повинні знаходитися в головній (основною, оперативною) пам'яті. Таким чином, пам'ять (storage, memory) є найважливішим ресурсом, що вимагає ретельного управління. Частина ОС, яка управляє пам'яттю, називається менеджером пам'яті. В процесі еволюції в менеджерах пам'яті сучасних ОС було реалізовано декілька основоположних ідей.

По-перше, ідея сегментації. Мабуть, спочатку сегменти пам'яті з'явилися у зв'язку з необхідністю усуспільнення процесами фрагментів програмної коди без чого кожен процес повинен був зберігати в своєму адресному просторі дублюючу інформацію. Ці окремі ділянки пам'яті, що зберігають інформацію, яку система відображує в пам'ять декількох процесів, отримали назву сегментів. Пам'ять стала двовимірною. Адреса складається з двох компонентів: номер сегменту, зсув усередині сегменту. Далі виявилося зручним розміщувати в різних сегментах дані різних типів. Також можна контролювати характер роботи з конкретним сегментом, приписавши йому атрибути, наприклад, права доступу або типи операцій, дозволені з даними, що зберігаються в сегменті. Більшість сучасних ОС підтримують сегментну організацію пам'яті . У деякій архітектурі (Intel, наприклад) сегментація підтримується устаткуванням.

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

І, нарешті, ідея локальності. Властивість локальності властиво природі. Просторова локальність - сусідні об'єкти характеризуються схожими властивостями (якщо в даній місцевості гарна погода, то найімовірніше, що в близькій околиці також гарна погода). Властивість локальності (швидше емпіричне) властиво і роботі ОС. Фактично властивість локальності з'ясовна, якщо врахувати, як пишуться програми і організовані дані, тобто зазвичай протягом якогось відрізання часу обмежений фрагмент коди працює з обмеженим набором даних. Розуміння даної особливості дозволяє організувати ієрархію пам'яті, використовуючи швидку дорогу пам'ять для зберігання мінімуму необхідної інформації, розміщуючи частину даних, що залишилася, на пристроях з повільнішим доступом і підкачуючи їх в швидку пам'ять в міру необхідності. Типовий приклад ієрархії: регістри процесора, кеш процесора, головна пам'ять, зовнішня пам'ять на магнітних дисках (вторинна пам'ять).

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

Існує декілька схем управління пам'яттю. Вибір тієї або іншої схеми залежить від багатьох чинників. Розглядаючи ту або іншу схему поважно враховувати:

Механізм управління пам'яттю або ідеологію побудови системи управління.

Архітектурні особливості використовуваної системи.

Структури даних в ОС, використовувані для управління пам'яттю.

Алгоритми, використовувані для управління пам'яттю.

Спочатку будуть розглянуті прості схеми, потім, описана домінуюча на сьогодні схема віртуальної пам'яті, її апаратна і програмна підтримка.

37. Схеми управління пам'яттю. Існує декілька схем управління пам'яттю. Вибір тієї або іншої схеми залежить від багатьох чинників. Розглядаючи ту або іншу схему поважно враховувати:

- механізм управління пам'яттю або ідеологію побудови системи управління;

- архітектурні особливості використовуваної системи;

- структури даних в ОС, використовувані для управління пам'яттю;

- алгоритми, використовувані для управління пам'яттю.

Спочатку будуть розглянуті прості схеми, потім, описана домінуюча на сьогодні схема віртуальної пам'яті, її апаратна і програмна підтримка.

Схеми управління пам'яттю. ОС почали своє існування з вживання дуже простих методів управління пам'яттю.Техніка, що застосовувалася, поширювалася від статичного розподілу пам'яті (кожен процес користувача повинен повністю поміститися в основній пам'яті, і система приймає до обслуговування додаткові призначені для користувача процеси до тих пір, поки всі вони одночасно поміщаються в основній пам'яті), з проміжним рішенням у вигляді "простого свопінгу" (система як і раніше розташовує кожен процес в основній пам'яті цілком, але інколи на підставі деякого критерію цілком скидає образ деякого процесу з основної пам'яті в зовнішню пам'ять і замінює його в основній пам'яті образом деякого дру-гого процесу). Схеми такого роду мають не лише історичну цінність. В даний час вони застосовуються в учбових і науково-дослідних модельних ОС, а також в ОС для вбудованих (embedded) комп'ютерів.

38. Мультипрограмування з фіксованими розділами.Схема з фіксованими розділами. Найпростішим способом управління оперативною пам'яттю є її попереднє (зазвичай на етапі генерації або у момент завантаження системи) розбиття на декілька розділів фіксованої величини. У міру прибуття процес поміщається в той або інший розділ. Як правило, відбувається умовне розбиття фізичного адресного простору. Скріплення логічних адрес процесу і фізичних відбувається на етапі його завантаження в конкретний розділ. Кожен розділ може мати свою чергу або може існувати глобальна черга для всіх розділів.

 

Мал. 7.2 Схема з фіксованими розділами: (a) із загальною чергою процесів, (b) з окремими чергами процесів. Ця схема була реалізована в IBM Os/360 (MFT) і в DEC Rsx-11. Підсистема управління пам'яттю порівнює розмір програми, що поступила на виконання, вибирає відповідний розділ, здійсн У який розділ поміщати програму? Поширено три стратегії:

Стратегія першого відповідного (First fit).

Завдання поміщається в перший відповідний за розміром розділ.

Стратегія найбільш відповідного (Best fit).

Завдання поміщається в той розділ, де йому найтісніше.

Стратегія найменш відповідного (Worst fit). При приміщенні в найбільший розділ в нім залишається досить місця для можливого розміщення ще одного процесу.ює завантаження програми і налаштування адрес.

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

39. Мультипрограмування із змінними розділами.В цьому випадку спочатку вся пам'ять вільна і не розділена заздалегідь на розділи. Завданню, що знов поступає, виділяється необхідна пам'ять. Після вивантаження процесу пам'ять тимчасово звільняється. Після закінчення деякого часу пам'яттю є набір зайнятих і вільних ділянок. Суміжні вільні ділянки можуть бути об'єднані в один. Типовий цикл роботи менеджера пам'яті полягає в аналізі запиту на виділення вільної ділянки (розділу), вибірці його серед тих, що є у відповідність з однією із стратегій (first fit, best fit, worst fit), завантаженні процесу у вибраний розділ і подальшому внесенні змін в таблиці вільних і зайнятих областей. Аналогічне коректування необхідне і після завершення процесу. Скріплення адрес може бути здійснене на етапах завантаження і виконання. Цей метод гнучкіший в порівнянні з методом фіксованих розділів. Цьому методу також властива зовнішня фрагментація унаслідок наявності великого числа ділянок вільної пам'яті. Проблеми фрагментації можуть бути різними Одне з вирішень проблеми зовнішньої фрагментації - дозволити адресному простору процесу не бути безперервним, що дозволяє виділяти процесу пам'ять в будь-яких доступних місцях. Один із способів реалізації такого рішення - це paging, використовуваний в багато сучасних ОС . Іншим способом боротьби із зовнішньою фрагментацією є стискування, тобто переміщення всіх зайнятих (вільних) ділянок у бік зростання (убування) адрес, так, щоб вся вільна пам'ять утворила безперервну область. Цей метод інколи називають схемою з переміщуваними розділами. У ідеалі фрагментація після стискування має бути відсутньою. Стискування, проте, є дорогою процедурою, алгоритм вибору оптимальної стратегії стискування дуже важкий, і, як правило, стискування здійснюється в комбінації з вивантаженням і завантаженням по інших адресах. Кожен процес має власний адресний простір. Адресний простір спочатку розділяється на три логічні сегменти: код, дані і стек. Сегмент коди доступний лише для читання і містить машинні коди програми. Сегменти даних і стека обидва доступні як для читання, так і для запису. Сегмент даних містить області даних програми, що як ініціалізували, так і неініціалізовані, коли як стековим сегментом є стек програми на етапі виконання. На більшості машин сегмент стека автоматично розширюється ядром в процесі роботи програми. Процес може розширювати або зменшувати свій сегмент даних, виконуючи системний виклик, коли як розмір сегменту коди процес може змінити лише коли вміст сегменту перекривається даними файлової системи або в процесі відладки. Початковий вміст сегментів породженого процесу копіюється з сегментів батьківського процесу. Для виконання процесу зовсім не обов'язково постійно зберігати в пам'яті повний вміст його адресного простору. Якщо процес звертається до області адресного простору, яка не присутня в оперативній пам'яті, то система підвантажує сторінку з необхідною інформацією в пам'ять. Коли виникає брак системних ресурсів, то система використовує дворівневий підхід до управління наявними ресурсами. Якщо не вистачає пам'яті, то система забиратиме ресурси пам'яті від процесів, якщо вони давно не використовувалися. Якщо ресурсів не вистачає дуже сильно, то система удаватиметься до вивантаження всього контексту процесу у вторинну підсистему зберігання даних. Посторінкове підвантаження на вимогу і вивантаження виконуються системою абсолютно непомітно для процесів. Процес може, проте, вказати системі об'єм пам'яті, який використовуватиметься, як допомога. У Windows Windows 98/2000/XP/NT/2000/2003 Server кожен процес має власний адресний простір, що дозволяє адресувати до 4 Гб пам'яті. Відзначимо, що Windows виділяє процесу 4 Гб адрес пам'яті, а не фізичного ОЗУ. Фізична пам'ять обмежена наявними системними ресурсами (ОЗУ і дисковий простір). Windows виділяє кожному застосуванню 2 Гб адрес пам'яті, а інші 2 Гб резервуються для потреб ядра. Не всі комп'ютери розташовують четирмя Гб ОЗУ, і з цієї причини Windows використовує механізм віртуальної пам'яті. Таким чином, Windows може перенести частину вмісту фізичної пам'яті на жорсткий диск, коли об'єм доступного ОЗУ буде вичерпаний. Цей процес відомий як підкочування .Віртуальниє адреси, використовувані процесом, не збігаються з адресами фізичної пам'яті. Для кожного процесу ядро підтримує так звану таблицю сторінок — внутрішню структуру, яка дозволяє перетворити віртуальні адреси у фізичні.

40. Фрагментація пам`яті. Переміщувані розділи.

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

для цього, незважаючи на те, що при їх об'єднанні вийде достатній об'єм пам'яті. На Мал. показано, як при певній послідовності звернення до процедур "New" та "Dispose" може виникнути така ситуація.

Запит не може бути задоволений, оскільки немає ділянки безперервної вільної пам'яті достатнього розміру.

В деяких випадках фрагментація зменшується, так як функції динамічного розподілу пам'яті об'єднують сусідні участки пам'яті.

Один зі способів запобігання великий фрагментації заключається в тому, щоб завжди виділяти однакові ділянки пам'яті. В цьому випадку всі звільнені ділянки можуть використовуватися при будь-яких подальших запитах на виділення пам'яті і таким чином буде використана вся вільна пам'ять. Якщо не можна використовувати завжди однаковий розмір виділюваних ділянок, то слід обмежитись тільки кількома розмірами. Іноді цього можна досягнути шляхом об'єднання декількох запитів на виділення невеликих ділянок в один запит на виділення однієї великої ділянки пам'яті. Не можна для запобігання фрагментації виділяти більше пам'яті, ніж дійсно потрібно, оскільки одержувана вигода не окупиться втрат від невикористаної пам'яті. Можна використовувати інший підхід до вирішення цієї проблеми: при роботі програми можна записувати інформацію в тимчасовий дисковий файл, звільнити всю пам'ять і потім вважати інформацію з диску в пам'ять. При считуванні інформації не буде створюватися жодних проміжків.

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

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

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





Последнее изменение этой страницы: 2016-06-19; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.238.190.82 (0.017 с.)