OS
Niekoľko poznámok o operačnom systéme

Operačný systém
Správa operačnej pamäte
Správa procesov
Kontrolné otázky

Niekoľko poznámok o operačnom systéme

Operačný systém 

Operačný systém (OS) - hlavný riadiaci program, ktorý ovláda zdroje počítača. Napríklad UNIX je operačný systém umožňujúci:

  • multitasking (súčasné spracovanie viac ako 1 úlohy - tasku),
  • mnohouživateľský (viac užívateľov naraz),
  • interaktívny (okamžite reaguje na príkazy).
Okrem programového vybavenia nutného pre prevádzku počítača operačný systém vykonáva aj funkciu správcu prostriedkov (prideľuje aj pamäť a technické prostriedky jednotlivým procesom a synchronizuje procesy).
 

Hierarchická (vrstvová) architektúra operačného systému. Jadro operačného systému (kernel) komunikuje s vyššími vrstvami a aplikačnými programami. Operačný systém (nie napríklad MS DOS) zabezpečuje ochranu systému (crash protection) pri zlyhaní aplikácie. V prípade "zamrznutia" alebo inej chyby aplikácie netreba vykonať reboot systému ale stačí zrušiť a reštartovať zhavarovanú aplikáciu.
 
 


Práca s pamäťou

Alokácia pamäti - akcia pri ktorej sa vyhradzuje pamäťový priestor:

  • dynamická - miesto v pamäti sa alokuje počas behu programu,
  • statická -  miesto v pamäti sa alokuje už počas prekladu, teda pred spustením prekladu.

Premená:

  • globálna - existencia premenej sa začína so spustením programu a končí s ukončením programu,
  • lokálna - existencia premenej sa začína pri vstupe do podprogramu (funkcie alebo procedúry), v ktorom je definovaná a končí sa so zakončením podprogramu. Lokálna premená je dostupná len z podprogramu, v ktorom je definovaná.

Statická alokácia premených vyhradzuje miesto v dátovej oblasti. Globálne premnné môžu byť alokované len staticky. Kľúčové slovo extern sa používa pri oddelenom preklade súborov, keď je treba, aby dva alebo viac súborov sdieľali tú istú premennú. Táto globálna premenná je v jednom súbore definovaná bez kľúčového slova extern a vo všetkých ostatných musí byť definovaná s použitím extern.

Pri vymedzovaní dynamickej pamäte určitej dlžky počas behu programu sa používa zásobník - stack. Existencia lokálnych premených začína pri vstupe do podprogramu a končí pri výstupe z tohto podprogramu.Pri prideľovaní dynamickej pamäte si treba uvedomiť, že síce žiadame o pridelenie určitého počtu bajtov, ale je vecou operačného systému koľko pamäte naviac sa skutočne pridelí. Napr. MSDOS prideľuje pamäť po tzv. paragrafoch, čo sú násobky 16-tich bajtov. Dôvodom tohto "plytvania pamäte" je zjednodušenie administratívy.


Správa operačnej pamäte

Pre správu operačnej pamäte využíva jadro operačného systému metódu prideľovania pamätí. Je vyhradená oblasť RAM pre zavedenie a spustenie aplikačných užívateľských programov. Správa pamäti riadi pridelený adresový priestor programu pre uloženie vlastného kódu a dát. Na základe volania služieb jadra systému možno podporovať riadenie prekrývania úsekov programu, meniť rozsah pamäti pre zavedený v pamäti program, určiť umiestnenie a rozsah adries pre zavedenie ďalších úsekov programu do pamäti => dynamicky prideľovať a odoberať pamäť(čo môže viesť k fragmentácii pamäti).

Multitasking - operačný systém umožňuje súčastný beh niekoľkých programov. V skutočnosti (pokiaľ sa nejedná o multiprocesorový počítač) to operačný systém len simuluje pomocou prepínania programov (task switching).

