Процеси в системі IOS
Процеси операційної системи IOS еквівалентні потокам в інших операційних системах, оскільки в IOS процеси складаються з одного потоку. Кожний процес наділений власним стеком, контекстом центрального процесору і може розпоряджатися ресурсами пам’яті і консольними пристроями, про які ми поговоримо пізніше. Щоб знизити затрати на обслуговування, система IOS не реалізує механізм захисту областей окремих процесорів. Також не здійснюється керування пам’яттю під час переключення контекстів. Все це означає, що хоч кожному процесу і виділена своя область пам’яті, ніщо не заважає йому вторгатися в пам’ять іншого процесору.
Як ми вже відмічали раніше, операційна система IOS використовує модель пріоритетного виконання до повного завершення для планування своїх процесів. Може здатися, що використання планування без пріоритетних переривань – не найкраще рішення для системи, яка повинна оперативно обслуговувати вхідні мережеві пакети. В деяких випадках так воно і є: потреба в оперативності виходить за обмеження механізма планування процесів в системі IOS. Все ж механізм планування задач операційної системи IOS має масу безперечних переваг, що дозволяє використовувати його для обслуговування процесів, які не претендують на зверхоперативність переключення пакетів. Перерахуємо деякі позитивні сторони даного підходу.
- Невісокі затрати ресурсів. При кооперативній багатозначності контексти різноманітних потоків переключаються відносно рідко, що виражається в меншій завантаженості центрального процесора (так як він рідше займається власне переключенням потоків).
- Менше складностей для програміста. Оскільки програміст може контролювати момент, коли процес буде припинений, дуже легко здається переключати процеси лише в тих місцях, де вони оперують з загальними даними в пам’яті. Це дозволяє запобігти небажаних єфектів і тупиків між потоками.
Цикл життя процесу
Процеси можуть “народжуватися і помирати” в будь-який момент роботи системи IOS, виключаючи час обробки переривання. Процес може створюватись або “умертвлятися” ядром системи ( під час ініціалізації IOS) або будь-яким процесом, що виконується.
Вчасності за виникнення більшості процесів операційної системи IOS відповідний процес синтаксичного аналізатора (parser).Синтаксичний аналізатор представляє собою набір функцій, які інтерпретують конфігураційні файли системи IOS і команди (ЕХЕС), що виконуються. Синтаксичний аналізатор викликається ядром системи під час ініціалізації і процесом ЕХЕС, який представляє інтерфейс командного рядка (command line interface – CLI) для консолі або сесії Telnet.
Будь то команда, яку виділив користувач, або рядок, прочитаний з конфігураційного файлу,, синтаксичний аналізатор оброблює дані, що поступили, робить відповідні дії. Команди конфігурації можуть відповідати за установку різноманітних значень( як, наприклад, ІР-адрес), а також параметрів маршрутизації і за моніторинг подій.
Деякі команди потребують, щоб синтаксичний аналізатор породжував новий процес. Наприклад, отримавши через інтерфейс командного рядка конфігураційну команду router eigrp,аналізатор створює новий процес, який називається ipigrp (якщо, звичайно, такий процес ще не запущений в системі), який займається обслуговуванням ІР-пакетів протоколу EIGRP. Якщо ж введена команда no router eigrp, аналізатор закінчує роботу процесу ipigrp і відповідно пакети ІР EIGRP більше не оброблюються маршрутизатором.
Життя процесів в системі IOS складається з декількох фаз. На рис.5.7 показані ці фази і відповідні їм станів процесів.
Рис.5.7. Цикл життя процесу
Фаза народження
Коли новий процес народжується, він отримує у розпорядження власний стек і переходить в стан “новий” (new). Після того процес може перейти у фазу трансформації. Якщо ж потреби в трансформації немає, то процес напряму іде до фази свого виконання.
Фаза трансформації
По замовченню операційна система IOS не передає новому процесу ніяких початкових параметрів і не назначає консоль (як це робить більшість операційних систем), оскільки більшості процесів вони просто не потрібні. Якщо процесу все ж потрібні такі ресурси, то потік, який породжує його, може його трансформувати, виділяючи відповідні ресурси.
Фаза виконання
Після того, як новий процес був успішно створений і був підвергнутий трансформації , він переходить в стан готовності (ready),знаходячись уже у фазі виконання (execution). В цій фазі процес отримує доступ до центрального процесора і ,власне, виконує деяку корисну роботу.
Знаходячись у фазі виконання, процес може приймати один з трьох станів: готовність, виконання або простій. Процес в стані готовності очікує своєї черги на користування ресурсами процесора. Процес, що виконується , вже отримав доступ до центрального процесора, який і займається виконанням інструкцій цього процесу. Процес, який знаходиться в стані простою, “спить”, очікуючи якої-небудь події ззовні. Якщо така подія відбувається, процес може виконуватись.
Перехід процесу із стану готовності до стану виконання контролюється планіровщиком. Оскільки багатозначність операційної системи IOS не використовує пріоритетне переривання, то тримавши право на виконання, процес займає центральний процесор, виконуючись до повного завершення або періодично призупиняючи свою роботу. Призупинити своє виконання процес може двома способами . Процес може напряму повідомити ядру, що він бажає звільнити центральний процесор від користування, і тоді ядро системи призупиняє виконання процесу і переводить його в стан готовності, де він знову очікує своєї черги на виконання. Такий процес може зупинити свою роботу, очікуючи якоїсь зовнішньої події. В такому випадку він переходить в стан покою і залишається в ньому, поки не наступить бажана подія. Як тільки ця подія відбувається, ядро переводить процес, який очікується, в стан готовності, і він очікує своєї черги на виконання.
Фаза знищення
Остання фаза в життєвому циклі процесу – фаза знищення. Процес входить в цю фазу після завершення всіх своїх задач і закінчує свою роботу (так зване самостійне завершення роботи). Процес також може бути “вбитим” і іншим процесом. Коли процес завершив роботу самостійно або під дією іншого процесу, він переходить в стан “мертвий” (dead). Процеси, які закінчені, знаходяться в “мертвому” стані доти, поки ядро не звільнить всі зайняті ними ресурси. Ядро може зберігати інформацію про використання процесом стеку. Після того як всі ресурси “мертвого” процесу звільнені, він повністю вивантажується з системи.
Дата добавления: 2016-05-05; просмотров: 490;