Diplomová práce zkoumá a popisuje možnosti využití unmanaged kódu pomocí programovacího jazyka C# v řízeném prostředí Common Language Runtime (CLR). Práce se skládá celkem z pěti částí. Teoretická část se převážně věnuje rozboru toho, jak CLR pracuje s pamětí. Dále jsou krátce rozebrány způsoby interoperability mezi řízeným a neřízeným kódem a stručně je popsána datová struktura, která byla využita při testování. V praktické části je za použití jazyků C#, C a C++ a technologií Platform Invoke a C++/CLI realizovaná komunikace mezi řízeným a nativním kódem. Dále jsou popsány nejužitečnější části jednotlivých implementací. Následuje grafická prezentace a porovnání testů navržených implementací. V závěru práce jsou vyhodnoceny výsledky testů a je uvedeno doporučení pro správné používání interoperability v .NET.
Anotace v angličtině
This diploma thesis explores and describes the ways of using unmanaged code by the C# programming language in the managed Common Language Runtime (CLR) environment. The theoretical part is mainly devoted how CLR works with memory. Further, the methods of interoperability between managed and native code are briefly discussed. Farther the data structure that using in tests is briefly described. The second part is practical, in which is implemented the communication between managed and native code, using C#, C and C++ with Platform Invoke and C ++/CLI technologies. Then author describes the most useful parts of each implementations and graphically presents results of his own tests and their comparisons. At the end of this thesis, the author evaluates the most impotent test results and give his recommendations for the correct use of interoperability in .NET.
Klíčová slova
C++/CLI, Common Language Runtime, nativní kód, Platform Invoke, .NET Framework, programovací jazyky C#, C, C++, unmanaged kód
Klíčová slova v angličtině
C++/CLI, Common Language Runtime, native code, Platform Invoke, .NET Framework, programming languages C#, C, C++, unmanaged code
Rozsah průvodní práce
58 s. (65 782 znaků)
Jazyk
CZ
Anotace
Diplomová práce zkoumá a popisuje možnosti využití unmanaged kódu pomocí programovacího jazyka C# v řízeném prostředí Common Language Runtime (CLR). Práce se skládá celkem z pěti částí. Teoretická část se převážně věnuje rozboru toho, jak CLR pracuje s pamětí. Dále jsou krátce rozebrány způsoby interoperability mezi řízeným a neřízeným kódem a stručně je popsána datová struktura, která byla využita při testování. V praktické části je za použití jazyků C#, C a C++ a technologií Platform Invoke a C++/CLI realizovaná komunikace mezi řízeným a nativním kódem. Dále jsou popsány nejužitečnější části jednotlivých implementací. Následuje grafická prezentace a porovnání testů navržených implementací. V závěru práce jsou vyhodnoceny výsledky testů a je uvedeno doporučení pro správné používání interoperability v .NET.
Anotace v angličtině
This diploma thesis explores and describes the ways of using unmanaged code by the C# programming language in the managed Common Language Runtime (CLR) environment. The theoretical part is mainly devoted how CLR works with memory. Further, the methods of interoperability between managed and native code are briefly discussed. Farther the data structure that using in tests is briefly described. The second part is practical, in which is implemented the communication between managed and native code, using C#, C and C++ with Platform Invoke and C ++/CLI technologies. Then author describes the most useful parts of each implementations and graphically presents results of his own tests and their comparisons. At the end of this thesis, the author evaluates the most impotent test results and give his recommendations for the correct use of interoperability in .NET.
Klíčová slova
C++/CLI, Common Language Runtime, nativní kód, Platform Invoke, .NET Framework, programovací jazyky C#, C, C++, unmanaged kód
Klíčová slova v angličtině
C++/CLI, Common Language Runtime, native code, Platform Invoke, .NET Framework, programming languages C#, C, C++, unmanaged code
Zásady pro vypracování
Popište možnosti řízení pamětí v prostředí Common Language Runtime a způsoby využiti unmanaged kódu v jazyce C\symbol{35}.
Rozeberte vybrané datové struktury z hlediska optimalizace pomocí unmanaged kódu.
Navrhněte vhodné řešení z hlediska přístupu k datovým strukturám v paměti RAM.
Vytvořte ukázkové kódy představující klíčové prvky řešení.
Demonstrujte výsledky a formulujte závěr.
Zásady pro vypracování
Popište možnosti řízení pamětí v prostředí Common Language Runtime a způsoby využiti unmanaged kódu v jazyce C\symbol{35}.
Rozeberte vybrané datové struktury z hlediska optimalizace pomocí unmanaged kódu.
Navrhněte vhodné řešení z hlediska přístupu k datovým strukturám v paměti RAM.
Vytvořte ukázkové kódy představující klíčové prvky řešení.
Demonstrujte výsledky a formulujte závěr.
Seznam doporučené literatury
GOLDSHTEIN, Sasha, Dima ZURBALEV a Ido FLATOW. Pro .NET performance. Berkeley, Calif.: Apress, \matsymb{lbrack}2012\matsymb{rbrack}. Expert\symbol{39}s voice in .NET. ISBN 978-1-4302-4458-5.
RICHTER, Jeffrey. CLR via C\symbol{35}. Fourth edition. Redmond, Washington: Microsoft, \matsymb{lbrack}2012\matsymb{rbrack}. ISBN 978-0-735-66745-7.
WIRTH, Niklaus. Algorithms data structures=programs. Englewood Cliffs, N.J.: Prentice-Hall, c1976. ISBN 01-302-2418-9.
AHO, Alfred V, John E HOPCROFT a Jeffrey D ULLMAN. Data structures and algorithms. Reading, Mass.: Addison-Wesley, c1983. ISBN 02-010-0023-7.
NAGEL, Christian. Professional C\symbol{35} 6 and .Net Core 1.0. Indianapolis, IN: John Wiley, 2016. ISBN 9781119096603.
Standard ECMA-372 C++/CLI Language Specification \matsymb{lbrack}online\matsymb{rbrack}. \matsymb{lbrack}cit. 2018-09-24\matsymb{rbrack}. Dostupné z: http://www.ecma-international.org/publications/standards/Ecma-372.htm
Seznam doporučené literatury
GOLDSHTEIN, Sasha, Dima ZURBALEV a Ido FLATOW. Pro .NET performance. Berkeley, Calif.: Apress, \matsymb{lbrack}2012\matsymb{rbrack}. Expert\symbol{39}s voice in .NET. ISBN 978-1-4302-4458-5.
RICHTER, Jeffrey. CLR via C\symbol{35}. Fourth edition. Redmond, Washington: Microsoft, \matsymb{lbrack}2012\matsymb{rbrack}. ISBN 978-0-735-66745-7.
WIRTH, Niklaus. Algorithms data structures=programs. Englewood Cliffs, N.J.: Prentice-Hall, c1976. ISBN 01-302-2418-9.
AHO, Alfred V, John E HOPCROFT a Jeffrey D ULLMAN. Data structures and algorithms. Reading, Mass.: Addison-Wesley, c1983. ISBN 02-010-0023-7.
NAGEL, Christian. Professional C\symbol{35} 6 and .Net Core 1.0. Indianapolis, IN: John Wiley, 2016. ISBN 9781119096603.
Standard ECMA-372 C++/CLI Language Specification \matsymb{lbrack}online\matsymb{rbrack}. \matsymb{lbrack}cit. 2018-09-24\matsymb{rbrack}. Dostupné z: http://www.ecma-international.org/publications/standards/Ecma-372.htm
Přílohy volně vložené
1 DVD ROM
Přílohy vázané v práci
ilustrace, grafy, tabulky
Převzato z knihovny
Ne
Plný text práce
Přílohy
Posudek(y) oponenta
Hodnocení vedoucího
Záznam průběhu obhajoby
Vedoucí práce přečetl posudky
1. Otázka komise - Ing. Vala, Ph. D. - Počet tiků nebo ms ? 1 tik se rovná zhruba kolik ms ?
Student zodpověděl všechny otázky oponenta i komise