Nastavenie priority procesu a vplyv na jeho činnosť v operačnom systéme

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Tnu wiki.png
Trenčianska Univerzita Alexandra Dubčeka v Trenčíne
Fakulta Mechatroniky
Fm wiki.png
Nastavenie priority procesu a vplyv na jeho činnosť v operačnom systéme

zadanie práce
Bakalárska práca


Autor:
Pedagogický vedúci: Ing. Peter Kvasnica,PhD.
Študijný odbor: Mechatronika
Akademický rok

2009/2010

Abstrakt

Cieľom záverečnej práce bolo priblížiť sa správanie operačných systémov opisom jeho prvkov, ako sú procesy, vlákna a algoritmy spracovania procesov v systéme a opísať správanie vybraného operačného systému pri nastaveniach rôznych priorít a prioritných tried procesu pomocou vlastnej aplikácie. Vytvorenej vo vyššom programovacom jazyku C++. Práca je rozdelená do 5 kapitol. Obsahuje 18 obrázkov, 5 tabuľky a 3 prílohy.

Abstract

The aim of final thesis was to clarify the behavior of operating systems by description of their components such as processes, threads and processes processing algorithms in the system and to describe the behavior of the selected operating system with settings for different priorities and the priority classes through the process of custom application. Created in a higher programming language C + +. The work is divided into 5 chapters. It contains 18 pictures, 5 tables and 3 appendices.

Úvod

Táto práca pojednáva o prioritných triedach procesov a prioritách vlákien operačného systému Microsoft Windows a ich vplyve na správanie sa procesu a rýchlosť spracovania v operačnom systéme. Zámerom mojej práce je priblížiť spávanie sa operačných systémov, pomocou opisu jeho prvkov a algoritmov pri spracovávaní procesov v systéme. Vyžíva teoretické vedomosti z informačných predmetov odborového štúdia na fakulte mechatroniky a poznatky získané zo štúdia aktuálnej odbornej literatúry. V prevej kapitole práce sa venujem problematike samostatných procesov a prvkov, ktoré proces obsahuje alebo ho definujú v prostredí operačného systému. Druhá kapitola pojednáva o plánovaní procesov a plánovacích algoritmoch v operačných systémoch súvisiacich s riešenou problematikou v súlade s našim zadaním. Tretia kapitola sa zaoberá implementáciou aplikácií pod operačným systémom Microsoft Windows a popisuje teóriou vlákien procesu. V štvrtej kapitole sa nachádza rozbor programu, vytvoreného pre meranie časov spracovania procesu, ktorý popisuje matematickú operáciu pri nastavení rôznych prioritných tried procesu a priorít vlákien v operačnom systéme. V piatej kapitole sa nachádzajú zhrnuté výsledky vykonaných meraní na operačných systémoch spoločnosti Microsoft a ich zhrnutie z hľadiska efektívnosti pre rýchlosť spracovania v systéme.


Procesy

Operačný systém musí byť schopný vykonávať niekoľko programov súčasne. Aj systémy, u ktorých je užívateľ schopný spustiť iba jeden program, taktiež musia využívať aj svoje vnútorné procesy. Užívateľské alebo systémové bežiace programy sú si veľmi podobné a nazývajú sa procesy (Kvasnica, 2009).

Proces

