Západočeská univerzita v Plzni. Správce virtuálních strojů



Podobné dokumenty
Správce virtuálních strojů

Úvod do Unixu. man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp. pwd: vypíše cestu k aktuální pozici

Linux-příkazový řádek

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

1 Uživatelská dokumentace

Unix je víceuživatelský a víceúlohový OS

LINUX přesměrování a roury

Úvod do Linuxu. SŠSI Tábor 1

Základní příkazy OS UNIX

UŽIVATEL, SKUPINA, PROCES

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

Podpora skriptování v Audacity

Instalace programu ProVIS

Tomáš Borland Valenta

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky. Dokumentace k programu MMDoc

Operační systémy 2: Zápočtové úkoly

Versiondog Lukáš Rejfek, Pantek (CS) s.r.o. 7/2014

Cvičení 2. Přesměrování vstupu a výstupu. Posloupnost příkazů. Příkazy pro informaci o uživatelích

Západočeská univerzita v Plzni

Svolávací systém Uživatelský manuál

STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST. Obor SOČ: 18. Informatika. Školní sdílení PC obrazovek. School sharing PC screens

Operační systémy. Cvičení 1: Seznámení s prostředím

OPERAČNÍ SYSTÉM. Informační a komunikační technologie

C2110 Operační systém UNIX a základy programování

PSK3-7. Plánované spouštění programů a správce sezení. Skupiny procesů

Programátorská příručka

FORTANNS. 22. února 2010

FortiaViewer verze 5.0

Průvodce aplikací GTS Webový portál pro správce

Paralelní výpočty na clusteru KMD

Úvod do Operačních Systémů

Zpravodaj. Uživatelská příručka. Verze

INFORMAČNÍ SYSTÉM VIDIUM A VYUŽITÍ MODERNÍCH TECHNOLOGIÍ

Instalační příručka Command WorkStation 5.6 se sadou Fiery Extended Applications 4.2

Přednáška 2. Systémy souborů OS UNIX. Nástroje pro práci se souborovým systémem. Úvod do Operačních Systémů Přednáška 2

Výpočetní technika. PRACOVNÍ LIST č. 7. Ing. Luděk Richter

SKYLA Pro II. Popis instalace programu

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE

Systém souborů (file system, FS)

Projekt do předmětu PAS. Textový editor

Analýza Systém Správce

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

MS WINDOWS I. řada operačních systémů firmy Microsoft *1985 -? Historie. Práce ve Windows XP. Architektura. Instalace. Spouštění

Práce s programem MPVaK

plussystem Příručka k instalaci systému

Střední odborná škola a Střední odborné učiliště, Hořovice

1. Podmínky chodu aplikace

Možnosti programu. KAPITOLA 5 Možnosti

Téma 1: Práce s Desktop. Téma 1: Práce s Desktop

Operační systém. Mgr. Renáta Rellová. Výukový materiál zpracován v rámci projektu EU peníze školám

Úvod, jednoduché příkazy

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

Komprimace/Dekomprimace

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

AUTOMATICKÉ ZÁLOHOVÁNÍ DATABÁZE PRO SQL Express 2005

1. Webový server, instalace PHP a MySQL 13

Instalace a první spuštění Programu Job Abacus Pro

Simulátor programované gramatiky

Semestrální práce 2 znakový strom

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

Multiboot CD 1.0. Konkrétně vytvoříme multiboot CD, které obsahuje:

PSK3-5. Přesměrování vstupu a výstupu. Vstup a výstup

DUM 15 téma: Další příkazy příkazové řádky

Pro označení disku se používají písmena velké abecedy, za nimiž následuje dvojtečka.

Simluátor Trilobota. (projekt do předmětu ROB)

Instalace a první spuštění programu.

AutoPEN, Ing. Lubomír Bucek, Halasova 895, Liberec 6 autopen@volny.cz ,

Bootkity v teorii a praxi. Martin Dráb martin.drab@ .cz

1 Webový server, instalace PHP a MySQL 13

Modul IRZ návod k použití

webmarketin Základní moduly aplikace

Úvod do Operačních Systémů

