Principy Operačních Systémů
Total Page:16
File Type:pdf, Size:1020Kb
PROGRAMOVACÍ TECHNIKY STUDIJNÍ MATERIÁLY URČENÉ PRO STUDENTY FEI VŠB-TU OSTRAVA VYPRACOVAL: MAREK BĚHÁLEK OSTRAVA 2006 © Materiál byl vypracován jako studijní opora pro studenty předmětu Programovací techniky na FEI VŠB-TU Ostrava. Jiné použití není povoleno. Některé části vycházejí či přímo kopírují původní výukové materiály k předmětu Programovací techniky vytvořené doc. Ing Miroslavem Benešem Ph. D. Programovací techniky OBSAH 1 Průvodce studiem ..................................................................................... 5 1.1 Charakteristika předmětu Programovací techniky ............................. 5 1.2 Další informace k předmětu Programovací techniky ......................... 5 2 Nástroje pro tvorbu programu................................................................ 7 2.1 Tvorba aplikace .................................................................................. 8 2.2 Editor .................................................................................................. 9 2.3 Překladač .......................................................................................... 10 2.3.1 Překlad zdrojových souborů ..................................................... 11 2.3.2 Typy překladače ....................................................................... 11 2.4 Spojovací program (linker)............................................................... 12 2.5 Nástroje pro správu verzí.................................................................. 12 2.5.1 Concurrent Version System (CVS) .......................................... 14 2.5.2 Subversion ................................................................................ 17 2.5.3 Arch .......................................................................................... 17 2.6 Správa projektů................................................................................. 17 2.6.1 Vlastnosti nástrojů pro správu aplikace.................................... 18 2.6.2 Dávkové zpracování ................................................................. 19 2.6.3 Program make.......................................................................... 20 2.6.4 Další nástroje související s make.............................................. 21 2.6.5 ANT .......................................................................................... 21 2.6.6 SCons........................................................................................ 25 2.7 Ladění programů............................................................................... 25 2.8 Testování aplikace ............................................................................ 27 2.8.1 Typy testů ................................................................................. 27 2.8.2 Prostředí pro testování.............................................................. 28 2.8.3 JUnit.......................................................................................... 29 2.8.4 Další nástroje pro testování aplikace ........................................ 32 2.8.5 Vývoj řízený testy..................................................................... 33 2.9 Nástroje pro sledování chyb ............................................................. 34 2.9.1 Bugzilla..................................................................................... 34 2.10 Generování dokumentace ................................................................. 35 2.10.1 Program Javadoc....................................................................... 35 2.11 Nasazení aplikace ............................................................................. 36 2.12 Tvorba aplikací pro mezinárodní prostředí....................................... 36 3 Komponentní technologie ...................................................................... 39 3.1 Komponenty ..................................................................................... 39 3.1.1 Struktura komponenty .............................................................. 40 3.1.2 Životní cyklus komponenty...................................................... 41 3.2 JavaBeans ......................................................................................... 42 3.2.1 Co je to JavaBean komponenta ................................................ 42 3.2.2 Struktura Java Bean komponent ............................................... 43 3.2.3 Komponenta Counter................................................................ 45 3.3 COM ................................................................................................. 47 3.3.1 Typy komponent....................................................................... 48 3.3.2 Tabulka virtuálních metod........................................................ 50 3.3.3 Identifikace komponent ............................................................ 50 3.3.4 Rozhraní IUnknown ................................................................. 51 2 Programovací techniky 3.3.5 Příklad komponenty ..................................................................51 3.3.6 Použití komponenty v aplikaci..................................................53 3.3.7 COM+........................................................................................55 3.4 Komponenty v .NET .........................................................................55 3.4.1 Vývoj komponent v jazyce C#..................................................56 3.4.2 Distribuce komponenty .............................................................58 4 Správa paměti..........................................................................................61 4.1 Úrovně správy paměti .......................................................................62 4.2 Problémy správy paměti....................................................................63 4.3 Realizace správy paměti....................................................................64 4.3.1 Manuální správa paměti ............................................................64 4.3.2 Automatická správa paměti.......................................................65 4.4 Metody přidělování paměti ...............................................................65 4.4.1 Přidělování na zásobníku ..........................................................65 4.4.2 Přidělování paměti ze seznamu volných bloků.........................66 4.4.3 Přidělování s omezenou velikostí bloku (buddy system)..........68 4.5 Metody regenerace paměti ................................................................69 4.5.1 Dvoufázové značkování ............................................................69 4.5.2 Regenerace s kopírováním ........................................................70 4.5.3 Inkrementální regenerace ..........................................................70 4.5.4 Regenerace s počítáním odkazů ................................................70 4.5.5 Generační regenerace paměti ....................................................71 4.6 Správa paměti v programovacích jazycích........................................71 4.6.1 Programovací jazyk C ...............................................................71 4.6.2 Programovací jazyk C++...........................................................72 4.6.3 Správa paměti v jazyce Java......................................................72 4.6.4 Programovací jazyk C# .............................................................73 5 Programování aplikací s použitím vláken.............................................74 5.1 Procesy a vlákna................................................................................74 5.1.1 Výhody a nevýhody práce s více vlákny...................................75 5.1.2 Synchronizace ...........................................................................76 5.2 Vlákna v jazyce Java.........................................................................77 5.2.1 Synchronizace vláken v Javě.....................................................79 5.2.2 Příklad aplikace Producer – Customer......................................80 5.2.3 Závěr..........................................................................................83 6 Komprese dat...........................................................................................84 6.1 Základy teorie informace a kódování................................................85 6.2 Komprese textu .................................................................................86 6.2.1 Kódování ...................................................................................86 6.2.2 Huffmanovo kódování...............................................................86 6.2.3 Aritmetické kódování................................................................87 6.2.4 Slovníkové metody....................................................................88 6.2.5 Prediktivní metody ....................................................................90 6.3 Komprese zvukových souborů..........................................................91 6.3.1 Reprezentace zvukového signálu metodou PCM......................91 6.3.2 Metoda DPCM ..........................................................................92 6.3.3 Metoda MPEG Audio (MP3) ....................................................92 6.4 Komprese obrazu...............................................................................93 3 Programovací techniky 7 Literatura ................................................................................................ 95 4