Neformálne je proces definovaný ako bežiaci program vrátane všetkých informácií potrebných pre jeho opätovné spustenie od inštrukcie, kde bol prerušený (Martincová, 1997). Proces sa vykonáva sekvenčne t.j. v určitom čase sa vykonáva iba jedna inštrukcia programu. V operačných systémoch s technológiou zdieľania času sa používateľské programy nazývajú úlohy. Vo väčšine operačných systémoch sa používa najčastejšie termín proces (Plášil, 1992). Proces je viac ako len kód programu, ktorý sa vykonáva. Proces zahŕňa aj kontext, ktorý ho definuje. Do kontextu patria hodnoty čítača inštrukcií a stavového registra procesu, ktorý špecifikuje strojový stav počítača vo vzťahu k procesu (Madnick, 1983). V stavovom registri sa nachádza pole výsledkov, posledného výpočtu (nulový, kladný, záporný). Ďalšie dôležité pole, ktoré je typickou súčasťou stavového registra, indikuje aktuálnu prioritu procesu. Kontext zahŕňa aj tzv. zásobník, v ktorom sú uložené dočasné dáta procesu. Patria tam napr. parametre podprogramov, lokálne premenné. Proces obsahuje aj dátový segment, v ktorom sa nachádzajú globálne premenné. Nachádza sa v ňom ukazovateľ zásobníku, obsahujúci aktuálnu adresu nasledovnej položky v zásobníku. Obsahuje taktiež záznam procesu, ktorý definuje stav procesu a obsahuje riadiace informácie procesu (Kvasnica, 2009). Program sám o sebe nie je považovaný ako proces. Je považovaný za pasívnu jednotka uložená napríklad na pevnom disku. Zatiaľ čo proces je aktívna jednotka, v ktorej rozhoduje čítač inštrukcií, ktorá inštrukcia sa vykoná (Martincová, 1997). K procesu zahŕňame aj systémové prostriedky, ktoré sú potrebné k jeho vykonaniu a následnému ukončeniu. Jeden program môže pozostávať aj z viacerých procesov, ktoré treba vykonať. Ale každý program má svoju sekvenciu vykonávania procesov . Proces taktiež môže vytvoriť viacej procesov počas svojho vykonávania. Proces vytvorený iným procesom sa nazýva potomok, vytvárajúci proces sa nazýva rodič. Každý potomok taktiež môže vykonávať nové procesy, a tak vzniká strom procesov (Kvasnica, 2009). Novo vytvorený proces potrebuje pre svoju činnosť prostriedky systému. Tieto prostriedky môže získať priamo od operačného systému, alebo mu rodičovský proces pridelí podmnožinu svojich prostriedkov.


V okamihu, keď proces vytvorí ďalší proces sú dve možnosti jeho ďalšej existencie:

  • Rodičovský proces beží súbežne zo synovským.
  • Rodičovský proces čaká, než sa dokončí niektorý alebo všetky „synovské“ procesy (Cada, 1993).

Vzhľadom na obmedzený adresný priestor nastávajú dve varianty:

  • Potomok je duplikátom rodičovského procesu.
  • Potomok má vlastný program, ktorý sa zavedie do pamäte (Cada, 1993).

K ukončeniu potomka procesu dochádza po vykonaní všetkých jeho inštrukcií. Potomok môže vrátiť dáta t.j. výsledok rodičovskému procesu. Všetky prostriedky využívané potomkom sa uvoľnia. Ukončenie procesu môže vyžiadať aj iný proces pomocou systémového volania. Väčšinou táto žiadosť je vyplnená iba rodičovskému procesu, inak by užívateľ mohol zrušiť hoci aký proces. Rodičovský proces musí uchovávať informácie, ktoré získa pri vytvorení potomka, aby rodičovský proces prípadne mohol zrušiť potomka. Rodič môže žiadať o zrušenie potomka z nasledovných dôvodov:

  • Potomok, prekročil možnosti systémových zdrojov, ktoré mu boli pridelené.
  • Úloha ktorú vykonáva, naďalej nie je potrebná.
  • Rodičovský proces bol ukončený a operačný systém ukončuje všetkých jeho potomkov (Kvasnica, 2009).

Pri vykonávaní množiny procesov na jednom procesore pomocou techniky zdieľania času, môžeme hovoriť o paralelno sekvenčnom vykonávaní t.j. striedavé prepínanie medzi procesmi (Martincová, 1997).

Stavy procesov

