Create
Learn
Share

Mgr2

rename
kari565's version from 2016-11-08 11:11

Section

Question Answer
17. Programowanie danych dzielonych, programowanie z przesyłaniem komunikatów.W zależności od architektury systemu preferowane są różne modele równoległości. Dla maszyn ze wspólną pamięcią stosuje się model z równoległością danych, natomiast dla maszyn z pamięcią rozproszoną stosuje się model programowania z przesyłaniem komunikatów. Model programowania z pamięcią wspólną Programowanie multiprocesorów musi uwzględniać ich architekturę a w szczególności charakterystykę dostępu do pamięci: 1. Wszystkie procesory mają dostęp do tego samego obszaru pamięci. 2. Jednostki przesyłania danych to bajty, słowa, bloki. 3. Pamięć jest zbudowana hierarchiczne (CACHE, pamięć główna). Czas dostępu do pamięci jest: - Równy dla każdego obszaru pamięci – architektura UMA - Różny dla różnych obszarów pamięci – architektura NUMA 4. Synchronizacja poprzez operacje jak muteksy, monitory semafory, pamięć transakcyjną. Programowanie z przekazywaniem komunikatów Model komunikujących się procesów: 1. Komputery składowe multikomputera komunikują się poprzez operacje rodzaj wejścia / wyjścia – komunikaty (Send, Receive). 2. Operacja wysłania komunikatu – Send specyfikuje: lokalny bufor danych (adres, wielkość) i proces na komputerze zdalnym 3. Operacja odbioru komunikatu – Receive specyfikuje: proces na zdalnym komputerze (opcjonalnie) i obszar na odbierany komunikat (adres, wielkość) na komputerze lokalnym. 4. Synchronizacja procesów poprzez komunikaty. 6. Model programowania mniej zależny od sprzętu niż dla modelu ze wspólną pamięcią
18. Mechanizmy synchronizacji dostępu do sekcji krytycznej.4. Semafor - zapewnienia, że tylko określona liczba wątków będzie mogła jednocześnie wykonać dany fragment kodu. Wyróżniamy semafory binarne (wartość 0 i 1), które dopuszczają maksymalnie jeden wątek oraz semafory ogólne, które umożliwiają jednoczesny dostęp określoną przez programistę liczbę wątków. Implementacja semafora wymaga zaprogramowania dwóch metod: wait oraz signal. Wejście do sekcji krytycznej wywołuję wait a wyjście wykonuje signal. Jeśli zasoby aktualnie są używane, metoda Wait będzie blokować dalsze wykonywanie kodu. Dopiero w momencie gdy sekcja krytyczna zostanie opuszczona(wywołanie Signal), warunek w Wait zostanie spełniony i dalszy kod będzie mógł się wykonać. 5. Muteks - szczególny rodzaj semaforów binarnych. Muteks może być zablokowany (ma wartość 1) lub odblokowany (ma wartość 0 - nie zablokowany). Najważniejszym problemem semaforów jest fakt, że są one globalne. Dowolny proces może je opuszczać albo podnosić. W muteksach jeśli jakieś zadanie zablokuje muteks, to tylko ono może ten muteks odblokować. 6. Monitor - połączenie modułu programistycznego z sekcją krytyczną. Zawiera zmienne współdzielone, do których uzyskiwany jest dostęp za pomocą eksportowanych procedur i funkcji, widocznych na zewnątrz monitora, które mogą zostać wywołane przez procesy. Programista korzystający z monitora nie musi myśleć o zapewnianiu wyłączności w dostępie do zmiennej dzielonej, robi to za niego automatycznie monitor. Jednocześnie co najwyżej jeden proces może być w trakcie wykonania kodu znajdującego się w monitorze.
19. Metodyka projektowania algorytmów równoległych.Aby zaprojektować algorytm równoległy stosuje się cztery kroki: 1. Podział - etap podziału ma za zadanie wyodrębnienie jak największej liczby drobnoziarnistych zadań, dzięki czemu maksymalizuje się ewentualną liczbę procesów, które można wykonywać równolegle 2. Projektowanie komunikacji - etap ten polega na stworzeniu schematu wg. którego wcześniej wyodrębnione zadania miałyby się ze sobą komunikować 3. Grupowanie - na tym etapie następuje próba zebrania zadań w gruboziarniste grupy - próbując zminimalizować w ten sposób komunikację. 4. Mapowanie - polega na przyporządkowaniu gruboziarnistych zdań do konkretnych procesorów, tak aby jak najefektywniej wykorzystać architekturę sprzętową
20. Czas wykonania programu rozproszonego.Na czas wykonania programu rozproszonego składają się takie elementy jak: 1. Czas obliczeń - czas wykonywania "właściwej" logiki programu. Czas obliczeń może się zmniejszać wraz z dodawaniem kolejnych procesorów, jeżeli obliczenia dają się zrównoleglać. 2. Czas komunikacji - czas poświęcony przez wątki na komunikację między sobą, np. kiedy jeden wątek przekazuje wyniki swoich obliczeń drugiemu wątkowi. Czas ten zwiększa się wraz ze zwiększaniem liczby procesorów. 3. Czas oczekiwania - czas w którym wątki "nic nie robią" ze względu na oczekiwanie na inne wątki - np. przez synchronizację barierową, lub przy oczekiwaniu na dostęp do sekcji krytycznej.
21. Modele wydajności aplikacji rozproszonych.Wydajność programu równoległego jest sprawą złożoną i posiada wiele aspektów. Należy rozważyć oprócz czasu wykonania i skalowalności modułu obliczeniowego mechanizmy, które generują dane, przechowują i przesyłają przez sieci, są przenoszone na i z dysku oraz przechodzą pomiędzy różnymi etapami obliczeń. Prawo Amdhala - przyspieszenie jest stosunkiem pomiędzy czasem wykonania programu na jednym procesorze a czasem wykonania odpowiedniego programu równoległego na wielu procesorach. W przetwarzaniu równoległym każdy algorytm posiada składnik sekwencyjny, który ogranicza przyspieszenie, które można uzyskać na komputerze równoległym. Jest proste do zastosowania w praktyce i pozwala uzyskać górną granicę przyspieszenia programu. Nie daje dokładnego oszacowania przyspieszenia programu. Ekstrapolacja z obserwacji - pojedynczy pomiar wydajności (lub nawet kilka pomiarów) służy tylko do określenia wydajności w wąskim regionie wielowymiarowej przestrzeni i jest często słabym wskaźnikiem wydajności w innych sytuacjach. Mierzone jest przyspieszenie na danym komputerze równoległym przy określonej liczbie procesorów i określonej wielkości problemu. Przypuszczalnie ten pojedynczy punkt przy małej ilości procesorów ma stanowić pomiar jakości algorytmu. Uzyskane przyspieszenie na dostępnych procesorach może - lub nie - być uważane za “dobre”. Analiza asymptotyczna - ukazuje, że algorytm wymaga O(N*logN) czasu na O(P) procesorach. Oznacza to, że istnieje stała c i minimalna wielkość problemu N0 taka, że dla każdego N > N0, koszt (N) ≤ c*N*logN na P procesorach. Ten związek mówi, jak koszta zmieniają się w zależności od N, gdy N i P są duże. Pokazuje jaki jest charakter złożoności algorytmu w zależności od rozmiaru problemu i liczby procesorów, w większości przypadków nie pozwala na opracowanie dokładnego modelu wydajności programu równoległego, ponieważ stała nie jest znana we wzorach analizy asymptotycznej oraz odnosi się ona do dużych N i P. Nie jest związana z problemami o średnim i małym rozmiarze.
22. Pragmy API OpenMP C/C++.#pragma omp atomic - dostęp do wskazanego obszaru pamięci jest atomowy - nie jest jednocześnie dostępny dla kilku wątków zapisujących. #pragma omp parallel - identyfikuje region który zostanie wykonany współbieżnie przez wiele wątków. #pragma omp for - rozdziela iteracje pętli for między wątki. #pragma omp parallel for - połączenie omp parallel i omp for; pozwala zdefiniować równolegle wykonywany region z pętlą for. #pragma omp ordered - wskazuje blok kodu który musi zostać wykonany sekwencyjnie. #pragma omp section, #pragma omp sections - wykorzystywane do tworzenia bloków (sekcji) kodu, z których każdy wykonywany jest współbieżnie. #pragma omp parallel sections - połączenie omp parallel i omp sections - wykorzystywane do definiowania regionu zawierającego jedną pragmę sekcji. #pragma omp single - definiuje sekcję kodu, która musi zostać wykonana przez jeden aktualnie dostępny wątek. #pragma omp master - definiuje sekcję kodu, która musi zostać wykonana przez wątek główny. #pragma omp critical - definiuje blok kodu który musi zostać wykonany tylko przez jeden wątek. #pragma omp barrier - definiuje punkt synchronizacyjny wątków w danym regionie. #pragma omp flush - identyfikuje punkt w którym kompilator upewnia się, że wszystkie wątki mają taki sam stan obiektów przechowywanych w pamięci. #pragma omp threadprivate - definiuje listę zmiennych prywatnych, widocznych tylko dla jednego wątku.
23. Omów model wytwarzania oprogramowania (ang. software lifecycle model) określany jako Code‐and‐Fix, jego zalety i wady.Model ten składa się z dwóch faz - programiści zazwyczaj zaczynają pisać kod bez przeprowadzenia fazy projektowania aplikacji. Na pewnym etapie dochodzi do testowania i konieczności naprawy znalezionych błędów przed wypuszczeniem produktu. Zalety: niski nakład wymagany do rozpoczęcia prac odpowiedni do małych, krótkich projektów Wady: brak możliwości oszacowania postępu i oceny ryzyka trudność w dodawaniu zmian nie jest jasne co i na kiedy zostanie dostarczone trudność w oszacowaniu jakości
24. Omów technologię Enterprise Java Beans.Enterprise Java Beans (EJB) – technologia działająca po stronie serwera, będąca elementem specyfikacji Java Enterprise Edition. Technologia EJB umożliwia szybki i uproszczony rozwój rozproszonych, transakcyjnych, bezpiecznych i przenośnych aplikacji opartych na technologii Java. Enterprise JavaBeans (EJB) to komponenty pracujące po stronie serwera aplikacji, reprezentujące procesy biznesowe (sprzedaż, magazynowanie, rozliczenia itp.). Komponenty EJB są uruchamiane i zarządzane w kontenerze EJB, środowisku uruchomieniowym stanowiącym część serwera aplikacji. Kontener dostarcza gotowe implementacje usług systemowych takich jak bezpieczeństwo czy obsługa transakcji, pozwalając twórcom aplikacji skupić się na logice biznesowej. EJB obsługują zdalnych i lokalnych klientów. Klient lokalny to komponent działający w tej samej maszynie wirtualnej Java, a klient zdalny to komponent działający w innej maszynie wirtualnej, być może na innym komputerze. Klientami dla EJB mogą być aplikacje Java, serwlety, JSP lub inne komponenty EJB. Ogólnie wyróżnia się 3 rodzaje komponentów EJB: sesyjne (z kodem przetwarzającym dane), encyjne (obiektowa reprezentacja danych), sterowane komunikatami (używane w przetwarzaniu asynchronicznym).
25. Omów technologię Java Naming and Directory Interface (JNDI).Java Naming and Directory Interface (JNDI) - interfejs Javy usług katalogowych, umożliwiający klientom wyszukiwanie danych oraz obiektów za pomocą nazw. Interfejs JNDI jest wykorzystywany przez interfejsy Java RMI oraz Java EE w celu wyszukiwania obiektów w sieci. Serwer aplikacji korzystający z JNDI wiąże określoną przez programistę nazwę z fizycznym obiektem i przechowuje go w repozytorium, a klient znając tę nazwę może za pomocą JNDI wyszukać taki obiekt i wywołać na nim odpowiednie metody. Obiekty takie mogą być wykorzystywane przez aplikacje znajdujące się na tym samym serwerze aplikacji, lub z zupełnie innego miejsca poprzez sieć za pomocą protokołu CORBA lub RMI. Interfejs posiada: mechanizm łączący obiekt z nazwą interfejs wyszukiwania katalogowego, który pozwala stosować podstawowe zapytania
26. Omów technologię Java Messaging System (JMS).JMS - zestaw interfejsów służący do wysyłania wiadomości między dwoma lub więcej klientami. Jest standardem komunikacji pozwalającym komponentom aplikacji bazującym na JEE na tworzenie, wysyłanie, odbieranie i odczytywanie wiadomości. Umożliwia to niezawodną, synchroniczną lub asynchroniczną komunikację komponentów rozproszonej aplikacji. Modele: point-to-point - wiadomości wysyłane są tylko do jednego odbiorcy, który sam zarządza kolejką komunikatów, publisher/subscriber - twórcy wiadomości definiują ich typy, które klienci mogą zasubskrybować; w modelu tym zarówno producent, jak i konsument wiadomości nie mają wiedzy o sobie.
27. Metody szacowania nakładów pracy nad oprogramowaniemocena przez eksperta - doświadczone osoby potrafią koszt realizacji nowego systemu, przez analogię - znalezienie podobnego do realizowanego przedsięwzięcia o znanym koszcie i oszacowanie ewentualnych różnic wycena dla wygranej − oszacowanie na podstawie kosztu oczekiwanego przez klienta i na podstawie kosztów podawanych przez konkurencję. przez dekompozycję − przedsięwzięcie dzieli się na mniejsze zadania, następnie sumuje się koszt poszczególnych zadań. metody algorytmicznie - Opisanie przedsięwzięcia przez wiele atrybutów liczbowych, następnie wyznaczenie wyniku z wykorzystaniem odpowiedniego algorytmu lub formuły matematycznej (np. model COCOMO lub Function Point Analysis) metoda delficka - użycie kilku niezależnych ekspertów, nie komunikujących się ze sobą. Każdy z nich szacuje koszty i nakłady oraz uzasadnia przedstawione wyniki. Koordynator metody zbiera wyniki od ekspertów. Jeżeli znacznie się różnią, tworzy sumaryczne zestawienie (np. średnią) i wysyła do ekspertów dla ponownego oszacowania. Cykl jest powtarzany aż do uzyskania zgody pomiędzy ekspertami.
28. Zarządzanie ryzykiem w procesie wytwórczym.Zarządzanie ryzykiem jest procesem składających się z poniższych faz: Identyfikacja zagrożeń – stworzenie listy potencjalnych zagrożeń Analiza zagrożeń – stworzenie listy zagrożeń z przypisanymi priorytetami, prawdopodobieństwem oraz konsekwencjami Planowanie przeciwdziałania zagrożeniom – lista zagrożeń i strategia postępowania na wypadek zagrożenia + plan awaryjny Monitorowanie zagrożeń – ocenianie na bieżąco zagrożeń i powrót do fazy analizy zagrożeń Istotą zarządzania ryzykiem jest identyfikacja potencjalnych problemów na tyle wcześnie, aby działania zapobiegawcze i naprawcze mogły zostać zaplanowane z wyprzedzeniem i uruchamiane w odpowiednim momencie życia projektu. Dzięki temu ogranicza się wpływ negatywnych zdarzeń na cele projektu.
memorize

Recent badges