Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Tomasz Kostarski. O czym będzie? Co to jest CLR? Obsługa typów danych (CTS i Pakowanie) Zarządzanie pamięcią (Odzyskiwanie i Finalizatory) Wspólna specyfikacja.

Podobne prezentacje


Prezentacja na temat: "Tomasz Kostarski. O czym będzie? Co to jest CLR? Obsługa typów danych (CTS i Pakowanie) Zarządzanie pamięcią (Odzyskiwanie i Finalizatory) Wspólna specyfikacja."— Zapis prezentacji:

1 Tomasz Kostarski

2 O czym będzie? Co to jest CLR? Obsługa typów danych (CTS i Pakowanie) Zarządzanie pamięcią (Odzyskiwanie i Finalizatory) Wspólna specyfikacja języka (CLS) Kod zarządzalny (MSIL, Metadane, Podzespoły, Wykonywanie kodu)

3 Co to jest CLR? Wspólne środowisko uruchomieniowe (Common Language Runtime) Wybór kompilatora dla języka Kompilacja do MSIL Wykonanie kodu zarządzanego

4 Obsługa typów danych Różne języki, różna składnia Podobne podstawowe pojęcia: Liczba całkowita Napis Zbieranie kodu w metody Grupowanie danych i metod w klasy

5 CTS - Wspólny zestaw typów danych Common Type System Zestaw typów, niezależny od składni języka Każdy język zgodny z CLR musi używać chociaż części typów z CTS, ale może mieć dowolną składnię W każdym języku można definiować własne typy danych spoza CTS Typy skalarne i referencyjne, wszystkie dziedziczą po Object Wszystkie typy skalarne to typy proste, na stosie pamiętamy ich wartość Typy referencyjne przechowują na stosie wskaźnik do swych wartości umieszczonych gdzieś w pamięci

6 Najważniejsze typy danych w CTS

7 Pakowanie (boxing) Konwersja typów skalarnych na typy referencyjne Używane np. przy przekazywaniu wartości skalarnej do metody oczekującej typu referencyjnego Możliwa powtórna konwersja przez rozpakowanie Większość języków z CLR wykonuje to automatycznie Oczywisty wpływ na wydajność

8 Zarządzanie pamięcią Pamięć dla danych przydzielana na stosie lub stercie – zmienne skalarne lub referencyjne Pamięć ze stosu zwalniana jest automatycznie Pamięć ze sterty po zapełnieniu zwalnia odśmiecacz (garbage collector) GC działa automatycznie, nie zaleca się jawnego uruchamiania go w aplikacji

9 Odzyskiwanie pamięci 1. Tworzenie aktualnej listy osiągalnych obiektów 2. Usuwanie obiektów spoza listy 3. Porządkowanie sterty w spójny blok zajętej pamięci 4. Poprawianie istniejących odwołań Najwięcej śmieci wśród najmłodszych obiektów Najstarsze obiekty przesuwane są ku końcowi sterty Odśmiecanie najmłodszych obiektów, a jeśli nadal brakuje pamięci przeglądanie starszych

10 Przed: Po:

11 Finalizatory Każdy obiekt na stercie posiada finalizator (domyślnie pusty) Kiedy GC znajdzie obiekt do usunięcia umieszcza go na liście oczekujących na finalizację Po przeszukaniu całej pamięci, dla każdego obiektu z listy wykonuje się jego finalizator Finalizator to nie destruktor – nie wiadomo kiedy i czy się wykona (aplikacja może zakończyć się wcześniej) Dla ważnych czynności sprzątających lepiej stworzyć odpowiednią metodę

12 CLS - Wspólna specyfikacja języka Common Language Specification Wywołanie kodu napisanego w jednym języku, z kodu napisanego w innym Wymaga to obsługi w różnych językach typów danych w ten sam sposób Określa jak duży podzbiór CTS musi byś zaimplementowany w języku, by osiągnąć zgodność Niektóre wymagania: obsługa większości typów skalarnych, najniższy indeks w tablicy musi być zerem