TSM for Virtual Environments Data Protection for VMware v6.3. Ondřej Bláha CEE+R Tivoli Storage Team Leader. TSM architektura IBM Corporation

Použití UART a radia na platformě micro:bit

Personální evidence zaměstnanců

UDS for ELO. Univerzální datové rozhraní. >> UDS - Universal Data Source

Informatika 7. ročník/02

KRAJSKÝ ÚŘAD KARLOVARSKÉHO KRAJE. Manuál. Uživatele aplikace informačního systému pro

Průvodce aplikací Webový portál pro správce Portal-uc.gtsce.com

Motorola Phone Tools. Začínáme

Střední odborná škola a Střední odborné učiliště, Hořovice

Změ ny věrzě zě dně

Frilo Control Center správa projektů

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky UPS. FTP Klient. A05463 fboranek@atlas.

Pár odpovědí jsem nenašla nikde, a tak jsem je logicky odvodila, a nebo jsem ponechala odpověď z pefky, proto je možné, že někde bude chyba.

Nastavení přístupových práv terminálů BM-Finger na čipování docházky a otevírání dveří

APS mini.ed programová nadstavba pro základní vyhodnocení docházky. Příručka uživatele verze

Minimální požadavky na systém Linux a Windows na jednom disku Zrušení instalace Mandriva Linuxu... 23

Ladění ovladačů pomocí virtuálního stroje...2 Úvod...2 Ladění ovladačů pomocí dvou fyzických počítačů...2 Ladění ovladačů pomocí jednoho fyzického

Univerzální rezervační systém. Uživatelská příručka

ALGORITMIZACE A PROGRAMOVÁNÍ

Základní příkazy UNIXu (Linuxu)

01. HODINA. 1.1 Spuštění programu VB Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start.

Konfigurátor Duo. Manuál pro konfiguraci systémů DUO Standard / Basic. Obsah + vybraná nastavení: - 1 -

Základní typy struktur výpočetních systémů

OmniTouch 8400 Instant Communications Suite. Aplikace My Instant Communicator Desktop. Aplikace My Instant Communicator pro počítač.

Popis. Manuál Klávesové zkratky a příkazy - 1 -

Kerio IMAP Migration Tool

Transkript:

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky Správce virtuálních strojů Týmová semestrální práce z předmětu Operační systémy Kontakt na tým: kalwi@students.zcu.cz Členové týmu: Natalia Rubinova, A080082P Martin Sloup, A08N0111P Jiří Kučera, A08N0092P

Zadání Cílem semestrální práce je vytvořit model správce virtuálních strojů, který bude simulovat prostředí pro běh procesů, umožní jejich spuštění a ukončení, poskytne vstupy a výstupy, podpůrná API a z uživatelského hlediska použitelné rozhraní založené na textovém shellu. Uživatelský manuál Pro spuštění aplikace je vyžadováno JDK 5.0 nebo vyšší. Aplikaci je před spuštěním nutno zkompilovat, to se provede spuštěním scriptu: compile.bat Script vygeneruje soubor os.jar, který je možno spustit souborem: run.bat Následně se otevře konzolové okno a uživatel je požádán o zadání uživatelského jména. Po zadání se uživatel ocitne v shellu, kde může zadávat následující příkazy: cat, clear, echo, eightball, kill, ls, man ps, pstree, pwd, receive, send, shell, shutdown, sort. Podrobná nápověda k příkazům se vypíše příkazem man. V rámci konzole lze otevřít nové konzolové okno zkratkou CTRL+N. Konzoli je kromě standardních ovládacích prvků okna možné ukončit i klávesovou zkratkou CTRL+Q. V rámci konzolového okna je možné použít historii zadaných dat (řádků). Klávesami šipka nahoru a šipka dolu se prochází položkami historie. V aplikacích, které čtou ze standardního vstupu, lze tento vstup uzavřít klávesovou zkratkou CTRL+D. Většinu obsluhy operačního systému uživatel stráví v aplikaci shell. Kromě postupného spouštění jednotlivých příkazů je možné příkazy řetězit do kolony znakem roura (znak ) a přesměrovávat vstup a výstup této kolony znaky menší a větší (znaky < a > ). Pár příkladů: C:\>cat soubor.txt sort C:\>sort <netridene.txt >tridene.txt Samozřejmě je možné používat přesměrování vstupů / výstupů společně s řetězením příkazů: C:\>echo <netridene.txt sort >tridene.txt

