wykład 11

Transkrypt

wykład 11
Wykład jest przygotowany dla IV semestru
kierunku Elektronika i Telekomunikacja.
Studia I stopnia
Dr inż. Małgorzata Langer
Architektura
komputerów
Prezentacja multimedialna
współfinansowana przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
w projekcie
„Innowacyjna dydaktyka bez ograniczeń
– zintegrowany rozwój Politechniki Łódzkiej –
zarządzanie Uczelnią,
nowoczesna oferta edukacyjna
i wzmacniania zdolności do zatrudniania
osób niepełnosprawnych”
Zadanie nr 30 – Dostosowanie kierunku Elektronika i Telekomunikacja
do potrzeb rynku pracy i gospodarki opartej na wiedzy
90-924 Łódź, ul. Żeromskiego 116,
tel. 042 631 28 83
www.kapitalludzki.p.lodz.pl
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Ocena działania komputera
•
•
•
Performance-to-cost-ratio
Współczynnik ten powinien być maksymalizowany, czyli jak
największe przetwarzanie przy jak najmniejszych kosztach
Trzy główne aspekty z punktu zwiększania przetwarzania:
- przepustowość procesora (szybkość wykonywania instrukcji)
- przepustowość pamięci (szybkość sprawdzania i zapisywania
danych i instrukcji)
- przepustowość I/O (jak największy strumień przepływu)
W zależności od tego, co jest głównym ograniczeniem dla danej
aplikacji, jest ona:
- processor bound, memory bound, I/O bound [uwięziona przez ..]
Architektura komputerów, część 11
2
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Miary oceny działania
•
•
•
•
•
•
MIPS – milion instrukcji na sekundę
MOPS – milion operacji na sekundę
MFLOPS (lub megaflops) – milion operacji zmiennoprzecinkowych
na sekundę
GFLPS (gigaflops) – miliard operacji zmiennoprzecinkowych na
sekundę
Teraflops – trylion (1012) operacji zmiennoprzecinkowych na
sekundę
MLIPS – milion logicznych działań na sekundę
Architektura komputerów, część 11
3
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Przykład obliczeń
•
Cykl instrukcji SHL wymaga 4 małych cykli. Zakładając, że jeden
mały cykl zajmuje 1 ns, to:
komputer może wykonać 1/(4x10-9) instrukcji SHL na sekundę (IPS),
czyli 0,25 x 109 IPS czyli 250 MIPS
LDA (Load Indirect) wymaga 12 cykli – co da w wyniku 83,3 MIPS
Sprzedawca będzie dążył do podawania przykładu pierwszego,
krytyczny klient przytoczy drugi …
Żadna z tych miar nie jest obiektywna
Architektura komputerów, część 11
4
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Średnia ilość cykli na instrukcję
•
•
•
•
Arytmetyczna średnia ilość małych cykli przypadających na
instrukcję też jest nieobiektywna, gdyż różne instrukcje wykonywane
są z różną częstotliwością
Wybór średniej ważonej, lub zestawu reprezentatywnych instrukcji
będzie wpływał na wynik MIPS
Peak rate – podanie największego MIPS dla danego komputera
(CPU już szybciej nie wykona żadnej instrukcji)
Sustained rate – szybkość uśredniona; najczęściej stosuje się
średnią geometryczną (pierwiastek n-tego stopnia z iloczynu n
zmiennych)
średnią harmoniczną – H = n/(1/a1 + 1/a2 + … + 1/an), która nigdy
nie jest wyższa od arytmetycznej i geometrycznej
Architektura komputerów, część 11
5
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Współczynnik kosztu (cost factor)
•
•
•
•
•
Koszt jednostkowy podaje się zazwyczaj w dolarach na MIPS lub
MFLOPS. Ważne jest by porównanie dotyczyło podobnego poziomu
przepustowości architektury
Jeżeli wymaga się przynajmniej N MIPS, nie można brać pod
uwagę kosztu jednostkowego maszyny, która charakteryzuje się M
MIPS gdzie M jest niższe od N
Przy porównaniu układów wieloprocesorowych, sieciowych itd.,
które dopiero trzeba będzie zintegrować do pracy z układami o
większej mocy chociaż droższymi, trzeba wziąć pod uwage koszty
dostosowania
Koszty sprzętu maleją bardzo szybko (ale nigdy nie mogą zostać
pominięte; dochodzą tu koszty testowania, konserwacji, wymiany)
Koszty oprogramowania rosną; jakieś koszty obsługi również należy
do nich doliczyć
Architektura komputerów, część 11
6
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
...
•
Przy rozważaniu kosztu jednostkowego należy rozważyć również
możliwość rozbudowy systemu, przewidywany czas życia itd.
•
Generalna wskazówka przy budowie systemu:
architektura powinna być jak najbardziej ogólna, aby mogła
nadawać się do dużej liczby aplikacji, również zmienianych i
rozbudowywanych w czasie
Architektura komputerów, część 11
7
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Benchmark – wskaźnik działania
•
•
Są to standaryzowane zestawy programów uruchamianych na
maszynie w celu oceny jej działania. Wyniki działania benchmark
na jednej maszynie mogą być porównane z inną, znaną lub
znormalizowaną, podając kryteria takie, jak:
- wykorzystanie procesora
- wykorzystanie pamięci
- przepustowość urządzeń
- wykorzystanie urządzeń
itd.
Nadają się do oceny i porównania sprzętu i oprogramowania,
systemów jedno i wieloprocesorowych. Mogą być narzędziem do
oceny dokonanych zmian itd
Architektura komputerów, część 11
8
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Najczęściej używane benchmark’i
•
•
•
Real World/Application Benchmarks: Stosują kod systemowy lub
oprogramowania użytkowego zaczerpniętego z rzeczywistego
algorytmu. Zazwyczaj posiadają olbrzymie wymagania co do kodu i
danych
Derived Benchmarks: oparte na algorytmie; są ekstraktem z
najważniejszych algorytmów i generują realistyczne dane.
Stosowane do analizy odpluskwiania, wewnętrznej inżynierii, do
porównań
Single Processor Benchmarks: niskiego poziomu, do pomiaru
działania podstawowej architektury komputera. Służą do pomiaru
teoretycznych parametrów które opisują nadmiarowe lub zbyt
wąskie kanały, albo właściwości poszczególnych części sprzętu
Architektura komputerów, część 11
9
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
...
•
•
•
Kernel Benchmarks: kody odpowiedzialne za najdłuższe czasy
wykonywania (przy najmniejszym rozmiarze kodu); najbardziej
znane
Linpack – LINear algebra PACage - obliczanie MFLOPS dla
rozwiązywania układu równań z podwójną precyzją, w danym
języku – C, Java, Fortran…
oraz pętle Lawrece’a Livermore’a – MFLPS dla 24 pętli
przetwarzających zestaw 1001 lub więcej danych
Local Benchmarks: specyficzne dla danego zakładu, miejsca itd. –
wytwarzane lokalnie
Partial Benchmarks: jak wyżej, ponieważ tylko ich twórca wie,
jakiej części i jakiego kodu użył – nie nadają się do żadnych
szerszych porównań
Architektura komputerów, część 11
10
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
...
•
•
•
Istnieje wiele Benchmarks dla systemu UNIX, np. SPEC
(system/standard performance evaluaton cooperative effort) –
zawiera 10 scenariuszy i został zaakceptowany przez konsorcjum
sprzedawców sprzętu. Wskaźniki dane przez SPEC dotyczą OSG –
komputerów stacjonarnych, stacji roboczych i serwerów; GPCG –
grafiki i systemów multimediów, HPG – superkomputerów i
systemów wieloprocesorowych
Synthetic Benchmarks: statystycznie oceniają przybliżone średnie
parametry rzeczywistych programów (np. Whetstone Benchmark,
lub Dhrystone Benchmark)
Benchmarki do oceny architektury równoległej – rekomendacje
NIST (National Institute of Standards), lub np. SLALOM (1 minuta
pracy – pomiar wykonanych działań
Architektura komputerów, część 11
11
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
...
•
•
•
Do porównań architektury RISC i CISC (np. Stanford Small
Programs – 8 programów w języku C dla liczb całkowitych i 2
programy dla zmiennoprzecinkowych
Transaction Processing Benchmarks: wydawane przez
konsorcjum producentów i sprzedawców, oceniające głównie I/O i
komunikację
I tak dalej, i tak dalej …
Architektura komputerów, część 11
12
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Optymalizacja kodu
•
•
•
•
•
•
Używanie różnych nazw dla skalarów – powtarzalne części kodu
mogą być wywoływane wielokrotnie i są niezależne
Unikanie pętli, jeżeli są bardzo krótkie (lepiej przepisać 2 razy linijkę
niż wywoływać dwukrotną pętlę z jednej linijki)
Łączenie pętli (pętle wywoływane tę sama ilość razy można łączyć
w jedną)
Pętle, które zawierają zmienne zależne, powinny być jak najkrótsze
(nawet kosztem ich dzielenia)
Najbardziej wewnętrzna pętla powinna być najdłuższa
Unikać krótkich podprogramów (wywołanie podprogramu zabiera 10
– 15 cykli, jeżeli nie przenosi się żadnego argumentu; jeden
argument prawie podwaja tę ilość)
Architektura komputerów, część 11
13
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Procesy i wątki
•
•
•
•
•
Proces oznacza alokowanie wirtualnego adresu do przechowywania
odwzorowania procesu; proces posiada kontrolę nad wydzielonymi
zasobami, jak pliki, urządzenia I/O, itd.
Wątek (thread, lightweight process) jest ścieżką wykonywania
poprzez jeden lub więcej programów – posiada stan wykonywania –
zablokowany, biegnący, gotowy (blocked, running, ready) i
pierwszeństwo wykonywania; może nakładać się przemiennie z
innymi wątkami
Kontekst wątku jest zapamiętany, gdy wątek nie jest wykonywany.
Wątek ma przydzielony stos i pamięć na lokalne zmienne; ma
dostęp do przestrzeni adresowej pamięci i zasobów swojego
procesu
WSZYSTKIE WĄTKI JEDNEGO PROCESU WSPÓŁDZIELĄ
ZASOBY PROCESU
Architektura komputerów, część 11
14
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Wątki
•
•
•
Kiedy wątek zmienia pozycję w pamięci (współdzielonej), wszystkie
pozostałe wątki procesu mają dostęp do pliku otwartego przez niego
Każdy wątek ma przydzieloną swoją część stosu jądra (Kernel
stack) oprócz stosu użytkownika
Zalety:
- szybsze jest utworzenie wątku niż procesu (używa przestrzeni
adresowej procesu)
- szybsze jest zakończenie wątku niż procesu
- szybsze jest przełączanie pomiędzy wątkami niż procesami
- nadmiar komunikacyjny jest znacznie zmniejszony, gdyż wątki
współdzielą zasoby
Architektura komputerów, część 11
15
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Zdalne wywoływanie procedury
•
•
•
RPC (remote procedure call) – technika, która pozwala programowi
na wywołanie podprogramu lub procedury, wykonywanej w innej
przestrzeni adresowej, zwykle na innym komputerze
Inna nazwa – RMI – remote method invocation
Po wykonaniu RPC (i przekazaniu argumentu wywołania do zdalnej
procedury), wątek zostaje zablokowany i nie jest przetwarzany aż
do uzyskania odpowiedzi, lub upłynięciu założonego czasu. (Klient
wysyła żądanie do serwera i czeka)
Architektura komputerów, część 11
16
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Możliwości systemów operacyjnych
•
•
•
•
Pojedynczy proces z pojedynczym wątkiem – np. MS-DOS
Pojedynczy proces – wiele wątków – np. wcześniejsze Windows
Wiele procesów z pojedynczymi wątkami – np. UNIX
Wiele procesów z wieloma wątkami WindowsXP, Solaris …
•
Jeżeli aplikacja ma działać w ststemie wieloprocesorowym,
wymagania współbieżności tłumaczone są na wątki i procesy; treść
programu nie zależy od liczby dostępnych procesorów
WRAZ Z DODAWANIEM LUB ZABIERANIEM PROCESORÓW
APLIKACJA W SPOSÓB PRZEZROCZYSTY ROZKŁADA SIĘ NA
WIĘKSZĄ LUB MNIEJSZĄ ILOŚĆ, POPRAWIAJĄC
EFEKTYWNOŚĆ WYKONYWANIA
•
Architektura komputerów, część 11
17
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Przetwarzanie rozproszone
•
•
•
•
Przy rozproszonym przetwarzaniu zadanie obliczeniowe jest
podzielone na mniejsze pod - zadania, z których każde może być
wykonywane niezależnie od drugiego – więc równolegle, przez
niezależne i zupełnie różne procesory. Jeżeli nie da się tak
zdefiniować zadania – nie ma mowy o przetwarzaniu rozproszonym.
Po zrealizowaniu zadanych zadań, wyniki zbierane są przez jeden
procesor (najczęściej ten, który zainicjował przetwarzanie – wysłał
zadania do wszystkich innych procesorów)
Czas, który trzeba dołożyć na podział, przesłanie, zebranie wyników
powinien być znacznie mniejszy od czasu wykonania całego
przetwarzania przez jeden system.
Najprostszym modelem przetwarzania rozproszonego jest klient /
serwer (jeden serwer i wielu klientów)
Architektura komputerów, część 11
18
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Struktura klient/serwer
•
•
Serwer generuje pakiety do wykonania (work packages), które
wysyła do klientów, do wykonania
Po wykonaniu zadanej pracy, klient wysyła wyniki do serwera
•
Serwer ma trzy fazy pracy:
- inicjalizacja,
- utworzenie i dostarczenie pod – zadań do klientów
- zbieranie i przetworzenie wyników
•
Klient ma dwie fazy:
- zażądanie zadania i czekanie
- wykonanie zadania, przesłanie wyników i przejście w fazę
zażądania
Architektura komputerów, część 11
19
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
...
•
Z punktu widzenia sieci – i serwer i klient są węzłami, a komunikacja
między nimi odbywa się tak samo, jak każda inna
•
Przykład: klienci wykonują żądanie http (zgodnie z protokołem
Hypertext Transfer Protocol) do URL (Uniform Resource Locator);
serwer przesyła do nich pakiety
Pierwsza światowa inicjatywa przetwarzania rozproszonego Search for Extra-Terrestrial Intelligence – poszukiwanie życia we
Wszechświecie. Każdy posiadacz komputera (a w sumie zebrało się
ich wiele milionów) mógł pobrać fragment danych otrzymywanych
przez teleskopy i przeprowadzić w dowolnym czasie na swoim
własnym CPU obliczenia; inicjatywa SETI@home stała się
prekursorem GRID
•
Architektura komputerów, część 11
20
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Aplikacja RPC
•
Trzeba uwzględnić trzy aspekty aplikacji:
- specyfikacja protokołu klient/serwer
- opracowanie programu klienta
- opracowanie programu serwera
•
Przy przetwarzaniu rozproszonym muszą zostać zdefiniowane i
umożliwione łącza między odpowiednimi bibliotekami, autoryzacja i
rejestracja
•
Ponieważ zasoby mogą być współdzielone przez procesory i łącza
o różnej prędkości, wydajności itp. Niezbędna jest synchronizacja
całego procesu i wzajemnych wyłączeń; szczególnie uważnie
należy odnieść się do krytycznych sekcji kodu
Architektura komputerów, część 11
21
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Typowe struktury synchronizacji
•
•
Koordynator – algorytm z centralnym serwerem.
Jeden z procesów zostaje wybrany na koordynatora. Kiedy proces
ma wejść w krytyczna sekcję, wysyła żądanie (z identyfikacją sekcji
krytycznej) do koordynatora. Jeżeli żaden inny proces nie jest
aktualnie w tej sekcji – otrzymuje pozwolenie od koordynatora, który
zaznacza sekcję jako zajętą. Gdy następny proces zażąda wejścia
w sekcję – nie otrzyma odpowiedzi (z pozwoleniem), zostanie
zablokowany i będzie musiał wejść do kolejki procesów czekających
na tę sekcję. Gdy proces kończy korzystanie z krytycznej sekcji,
wysyła do Koordynatora sygnał zwalniający i Koordynator daje
pozwolenie czekającemu w kolejce (według określonego algorytmu
czekania)
Wady: wąskie gardło, cały system zależy od błędu – awarii
Koordynatora
Architektura komputerów, część 11
22
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Rozproszone wzajemne wykluczanie
•
•
•
•
Kiedy proces ma wejść w krytyczna sekcję, wysyła żądanie (ze
swoją identyfikacją, identyfikacją sekcji krytycznej i podaniem czasu
time stamp) do WSZYSTKICH procesów w grupie. Czeka na
pozwolenie OD WSZYSTKICH procesów
Gdy proces otrzymuje żądanie a sam jest w krytycznej sekcji – nie
odpowiada, wstawia żądanie do kolejki żądań
- gdy nie jest w krytycznej sekcji i nie chce jeszcze tam wchodzić –
wysyła pozwolenie
- gdy nie jest, ale sam już wysłał żądanie do wszystkich – porównuje
czas; wygrywa czas najwcześniejszy
Gdy wygrywa czas najwcześniejszy – Zwycięzca nic nie wysyła –
odkłada żądania do kolejki a sam wchodzi do krytycznej sekcji
Przegrany wysyła pozwolenie
Po wyjściu z sekcji proces wysyła pozwolenie do procesów z kolejki
i kasuje kolejkę
Architektura komputerów, część 11
23
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Pierścień ze znacznikami (Token Ring)
•
•
•
•
Każdy proces zna swoich sąsiadów w pierścieniu. Struktura jest
zamknięta (ostatni graniczy również z pierwszym)
Inicjalizacja pierścienia polega na daniu znacznika procesowi z nr 0.
Proces, który otrzymuje znacznik (token), może wejść do krytycznej
sekcji. Przy wyjściu z niej, lub jeżeli nie wchodzi, przekazuje
znacznik następnemu procesowi
Tylko jeden proces posiada w danym momencie znacznik
Wada: Jeżeli znacznik zostaje utracony – wykrycie tego faktu może
dość długo potrwać. Później znacznik musi zostać wygenerowany
ponownie.
Architektura komputerów, część 11
24
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Grid
•
•
•
System, który integruje i zarządza zasobami będącymi pod kontrolą
różnych domen (od instytucji po OS) i połączonymi siecią
komputerową (np. w zasobach Internetu); używa standardowych,
publicznych protokołów i interfejsów ogólnego przeznaczenia
(z różnymi procedurami dostępu do zasobów, autoryzacji,
uwierzytelniania) oraz dostarcza usług odpowiedniej jakości (QoS,
oferuje usługi wyższego poziomu).
Celem GRID jest utworzenie wielkiego i potężnego, wirtualnego
komputera z ogromnej ilości połączonych, niejednorodnych
systemów współdzielących różnego rodzaju zasoby – przy tym
PROSTEGO I JEDNOLITEGO W ZARZĄDZANIU
W sensie ogólnym "grid computing" oznacza przetwarzanie danych
traktowane jako usługa użyteczności publicznej
Architektura komputerów, część 11
25
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
...
•
•
•
Od strony usługodawcy ‘grid computing’ oznacza alokację zasobów,
współużytkowanie informacji oraz konieczność zapewnienia
wysokiej dostępności
Idea wciąż się rozwija, wciąż znajdowane są nowe obszary
zastosowań
Technologię grid computing najwcześniej wprowadzono w branżach
finansowej, energetycznej i naukowej
Architektura komputerów, część 11
26
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
ZASOBY
•
•
•
•
•
•
•
Są rozproszone geograficznie
Są różnorodne (heterogeniczne) programowo i sprzętowo
Dostępność jest zmienna w czasie (dynamiczna)
Są potencjalnie zawodne
Są w posiadaniu różnych podmiotów – instytucji, organizacji, osób
prywatnych
Stosują różne wymagania dotyczące bezpieczeństwa
Są połączone różną sprzętowo i programowo siecią
Architektura komputerów, część 11
27
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Wirtualne organizacje
•
•
•
•
•
Celem tworzenia gridu jest umożliwienie organizacjom wzajemnej
wymiany np. mocy obliczeniowej i innych zasobów z zachowaniem
lokalnych polityk dostępu i bezpieczeństwa. Tworzone są w ten
sposób Wirtualne Organizacje (VO, ang. Virtual Organizations).
Użytkownik nie musi wiedzieć na którym serwerze zostaną
wykonane jego obliczenia
Nie musi znać fizycznego położenia infrastruktury – poza punktem
dostępu – portalem
Głównym założeniem technologii GRID jest rozdzielenie zadań na
poszczególne wątki
Opracowywaniem standardów dotyczących techniki grid computing
zajmują się np. organizacje Global Grid Forum (GGF) ; The
Organization for the Advancement of Structured Information
Standards (OASIS)
Architektura komputerów, część 11
28
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
CLUSTERIX
•
•
•
Pierwszy akademicki GRID w Polsce (12 dużych ośrodków, w tym
PŁ) – uruchomiony oficjalnie w grudniu 2004 roku – wtedy mniej
więcej na 130 miejscu w świecie pod względem mocy obliczeniowej
– 4,4 TFLOPS
CLUSTERIX – Krajowy Klaster Linuksowy
Obecnie istnieje w Polsce więcej VO; trwają projekty krajowe i
międzynarodowe
Architektura komputerów, część 11
29
KONIEC CZĘŚCI JEDENASTEJ
Prezentacja multimedialna
współfinansowana przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
w projekcie
Dr inż. Małgorzata Langer
Architektura
komputerów
„Innowacyjna dydaktyka bez ograniczeń
– zintegrowany rozwój Politechniki Łódzkiej –
zarządzanie Uczelnią,
nowoczesna oferta edukacyjna
i wzmacniania zdolności do zatrudniania
osób niepełnosprawnych”
Zadanie nr 30 – Dostosowanie kierunku Elektronika i Telekomunikacja
do potrzeb rynku pracy i gospodarki opartej na wiedzy
90-924 Łódź, ul. Żeromskiego 116,
tel. 042 631 28 83
www.kapitalludzki.p.lodz.pl