13 Kod zarządzany Kompilatory zamieniają kod źródłowy napisany w dowolnym języku na: Kod wykonywalny zapisany w MSIL Metadane, czyli informacje na temat kodu wykonywalnego i danych przez niego używanych W czasie wykonania aplikacji, CLR tłumaczy kod MSIL na kod natywny procesora Ta konwersja daje możliwość zarządzania wykonaniem aplikacji, stąd nazwa

14 MSIL - standardowy język pośredni Microsoft Intermediate Language Kod podobny do zestawu instrukcji procesora Polecenia MSIL bazują bezpośrednio na pojęciach zdefiniowanych w CTS Kod źródłowy z języków wyższego poziomu, kompilowany jest do wspólnego kodu pośredniego Dodatkowa warstwa abstrakcji daje nam potencjalną przenośność Możliwość sprawdzenia bezpieczeństwa typów przed uruchomieniem

15 Metadane Szczegółowy opis typów zdefiniowanych w kodzie zarządzanym, z którym są związane Przechowywane w tym samym pliku co kod MSIL Opisują między innymi: nazwy typów, zasięgi, po kim dziedziczy, interfejsy, metody, obsługiwane zdarzenia Z metadanych korzysta funkcja IntelliSense w Visual Studio.NET W metadanych opisane są też atrybuty

16 Podzespoły/Złożenia (assembly) Aplikacja składa się z różnych plików, kod/grafika/tekst Grupowanie plików stanowiących jeden logiczny moduł, udostępniający określoną funkcjonalność Manifest – odpowiednik metadanych dla pojedynczego podzespołu, zawiera: nazwę podzespołu (może to być nazwa silna), numer wersji podzespołu (wspólny i taki sam dla wszystkich modułów, które stanowią podzespół), informacje na temat kultury (lub języka) obsługiwanej przez podzespół, listę wszystkich plików, które stanowią podzespół, wraz z ich sumami kontrolnymi, listę innych wymaganych do pracy podzespołów wraz z numerami ich wersji.

17 Podzespoły c.d. Silna nazwa – unikatowa w całym systemie W CLR nazwa typu danych, to nazwa nadana + nazwa podzespołu w którym został zdefiniowany Większość podzespołów to pojedynczy plik DLL Instalacja podzespołu to po prostu skopiowanie plików nie wymaga dodania wpisów do rejestru

18 Wykonywanie kodu zarządzanego Przy uruchomieniu aplikacji, potrzebne podzespoły są odnajdywane i ładowane do pamięci Jeśli aplikacja nie wywoła żadnej metody z podzespołu, nie zostanie on w ogóle załadowany Podzespoły są najpierw szukane w GAC (Global Assembly Cache) - globalna pamięć podręczna podzespołów, dopiero później w innych miejscach Po załadowaniu podzespołów potrzebna jest jeszcze ich kompilacja z MSIL na kod natywny

19 Dwie metody kompilacji 1. JIT (just-in-time compilation) - kompilacją w samą porę Każda metoda kompilowana jest dopiero w czasie pierwszego uruchomienia Kompilacja następuje przy każdym uruchomieniu aplikacji 2. Przy użyciu NGEN (Native Image Generator) Kompiluje kod całego podzespołu do kodu binarnego Kod maszynowy umieszczany jest w pamięci podręcznej obrazów kodu natywnego (Native Image Cache) Pozwala to na szybsze uruchamianie aplikacji

20 KONIEC Źródła


Pobierz ppt "Tomasz Kostarski. O czym będzie? Co to jest CLR? Obsługa typów danych (CTS i Pakowanie) Zarządzanie pamięcią (Odzyskiwanie i Finalizatory) Wspólna specyfikacja."

Podobne prezentacje


Reklamy Google