Kontext - údaje uložené v tabuľke patriace k procesu (tasku), s pomocou ktorých možno prepínať (odobrať a znova prideliť procesoru). Na rozdiel od podprogramu táto služba po prepnutí sa vráti na iné miesto, než z ktorého bola vyvolaná.

Kooperatívny multitasking - prepínanie medzi procesom v popredí a procesmi, ktoré čakajú na pozadí, pri ktorom musí spolupracovať rovnocenne každý proces. Napríklad počas čakania na stlačenie klávesu môže dôjsť ku kopírovaniu. Nevýhodou je spomalenie spracovania, (dá sa zrýchliť rozdelením úloh na kratšie úseky) a nemožnosť realizácie paralelných úloh.

Preemptívny multitasking - súbežné spracovanie viac úloh s pravidelným a rovnomerným prideľovaním času , umožňujúci prednostne prerušiť predbiehajúci proces.

Multithreading - paralelné spracovanie viacerých vetví toho istého programu. Operačný systém rozdelí proces na niekoľko taskov - vlákien (threads). Thread je najmenšia jednotka, ktorá sa v systéme realizuje určitú dobu, po uplynutí ktorej prejde systém na ďalší thread. Pritom môžu byť spracovávané thready rôznych procesov.

Zdieľanie času (time slicing) - opatrenie, aby aktívny proces nepracoval príliš dlho bez zavolania systémovej služby => každý proces beží len určitý čas. Pri striedaní procesov sa môže dodržiavať:

  • systém statickej priority - nemenná pridelená priorita;
  • systém dynamickej priority - ak proces bežal dlho tak sa mu zníži priorita, alebo sa mu zvýši priorita ak málo času vyčerpal.

Správa procesov

Proces - bežiaci program. Každému spustenému programu zodpovedá istý proces. Po prihlásení sa do systému je každému užívateľovi pridelená jedna kópia shellu, ktorá beží až do jeho odhlásenia => tento bežiaci program je procesom. Každý príkaz spustený z tohto shellu je opäť procesom. Viacero úloh beží naraz len zdanlivo , striedajú sa => zdieľanie času.
  • Host - hlavný počítač viac užívateľského systému
  • Terminál - sprostredkováva vstup/výstup na host ( neinteligentný, inteligentný, grafický, emulácia PC => VT 100; Modem - prístup cez telefónne linky).
  • Konzola - hlavný terminál, pripojený na host.
  • Sever - počítač, ktorý poskytuje služby.
  • Klient - počítač, ktorý využíva služby alebo zdroj.
  • Shell - interaktívny program, ktorý začítava a interpretuje príkazy z uživateľovej klávesnice a vracia výstupy na obrazovku. Shell sa môže používať aj ako programovací jazyk. Shell je interpretér, programy neprekladá ale interpretuje vždy ak sa zavedú z disku do pamäti. Shel umožňuje vytváranie funkcií. (Funkcie sú uložené v pamäti, takže pre ich vykonanie nie je potreba ich opätovného zavedenia z disku.)
Správa procesov (Process Management) - podpora pre prácu viacerých účastníkov na základe plánovaného postupu procesora a I/O, závisiaceho od priebehu spracovania Udržuje informáciu o programoch zavedených do operačnej pamäte počítača a o väzbách medzi nimi. Je vytvorená rodičovská väzba (pôvodný program - parent, novo zavádzaný objekt - child). Správa procesov (ako socialistická ekonomika - samé plánovanie a samá fronta) sleduje procesy a riadi ich chovanie - vytvorenie/zrušenie fronty, umiestnenie do fronty, prioritná fronta. Okrem toho aj fronta špeciálneho typu - delta list pre procesy, ktoré čakajú na uplynutie časového intervalu. Intervaly sú tu pravidelne skracované a ukladá sa len rozdiel s predchádzajúcim intervalom.

Rodičovský proces - pôvodný proces ->. Novovytvorený proces sa označuje ako detský proces( narodenie, smrť procesu). Rodičovský proces môže spustiť mnoho detských (podriadených) procesov. Ak detský proces spustí ďalší proces a sám zanikne tak tento proces je adaptovaný "dedkom".