Programátorský manuál Aplikace je členěna na čtyři logické celky: manažer virtuálních strojů, terminálové okno, virtuální uživatelské aplikace a textový shell (přestože se jedná též o uživatelskou aplikaci, kvůli rozsahu je pro něj vyčleněna samostatná kapitola). Tyto celky jsou vhodně uspořádány do balíků. Manažer virtuálních strojů - balík cz.zcu.kiv.os.manager Manažer (třída VMManager) tvoří jádro celého virtuálního operačního systému. Hlavní myšlenkou návrhu manažeru je to, že neběží ve vlastním samostatném vlákně, ale poskytuje služby virtuálním procesům, v jejichž vlákně je pak vykonává: - vytvoření virtuálního stroje (resp. procesu) vytvoří deskriptor procesu, který zařadí do datových struktur (tabulka a hierarchický strom procesů), vytvoří nový virtuální stroj, do kterého class loaderem načte uživatelskou aplikaci a spustí ji jako virtuální proces. - odstranění deskriptoru odstraní deskriptor skončeného procesu z datových struktur, uzavře jeho vstupy a výstupy a informuje o tom rodiče a sourozence. - spuštění procesu spustí všechny potomky zadaného procesu. - zabití procesu ukončí proces a všechny jeho potomky. - vypnutí virtuálního operačního systému ukončí všechny běžící procesy, čímž se zároveň ukončí virtuální operační systém. Další komponenty, které jsou součástí manažeru: Deskriptor procesu (tř. VMDescriptor) zastupuje proces v datových strukturách a obsahuje důležité informace o procesu: název procesu, argumenty procesu, PID, uživatelské jméno vlastníka procesu, odkaz na rodiče, potomka a následujícího sourozence, vstup, výstup a odkaz na samotný proces (resp. virtuální stroj). Virtuální stroj (tř. VirtualMachine) je běhové prostředí virtuálního procesu. Java bohužel neumožňuje zasahovat do běhu vlákna podobně jako skutečný operační systém do běhu procesů, proto je třeba alespoň základní funkcionalitu napodobit. Ve virtuálním stroji je kromě vlákna samotného procesu spuštěno druhé, servisní vlákno, které čeká na dokončení procesu, potomků a sourozenců a poté se postará o uzavření vstupů a výstupů a zrušení deskriptoru procesu. Třída také poskytuje API jak pro běžící proces, tak pro ovlivňování běhu procesu zvenčí, chová se tak jako aplikační rozhraní mezi jádrem a uživatelskými aplikacemi. Nejdůležitější metody: - spuštění procesu nebo kolony procesů důležité argumenty jsou pole procesů a jejich argumentů a vstup a výstup do/z kolony (více viz popis rour). - tisk na standardní výstup - čtení ze standardního vstupu - zjištění a nastavení aktuálního adresáře - ukončení procesu - volání služeb manažeru (zabití procesu, vypnutí stroje)