Stav procesu je premenlivý, mení sa podľa aktuálnej aktivity procesu v počítači. Môže sa nachádzať v jednom z uvedených stavov:

  • Nový – proces, ktorý bol práve vytvorený.
  • Prebiehajúci – inštrukcie programu začali byť vykonávané.
  • Čakajúci – proces čaká na nejakú udalosť, napr. dokončenie výstupnej alebo vstupnej operácie, alebo na príchod udalosti potrebnej pre jeho pokračovanie.
  • Pripravený – proces čaká na pridelenie procesora.
  • Ukončený – proces dokončil svoju činnosť (Kvasnica, 2009).

Názvy stavov sa môžu líšiť v závislosti od operačných systémov. Diagram stavov procesu je uvedený na obrázku č. 1.

Obrázok 1 Stavy procesov

Udalosť počas vykonávania procesu

Počas behu procesu môžu nastať určité situácie zapríčinené udalosťami vyžadujúce osobitú obsluhu (Plášil, 1992).

Jedná sa o chovanie procesu pri príjme synchronizačných signálov od operačného systému alebo iných procesov. Činnosť na tieto prijaté signály môže byť štandardná, definovaná vopred v operačnom systéme či užívateľsky definovaná (Martincová, 1997). V druhom prípade je na programátorovi, ako bude reagovať proces po príjme takéhoto riadiaceho signálu. Tieto udalosti rozdeľujeme na :

  • interné – vznikajú v rámci procesu a zapríčiňujú zmenu stavu procesu:
    • systémové volanie – skok do jadra,
    • chyba – zlá inštrukcia, porušenie oprávnenia k prístupu do pamäte atď.,
    • zlyhanie stránky – výpadok alebo poškodenie stránky pri stránkovaní.
  • externé - tieto udalosti neriadi proces, sú vonkajšie, väčšinou oznamujú prerušenia, ktoré obsluhuje operačný systém
    • vstup z terminálu (znak),
    • ukončenie diskovej operácie (Kvanica, 2009).

Riadiaci blok procesu (PCB)

Každý proces v systéme je reprezentovaný záznamom, ktorý sa nazýva riadiaci blok procesu. Obsahuje veľké množstvo informácií o procese, napr. :

  • identifikačné číslo procesu
  • stav procesu – (nový, prebiehajúci, čakajúci, pripravený, ukončený )
  • hodnota čítača inštrukcií – indikuje adresu nasledujúcej inštrukcie vo vykonávaní procesu
  • CPU registre – podľa architektúry použitého procesora sa mení počet registrov. Obsahuje obsiahle akumulátory, indexové registre, ukazovatele do zásobníkov, univerzálne registre atď.. V prípade prerušenia vykonávania procesu sa aktuálny obsah registra tak ako ukazovatele programu musia uložiť do riadiaceho bloku procesov, aby sa proces mohol korektne spustiť od inštrukcie, pred ktorou bol prerušený
  • informácie pre plánovanie procesov – priorita procesu, ukazovatele do plánovacích front a pod.
  • informácie pre správu pamäte – hodnoty limitných a bázových registrov, tabuľku stránok a iné
  • účtovacie informácie – informácie o čase pridelenia procesora t.j. spotrebovaný čas procesora, číslo procesu, časové limity pre procesor atď.
  • I/O informácie – zoznam I/O zariadení alokovaných pre proces, zoznam otvorených súborov a pod (Madnick, 1983).

Plánovanie procesov

Pri plánovaní procesov bolo zavedené tzv. multiprogramovanie, ktorého cieľom bolo efektívnejšie využívanie procesora pri vykonávaní procesov. Podstata multiprogramovania je v tom, že v pamäti je viac procesov (Martincová, 1997). Zdanlivo to môže vyzerať tak že procesor vykonáva procesy súčasne, ale procesor prepína medzi nimi. Týmto spôsobom sa znižuje potrebný celkový čas na vykonanie jednej úlohy. Multiprogramovanie dovoľuje aj zdieľanie času. Tzv. zdieľanie času je veľmi rýchle prepínanie medzi procesmi vo fronte pripravených procesov, aby bola zabezpečená interaktívna komunikácia medzi programom a užívateľom. Systémy iba s jedným procesorom môžu vždy vykonávať iba jeden proces v určitom okamihu (Plášil, 1992). Zostávajúce programy vo fronte pripravených procesov musia čakať na pridelenia procesora. Úlohou plánovania procesov je rozhodnúť, ktorý z procesov pri prepnutí bude pridelený na procesor (Kvasnica, 2009). Prepínanie kontextu medzi dvomi procesmi je schematicky znázornené na obrázku 2.