Scheduller - (plánovač) - prvý proces, ktorý sa rozbehne po spustení operačného systému. Zodpovedá za to, ktorý z bežiacich procesov bude pripustený k procesoru, má PID=0. Za ním je spustený Init (PID=1), ktorý udržuje v chode všetky démony.

Démon - proces, ktorý jedná bez toho, aby bol k tomu vyzvaný užívateľom. Môže byť aktívny po celú dobu behu systému, alebo môže byť spúšťaný len v určitých okamihoch. Napríklad HTTP Démon vo WWW serveri čaká a obsluhuje volania hostu cez http protokol (napríklad Netscape).

Správa súborov (File System and File Management) prispôsobuje fyzikálne charakteristiky zariadenia ako je disk na logické zariadenie. Typicky sú dáta prenášané z disku na disk v blokoch. Bloky majú veľkosť 512 bajt. Je to najmenšia časť dát vhodná na fyzický prenos na disk. Túto blokovú operáciu zabezpečuje rôznymi spôsobmi operačný systém.

Správa vstupných / výstupných zariadení (IO) => jednotný prístup k I/O zariadeniam a k súborom. Pre efektívnejšiu komunikáciu s I/O zariadeniami (napríklad s tlačiarňou) sa používa metóda vyrovnávacích pamätí (Buffers). Buffery sú zriaďované v operačnej pamäti (napríklad v MS DOS príkazom Buffers v config.sys), takže dochádza k zmenšovaniu rozsahu pamäte. Príliš veľký počet bufferov má tiež za následok predĺženie času potrebného na vykonanie požiadavky, lebo treba dlhšie prehľadávať ich zoznam. (Kompromis 16 - 32, max. 50).

Adresár - udržuje pre operačný systém informáciu o jednotlivom súbore (jeho mene, veľkosti, ochrane, čase poslednej zmeny a o umiestnení na disku). Používajú sa 3 spôsoby organizácie adresárov:

  • Jednoduchý adresár, organizovaný lineárnym spôsobom. Umiestnenie súboru v adresári sa musí hľadať sekvenčne, čo má vplyv na trvanie procesu hľadania a je pociťované ako negatívna vlastnosť. Napriek tomu VMS, UNIX, OS/2 a MS DOS používajú lineárne prehľadávanie adresárov. Tieto operačné systémy pri použití pamäte cache, v ktorej je uložená informácia o posledne používanom adresári, môžu rýchlejšie získať informáciu o často používaných súboroch bez prístupu na disk.
  • Na skrátenie hľadania môže byť použitá predtriedená organizačná schéma adresára. napríklad na základe binárneho hľadania usporiadaný adresár.
  • Na organizáciu adresára použiť transformačnú tabuľku. Na základe mena súboru pridelí nejaká transformačná funkcia súboru index. Táto stratégia môže byť zdrojom kolízii ak podobné mená produkujú rovnaký index.


Všetky operačné systémy (VMS, UNIX, OS/2 a MS DOS) používajú mnoho úrovňovú organizáciu adresárov, kde napríklad každý uživateľ má svoj adresár ovládaný spoločným "adresárom adresárov". V jedno úrovňovom adresári by mená súborov museli byť jednoznačne odlišné. UNIX ako prvý zaviedol stromovú štruktúru, v ktorej súbory sú udržované na rôznych úrovniach. Meno súboru je potom špecifikované aj cestou, => zoznamom všetkých adresárov z úrovne koreňového adresára až na úroveň adresára, v ktorom sa nachádza súbor.

Prístup k súborom môže byť zorganizovaný rôzne:

  • Sekvenčne - postupne záznam za záznamom. Nevýhoda, že sa nedá čítať záznam zo stredu súboru.
  • Priamy prístup - nie je obmedzené poradie prístupu. Napríklad číta záznam 100, potom záznam 50 a pod.
  • Indexovaný - usporiadaný na základe kľúčov, podobne ako v databázach.
