Model pamięci. Rafał Skinderowicz
|
|
- Jakub Lipiński
- 8 lat temu
- Przeglądów:
Transkrypt
1 Model pamięci Rafał Skinderowicz
2 Czym jest model pamięci Model pamięci dotyczy programów współbieżnych W programie współbieżnym może się zdarzyć, że dany wątek nie będzie widział od razu wartości zmiennej zmodyfikowanej przez inny wątek Model pamięci określa kiedy efekty operacji (na pamięci) wykonywanych w ramach wątku stają się widoczne dla pozostałych wątków
3 Motywacje Rozbieżności mogą pojawić się z dwóch powodów Braku spójności pamięci ze względu na użycie pamięci podręcznej W większości procesorów nie ma z tym problemu zapewniona jest spójność pamięci podręcznych (ang. cache coherency), np. za pomocą protokołu MESI Tymczasowy brak spójności ze względu na przetrzymywanie zmiennej w rejestrze procesora Zmiany kolejności wykonywanych instrukcji na poziomie programowym i sprzętowym: Stosowane powszechnie przez większość kompilatorów w celu optymalizacji Wewnątrz procesorów
4 Zmiana kolejności instrukcji Procesor w ramach optymalizacji może zmieniać kolejność w jakiej wykonuje instrukcje. Wykonanie zgodnie z porządkiem (ang. in-order execution): instrukcje są ładowane, wykonywane i kończone zgodnie z porządkiem kodu wygenerowanego przez kompilator jeżeli instrukcja potrzebuje operandu z pamięci operacyjnej, to konieczne jest jego załadowanie oczekiwanie schemat ten jest statyczny Wykonanie niezgodnie z porządkiem (ang. out-of-order execution) instrukcje są ładowane zgodnie z porządkiem w skompilowanym kodzie jeżeli nie ma załadowanych operandów dla instrukcji, to jest dodawana do kolejki instrukcji kolejna instrukcja jest ładowana po załadowaniu potrzebnych danych instrukcja jest usuwana z kolejki i wykonywana schemat ten jest dynamiczny
5 Przykład 1 Zmiana kolejności wykonywanych instrukcji nie może zmieniać semantyki programu musi prowadzić do tego samego wyniku, jak źródłowa lista instrukcji Przykład: 1 int a = b + 1; 2 int c = b * 3; 3 int d = a / 2; Instrukcje 1. oraz 3. muszą zostać wykonane jedna po drugiej występuje między nimi zależność danych Wynik instrukcji 2. nie jest powiązany z wynikami pozostałych
6 Przykład 1 Kompilator w ramach optymalizacji może zmienić kolejność wykonywania instrukcji, tak by wygenerować bardziej efektywny kod Z punktu widzenia programu sekwencyjnego, czy danego wątku nie ma to znaczenia Każdy wątek widzi efekty swoich instrukcji, tak jak gdyby były one wykonywane zgodnie z porządkiem programu Równoważne kolejności: 1 int a = b + 1; 2 int c = b * 3; 3 int d = a / 2;. 1 int c = b * 3; 2 int a = b + 1; 3 int d = a / 2;. 1 int a = b + 1; 2 int d = a / 2; 3 int c = b * 3;
7 Przykład 2 Optymalizacja pętli przez łączenie 1 int i, a[100], b[100]; 2 for (i = 0; i < 100; i++) 3 a[i] = 1; 4 for (i = 0; i < 100; i++) 5 b[i] = 2; Równoważna postać 1 int i, a[100], b[100]; 2 for (i = 0; i < 100; i++) { 3 a[i] = 1; 4 b[i] = 2; 5 }
8 Przykład 3 1 boolean warunek = true; 2 /*... */ 3 { 4 while (warunek) {} // czekaj 5 } Powyższa pętla w ramach optymalizacji może przez kompilator zamieniona na równoważną postać 1 { 2 while (true) {} // czekaj 3 }
9 Przykład 3 1 boolean warunek = true; 2 /*... */ 3 { 4 while (warunek) {} // czekaj 5 } Powyższa pętla w ramach optymalizacji może przez kompilator zamieniona na równoważną postać 1 { 2 while (true) {} // czekaj 3 } Gdybyśmy użyli volatile boolean warunek = true; taka zmiana nie byłaby możliwa
10 Przykład 4 Załóżmy, że wątki A i B wykonują jednocześnie, odpowiednio, metody read() oraz write() 1 class Reordering { 2 int x = 0, y = 0; 3 public void write() { 4 x = 1; 5 y = 2; 6 } 7 public int [] read() { 8 int r1 = y; 9 int r2 = x; 10 return new int [] { r1, r2 }; 11 } 12 } Można by się spodziewać, że wątek B zobaczy jedną z dwóch konfiguracji: r1 = 0 oraz r2 = 0 r1 = 2 oraz r2 = 1
11 Przykład 3 Załóżmy, że wątki A i B wykonują jednocześnie, odpowiednio, metody read() oraz write() 1 class Reordering { 2 int x = 0, y = 0; 3 public void write() { 4 x = 1; 5 y = 2; 6 } 7 public int [] read() { 8 int r1 = y; 9 int r2 = x; 10 return new int [] { r1, r2 }; 11 } 12 } Jednak może się również zdarzyć, że wątek B na skutek zmiany kolejności instrukcji w wierszach 4. i 5. zobaczy wartości r1 = 2 oraz r2 = 0
12 Model pamięci Model pamięci określa kiedy wątek zobaczy efekty instrukcji innego wątku Modele można podzielić na: mocne (ang. strong) zmiany są widoczne natychmiastowo słabe (ang. weak) zmiany widoczne są z opóźnieniem, zazwyczaj po wykonaniu, tzw. bariery pamięci (ang. memory barrier lub memory fence) Bariery na poziomie sprzętu realizowane są przez specjalne rozkazy procesora mocno zależne od konkretnej architektury Bariery na poziomie oprogramowania wymuszają względną kolejność wykonania instrukcji przed i po barierze
13 Bariery pamięci Podsumowując, bariera pamięci wprowadza relację poprzedzania (ang. happens before) między grupami instrukcji
14 Bariery pamięci Podsumowując, bariera pamięci wprowadza relację poprzedzania (ang. happens before) między grupami instrukcji Wracając do przykładu: 1 public void write() { 2 x = 1; 3 // Tutaj przydałaby się bariera 4 y = 2; 5 } 6 public int [] read() { 7 int r1 = y; 8 int r2 = x; 9 return new int [] { r1, r2 }; 10 }
15 Bariery pamięci Podsumowując, bariera pamięci wprowadza relację poprzedzania (ang. happens before) między grupami instrukcji Wracając do przykładu: 1 public void write() { 2 x = 1; 3 // Tutaj przydałaby się bariera 4 y = 2; 5 } 6 public int [] read() { 7 int r1 = y; 8 int r2 = x; 9 return new int [] { r1, r2 }; 10 } Bariery pamięciowe w językach wysokiego poziomiu zazwyczaj wstawiane są w sposób niejawny
16 Model pamięci Javy W Javie bariery pamięci wstawiane są niejawnie, m.in. przy okazji synchronizacji na monitorze za pomocą synchronized za pomocą blokad / semaforów przez monitor należy tu rozumieć obiekt, na rzecz którego zakładana jest blokada Synchronizacja gwarantuje, że efekty wykonania synchronizowanego bloku będą widoczne dla innych wątków, które będą synchronizowane na tym samym monitorze
17 Model pamięci Javy przykład 1 int data[] = new int [] { 0, 0, 0, 0, 0 }; 2 boolean is_ready = false; 3 void init_data() { 4 for( int i=0; i < 5; ++i ) 5 data[i] = i; 6 is_ready = true; 7 } CPU może wykonać powyższy fragment z zachowaniem różnej kolejności instrukcji 1 store data[0] 0 2 store data[1] 1 3 store data[2] 2 4 store data[3] 3 5 store data[4] 4 6 store is_ready 1 1 store data[3] 3 2 store data[4] 4 3 store is_ready 1 4 store data[0] 0 5 store data[1] 1 6 store data[2] 2
18 Model pamięci Javy przykład Jeżeli użyjemy bloku synchronized 1 void init_data() { 2 synchronized( this ) { 3 for( int i=0; i < 5; ++i ) 4 data[i] = i; 5 } 6 is_ready = true; 7 return data; 8 } to niejawnie zostanie wstawiona bariera pamięciowa 1 store data[3] 3 2 store data[4] 4 3 store data[0] 0 4 store data[1] 1 5 store data[2] 2 6 fence 7 store is_ready 1 Teraz is ready = true zawsze będzie wykonane po zakończeniu bloku
19 Model pamięci Javy W poniższym przykładzie wątek A wykonał metodę put() wstawiając nowy obiekt do kolejki. Wątek B wykonuje później metodę get() jednak nie ma gwarancji, że zobaczy element wstawiony przez wątek A, ponieważ synchronizacja wykonywana jest na różnych obiektach ( lock1 i lock2 ) 1 void put(object o) throws InterruptedException { 2 try { 3 lock1.lock(); } finally { 6 lock1.unlock(); 7 } 8 } 9 Object get() throws InterruptedException { 10 try { 11 lock2.lock(); // Uwaga -- inna blokada } finally { 14 lock2.unlock(); 15 } 16 }
20 Bariera pamięci volatile Model pamięci Javy gwarantuje, że wszystkie wartości zmiennych widoczne dla wąteku przed odczytem / zapisem zmiennej volatile będą również widoczne dla każdego innego wątku, który dokona (później) odczytu / zapisu tej samej zmiennej 1 Map configoptions; 2 char[] configtext; 3 volatile boolean initialized = false; 4 // Wątek A 5 configoptions = new HashMap(); 6 configtext = readconfigfile(filename); 7 processconfigoptions(configtext, configoptions); 8 initialized = true; 9 // Wątek B 10 while (!initialized) 11 sleep(); 12 // <- mamy gwarancję, że configoptions zostało zainicjowane
21 Model pamięci Javy relacja poprzedzania Model pamięci Javy wprowadza relację poprzedzania między niektórymi operacjami, m.in.: Każda instrukcja w wątku poprzedza każdą inną instrukcję, która następuje po niej zgodnie z porządkiem programu Zwolnienie blokady porzedza kolejne założenie tej blokady Zapis do zmiennej ulotnej poprzedza kolejne odczyty z tej zmiennej Wywołanie Thread.start() poprzedza każdą inną operację w wątku Wywołanie Thread.join() jest porzedzone przez wszystkie pozostałe operacje
22 Model pamięci Javy słowo kluczowe final Zmienna zadeklarowana jako finalna musi zostać zainicjowana przed zakończeniem działania konstruktora 1 public class MyClass { 2 private final int myfield = 3; 3 public MyClass() { } 6 } 1 public class MyClass { 2 private final int myfield; 3 public MyClass() { myfield = 3; } 8 } Model pamięci gwarantuje, że odczyt zmiennych finalnych jest bezpieczny, nawet bez synchronizacji, jednak pod warunkiem...
23 Model pamięci Javy słowo kluczowe final Nie można udostępniać referencji do konstruowanego obiektu ( this ) zanim konstruktor nie zakończy pracy 1 public class NumberPrinter { 2 public NumberPrinter(int number, EventSource source) { 3 this.number = number; // inicjalizacja pola finalnego 4 source.registerlistener( 5 new EventListener() { 6 public void onevent() { 7 printnumber(); // niejawne odniesienie do this! 8 } 9 }); 10 // EventSource może wywołać printnumber(), a konstruktor 11 // jeszcze nie zakończył pracy! 12 } 13 public void printnumber() { System.out.println(number); } 14 final int number; 15 }
24 Model pamięci Javy statyczna inicjalizacja Jeżeli wartość statycznej zmiennej jest ustalana za pomocą statycznej inicjalizacji, to każdy wątek będzie widział wartość po jej ustaleniu bez konieczności dodatkowej synchronizacji 1 class ANumber { 2 static final Double value; 3 static { 4 value = Math.sin(Math.PI); 5 } 6 // lub po prostu 7 // static final Double value = Math.sin(Math.PI); 8 }
25 Model pamięci Javy statyczna inicjalizacja Przykład wykorzystania do efektywnej implementacji singletona 1 class Singleton { 2 private static class SingletonHolder { 3 public static Singleton INSTANCE = new Singleton(); 4 } 5 private Singleton() { // konstruktor 6 System.out.println("Tworzę instancję"); 7 } 8 public static Singleton getinstance() { 9 return SingletonHolder.INSTANCE; 10 } 11 } Implementacja ta jest leniwa, tzn. klasa SingletonHolder zostanie zainicjowana dopiero, gdy będzie potrzebna, tj. gdy nastąpi pierwsze wywołanie metody getinstance()
26 Singleton w C# Dla porównania, implementacja singletona w C# za pomocą klasy Lazy<T> 1 public class MySingleton { 2 private static readonly Lazy<MySingleton> mysingleton = 3 new Lazy<MySingleton>(() => new MySingleton()); 4 5 private MySingleton() { } 6 7 public static MySingleton Instance { 8 get { 9 return mysingleton.value; 10 } 11 } 12 }
27 Modele pamięci w popularnych językach programowania Java C# C++ dopiero od standardu C++11 Clojure Erlang
28 Modele pamięci uwagi Niestety, modele pamięci dla poszczególnych języków programowania różnią się Pisanie poprawnych i efektywnych programów współbieżnych wymaga zapoznania się z konkretnym modelem Zazwyczaj nie ma istotnych różnic między utartymi mechanizmami, jak np. blokady, semafory, czy monitory Dzięki dobrej znajomości modelu pamięci w danym języku programowania jesteśmy w stanie pisać programy nie tylko poprawne, ale i o większej wydajności
29 Modele pamięci uwagi Przykład z książki C# 4.0 in a Nutshell, J. Albahari 1 class IfYouThinkYouUnderstandVolatile { 2 volatile int x, y; 3 void Test1() { // Executed on one thread 4 x = 1; // Volatile write (release-fence) 5 int a = y; // Volatile read (acquire-fence) } 8 void Test2() { // Executed on another thread 9 y = 1; // Volatile write (release-fence) 10 int b = x; // Volatile read (acquire-fence) } 13 }
30 Modele pamięci uwagi Przykład z książki C# 4.0 in a Nutshell, J. Albahari 1 class IfYouThinkYouUnderstandVolatile { 2 volatile int x, y; 3 void Test1() { // Executed on one thread 4 x = 1; // Volatile write (release-fence) 5 int a = y; // Volatile read (acquire-fence) } 8 void Test2() { // Executed on another thread 9 y = 1; // Volatile write (release-fence) 10 int b = x; // Volatile read (acquire-fence) } 13 } Zarówno a, jak i b mogą otrzymać wartość 0, ponieważ kolejność istrukcji odczytu i zapisu zmiennych volatile może zostać zmieniona
Model pamięci. Rafał Skinderowicz
Model pamięci Rafał Skinderowicz Czym jest model pamięci Model pamięci dotyczy programów współbieżnych W programie współbieżnym może się zdarzyć, że dany wątek nie będzie widział od razu wartości zmiennej
Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().
Wątki Streszczenie Celem wykładu jest wprowadzenie do obsługi wątków w Javie. Czas wykładu 45 minut. Definiowanie wątków jako klas potomnych Thread Nadpisanie metody run(). class Watek extends Thread public
Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.
1/8 Singleton Cel: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej. Przykład: Niekiedy ważne jest, aby tworzyć tylko jedną instancję jakiejś klasy. Globalne zmienne
Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1
Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie
Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Procesy i wątki Proces posiada samodzielne środowisko wykonawcze. Proces posiada własny zestaw podstawowych zasobów w czasie wykonywania; W szczególności, każdy proces ma własną przestrzeń pamięci. W uproszczeniu
Programowanie współbieżne Laboratorium nr 12
Programowanie współbieżne Laboratorium nr 12 Uwaga!!! Wyniki uruchomionych programów mogą zależeć od sprzętu (ilość procesorów, rdzeni itp.), systemu operacyjnego, obciążenia systemu operacyjnego, ilości
Język Java wątki (streszczenie)
Programowanie współbieżna Język Java wątki (streszczenie) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Języka Java wątki Autor:
Współbieżność w środowisku Java
Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych
JAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1
Programowanie równoległe i rozproszone Monitory i zmienne warunku Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności Problem producentów i konsumentów: jedna grupa procesów
Programowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003
Obliczenia równoległe i rozproszone w JAVIE Michał Kozłowski 30 listopada 2003 Wątki w JAVIE Reprezentacja wątków jako obiektów Uruchamianie i zatrzymywanie wątków Realizacja wątków Ograniczenia Mechanizmy
Programowanie współbieżne Wykład 5. Rafał Skinderowicz
Programowanie współbieżne Wykład 5 Rafał Skinderowicz Monitory motywacje Mechanizmy synchronizacji takie jak blokady (zamki) semafory pozwalają efektywnie rozwiązywać dostępu do współdzielonych zasobów,
Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 11.1 abstrakcyjne Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post
Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego
Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować
Java. Programowanie Obiektowe Mateusz Cicheński
Java Programowanie Obiektowe Mateusz Cicheński Wielowątkowość Proces a wątek? Thread vs Runnable sleep(), interrupt(), join() Problemy wielowątkowości Obiekty niemodyfikowalne (immutable) Serializacja
Programowanie obiektowe
Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje
Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]
1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie
Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego
1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4
Spis treści 1 Wątki 1 2 Tworzenie wątków 1 3 Synchronizacja 3 4 Dodatki 3 5 Algorytmy sortowania 4 6 Klasa Runnable 4 Temat: Wątki Czym są wątki. Grafika. Proste animacje. Małe podsumowanie materiału.
Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.
Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.
Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody
Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1
Przetwarzanie wielowątkowe przetwarzanie współbieżne Krzysztof Banaś Obliczenia równoległe 1 Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np. komputery macierzowe)
Platformy Programistyczne Podstawy języka Java
Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo
Wątki w Javie. Piotr Tokarski
Wątki w Javie Piotr Tokarski Wprowadzenie Co to są wątki? Co to są wątki? Każdy program ma przynajmniej jeden wątek Co to są wątki? Każdy program ma przynajmniej jeden wątek Wątki są po to, by symulować
Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1
Procesy i wątki Krzysztof Banaś Obliczenia równoległe 1 Procesy i wątki Proces: ciąg rozkazów (wątek główny) i ewentualnie inne wątki stos (wątku głównego) przestrzeń adresowa dodatkowe elementy tworzące
Język Java wątki (streszczenie)
Programowanie współbieŝna Język Java wątki (streszczenie) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Podstawowe pojęcia: procesy
Programowanie wielowątkowe. Tomasz Borzyszkowski
Programowanie wielowątkowe Tomasz Borzyszkowski Wątki a procesy Jako jeden z niewielu języków programowania Java udostępnia użytkownikowi mechanizmy wspierające programowanie wielowątkowe. Program wielowątkowy
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
Java: interfejsy i klasy wewnętrzne
Java: interfejsy i klasy wewnętrzne Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 INTERFEJSY Interfejs to opis co klasa implementująca dany interfejs powinna robić, ale bez określania
Java - tablice, konstruktory, dziedziczenie i hermetyzacja
Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja
Języki i Techniki Programowania II. Wykład 7. Współbieżność 1
Języki i Techniki Programowania II Wykład 7 Współbieżność 1 Programy, Procesy, Wątki Program to zestaw instrukcji do wykonania, dane do przetworzenia, mechanizmy sterujące (stos) Proces w komputerze to
C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych
Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych mluckner@mini.pw.edu.pl http://www.mini.pw.edu.pl/~lucknerm Programy w Javie składają się z pakietów Pakiety zawierają definicje
Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1
Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów
Podstawy programowania obiektowego
Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie
Generatory. Michał R. Przybyłek
Generatory Michał R. Przybyłek 1 Wstęp Generator to potencjalnie nieskończony, leniwie obliczany, ciąg wartości. W zależności od tego, która ze stron decyduje o wygenerowaniu nowej wartości wyróżniamy
Programowanie równoległe i rozproszone. W1. Wielowątkowość. Krzysztof Banaś Programowanie równoległe i rozproszone 1
Programowanie równoległe i rozproszone W1. Wielowątkowość Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np.
Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017
Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania
Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C
#import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:
Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np
Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami
Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016
Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa
Wykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
Dziedziczenie. Tomasz Borzyszkowski
Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.
Multimedia JAVA. Historia
Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania
Aplikacje w Javie- wykład 11 Wątki-podstawy
1 Aplikacje w Javie- wykład 11 Wątki-podstawy Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/ http://docs.oracle.com/javase/9/docs/
Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.
Wielowątkowość Programowanie w środowisku rozproszonym. Wykład 1. Informacje organizacyjne Wymiar godzin: W-30, LAB-15 Zaliczenie wykonanie kilku programów i ich zaliczenie (w trakcie zajęć laboratoryjnych)
Dawid Gierszewski Adam Hanasko
Dawid Gierszewski Adam Hanasko Chcemy stworzyć klasę w której możemy przechowywać dwie zmienne dowolnych typów Tworzymy tyle różnych klas ile potrzeba: Class ParaInt{ int pierwszy; Int drugi; Class ParaButow{
C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Programowanie obiektowe
Programowanie obiektowe III. Refleksja Małgorzata Prolejko OBI JA16Z03 Plan Klasa Class. Analiza funkcjonalności klasy. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Wywoływanie
Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13
Klasy Klasa to grupa obiektów, które mają wspólne właściwości, a obiekt jest instancją klasy. Klasa w języku Java może zawierać: pola - reprezentują stan obiektu (odniesienie do pola z kropką), methods
Kurs programowania. Wykład 8. Wojciech Macyna
Wykład 8 Program bez watków, jeden procesor, trzy zadania Program z watkami, jeden procesor, trzy zadania Procesory wielordzeniowe, każde zadanie na osobnym procesorze Trzy zadania uruchomione w watkach
Klasy abstrakcyjne, interfejsy i polimorfizm
Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z
Systemy Rozproszone - Ćwiczenie 4
Systemy Rozproszone - Ćwiczenie 4 1 Synchronizacja wątków: myjnia samochodowa Poniżej znajduje się przykład ilustrujący klasyczny problem synchronizacji wątków. Obiekt klasy Car jest współdzielony przez
Programowanie obiektowe
Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do
Podstawy otwartych języków programowania Przechowywanie danych
Podstawy otwartych języków programowania Przechowywanie danych Wiktor Wandachowicz Sposoby przechowywania danych Typy podstawowe Pojedyncze obiekty Tablice obiektów i tablice typów podstawowych jednowymiarowe
Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,
Programowanie współbieżne Wykład 7. Iwona Kochaoska
Programowanie współbieżne Wykład 7 Iwona Kochaoska Poprawnośd programów współbieżnych Właściwości związane z poprawnością programu współbieżnego: Właściwośd żywotności - program współbieżny jest żywotny,
Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017
Wykład 8 10 maj 2017 Współbieżność Watki w JAVA-ie Współbieżność może być realizowana na poziomie systemu operacyjnego (procesy) lub na poziomie aplikacji (watki). W JAVA-ie powszechnie stosuje się watki.
Pola i metody statyczne. Klasy zawierające pola i metody statyczne
Instrukcja laboratoryjna nr 1 Programowanie w języku C 2 (C++ poziom zaawansowany) Pola i metody statyczne. Klasy zawierające pola i metody statyczne dr inż. Kaczmarek Tomasz mgr inż. Lasota Maciej dr
Programowanie komputerów
Programowanie komputerów Wykład 7: Programowanie wielowątkowe w Javie dr inż. Walery Susłow Współbieżność Programy współbieżne (concurrent software) aplikacje potrafiące wykonywać kilka operacji w tym
Języki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
Zaawansowane programowanie w języku C++ Klasy w C++
Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń
Podstawy współbieżności
Podstawy współbieżności Algorytmy i struktury danych. Wykład 6. Rok akademicki: 2010/2011 Od koncepcji współbieżności do systemów rozproszonych Współbieżnośd rozważany na poziomie koncepcyjnym sposób realizacji
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Podstawowe części projektu w Javie
Podstawowe części projektu w Javie Pakiet w Javie to grupa podobnych typów klas, interfejsów i podpakietów. Pakiet w Javie może być wbudowany lub zdefiniowany przez użytkownika. Istnieje wiele wbudowanych
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński
Java - wprowadzenie Programowanie Obiektowe Mateusz Cicheński O języku Czym jest Java Cechy charakterystyczne języka Przykładowe zastosowania Składnia języka Podstawowe typy Wybrane słowa kluczowe Plan
Aplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt
Programowanie obiektowe
Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;
Systemy operacyjne. Zajęcia 11. Monitory
Systemy operacyjne. Zajęcia 11. Monitory 1. Monitor to mechanizm zamykający całą pamięć wspólną i synchronizację w pojedynczym module. 2. Monitor posiada całą pamięć wspólną jako część 'prywatną': dostępu
Programowanie Obiektowe (Java)
1. Wprowadzenie do kontenerów Wykład ósmy Kontenery s ą obiektami, które potrafi ą przechowywa ć inne obiekty w określony sposób. O kontenerach można myśle ć jako o gotowych do użycia strukturach danych.
Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.
Laboratorium 7 Wstęp Jednym z podstawowych własności Javy jest wielowątkowość. Wiąże się to z możliwością współbieżnego wykonywania różnych operacji w ramach pojedynczej wirtualnej maszyny Javy (JVM).
Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki
Język C# pętle, sterowanie, wyjątki Język C# pętle Pętle: while ( ) do { while ( ); for ( ; ; ) foreach ( in
Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.
Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,
Wykład 5: Więcej o Klasach i Metodach
Wykład 5: Więcej o Klasach i Metodach Przeciążanie Metod Klasa posiada dwie lub więcej metod o tej samej nazwie ale różnych deklaracjach parametrów. Java używa liczby i typów argumentów by ustalić którą
PARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Dokumentacja do API Javy.
Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu
Języki Programowania II Wykład 3. Java podstawy. Przypomnienie
Języki Programowania II Wykład 3 Java podstawy Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo Przypadki użycia = opowiastki o używaniu systemu = wymagania
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
Programowanie 2. Język C++. Wykład 3.
3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane
Kurs programowania. Wykład 9. Wojciech Macyna
Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy
JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.
JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod
Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016
Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac
Monitory. Jarosław Kuchta
Monitory Jarosław Kuchta Co to jest monitor Monitor to zebrane w jednej konstrukcji programowej zmienne i operacje na tych zmiennych. Część tych operacji jest udostępnianych na zewnątrz monitora. Tylko
Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 4, część 1 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne
Programowanie obiektowe - 1.
Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która
Szablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz
Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania
Dziedziczenie. dr Jarosław Skaruz
Dziedziczenie dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com Dziedziczenie specjalizacja Dziedziczenie generalizacja Generalizacja-specjalizacja jest takim związkiem pomiędzy klasami,
Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21
Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Przydzielanie pamięci Poniżej przedstawiono w C++ dwie klasy obrazujące sposób rezerwacji pamięci. class Osoba char imie[30];
Programowanie obiektowe
Programowanie obiektowe Wykład 3: Tworzenie i usuwanie obiektów 3/10/2013 S.Deniziak: Programowanie obiektowe - Java 1 Deklaracje pól klasy class Klasa1 { int i; Klasa2 k = new Klasa2(); char c= x ; byte
procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak
Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Abstrakcja programowania współbieżnego Instrukcje atomowe i ich przeplot Istota synchronizacji Kryteria poprawności programów współbieżnych
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Java niezbędnik programisty spotkanie nr 3. Modyfikatory, jednostki kompilacji, tworzenie/inicjalizacja, odśmiecanie/ finalizacja...
Java niezbędnik programisty spotkanie nr 3 Modyfikatory, jednostki kompilacji, tworzenie/inicjalizacja, odśmiecanie/ finalizacja... 1 Definicja klasy [modyfikator] class nazwa_klasy { [modyfikator] nazwa_typu