Obrázek 1: Schéma organizace manažeru virtuálních strojů Jsou-li uživatelské aplikace spuštěny v koloně, virtuální stroj, který kolonu spouští, jejich vstupy propojí rourami (tř. Pipe). Tato třída má pouze vstup a na něj napojený výstup oba tyto je pak možno předat procesu jako standardní vstup a výstup. Kromě toho ale byla zobecněna tak, že lze její vstup či výstup napojit na soubor a použít ji tak i v případě přesměrování vstupu/výstupu do souboru. - balík cz.zcu.kiv.os.manager.mailbox Tento balík obsahuje třídy související s možností posílání zpráv mezi uživateli. Především se jedná o třídu MailBox, která obsahuje metodu k přístupu do uživatelovy poštovní schránky (tř. UserMailBox). Poštovní schránka uživatele pak obsahuje metody pro přidání nové zprávy (reprezentovaná třídou MailBoxItem) do uživatelovy schránky a načtení zprávy ze schránky. Uživatelské aplikace - balík cz.zcu.kiv.os.bin Uživatelské aplikace jsou koncipovány jako samostatné nezávislé třídy jádro neví, jaké aplikace jsou přítomny, a snaží se je podle jejich názvu dynamicky načíst class loaderem. To umožňuje libovolně přidávat další aplikace, aniž by bylo třeba jakkoliv zasahovat do zbytku kódu. Jedinou výjimkou jsou hierarchické závislosti kořenových procesů init, login a shell, jejichž názvy jsou uloženy v konfigurační třídě cz.zcu.kiv.os.configuration. Každá aplikace dědí třídu virtuálního stroje, a musí implementovat jedinou abstraktní metodu main(), která běží ve vlákně procesu po jeho spuštění.

Je-li některá aplikace implementována více třídami, umístí se tyto třídy do vlastního podbalíku umístěného v balíku s aplikacemi, a to z toho důvodu, aby se class loader nepokoušel tyto třídy načíst jako uživatelské aplikace. Spouštěcí třída je samozřejmě umístěna ve výše uvedeném balíku. Shell - balík cz.zcu.kiv.os.bin.shell Aplikace shell (tř. cz.zcu.kiv.os.bin.shell) tvoří pro operační systém příkazovou řádku. Načítá uživatelem zadaný vstup (řetězec s příkazy). Tento vstup následně předá parseru, který vrátí seznam (kolonu) procesů, jejich argumenty a vstup a výstup kolony. Voláním API virtuálního stroje se vytvoří a spustí příslušné procesy. O propojení vstupů a výstupů procesů pomocí rour a přesměrování vstupu a výstupu kolony na patřičná zařízení (disk, klávesnice, obrazovka) se pak postará virtuální stroj. Po spuštění procesů shell čeká na dokončení běhu těchto procesů. Kromě spouštění dalších aplikací umožňuje také spouštět vlastní vestavěné příkazy. Mezi ně například patří příkaz cd, který voláním metody virtuálního stroje mění aktuální pracovní adresář procesu, nebo příkaz exit sloužící k ukončení shellu. Další funkcionalitou shellu je možnost automatického přijímání zpráv, které byly uživateli zaslány příkazem send. Přijaté zprávy jsou vypsány vždy před vstupem uživatele. Shell je rozsáhlá aplikace, proto je pro něj vytvořen další podbalík, ve kterém se nachází parser příkazů zadávaných v shellu. Samotný shell je umístěn v balíku společně s ostatními uživatelskými aplikacemi operačního systému. Parser vstupu z příkazové řádky (tř. Parser) se snaží rozpoznat bloky podle gramatiky, jež je popsaná níže. Zároveň se provádí syntaktická analýza řádku. Pokud se narazí na problém, dojde k vyhození výjimky a ukončení procesu parsování. Ve výjimce je obsažena informace o pozici, kde nastala chyba. Speciální vlastností parseru je podpora uvozovek a escape sekvencí (zadávaných zpětným lomítkem). Výstupem parseru je kolona procesů, jejich vstupní parametry a případné přesměrování vstupu a výstupu. Gramatika parseru Gramatika, podle které parser rozpoznává bloky příkazu: ŘÁDEK PŘÍKAZ VSTUP { PŘÍKAZ} VÝSTUP PŘÍKAZ JMÉNO { ARGUMENT } JMÉNO řetězec ARGUMENT řetězec VSTUP e < JMÉNO VÝSTUP e > JMÉNO Terminálové okno - balík cz.zcu.kiv.os.console Okno terminálové konzole (tř. ConsoleWindow) představuje jednoduchou implementaci vstupněvýstupního uživatelského rozhraní operačního systému. Kromě zadávání vstupu z klávesnice a vypisování výstupu na obrazovku umožňuje použití zkratek pro vytvoření nového okna konzole a uzavření standardního vstupu (vstupu z klávesnice). Také obsahuje podporu historie zadaných řádků z klávesnice (tř. ConsoleHistory).

