Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Розкрити поняття Мультипрограмування




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

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

 

В мультитермінальних ОС з однією обчислювальною системою одночасно можуть працювати кілька користувачів, кожний зі свого термінала. Для організації мультитермінального доступу до обчислювальної системи необхідно забезпечити мультипрограмний режим роботи. У якості одного з прикладів мультитермінальних ОС для ПК можна назвати Linux.

 

13.Визначити задачі планування в ОС, основні критерії, вимоги до алгоритмів.

Планувальник операційної системи

Планування виконання завдань (англ. Scheduling) є однією з ключових концепцій в багатозадачності і багатопроцесорних систем, як в операційних системах загального призначення, так і в операційних системах реального часу. Планування полягає в призначенні пріоритетів процесам в черзі з пріоритетами. Утиліта, що виконує це завдання, називається планувальником (англ. Scheduler).

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

Використання процесора(-ів) - дати завдання процесору, якщо це можливо.

Пропускна здатність - кількість процесів, що виконуються за одиницю часу.

Час на завдання - кількість часу, для повного виконання певного процесу.

Очікування - кількість часу, який процес очікує в черзі готових.

Час відповіді - час, який проходить від подання запиту до першої відповіді на запит.

Справедливість - Рівність процесорного часу для кожної ниті

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

Зміст [сховати]

1 Типи планувальників в операційних системах

1.1 Довготривалий планувальник

1.2 Середньостроковий планувальник

1.3 Короткостроковий планувальник

2 Реалізації планувальників в операційних системах

2.1 Windows

2.2 Mac

2.3 Linux

3 Виноски

4 Посилання

[ред.]Типи планувальників в операційних системах

 

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

[ред.]Довготривалий планувальник

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

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

[ред.]Середньостроковий планувальник

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

процес був неактивним якийсь час;

процес має низький пріоритет;

процес часто викликає помилки сторінок (page fault);

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

Процес буде повернений в основну пам'ять коли буде доступна необхідна кількість вільної пам'яті, або коли процес вийде з режиму очікування (в цьому випадку планувальник вивантажить з основної пам'яті інший процес для звільнення основної пам'яті).

У багатьох сучасних системах, що підтримують відображення віртуального адресного простору на вторинну пам'ять, відмінну від файлу підкачки, середньостроковий планувальник може одночасно грати роль і довготривалого планувальника, розглядаючи нові процеси як процеси, які були вивантажені з основної пам'яті. Таким чином система може підвантажувати в основну пам'ять програмний код тільки тоді, коли він знадобиться процесу для виконання (це називається завантаженням на вимогу або «ледачим завантаженням»).

[ред.]Короткостроковий планувальник

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

[ред.]Реалізації планувальників в операційних системах

 

[ред.]Windows

Детальніше: Планування потоків

Системи MS-DOS і рані Microsoft Windows не були багатозадачними, і відповідно не мали планувальника. Windows 3.1x використовував неупереджувальний планувальник, і тому не могла переривати програми. Система цілком покладається на програму, коли та скаже ОС, що вона вже не потребує процесора, і тільки тоді система могла виконувати інший процес. Це звичайно називають кооперативною багатозадачністю. Windows 95 представив зародковий упереджувальний планувальник, проте для сумісності зі спадщиною вирішили дати 16-бітним застосункам запускатися в невитісняючому режимі[1].

Операційні системи на основі Windows NT використовують чергу з багаторівневим відгуком. Визначені 32 рівнів пріоритету, від 0 до 31, де пріоритети від 0 до 15 є "нормальними" пріоритетами, і пріоритети від 16 до 31 є м'якими пріоритетами реального часу, які вимагають привілеїв призначити їх. "0" зарезервований для операційної системи. Користувач може вибрати 5 з цих пріоритетів і призначити їх своїм застосункам з програми Task Manager або за допомогою API управління еитями. Ядро може змінити рівень пріоритету нитки в залежності від його операцій введення-виведення, завантаження процесора і навіть інтерактивно (тобто приймає і реагує на вимогу людини)[2]. Планувальник Windows Vista був змінений, щоб задіяти циклічні регістри-лічильники сучасних процесорів відслідковувати скільки точно циклів процесора виконується нить, а не тільки коли інтервал-таймер перериває виконання[3]. Vista використовує також пріоритети планувальника для черги введення-виведення, щоб дефрагментація диску та інші подібні фонові операції не втручалися в роботу основних процедур[4].

[ред.]Mac

Mac OS 9 використовував кооперативний планувальник, коли один процес контролює кілька кооперативних ниток. Ядро планує процеси з допомогою найпростішої кругової системи планування без пріоритетів (так званий алгоритм Round-robin). Кожен процес має свою власну копію управління нитями, що планує кожну нитку. А ядро, використовуючи алгоритм упереджувального планування, розподіляло поміж всіх наявних задач час процесора. Mac OS X використовує ниті Mach, і кожна нитка пов'язана з власним окремим процесом. Якщо ниті в певний час кооперативні, тоді тільки одна може працювати одночасно. Нить повинна відмовитися від свого права на процесор, щоб виконувалися інші процеси[5].

[ред.]Linux

Починаючи з версії 2.5 ядро Linux використовує багаторівневу чергу з відгуком з пріоритетами 0-140. 0-99 зарезервовані для задач реального часу, а 100-140 виділені для задач рівня nice. Для завдань реального часу інтервал перемикання процесів складає близько 200 мс і 10 мс для задач nice. Планувальник проходить через всю чергу готових процесів, дозволяючи спочатку пройти найвищим з них і запускаючи їх через зріз часу, а і поміщає їх в чергу закінчених. Потім, коли черга активних задач порожня, черга виконаних знов стає активною, і навпаки. З версії 2.6 до 2.6.23, ядро використовує планувальник O(1). У версії 2.6.23, вони замінили цей метод на Completely Fair Scheduler, який використовує Червоно-чорне дерево замість черги[6].

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...