Alokácie súborov môže používať:
  • Súvislý spôsob ukladania súborov - súbory zaberajú určitý blok. Používa sa pre zrýchlenie prenosov, pretože sa minimalizuje pohyb hlavy disku. Keď sa disk zaplní a niektoré súbory sa z neho vymažú dochádza ku fragmentácii. (=> potreba dostatočného voľného priestoru na disku alebo použiť kompresiu súborov, ktorá je však nevhodná pri on line práci)
  • Spôsob ukladania súborov pomocou odkazu (link) - každý blok alebo sekcia súboru obsahuje ukazovateľ na nasledujúci blok (alebo segment) súboru. Aby pointer nezaberal miesto pre ukladanie súborov, je potrebný zvláštny disk na uloženie info o ukazovateľoch. Žiadny z operačných systémov (VMS, UNIX, OS/2 a MS DOS) nepoužíva tento systém.
  • Indexované alokovanie (nepliesť s indexovaným prístupom k súboru) - kombinácia súvislého spôsobu s odkazmi. Odkazy sa nachádzajú v indexovej tabuľke v pamäti. Každý index určuje určitý segment súboru. Pretože indexové vstupy sú uložené v pamäti je prístup k súboru rýchly aj keď je súbor rozložený na disku. V rámci segmentu je usporiadanie súvislé.



 Kontrolné otázky

  • Aký účinok bude mať použitie nasledujúcich príkazov skupinového výberu súborov?
      DEL *.bak DEL s*.* DEL lekci?.txt
      DEL ?okus.exe DEL ?.*
  • Aký účinok bude mať vykonanie nasledujúcich príkazov MS DOS ?

  •  
      DIR B: DIR B:\ DIR ..
      Copy p1.dat A: Copy A:\ p1.dat Copy p.txt PRN
      Copy CON p.txt Copy p1.txt + p2.txt p.txt
      REN *.txt *.doc REN *.txt A*.txt REN *.txt ?.txt
  • V akom poradí by sa vykonali súbory - MS DOS rovnakého mena uložené v jednom adresári ?
    • Jano.com (binárny pevne lokalizovaný súbor)
    • Jano.exe (binárny premiestniteľný súbor)
    • Jano.bat (textový dávkový súbor - zakončený 1AH )
  • V akom poradí by sa vykonali súbory MS DOS rovnakého mena uložené v rozdielnych adresároch . (V autoexec.bat je riadok : path C:\DOS; C:\utility) ?
    • Jano.com (uložený v aktuálnom adresári)
    • Jano.com (uložený v adresári c:\util\jano.com)
    • Jano.com (uložený v adresári c:\utility\jano.com)
    • Jano.com (uložený v adresári c:\DOS\jano.com)
  • Ak je súbor list.txt rovnakého mena uložený v rôznych adresároch:
    1.  
      C:\p1\ list.txt;
      C:\p1\p2\list.txt;
      C:\p1\p2\p3\list.txt


    Z ktorého adresára sa zobrazí súbor po zadaní nasledujúcej neúplnej (relatívnej) adresy, keď aktuálny kurzor sa nachádza v adreári C:\p1\p2:

    • Type ..\list.txt
    • Type .\ list.txt
  • Aký účinok bude mať použitie nasledujúcich príkazov MS DOS?
    • DIR B: > adresar.txt
    • DIR B: >> adresar.txt
    • MORE < dopis.txt
    • FIND "Ahoj" dopis.txt

  • Ak súbor Yes.txt pozostáva z 3 znakov (0AH 13H 1AH => je to vlastne ekvivalent stlačenia Enter - > CR + LF + zakončenie súboru). Aký účinok bude mať použitie príkazu MS DOS ?
    • DEL *.* < Yes.txt


 Win 1250          Návrat na stránku   HTML 4.0 
Back


Next