InputStream konzole (tř. ConsoleInputStream) implementuje abstraktní metody třídy InputStream, čímž do třídy ConsoleWindow přináší podporu výstupu konzole (tedy vstupu programu, též vstupu z klávesnice) a následné zapouzdření pomocí již existujícího API Javy dále v programu. OutputStream konzole (tř. ConsoleOutputStream) kromě implementace abstraktních metod třídy OutputStream (výstupu na konzolové okno) obsahuje metody pro přístup ke specifickým vlastnostem třídy ConsoleWindow, jako jsou například metody vracející velikost okna ve znacích. Ty jsou využity při formátování výstupu z určitých příkazů operačního systému. Historie příkazů konzolového okna (tř. ConsoleHistory) uchovává seznam již zadaných řádků do konzolového okna a pomocí jednoduchého rozhraní umožňuje jednoduchou manipulaci s tímto seznamem. Závěr Realizovali jsme všechny povinné body zadání. Byť se jedná jen o model, snažili jsme se co nejvíce se přiblížit skutečnému systému. Procesy jsou kromě tabulky procesů organizovány v hierarchickém stromu sourozenců v koloně, rodičů a potomků. Kladen byl důraz na bezpečnost, např. API virtuálního stroje je napsáno tak, aby si procesy mezi sebou nemohly navzájem měnit své parametry. Mezi rozšíření oproti zadání patří: - víceuživatelský systém (pro jednoduchost a snadnou demonstraci funkčnosti aplikace ale nejsou ošetřena uživatelská práva např. při zabíjení procesů jiných uživatelů) - prompt ukazuje celou cestu k aktuálnímu adresáři - podporován je adresář ~ jako domácí adresář - podpora zasílání zpráv mezi uživateli - vlastní terminálová konzole - další příkazy shellu / uživatelské aplikace: o clear smazání textu v konzoli o debuginfo zobrazí některé ladicí informace o eightball jednoduchá textová hra pro účely ladění o pstree zobrazí běžící procesy v hierarchickém stromu o receive čeká na přijetí zprávy od jiného uživatele o send odešle zprávu jinému uživateli - dokumentace v angličtině Nedostatky a možná vylepšení: Implementace skupin úloh (jobs) by kromě možnosti spouštění procesu na pozadí umožnila i paralelní spouštění více potomků tak, aby nemusely čekat na dokončení svých sourozenců. Zároveň s implementací jobs by po zabití procesu všechny jeho potomci mohli pokračovat ve své činnosti. Bez této funkcionality je běh potomků zabitého procesu, resp. restrukturalizace stromu procesů příliš složitá, takže se ukončuje celý podstrom potomků. Vstup a výstup z konzole se pro procesy, které mají potomky, neuzamyká, takže rodi če musejí čekat na dokončení potomků místo toho, aby případně mohly pokračovat v práci, která vstup a výstup

nevyžaduje. Taktéž by bylo vhodnější, kdyby vstupy a výstupy měly počítadlo procesů, které je využívají při dosažení nulového počtu klientů by se vstup/výstup uzavřel. Současná implementace funguje tak, že vstup/výstup je uzavřen procesem, který jej použil jako první a od nějž všichni potomci tento vstup/výstup dědí (pro ně se uzavření I/O jen emuluje). Rozdělení práce mezi členy týmu: Jiří Kučera správce virtuálních strojů a související komponenty, administrativní záležitosti Martin Sloup shell, terminálová konzole, podpora zasílání zpráv mezi uživateli, správa SVN serveru Natalia Rubinova uživatelské aplikace, ladění, dokumentace v angličtině Přestože se jedná jen o demonstrační šuplíkovou aplikaci, její přínos pro členy týmu určitě není zanedbatelný. Nejvýznamnějším přínosem je procvičení práce s vlákny, zjištění možností a nedostatků práce s vlákny v jazyce Java, dále pak prohloubení znalostí principů fungování operačního systému (především správy procesů). A nakonec každá týmová semestrální práce přispívá k rozvoji schopností práce v týmu.