Obrázok 2 Prepínanie kontextu procesov

Fronta

V okamihu vytvorenia procesu je tento proces zaradený do fronty procesov. Vo fronte sú zaradené všetky procesy systému. Procesy, ktoré sa nachádzajú v operačnej pamäti a čakajú na pridelenie procesora sa zaraďujú do fronty pripravených procesov. Je vytváraný zo zreťazených riadiacich blokov do zoznamu. Pozícia v zozname sa určuje podľa priority procesu, ktorá sa nachádza v riadiacom bloku procesu. Hlavička fronty pripravených procesov obsahuje ukazovatele na riadiace bloky procesov prvého a posledného procesu vo fronte (Kvasnica, 2009). Jednotlivé riadiace bloky procesov obsahujú položku ukazovateľa na riadiaci blok procesu nasledujúceho procesu vo fronte pripravených procesov. Ukážka fronty je znázornená na obrázku č. 3.

Obrázok 3 Ukážka frontu pripravených procesov

V systéme sa vytvára viac front procesov. Pri vykonávaní procesu môže nastať prípad, že proces bude musieť čakať na nejakú udalosť potrebnú pre dokončenie procesu. Napr. ukončenie I/O operácie na niektorom zo zdieľaných zariadení napr. disk, optická mechanika. Môže nastať prípad, že určité systémové zariadenie môže byť obsadené, pretože iný proces môže mať také isté požiadavky. V tom prípade sa vytvára fronta čakajúcich procesov pred každým zariadením. Všetky systémové zdieľané zariadenia majú svoju vlastnú frontu (Cada, 1993). Novo vzniknutý proces je umiestnený do fronty pripravených procesov a čaká na pridelenie procesora. Po pridelení procesora sa proces môže odoberať jedným z nasledovných spôsobov:


  1. proces požiada o I/O operáciu a bude umiestnený do fronty príslušného zariadenia.
  2. proces vytvorí nový proces a čaká na jeho ukončenie.
  3. procesu môže byť odobratý procesor, z dôvodu prerušenia spôsobeného napr. výskytom chyby a je umiestnený do fronty pripravených procesov.
  4. Bolo vyčerpané pridelené časové kvantum (Martincová, 1997).

V prvých spomínaných prípadoch sa proces môže prepnúť z kontextu čakajúci do kontextu pripravený, následne je umiestnený do fronty pripravených procesov. Proces pokračuje v tomto cykle kým sa nedokončí. Po ukončení sa odstráni zo všetkých front a jeho riadiaci blok procesu a prostriedky, ktoré využíval sa uvoľnia.

Prepínanie kontextu

Pri pridelení procesora inému procesu sa musí uložiť stav vykonávaného procesu do riadiaceho bloku procesu a zaviesť stav nového procesu . Táto činnosť sa nazýva prepínanie kontextu, je to pomocná činnosť a počas jej vykonávania systém nemôže vykonávať nič iné (Martincová, 1997). Rýchlosť prepínania kontextu je závislá na vybavovacej rýchlosti pamäte a na počte registrov, ktoré musia byť prekopírované. Typická doba na prepínanie kontextu sa pohybuje okolo 1 až 10 µs. Pri pridelení procesora procesu sa mu musí prideliť časové kvantum (možný čas strávený na procesore) a taktiež systémové prostriedky (Kvasnica, 2009).