inz opracowanie

background image

Zagadnienia na egzamin inżynierski


1. Wymień cechy algorytmu i sposoby jego reprezentacji.

Algorytm – skończona sekwencja reguł, działających na skończonej liczbie danych, pozwalająca rozwiązywać
określony problem (klasę problemów); dla poprawnych danych wejściowych produkuje poprawne wyniki.

cecha

Opis

Określoność (ang. definiteness)

Możliwość wykonania wszystkich operacji

Jednoznaczność (ang.uniqually determined)

Jednoznaczność wszystkich wykonywanych operacji

Skończoność (ang. finiteness)

Rozwiązanie problemu w skończonej liczbie kroków

Ogólność (ang. generality)

Wykorzystanie do rozwiązania określonej klasy zadań (założony
poziom ogólności)

Efektywność (ang. effectiveness)

Złożoność obliczeniowa

Zupełność (ang. complete)

Uwzględnienie wszystkich możliwych przypadków jakie mogą
wystąpić

+ poprawność (wyniki odzwierciedlają rzeczywistość)
+ sprawność (czasowa – szybkość; pamięciowa – zasobożerność)
+ prostota wykonania (operacje jak najprostsze)

Aby nasz algorytm rozwiązywał poprawnie pewne zagadnienia niezbędna są dane początkowe i zadanie
ograniczeń np. warunki brzegowe, jednym słowem należy przedstawić rzeczywistość poprzez:

zdefiniowanie zadania

wprowadzenie założeń i ograniczeń

algorytm rozwiązania


Sposoby realizacji algorytmu:

Opisowa, werbalna (dane, warunek, wynik, kroki ….)

Schemat blokowy/ sieć działań (graficzny opis działań+kolejność)

Pseudokod

Języki programowania

Drzewo algorytmu (określa złożoność obliczeniową i pesymistyczną; idziemy od korzenia do wierzchołków,
trochę to przypomina takie if-y)

2. Omówić zagadnienie asymptotycznej złożoności obliczeniowej algorytmów. Podać

standardowe notacje rzędu złożoności.


Złożoność obliczeniowa – miara porównania algorytmów, w wyniku której:

Porównuje się różne algorytmy rozwiązujące te same problemy

Przewiduje się wydajność algorytmów w nowym środowisku

Określa wartości parametrów algorytmów


Rodzaje złożoności:

Czasowa (czas wykonania w jednostkach czasu)

Pamięciowa (B, KB…)


Złożoność asymptotyczna przedstawia złożoność dla bardzo dużych, granicznych rozmiarów danych
wejściowych




background image

Rodzaje notacji asymptotycznej:

notacja

opis

Rysunek

O-notacja
(omikron)

Funkcja f(n) jest co najwyżej rzędu g(n) :

f(n) = O(g(n))

jeżeli istnieją c, n

0

>0, że dla wszystkich

n n

0

zachodzi: f(n) cg(n)



cg(n) jest asymptotyczną granicą górną. Służy do
szacowania czasu działania algorytmu w przypadku
pesymistycznym

-notacja

Asymptotyczne ograniczenie dolne (czyli odwrotnie,
niż w O-notacji)



Asymptotyczna granica dolna. Służy do oszacowania
czasu działania algorytmu w przypadku
optymistycznym

-notacja

Funkcja f(n) jest rzędu (g(n)):

f(n) = (g(n))

jeżeli istnieją takie c

1

i c

2

>0, że dla wszystkich n n

0

zachodzi:
c

1

g(n) f(n) c

2

g(n)


Asymptotyczne oszacowanie dokładne


Asymptotyczna złożoność czasu i przestrzeni (zasoby obliczeniowe), złożoność układu i wskaźniki obliczeń
równoległych (liczba równoległych procesorów)

Notacje rzędu złożoności (oprócz notacji asymptotycznych) mają jeszcze notację małego o (f niższego rzędu niż
g) oraz małego omega (f jest wyższego rzędu niż g)

Kategorie złożoności:

3. Algorytmy sortowania oraz charakterystyka ich złożoności obliczeniowej.


Algorytmy sortowania są zazwyczaj klasyfikowane według:

złożoności (pesymistyczna, oczekiwana) – zależność liczby wykonanych operacji w stosunku od liczebności
sortowanego zbioru (n). Typową, dobrą złożonością jest średnia O(n log n) i pesymistyczna Ω(n²). Idealną
złożonością jest O(n). Algorytmy sortujące nie przyjmujące żadnych wstępnych założeń dla danych
wejściowych wykonują co najmniej O(n log n) operacji w modelu obliczeń, w którym wartości są

background image

"przezroczyste" i dopuszczalne jest tylko ich porównywanie (w niektórych bardziej ograniczonych
modelach istnieją asymptotycznie szybsze algorytmy sortowania);

złożoność pamięciowa

sposób działania: algorytmy sortujące za pomocą porównań to takie algorytmy sortowania, których sposób
wyznaczania porządku jest oparty wyłącznie na wynikach porównań między elementami; Dla takich
algorytmów dolne ograniczenie złożoności wynosi Ω(n log n);

stabilność: stabilne algorytmy sortowania utrzymują kolejność występowania dla elementów o tym samym
kluczu (klucz – cecha charakterystyczna dla każdego elementu zbioru, względem której jest dokonywane
sortowanie). Oznacza to, że dla każdych dwóch elementów R i S o tym samym kluczu, jeśli R wystąpiło
przed S to po sortowaniu stabilnym R nadal będzie przed S;


Złożoność oznacza liczbę elementów do posortowania, liczbę różnych elementów.

sortowanie jest stabilne wtedy kiedy złożoność obliczeniowa nie zależy od rozłożenia elementów

nazwa

złożoność

Opis

Sortowanie bąbelkowe

(ang. bubble sort)

O(n

2

)

Porównuję kolejne pary elementów, po każdym porównaniu
mamy o 1 element mniej (bo jest on posortowany).

Sortowanie przez wstawianie

(ang. insertion sort)

O(n

2

)

Każdy od drugiego sprawdzany, gdzie pasuje na liście

Zakładamy, że pierwszy element tablicy jest posortowany.
Następnie sprawdzamy pozostałe (nieposortowane) elementy i
w zależności od tego, czy są mniejsze, czy większe, trafiają na
odpowiednie miejsce. Element z części nieposortowanej
wstawiamy do posortowanej tak, aby nie naruszyć dokonanego
posortowania (Inaczej mówiąc, trzeba badany element
sprawdzić z każdym elementem części posortowanej).

Sortowanie przez scalanie

(ang. merge sort)

O( nlog(n) )

Wymaga O(n) dodatkowej pamięci
Podział listy na podlisty, sortowanie podlist, łączenie
posortowanych podlist

Sortowanie szybkie

(ang. quick sort)

Optymistyczna:

O( nlog(n) )

Pesymistyczna:

O(n

2

)

Wyszukiwanie elementu średniego, mniejsze elementy idą na
lewo, a większe na prawo, aż do pojedynczych elementów
(rekurencja). Przykład sortowania niestabilnego; wpływ danych
wejściowych na złożoność obliczeniową;

Sortowanie przez wybieranie

(ang. selection sort)

O(n

2

)

Wybieramy najmniejszy element z tablicy i zamieniamy go z
pierwszym jej elementem. Z pozostałej, nieposortowanej części
robi to samo (element najmniejszy wymieniamy kolejno z
drugim ,trzecim itd.). Czynność powtarzamy n-1 razy.


4. Przedstawić iteracyjne oraz rekurencyjne struktury algorytmiczne. Dokonać

porównania.

iteracja

Rekurencja

technika powtarzająca pewną czynność
w pętli (określoną ilość razy lub do
spełnienia określonego warunku)

Konstruuje się też algorytmy iteracyjne
polegające na konstruowaniu ciągu
przybliżonych rozwiązań {x

k

}, zbieżnego

do rozwiązania dokładnego x

*


technika pozwalająca opisać problem za pomocą jego składowych
(umożliwia funkcji/procedurze/podprogramowi wywołać samą siebie)

W algorytmie rekurencyjnym mamy przypadek bazowy (obiekty
podstawowe) i ogólny (obiekty zbudowane z podstawowych).
Podstawowymi elementami przy układaniu algorytmów rekurencyjnych
są: warunek stopu i dekompozycja problemu.

W każdym wywołaniu rekurencyjnym do życia powoływany jest nowy
zestaw zmiennych lokalnych, zaś stare odkładane na stosie.

O wszystkim decyduje i o wszystko dba kompilator

Implementacja rekurencyjnej definicji funkcji wymaga tłumaczenia na
język programowania – rekord aktywacji (w stosie programu; parametry

background image

wywołania, wartość zwracana, zmienne lokalne, dynamiczne dowiązanie
do rekordu wywołania procesu wywołującego, adres powrotu do procesu
wywołania)

Do obliczenia n+1-ej wartości
wykorzystuje poprzednią, n-tą iterację.

pozwalana na przejrzysty i zwarty opis algorytmu, wydajne struktury
danych kosztem złożoności wykonania

Dla obliczenia n-tej wartości potrzebuje zejść aż do pierwszej (tzw. drzewo
rekurencji).

Iteracyjne struktury danych: tablica

Elementarne konstrukcje algorytmiczne
(primitive constructions):

Bezpośrednie następstwo (instrukcja po
instrukcji)

Wybór warunkowy (if)

Iteracja warunkowa (while, do-while;
niejawna liczba iteracji)

Iteracja ograniczona (pętla for)

Iteracyjne struktury danych: kolejka,
stos, lista

Np. wywołanie funkcji, drzewa (katalogów)

Rekurencyjne struktury danych: drzewo, graf

Struktura

algorytmiczna

opis

Stos
(LIFO)

- Liniowa struktura danych
- Dostęp tylko do wierzchołka stosu, do pozostałych po zdjęciu elementów leżących między nimi, a

wierzchołkiem

Kolejka
(FIFO)

- Liniowa struktura danych
- Nowe dane dopisywane na końcu kolejki
- Z początku kolejki pobierane są dane do dalszego przetwarzania (bufor FIFO)
- Modyfikacja kolejki – kolejka priorytetowa (każde dane mają priorytet – na wyjściu pierwsze

pojawią się dane o najmniejszym priorytecie)

- Kolejka cykliczna – rodzaj kolejki (1-wszy element tablicy traktowany jest jako kolejny po

ostatnim; w praktyce taki indeks wylicza się z (N+1) mod WIelkoscTablicy)

- Zastosowanie: obsługa zdarzeń (np. kolejka priorytetowa w Systemach Operacyjnych –

przydzielanie sprzętu procesom)

lista

- Liniowo uporządkowany zbiór elementów
- W dowolnym miejscu można usunąć/dodać element
- Rodzaje: jednokierunkowa, dwukierunkowa, cykliczna
- Implementacja: tablicowa lub wskaźnikowa
- Pierwszy i ostatni element listy = końce listy

drzewo

- Hierarchiczne ułożenie danych
- Rodzaje: drzewo binarne, BST (ang. Binary Search Tree – binarne drzewo poszukiwań), czerwono-

czarne, AVL, B-drzewa

graf

- Zbiór wierzchołków połączonych krawędziami
- Każda krawędź kończy i zaczyna się w którymś z wierzchołków
- Wierzchołki grafu są numerowane
- Wierzchołek = obiekt
- Krawędź = relacja między obiektami
- Graf skierowany = krawędzie mają wyznaczony kierunek
- Krawędź może posiadać wagę (liczbę określającą np. odległość między wierzchołkami, gdy np.

background image

graf = połączenia międzymiastowe)

- W grafie skierowanym waga zależy od kierunku przechodzenia przez krawędź (np. w mapach)

Tablica

- Kontener danych dostępnych, poszczególne komórki dostępne są za pomocą kluczy (o

wartościach numerycznych)

- Tablica statyczna -> rozmiar ustalony z góry
- Tablica dynamiczna -> rozmiar zmienia się w trakcie wykonywania programu

Rekord (struktura)

- Złożony typ danych w wielu językach programowania
- Grupuje logicznie powiązane ze sobą dane różnego typu w 1 obszarze pamięci
- Pola (składowe rekordu) są etykietowane (unikatowość nazw); podanie nazwy = dostęp do

danego pola

Techniki algorytmiczne:
Dziel i zwyciężaj - problem dzieli się rekurencyjnie na dwa lub więcej mniejszych pod problemów tego samego
typu tak długo, aż fragmenty staną się wystarczająco proste do bezpośredniego rozwiązania. Z kolei rozwiązania
otrzymane dla pod problemów scala się uzyskując rozwiązanie całego zadania.

Programowanie dynamiczne - rozszerzenie metody dziel i zwyciężaj; Jeżeli podproblemy, na które został
podzielony problem główny, nie są niezależne, to w różnych podproblemach, wiele razy wykonywane są te
same obliczenia.

Algorytm zachłanny – algorytm, dokonujący w każdym kroku, najlepiej rokującego w danym momencie wyboru
rozwiązania częściowego. Algorytm zachłanny nie patrzy, czy w kolejnych krokach jest sens wykonywać dane
działanie. Dokonuje wyboru wydającego się w danej chwili najlepszym.

5. Struktury drzewiaste, charakterystyka podstawowych typów drzew oraz przykłady ich

zastosowań.


Drzewo:

kolekcja węzłów, w którym jeden wyróżniony jest jako korzeń (Root) oraz łączących je krawędzi

reprezentuje hierarchię danych

ułatwia i przyspiesza wyszukiwanie

umożliwia łatwe operowanie posortowanymi danymi


Elementy drzewa

węzeł = element drzewa, korzeń = wyróżniony węzeł, liść = węzeł bez potomków, węzeł wewnętrzny węzeł
mający 1 lub więcej potomków

węzły powiązane są relacją rodzicielstwa (ang. parenthood)

węzły są siostrzane (ang. siblings), jeśli mają tego samego rodzica

wysokość węzła – liczba krawędzi na najdłuższej, prostej ścieżce prowadzącej od tego węzła do liścia

wysokość drzewa – wysokość korzenia; największa głębokość (poziom) drzewa

głębokość (poziom) węzła – długość ścieżki łączącej węzeł z korzeniem

długość = liczba krawędzi leżących na unikalnej ścieżce z korzenia do tego węzła

stopień węzła = liczba następników węzła

relacja przodek-potomek (ojciec-syn)

ścieżka – ciąg krawędzi łączących węzły; Istnieje 1 ścieżka łącząca korzeń z pozostałymi wierzchołkami


Rodzaje:

nieuporządkowane – kolejność węzłów dowolna

uporządkowane

etykietowane – etykiety przypisane do krawędzi lub węzła


Zastosowania drzew:

schematy organizacyjne

dane genealogii (drzewa genealogiczne dla węzłów, które mogą mieć więcej niż 2 potomków)

reprezentacja wyrażeń i składni kodu źródłowego w kompilatorach

background image

analiza połączeń np. obwodów elektrycznych czy układów komunikacyjnych


podstawowe typy drzew

typ

opis

Rysunek

Drzewo
binarne BT

- każdy z węzłów posiada lewe i/lub prawe poddrzewo (gdy nie

posiada = puste)

- węzeł x takiego drzewa posiada atrybuty: x.key, x.left i x.right
- reprezentacja: tablicowa, rodzicielska, dowiązaniowa
- operacje: przeglądanie drzewa
- pełne drzewo binarne = wszystkie wewnętrzne węzły stopnia 2

i jednakowa głębokość wszystkich liści

- zrównoważone drzewo binarne = pełne drzewo binarne do

głębokości d-1, a wszystkie węzły na głębokości d po lewej
stronie; implementacja: kopiec (tablice)

- częściowo uporządkowane = węzeł rodzica ma wartość nie

mniejszą od dzieci, element korzenia poddrzewa największym
elementem tego poddrzewa

- implementacja: dwu lub trój odsyłaczowa

- zastosowanie: zapis historii turnieju tenisowego, wyrażenia

arytmetyczne z dwuargumentowymi operatorami (każdy
operator węzłem, a jego argumenty poddrzewami)

Drzewo
poszukiwań
binarnych BST

- dowolne drzewo binarne
- wierzchołki ułożone zgodnie z porządkiem symetrycznym

(mniejsze wartości w lewej części, większe w prawej)

- operacje: wyszukiwanie, wstawianie, usuwanie, min/max,

predecessor, successor

- złożoność obliczeniowa proporcjonalna do wysokości drzewa

- zastosowanie: zadania szybkiego sortowania/wyszukiwania

elementów np. słowniki czy kolejki priorytetowe

Zrównoważone
drzewo BST

- różnica wysokości obu poddrzew każdego węzła w drzewie

wynosi 0 lub 1

- jeśli wszystkie liście są na 1 lub 2-óch poziomach = drzewo w

pełni zrównoważone

- można zrównoważniać drzewa BST (rotacja prawa i lewa)

- zastosowanie – ciąg Finobacciego (?)

Zrównoważone
drzewo AVL

- drzewa równoważone lokalnie
- w każdym węźle wysokość jego poddrzew różni się max. o 1

poziom

- współczynniki zrównoważenia (różnice wysokości lewego i

prawego poddrzewa): 1,-1,0

- operacje: wstawianie węzła, usuwanie, rotacje
- nie zmieniają drzewa: serach, min, max, successor, predecessor

- zastosowanie: szybkie wyszukiwanie

background image

Drzewo
czerwono-
czarne RB

- każdy węzeł jest czerwony lub czarny
- każdy liść (null) jest czarny
- gdy węzeł czerwony, to jego synowie czarni
- każda ścieżka z ustalonego węzła do liścia ma tyle samo

czarnych węzłów

- każdy węzeł zawiera pola: color, key, left, right i parent
- operacje – jak dla AVL
- pesymistyczna złożoność: O(lgn)

- specjalne znaczenie w informatyce, umożliwia szybkie

wyszukiwanie


6. Omówić sposoby implementacji list jednokierunkowej oraz dwukierunkowej. Podać

zestaw operacji wchodzących w skład interfejsu listy.


Lista
- skończona sekwencja elementów ułożonych w liniowym porządku
- struktura służąca do reprezentacji zbiorów dynamicznych
- Lista posiada głowę i ogon.
- Liniowo uporządkowany zbiór elementów
- W dowolnym miejscu można usunąć/dodać element
- Rodzaje: jednokierunkowa, dwukierunkowa, cykliczna
- Implementacja: tablicowa lub wskaźnikowa
Pierwszy i ostatni element listy = końce listy

Operacje podstawowe

Operacje złożone

Wstawianie, usuwanie, dostęp do elementu

Wyszukiwanie elementu, wstawianie za/ usunięcie k-
tego elementu, przestawienie k-tego na
początek/koniec listy, odwracanie/łączenie list

Lista jednokierunkowa

Lista dwukierunkowa


Implementacja wskaźnikowa

Implementacja tablicowa

- Każdy element listy składa się z co najmniej 2 pól: klucza

i pola wskazującego na następny element listy

- Listy dwukierunkowe posiadają dodatkowo pole

wskazujące na poprzedni element listy

- Wskaźniki = pola wskazujące na poprzedni/następny

element listy


Typy informacji:
- Klucz = informacja merytoryczna (widoczna na zewnątrz)
- Wskaźnik (widoczna wewnątrz)

x.key (wartość pola klucza elementu listy), x.next (wskaźnik
do następnika), L.head (wskazuje początek listy lub null gdy
lista jest pusta)

- Lista opiera się na tablicy obiektów (lub rekordów)

danego typu

- Tablica o rozmiarze wystarczającym do zapamiętania

najdłuższej listy

- Zmiennej last z pozycją ostatniego elementu


Dopisanie elementu do listy:
- Jeśli na końcu, to kolejny element tablicy
- Jeśli pomiędzy innymi elementami, to przesuwa się o 1

pole w prawo wszystkie elementy o indeksie wyższym niż
pole, na które będzie wstawiany obiekt; w lukę wpisuje
się nowy element

background image


Dopisanie elementu (prosta lista 1-stronna):
- Gdy na końcu listy, to wskaźnik obiektu ostatniego

ustawia się na nowy obiekt danego typu

- Jeśli wewnątrz, to tworzy się nowy obiekt danego typu

ze wskaźnikiem wiążącym ustawionym na następnik
elementu, a następnie wskaźnik poprzednika ustawia się
na ten obiekt (ważna kolejność! Inaczej nie będzie znany
adres następnika)

Usunięcie elementu
- Odwrotne do wstawiania – zapisuje się wskaźnik do

usuwanego elementu, następnie wskaźnik poprzednika
przestawia się na następnik, następuje zwolnienie
pamięci po obiekcie usuwanym (wskaźnik tymczasowy)


Zalety: dobra elastyczność (brak ograniczeń co do rozmiaru
listy)

Wady: bardziej skomplikowana nawigacja, wymaga uwagi w
działaniu na wskaźnikach

Zastosowania: aplikacje obsługujące pocztę elektroniczną,
listy przewijane, zarządzanie pamięcią przez SO w sterowaniu
procesami

Usunięcie elementu pod danym indeksem tablicy:

- Przesunięcie o 1 pole w lewo wszystkich

elementów o indeksie wyższym


Lista dwukierunkowa może być reprezentowana przez wiele
tablic (mamy 3 tablice, każda o tej samej długości,
przechowują odpowiednio previous, key i next) lub w
pojedynczej tablicy (prev, key i next zajmują 3 kolejne pozycje
tablicy)

Zalety: prosta nawigacja wewnątrz listy, korzystanie z gotowej
struktury tablicy, szybki dostęp do elementu o konkretnym
numerze, większa odporność na błędy

Wady: niska elastyczność (zwłaszcza rozmiar tablicy, musimy
znać maksymalny jej rozmiar), liniowa złożoność operacji
wstawiania i usuwania (operacje te trwają dłużej), mniej
efektywna (statyczna pamięć)

7. Omówić algorytmy efektywnego poszukiwania najkrótszej ścieżki w grafie.


Problem wyszukania najkrótszej ścieżki polega na znalezieniu w grafie ważonym najkrótszego połączenia
pomiędzy danymi wierzchołkami np. problem najkrótszej ścieżki od jednego wierzchołka do wszystkich innych
oraz problem najkrótszej ścieżki pomiędzy wszystkimi parami wierzchołków.

Nazwa

algorytmu

opis

Dijkstry

Dla grafów skierowanych i nieskierowanych

„docierać tam, gdzie można się dostać najmniejszym kosztem”, przykład algorytmu zachłannego

Znajduje najkrótszą drogę z wierzchołka p (źródło) do wszystkich innych lub wybranego wierzchołka k

Wszystkie krawędzie grafu mają nieujemne wagi (wtedy używa się Bellmana-Forda)

Polega na przypisaniu wierzchołkom pewnych wartości liczbowych (tzw. cechy wierzchołków)

Cecha wierzchołka v może być stała (gdy równa długości najkrótszej drogi z p do v) lub tymczasowa

Gdy graf nieważony (wszystkie wagi mają 1), zamiast Dijkstry stosuje się algorytm przeszukiwania grafu wszerz

Złożoność zależy od liczby wierzchołków V i E krawędzi grafu

O rzędzie złożoności decyduje implementacja kolejki priorytetowej (O(V

2

) przy implementacji tablicy, O(ElogV)

dla kopca, O(E+VlogV) dla kopca Finobacciego)


1) Wszystkie wierzchołki (oprócz p) otrzymują tymczasowe cechy , źródło p otrzymuje cechę stałą 0
2) Wszystkie wierzchołki połączone krawędzią z p otrzymują cechy tymczasowe (równe odległości od p)
3) Z wierzchołków z punktu 2 wybieramy ten o najmniejszej cesze tymczasowej, oznaczając go jako v i zmieniając

jego cechę na stałą

4) Przeglądamy wszystkie wierzchołki połączone z v
5) Gdy droga z p przechodząca przez v do któregoś z wierzchołków z pkt. 4 ma mniejszą długość od tymczasowej

cechy tego wierzchołka -> zmniejszamy tą cechę

6) Dopóki nie zamienimy cechy wierzchołka k (końcowego) na stałą, powracamy do punktu 3

Zachłanny

W celu wyznaczenia rozwiązania, w każdym kroku dokonuje najlepiej rokującego w danym momencie wyboru
rozwiązania częściowego (zachłannego)

background image

Inaczej - nie patrzy czy w kolejnych krokach jest sens wykonywać działanie, dokonuje lokalnie optymalną (w
danej chwili najlepszą) decyzję, na podstawie której kontynuuje rozwiązanie pod-problemu

Bellmana-

Forda

Wolniejszy od algorytmu Dijkstry, ale bardziej ogólny

Możliwa praca na wartościach ujemnych wierzchołków

Służy do wyznaczania najmniejszej odległości od ustalonego wierzchołka s do wszystkich pozostałych w
skierowanym grafie bez cyklu o ujemnej długości (bo wówczas najmniejsza odległość między niektórymi
wierzchołkami jest nieokreślona, bo zależy od liczby przejść cyklu)

Przykład – statek podróżujący w przestrzeni kosmicznej, węzły – galaktyki, wartości ujemne – tunele
przestrzenne

Koszta można nadrobić za pomocą wartości ujemnych. Przy cyklach ujemnych (suma kosztów wychodzi
ujemna) koszt podróży może być nieskończenie mały, nie da się ustalić najmniejszej możliwości


1) Należy sprawdzić czy istnieje ujemny cykl, jak tak to zakończ algorytm z odpowiedzią „istnieje dowolna tania”.

W przeciwnym wypadku należy poszukać najtańszej ścieżki, ale z uwzględnieniem wartości ujemnych

2) Kontrolujemy, czy rozwiązania z punktu 1 nie da się poprawić, jeśli tak to znaczy że istnieje ścieżka z ujemnym

cyklem

3) Sprawdzamy długość ścieżki. Dla n wierzchołków nie może być dłuższa niż n-1 (bo brak cyklu)

Najtańsze ścieżki (między punktem początkowym i końcowym) korzystają z innych najtańszych ścieżek

Relaksacja krawędzi – jeżeli do wierzchołka A odległość wynosi x, a do B y i wierzchołki A i B połączone są
długością c to do B można poprowadzić ścieżkę wiodącą przez A, której długość wynosiłaby x+c
(pamiętamy, że wartości mogą być ujemne); poprawianie wyników sąsiadów z wykorzystaniem wyniku
wierzchołka; wystarczy relaksować kolejne wierzchołki, wchodzące w skład najkrótszej drogi

Ponieważ początkowo nie znamy krawędzi do najtańszej ścieżki, należy zrelaksować wszystkie krawędzie,
Czynność tą powtarzamy n-1 razy (w ten sposób w każdej iteracji tworzy się nam fragment ścieżki)


Złożoność przy prezentacji grafu za pomocą macierzy sąsiedztwa = 3 pętle for = O(n

3

). Gdy graf zapamiętany za

pomocą listy krawędzi = 2 pętle for z wszystkich wierzchołków zastępujemy jedną przebiegającą po
krawędziach = O(V*E)

Floyda-

Warshalla

dynamiczny

Służy do znajdowania najkrótszych ścieżek między wszystkimi parami wierzchołków w grafie ważonym

Jeśli najkrótsza ścieżka między wierzchołkami v1 i v2 prowadzi przez u, to jest ona połączeniem najkrótszych
ścieżek między v1 i u oraz u i v2

Złożoność obliczeniowa O(|V|

3

), pamięciowa: O(|V|

2

)


1) Inicjowanie tablicy długości najkrótszych ścieżek, tak, że dla każdej pary (v1, v2) odległość wynosi:

d[v1,v2]=0 gdy v1=v2

d[v1,v2]=w(v1,v2) gdy (v1,v2) E

d[v1,v2]= gdy (v1,v2) nie należy do E

2) włącz do swoich obliczeń ścieżki przechodzące przez kolejne wierzchołki
3) w k-tym kroku sprawdź, czy dla każdej pary wierzchołków można skrócić/utworzyć ścieżki między nimi

(przechodzącej przez k; kolejność wierzchołków obojętna, ale niezmienna w programie)

4) Po wykonaniu |V| takich kroków -> długości najkrótszych ścieżek są wyliczone


8. Procesy kompilacji i interpretacji w różnych językach programowania. Omów ich

przebieg, porównaj wady i zalety, wskaż przykłady implementacji w popularnych
językach.

Translator = program tłumaczący program na kod maszynowy, zrozumiały dla komputera

Kompilator = translator, który tłumaczy kod z 1 języka (źródłowego) na inny język (wynikowy)

Interpreter = inny typ translatora; program nie generuje programu wynikowego, tylko od razu wykonuje
instrukcje tego kodu; wykorzystanie: języki poleceń powłok SO, języków wysokiego poziomu, ;

background image

implementacja szybsza i prostsza niż w przypadku kompilatora, można uruchamiać częściowo napisane
programy, możliwość częstej modyfikacji oprogramowania, maszyny wirtualne

Podejście hybrydowe = możliwość wykorzystania interpretera dla języków zwykle kompilowanych

Interpreter rzadziej wykonywany od kompilatorów (mała wydajność aplikacji), często wypierany też przez
mechanizmy sprzętowe (np. koprocesory z kodem Javy)

kompilacja

interpretacja

Wykonanie programu kompilatora następuje w czasie
tłumaczenia

Po przetłumaczeniu program jest niezmienny (statyczny)

Dane wejściowe = cały program źródłowy, przekształcanie
na postać wynikową

Skompilowane moduły są łączone przez linker w jeden
program wykonalny

Wyodrębnianie niewielkich jednostek programu źródłowego,
tłumaczeniu ich na postać wynikową, natychmiastowe ich
wykonanie

Proces interpretacji jest cykliczny

W czasie interpretacji przechowywany jest program
źródłowy

Program wynikowy wykonuje się szybciej

Do wykonania programu wynikowego nie potrzeba
kompilatora

Lepsza optymalizacja kodu (dedykowana pod daną
architekturę)

Łatwość zmian programu

Mniejsza zajętość pamięci zewnętrznej (tylko tekst źródłowy)

Możliwość pracy konserwacyjnej (zmiany w trakcie
wykonania programu)

Przenośność, zastosowania sieciowe

1) Plik edytowany jest w edytorze tekstowym
2) Proces kompilacji – z pliku źródłowego tworzony jest plik

obiektowy (kod binarny zawierający kod maszynowy

3) Konsolidacja – łącznie plików obiektowych z pkt. 2 i

bibliotecznych (plików binarnych); tworzy się plik
wynikowy (program) będący plikiem binarnym, o formacie
określonego typu

1) Plik edytowany jest w edytorze tekstowym
2) Proces interpretacji – interpretowane są pliki źródłowe

projektu oraz pliki biblioteczne (nie w postaci binarnej);
wynikiem jest wykonanie programu

Kompilowane języki programowania -> kody po kompilacji
to samodzielne programy, np. Delphi, Pascal, C, C++

Częściowo kompilowane – powstaje kod bajtowy (postać
pośrednia) wymagający platformy uruchomieniowej, np.
Java (JVM, Java RuntimeEnvironment), C# (.Net
Framework)

Języki wymagające interpretera

Przykłady: Javascript (interpreterem przeglądarka), Perl
(język ekstrakcji i raportowania), PHP (dynamiczne tworzenie
stron internetowych), Python, Ruby, VBA (Interpreterem
pakiet MS Office)


Kompilacja – c.d.

Proces 2-etapowy (etap analizy, etap syntezy)

Analiza – 1-wszy etap. Tutaj program źródłowy rozkładany na części składowe, generowana reprezentacja
pośrednia, oraz wykrywanie i zgłaszanie błędów

 Analiza leksykalna (liniowa, skanowana) – grupuje znaki strumienia wejściowego w znaki

leksykalne (tzw tokeny, czyli elementarne konstrukcje języka źródłowego, np. słowa, liczby,
identyfikatory czy operatory); używany do rozpoznawania nierekurencyjnych konstrukcji
języka

 Analiza składniowa (syntaktyczna lub hierarchiczna) – bada, czy jednostki leksykalne tworzą

poprawne konstrukcje języka źródłowego; rekurencyjne konstrukcje języka przetwarza parser

 Analiza semantyczna

- sprawdza program źródłowy pod względem semantycznej zgodności z definicją języka

źródłowego (kontrola zgodności typów), zbierane są informacje potrzebne do
generowania kodu

- kontrola przepływu sterowania (sprawdzana poprawność użycia instrukcji sterujących

przepływem sterowania, np. Goto - C,Pascal, break – C); kontrola poprawności deklaracji
obiektów (sprawdzanie poprawności deklaracji obiektów w kodzie źródłowym przed 1-
wszym użyciem

Synteza – na podstawie reprezentacji pośredniej generowany program wynikowy (w innym języku
źródłowym lub postacią kodu wykonywalnego)

 Generacja kodu pośredniego (języka/reprezentacji pośredniego/ej) – jest wiele rodzajów

(zorientowane na język/maszynę/uniwersalne); cel – redukcja kosztów
utrzymania/wytwarzania kompilatorów

background image

 Optymalizacja kodu – poprawa efektywności kodu (przyspieszenie i redukcja rozmiarów);

może być wykonana na poziomie kodu źródłowego/pośredniego/wykonywalnego; jest to
złożony proces – dzięki technikom analizy przepływu danych i sterowania – wykonuje się
transformacje ulepszające (niezmieniające semantyki programu); przykład – optymalizacja
pętli w programie

 Generacja kodu wynikowego – wejściem dla niej zazwyczaj pośrednia reprezentacja

programu (proste kompilatory generują kod wynikowy bezpośrednio z kodu źródła); postać
kodu asemblerowego, przemieszczalnego kodu maszynowego lub gotowego programu
wykonywalnego; wykonywane są 2 czynności dla efektywności: wybór rozkazów i przydział
rejestrów

Język

programowania

Opis kompilacji

C/C++

Java

Uruchomienie programów w Javie = interpretowanie kodu pośredniego i wykonanie
odpowiednich instrukcji kodu maszynowego (binarny kod właściwy dla danego procesora i SO)

Do uruchomienia wykorzystuje się platformę Javy (środowisko uruchomieniowe aplikacji; JRE –
środowisko składające się z Java Virtual Machine+ Java Application Programming Interfaces)

Każda instrukcja kodu wynikowego (pośredniego) Javy jest interpretowana przez VM ->
spowalnianie działania aplikacji -> aby przyspieszyć kod pośredni wprowadzono kompilację JIT
(Just-in-time, kompilacja w locie = zamiana kodu pośredniego w kod binarny danego procesora i
SO w czasie rzeczywistym – przyspieszenie programu)

Jednokrotna kompilacja powtarzających się fragmentów kodu

Oprócz VM systemu operacyjnego, do interpretacji kodu pośredniego wymagane są biblioteki z
Java API)

.NET

Programy pod tą platformę nie zawierają kodu dla konkretnego procesora (*.exe zawierają kod
pośredni tzw CIL – common intermediate language, który przed wykonaniem jest tłumaczony na
kod maszynowy konkretnego procesora)

W Javie w kodzie pośrednim jest kod bajtowy (pliki wykonywalne z rozszerzeniem CLASS),
uruchomienie (wywołanie VM z nazwą programu jako parametrem, ); aplikacje w .NET
uruchamiają się jak zwykłe *.exe (które potrafią wykryć obecność platformy .NET i wyświetlić
ewentualnie komunikat); aplikacje Javy interpretowane wiersz po wierszu lub kompilowane na
kod maszynowy tuż przed wykonaniem , w .NET aplikacje zawsze kompilowane przed
wykonaniem (kompilacja w locie JIT)

Java i .NET podobne, wymagają rozszerzeń systemu do odczytania kodu pośredniego (VM dla
Javy, CLR – Common Language Runtime - dla .NET)

background image

9. Mechanizm przeładowanie operatorów w językach obiektowych. Podaj przykład

praktycznego zastosowania.


Przeładowanie (przeciążanie) operatorów
- rodzaj polimorfizmu (1 interfejs, wiele metod) w niektórych językach programowania
- te same operatory są wykorzystywane do działania nad różnymi obiektami
- operator może mieć różne implementacje w zależności od typów operandów (argumentów)
- umożliwia posugiwanie się obiektami klas tak samo jak typami wbudowanymi (C++)
- poprawia czytelność kodu, umożliwiając zdefiniowanie większej części biblioteki standardowej na poziomie

języka (bez tricków)

- wada: może spowodować powstanie niejasnych konstrukcji

przykład – np. w C++ można zrobić klasy odzwierciedlające budowę wektorów. Dzięki przeciążeniu operatora
„+”, można dodać parametry obiektu wektora „A” i „B”, a po przeciążeniu instrukcji przypisania przepisać do C.

10. Mechanizm dziedziczenia. Dziedziczenie jedno i wielokrotne. Podaj przykład

wykorzystania.


Dziedziczenie

Dotyczy programowania obiektowego

Proces, w wyniku którego obiekt otrzymuje właściwości innego obiektu

Zasada klasyfikacji – np. dziedziczenie klas – nie trzeba od nowa wypisywać właściwości obiektu, obiekt
staje się specyficznym egzemplarzem ogólniejszej klasy)

Przykład klasy bazowej i klasy pochodnej (bazowa posiada wspólne elementy dla klas pochodnych, klasa
pochodna ma właściwości bazowej + własne rozszerzenia; posiadaja kompletny interfejs klasy bazowej)

Wielodziedziczenie (wielopoziomowa hierarchia klas, klasa pochodna dziedziczy kilka klas bazowych oraz
mieszane, które w C++ wykorzystują klasy wirtualne); języki, które wspierają, to: Eiffel, C++, Pytho, Perl itd.


Przykładem może być klasa bazowa figura i klasa pochodna trójkąt (figura posiada jakieś pole, obwód, tablicę
współrzędnych, a trójkąt precyzuje ile i jakie konkretnie współrzędne są mu potrzebne, może też wprowadzić
dodatkowo np. kąt)

11. Klasy abstrakcyjne i funkcje wirtualne w językach obiektowych. Podaj przykład

zastosowania.


Klasa abstrakcyjna

Klasa bez reprezentantów w postaci obiektów

Zależą od języka programowania

Definiuje pewien interfejs dla klas pochodnych

Uogólnienie innych klas, lecz sama jako taka nie istnieje

Przykład: klasa abstrakcyjna figura i dziedziczące po niej klasy koła, trójkąta i kwadratu (figury nie da się
określić, ale np. koło już tak)

język

Opis

C++

Klasa abstrakcyjna posiada zadeklarowaną co najmniej 1 metodę wirtualną

Klasa dziedzicząca musi implementować wszystkie odziedziczone metody czysto wirtualne

Zapobiega powstaniu 2 kopii w momencie, kiedy klasa D3 dziedziczy po D1 i D2, które dziedziczą po B (klasa
bazowa B odziedziczona jako funkcja wirtualna przez D1 i D2 powoduje powstanie tylko 1 kopii tej klasy w
klasie pochodnej; D1 i D2 mają identyczne kopie)

Jeśli chcemy zobaczyć zmienną składowej pochodnej typu virtual, to zobaczymy zmienną klasy bazowej

Różnica między zwykłą a wirtualną funkcją pojawia się gdy obiekt dziedziczy klasę bazową więcej niż 1 raz

Funkcja abstrakcyjna – prototyp funkcji wirtualnej, klasa pochodna powinna mieć swoją implementację
funkcji abstrakcyjnej; klasa abstrakcyjna = posiada co najmniej 1 funkcję abstrakcyjną

Java

Klasę abstrakcyjną tworzymy na 1 z 2 sposobów: za pomocą słowa kluczowego abstract (klasyczna klasa

background image

abstrakcyjna) lub za interface (abstrakcyjny interfejs)

Klasa abstrakcyjna nie musi posiadać metod czysto wirtualnych (jednak takie podejście jest rzadsze – klasa
nieinstancjowalna)

Jeśli przynajmniej jedna metoda zadeklarowana jako wirtualna (abstrakcyjna), to klasa jest abstrakcyjna
(przy czym klasa abstrakcyjna może mieć również konkretne pola i metody)

Jeśli wszystkie metody są wirtualne, to klasę można zadeklarować jako interfejs (definicja posiadająca
jedynie operacje, bez danych)

Metody abstrakcyjne pełnią rolę symbolu zastępczego dla metod, które są implementowane w podklasach

Przy rozszerzaniu klasy abstrakcyjnej programista ma do wyboru jedną z dwóch opcji: może pozostawić
niezdefiniowane niektóre lub wszystkie metody nadklasy - wtedy podklasa również musi być abstrakcyjna,
albo zdefiniować wszystkie metody i wtedy podklasa nie jest abstrakcyjna.

Klasę można zdefiniować jako abstrakcyjną, nawet jeśli nie zawiera żadnych metod abstrakcyjnych.

C#

Klasa abstrakcyjna jest zadeklarowana za pomocą słowa kluczowego abstract


Funkcja wirtualna

Specjalna funkcja składowa (zadeklarowana w klasie bazowej, zdefiniowana w pochodnej)

Przydatne, gdy posługujemy się referencjami/wskaźnikami do obiektów

W klasie bazowej funkcje wirtualne definiują postać interfejsu. Każde (ponowne) definiowanie funkcji
wirtualnej w klasie pochodnej wyznacza specyficzną realizacje tej funkcji dla podanej klasy pochodnej

Dla zwykłych funkcji z identycznymi nazwami wywołanie (z klasy bazowej/pochodnej) zależy od typu
wskaźnika (a nie na to na co on wskazuje)

Prawdziwy polimorfizm (używanie metod klasy pochodnej tam, gdzie spodziewana jest klasa bazowa) –
korzystanie z metod klasy pochodnej korzystając ze wskaźnika, którego typ odnosi się do klasy
podstawowej

Polimorfizm dynamiczny (na etapie wykonania)



Przykład zastosowania funkcji wirtualnej i klasy abstrakcyjnej – biblioteki klas (klasa bazowa widzi tylko
składowe, które będą odziedziczone, pochodne zaś mają zdefiniowane realizacje metod wirtualnych dla
każdego obiektu)

12. Obsługa sytuacji wyjątkowych w językach obiektowych (np. C++, Java).

Wyjątek:

Mechanizm przepływu sterowania

Używany w mikroprocesorach i językach programowania

Do obsługi zdarzeń wyjątkowych (błędy)

W wyniku błędu generowany jest wyjątek, obsłużony (zapamiętanie stanu programu, przejście do
procedury jego obsługi; czasami po obsłudze wyjątku można powrócić do przerwanego kodu)

Np. Obsługa błędu braku strony (pobranie brakującej strony z pliku wymiany, kontynuacja pracy programu),
błąd dzielenia przez 0 (przerwanie obliczeń)

język

Opis

C++

W bloku try dajemy podejrzane instrukcje

Za blokiem try co najmniej 1 instrukcja catch

W catch umieszcza się typ wyjątku (czyli to co nas interesuje)

Nazwa typu nie jest konieczna, ale umożliwia odczytanie wartości

Bloków catch najczęściej tyle, ile możliwych typów do złapania

Przy wrzuceniu wyjątku konkretnego typu wpadnie on do 1-ego dobrego catch’a

Zawsze dobrze zabezpieczyć się blokiem Catach łapiącego wszystko

Rzucanie wyjątku throw – rzuca się jakiś obiekt; w tym momencie przerwane działanie funkcji i obiekt wędruje do bloków
catch

throw = obiekt

Java

Możemy sami rzucać wyjątki

Można rzucać wyjątki standardowe (instancje klas zdefiniowanych w bibliotece standardowej Java SE) ale można też

background image

definiować i rzucać wyjątki własne

Definicja własnego typu wyjątku = implementacja klasy, będącej podklasą Throwable / Exceprion / RuntimeException

throw {obiekt}

throw New Exception(”wyjątek bla bla bla”);

13. Organizacja pamięci pomocniczej - metody przydziału miejsca na dysku.

Nazwa metody

opis

rysunek

System plików
zwartych
(przydział ciągły)

Wszystkie bloki przylegają do siebie (zajmują spójny
obszar)

Za 1-wszym mamy 2-gi itd. aż napotkamy wskaźnik
końca pliku

Wskazanie na plik zawiera wskazanie na 1-wszy blok i
długość pliku

Struktura katalogowa – do odwzorowania adresu

Najoszczędniejsze wykorzystanie przestrzeni danych –
całość na dane


Zalety:
+ Najbardziej elastyczna organizacja danych

(zniszczenie bloku -> lokalna utrata danych)

+ Dostęp bezpośredni do bloku (początek: offset)
+ Dodatkowy mechanizm innych systemów
+ Odpowiednie dla baz danych
+ Łatwo implementować dostęp swobodny i

sekwencyjny


Wady:
- Fragmentacja zewnętrzna (występuje tylko tutaj;

chodzi o to że dziury z nieprzydzielonymi blokami są
ułożone chaotycznie i może być problem z
wrzuceniem danych)

- Problemowe usunięcie lub wstawienie bloku

(przemieszczanie sąsiednich danych)

(wpis katalogowy – przydział ciągły)

Łańcuch
powiązanych
bloków
(przydział listowy)

Analogia listy jednokierunkowej

Każdy blok zawiera wskaźnik do następnego bloku

Ostatni blok zawiera adres pusty

Część przestrzeni danych przeznaczona na wskaźniki
do następnych bloków

Bloki zajmowane przez plik są porozrzucane (nie
zajmują wspólnego obszaru)

Koniec 1 bloku pliku wskazuje na początek
następnego

Katalog usera wskazuje na początek 1-ego bloku pliku
i ostatniego bloku pliku


Zalety:
+ Zastosowanie – sekwencyjne przetwarzanie plików

(dostęp = czytanie kolejnych bloków)

+ Brak fragmentacji zewnętrznej (bloki można w

dowolnym momencie wykorzystać)

+

Wady:
- Dostęp sekwencyjny = mało elastyczna metoda
- Duża liczba dostępów do dysku (odczytanie pliku)




background image

- Duża liczba modyfikacji wskaźników (usuwanie pliku;

by odzyskać obszar trzeba przejść cały łańcuch –
znaleźć koniec)

- Mała elastyczność
- Uszkodzenie 1 bloku może wpłynąć i posadzić cały

system plikowy (dowiązanie odwrotne – zmniejszenie
ryzyka kosztem miejsca na dysku)

(przydział listowy)

Mapa plików
(tablica alokacji)

Stan dysku pamiętany w mapie plików

1 blok dysku = 1 pozycja w mapie

Bloki nieużywane = 0 w tablicy (sprawdzamy 0/1)

Pozycja w katalogu -> element mapy reprezentujący
1-wszy blok (ten element wskazuje na następny itd.)

Ostatni blok pliku = wskaźnik pusty

Jeśli uszkodzony system plikowy – pomocna
nadmiarowa informacja (nr ID pliku)

Sekwencyjny dostęp do pliku

Warto trzymać dane w kupie

Zapobieganie = kilka kopii FAT w różnych rejonach
dysku (a nie jak DOS w kupie)


Zalety:
+ Polepszenie czasu dostępu swobodnego

Wady:
- Uszkodzenie mapy plików = poważne straty danych
- 2 kopie mapy w różnych rejonach dysku

(minimalizacja utraty danych na wypadek awarii
sprzętu)

- Znaczny ruch głowic dyskowych (sięganie do mapy

plików)

- N bloków pliku = 2N dostępów do dysku (FAT + dane)

Bloki indeksów

Wskaźniki dowiązań do plików pamiętane w
odrębnych blokach indeksów na dysku

Duży plik = konieczność kilku bloków indeksów
powiązanych w łańcuch

Każdy blok ma wskaźnik do następnego bloku

Pozycja w katalogu -> pierwszy blok w łańcuchu
indeksów

Każda pozycja bloku indeksowanego wskazuej na
adres bloku plikowego

Ostatni blok indeksów nie jest zazwyczaj zapełniony
(utrata miejsca)

Uszkodzenie bloku indeksów = poważna strata
danych (przeciwdziałanie – kilka kopii)

Linuks – w i-węźle pamiętane są wszystkie adresy
bloków dyskowych zajmowanych przez plik


Zalety:
+ Swobodny (niesekwencyjny) dostęp do pliku (na

podstawie nazwy i odległości w bloku indeksów)

+ Brak fragmentacji zewnętrznej (bloki tracimy na bloki

indeksów)


Wady:
- Operacje wycinania/wstawiania w pliku –



Struktura bloku indeksu:

Schemat listowy:


Indeksowanie wielopoziomowe

background image

czasochłonne

- Metoda nie nadaje się do systemów z częstą

modyfikacją plików

- Dla dużego dysku trzeba przeznaczyć kilka bloków

indeksowych na schemat listowy/indeks
wielopoziomowy/schemat kombinowany


Ind. Komb.



Metody dostępu:

Sekwencyjny – informacja w pliku przetwarzana po kolei, 1 rekord po drugim (np. edytory tekstu)

Bezpośredni – dyskowy model pliku (plik zawiera rekordy logiczne o stałej długości,
odczytywane/zapisywane bez zachowania jakiegoś porządku); dysk umożliwia swobodny dostęp do
dowolnego bloku

Indeksowy – baza do opracowywania innych metod dostępu, różna konstrukcja indeksów; indeks – sposób
dostępu do informacji (np. w Linuksie bloki pojedynczo/podwójnie/potrójnie pośrednie)


Wydajność:

metody przydzielania – różne w zależności od zapotrzebowania na pamięć i czas dostania do bloków
danych

przydział ciągły – pobranie danych wymaga 1 kontaktu z dyskiem (dostępność sekwencyjna i swobodna)

przydział listowy – liczba dostarczonych do i-tego bloku i operacji czytania z dysku – dostęp sekwencyjny

struktura pliku zależy od deklaracji typu dostępu

konwersja typu pliku- kopiowanie do nowego pliku o wymaganym typie


Określając obowiązujący w systemie rozmiar bloku bierze się pod uwagę poniższe kryteria:

Strata miejsca z powodu bloków nie zapełnionych całkowicie, która zwiększa się w miarę zwiększania
rozmiaru bloków (fragmentacja wewnętrzna).

Strata miejsca związana ze wskaźnikami – im mniejsze bloki, tym więcej użytych wskaźników.

Jednostki przesyłania danych z urządzeń zewnętrznych do pamięci głównej- rozmiar bloku powinien być
wielokrotnością tej jednostki.

Rozmiar obszaru pamięci głównej potrzebny do wykonania każdej operacji czytania lub pisania odnoszącej
się do pliku.


Struktura pliku zależy od dostępności, np. przy kopiowaniu do innego trzeba dokonać konwersji żeby można
było dokonać kopiowania

14. Omów i porównaj najczęściej stosowane systemy plików.

System

plikowy

opis

FAT32

Następca FAT16

Wykorzystuje tylko 28 bitów (nie 32) = możliwość

opisania 268 435 438 klastrów -> możliwość użycia na

dyskach 16TB z sektorami 512-bajtowymi

32-bitowe pole w boot sektorze (określa rozmiar partycji w sektorach; partition boot sector – pierwszy sektor
partycji z kodem ładowania SO) -> wielkość partycji nie może tu przekroczyć 2TB (512-bajtowe sektory) i 16TB (dla
4096)

Max rozmiar pliku – 4GB (wynika to z kompatybilności ze starszymi systemami i wielkości pola w tablicy katalogu
określającego rozmiar pliku)


Cechy:

Prostota

Brak mechanizmu zarządzania wolnymi sektorami dysku

Pliki porozrzucane na dysku = częste fragmentacje

Czasochłonne obliczanie wolnego miejsca

Obsługiwany niemal przez wszystkie SO -> stosowany w przenośnych nośnikach danych

Brak kontroli praw dostępu do danych

background image

NTFS

Standardowy system plików od Windows NT w górę

Zastępca FAT, wykorzystał system HPFS

Ulepszenie w stosunku do FAT:

- Obsługa meta danych (np. prawa dostępu)
- Dodanie struktur poprawiających szybkość pracy z dużą liczbą plików i dyskami o dużej pojemności
- Brak ostrego ograniczenia maksymalnego rozmiaru pliku na dysku

Ulepszenia w stosunku do HPFS:

- Lista kontroli dostępu (ACL)
- Dziennik operacji dyskowych (ang. journal)


Cechy:

Wprowadzona quota

Kompresja woluminów

Obsługa rzadkich plików (plik rzadki – wypełniony zerami)

Możliwość montowania woluminu w katalogu

Volume shadow copy (copy on write) – przechowuje archiwalne wersje plików i katalogów

Linki symboliczne (Windows Vista)

Ext2

Wykorzystany w Linuksie

Następca ext

Rozpoznanie uszkodzenia systemu plików (np. po awarii) przy starcie systemu -> automatyczne naprawianie szkód
(programem e2fsck), uszkodzone pliki zapisywane w katalogu lost+fund

Posiada mechanizm zapobiegający znacznej fragmentacji danych (przydzielanie bliskich bloków przez prealokację)

Przy domyślnym rozmiarze bloku (4kb) obsługuje partycje do 16TB i pojedyncze pliki do 2TB

Nazwy plików mogą mieć do 255 znaków długości

Wolne pola w strukturach danych -> możliwość konwersji „w locie” do ext3 (w części z nich przechowywane dane
ext3)


Cechy:

Hierarchia plików i katalogów za pomocą i-węzłów

Każdy plik ma swój i-węzeł

Każdy i-węzeł ma unikatowy numer w systemie plików

Katalog = specjalny plik

Stabilny i dobrze przetestowany

Automatyczne sprawdzanie systemu po każdym niepoprawnym odmontowaniu i co jakiś czas

Wolne sprawdzanie systemu plików (po jego niepoprawnym odmontowaniu)

Niska wydajność dla bardzo małych plików

Ext3

Rozszerzenie i kompatybilność z ext2

Dodatkowo posiada mechanizm księgowania – dokładny zapis zmian na dysku (w razie awarii umożliwia szybsze
przywrócenie spójności systemu plików niż w przypadku ext2)

3 tryby księgowania

Brak możliwości odzyskania skasowanych plików (ext2 mógł)

Nowa cecha: indeksowanie katalogów przy dużej liczbie plików -> większa wydajność

Folder może posiadać maksymalnie do 32.000 podfolderów


Zalety:
+ niezawodność
+ prosta implementacja
+ znikoma fragmentacja plików
+ małe obciążenie procesora (w porównani udo ReiserFS i XFS)
+ kompatybilność i łatwa migracja do ext2

Wady:
- utrudnione odzyskanie usuniętych plików (zerowanie wskaźników do węzłów usuniętych plików)
- zmiana wielkości partycji bez utraty danych możliwa jedynie po odmontowaniu i zamianie na ext2 (ReiserFS =

możliwość zmiany pracującej partycji)

background image

- niepełna powierzchnia dysku dla danych
- max rozmiar partycji - 32 TiB

Ext4

kompatybilność wsteczna (ext2, ext3), o ile nie włączono mechanizmu extent

większe limity rozmiaru (np. max rozmiar pliku – 16 TiB)

mechanizm extent = pliki przechowywane w ciągłym zbiorze bloków (możliwość rezerwacji obszaru dysku dla
danego pliku)

w i-węźle przechowywane max 4 informacje o extent (każdy taki zbiór może przechowywać do 128 MiB przy
rozmiarze bloku 4kiB – przy większym rozmiarze pliku stosowane jest pośrednie adresowanie; dane te zastępują
wskaźniki do bloków)

możliwość prealokacji bloków pliku

opóźniona alokacja – możliwość alokacji bloków dopiero w trakcie zapisu całego pliku na dysku

większa liczba obsługiwanych podfolderów: max 64.000

pozwala zredukować lub całkowicie wyeliminować fragmentację plików


Uzupełnienie do ext3:

Journaling

jest to dziennik położony w dodatkowym miejscu na dysku

przechowuje informacje na temat zmian danych i meta danych przed ich modyfikacją

wprowadzenie atomowych operacji zmian danych

- albo zmienimy wszystkie bloki i metadane, albo żadne

skraca czas testowania systemu plikowego

- czas przestaje zależeć od rozmiaru systemu plików

Journaling Block Device

miejsce księgowania realnie niezależnego od ext3

jest przechowywane w i-węźle

do właściwego journalingu służy interfejs JBD (interfejs niezależny od ext3, umożliwia dodatkowe
księgowanie do dowolnego systemu plików na urządzeniu blokowym)

interfejs JBD zachowuje w journalingu całe fizyczne bloki zamiast pojedynczych modyfikowanych bajtów

wada: większe zapotrzebowanie na powierzchnię dyskową

zaleta: uproszczenie systemu oraz ograniczenie wymuszeń na moc obliczeniową (blok zapisywany bez
żadnej obróbki)

ext3 ogranicza się do wywołania odpowiedniej funkcji JBD

Tryby journalingu

data = writeback

- księgowanie tylko meta-danych, największa wydajność (najczęstszy i najszybszy)
- spójność systemu plików
- na końcu plików zapisywanych przed awarią mogą pojawić się niepoprawne dane

data = journal (pełne księgowanie - metadane)

- 2 razy zapisuje bloki (journal i właściwa pozycja), pełne bezpieczeństwo (najwolniejszy)
- Wymaga wielu operacji dyskowych

data = ordered

- szybszy od pełnego kronikowania
- zapełnia tylko metadane, jednakże dzięki specjalnej postaci zachowuje się podobnie do pełnego

księgowania

- łączy modyfikacje danych i odpowiadające im meta-dane w logiczną całość w transakcje = atomowość

(zapis najpierw danych, potem meta-danych)

- dopiero po zapisaniu danych na dysku zapisuje do journala
- zapisuje na dysk (docelowe miejsce) dane
- wykorzystuje 3 techniki:

o pominięcie odtwarzania wskazanych bloków z wcześniejszych transakcji (modyfikacje

nieistniejących struktur nie mogą zamazać nowych danych)

background image

o nowe dane nie otrzymują zwolnionych bloków (gdy operacja zwolnienia nie została

zatwierdzona w dzienniku; uniemożliwia zamazanie danych 1-ego pliku przed 2-gi)

o Prowadzenie listy osieroconych plików (pliki usunięte z katalogu, ale otwarte przez procesy;

możliwość odzyskania/usunięcie nawet po awarii systemu)

15. Metody zarządzania wolną przestrzenią pamięci dyskowej.


Zarządzanie wolną przestrzenią:

Trzeba dbać o wtórne zagospodarowanie dla nowych plików przestrzeni po plikach usuniętych

System utrzymuje listę wolnych obszarów

Odnotowane są wszystkie wolne bloki (nie przydzielone do żadnego pliku/katalogu)

Utworzenie/usunięcie pliku


Rozmiar bloku – wielokrotność jednostki wybranej dla SO (ustalony, zwykle 1024 lub wielokrotności)
Przy tworzeniu pliku SO sprawdza listę wolnych obszarów – gdy wystarcza miejsca, to przydziela obszary dla
pliku i wymazuje je z listy (analogia przy usuwaniu)

Metody zarządzania wolną przestrzenią (implementacja listy wolnych obszarów)

typ

opis

rysunek

Wektor
binarny

(bitowy)

Wektor bitowy umieszczony w superbloku informuje, który blok jest
zajęty (0), a który wolny (1)

Każdy blok dyskowy reprezentowany jest przez 1 bit w wektorze

Nr bloku = liczba bitów słowa x liczba wyzerowanych słów + pozycja 1-
ego bitu „1”


Wady:
- Mało wydajny
- Tylko dla małych dysków (sam wykaz bitowy zajmuje dużo miejsca)

Dla dysku 1,4 GB blok=512B, mapa bitowa 310kB

Lista

powiązana

Indeks 1-ego wolnego bloku jest w specjalnym miejscu na dysku i
pamięci (specjalne miejsce w systemie plików)

Sposób powiązania bloków - w bloku poprzednim (końcowe bajty)
znajduje się indeks bloku następnego


Wady:
- Metoda niewydajna – przejrzenie listy = odczyt KAŻDEGO bloku

(zazwyczaj szukany pierwszy blok)

- Trzeba przejść przez wszystkie elementy (tworzenie/usunięcie pliku)
- Przy tworzeniu szukamy 1-ego wolnego bloku

Grupowanie

W 1-szym bloku adresy wolnych bloków (indeks bloku 1-ej grupy
wolnych bloków)

Z pośród adresów n wolnych bloków, n-1 to bloki do alokacji a n-ty
zawiera n-1 indeksów kolejnych wolnych bloków

Ostatni z nich zawiera adresy następnych n wolnych bloków

W wybranym obszarze systemu blokowego znajduje się wskaźnik do
indeksu z n-1 wolnych bloków


Zalety:
+ Umożliwia szybkie odnajdywanie większej liczby wolnych bloków (dla

dużego pliku, który wymaga dużej liczby wolnych bloków)

background image

zliczanie

Wykaz wolnych obszarów

Adres 1-ego wolnego bloku + licznik kolejnych wolnych

W przypadku kilku kolejnych (przylegających do siebie) wolnych bloków
pamiętany jest tylko adres 1-ego z nich oraz liczba wolnych bloków
znajdujących się bezpośrednio za nim

Wykaz wolnych obszarów jest ciągiem wpisów składających się z indeksu
bloku oraz licznika


Zalety:
+ Można jednocześnie zwalniać wiele bloków

W przypadku przydziału miejsca dla pliku na dysku są 3 podejścia: przydział ciągły, listowy i indeksowy

Katalog też ma przydzielane bloki (jak zwykły plik), ale jego struktura jest odpowiednio definiowana przez
system, specyficzne są operacje dostępu

16. Algorytmy planowania przydziału procesora.

nazwa

opis

FCFS

(ang. first

come first

served)

Proces, który pierwszy zamówił procesor, 1-wszy go otrzyma

Łatwa implementacja (kolejka FIFO)

Blok kontrolny procesu wchodzącego do kolejki procesów gotowych jest dołączany do końca

Wolny procesor przydziela się procesowi z czoła kolejki procesów gotowych

Długi średni czas oczekiwania (sumuje się czas trwania faz poszczególnych procesów z sumami częściowymi i
potem dzieli całość przez liczbę procesów)

Niewywłaszczające (nie oddaje procesora innemu procesowi, dopóki ten, co wszedł się nie skończy lub zamówi
operację we/wy)

SJF

(ang.

shortest Job

first)

Najpierw najkrótsze zadanie

Długość najbliższej z przyszłych faz procesora

Jeśli fazy są równe, wykorzystuje FCFS

Minimalny średni czas oczekiwania

Planowanie długoterminowe (problem z poznaniem długości następnej fazy)

Dobry do symulacji (minimalny średni czas oczekiwania), minimalny średni czas oczekiwania

Niewywłaszczający lub wywłaszczający (wtedy gdy do kolejki wejdzie proces o krótszej fazie)

Planowanie

priorytetowe

SFJ szczególnym przypadkiem planowania priorytetowego, gdzie PRI=1/długość fazy; priorytet zależny od
długości fazy procesora

Priorytet decyduje o wyborze procesu z kolejki procesów gotowych do wykonania

Priorytet definiowany wewnętrznie (limity czasu, wielkość pamięci, liczba otwartych plików)

Priorytet definiowany zewnętrznie (ważność procesu, opłaty, polityka)

Wywłaszczające lub niewywłaszczające (wszystko zależy czy jest wywłaszczenie w systemie; priorytet procesu
porównywany)

Problem – nieskończone blokowanie (głodzenie nisko-priorytetowych procesów); rozwiązaniem jest
postarzanie (aging), np. co 15 minut PRI+=1 (zwiększa się priorytet procesu)

Planowanie

rotacyjne

(ang. round

robin)

Specjalnie dla systemów z podziałem czasu

Kolejka procesów gotowych do wykonania traktowana jest jako kolejka cykliczna (składa się z bloków
kontrolnych; wiele kolejek, procesy przechodzą między nimi)

Planista przydziału procesora przegląda tę kolejkę i każdemu procesowi przydziela odcinek czasu nie dłuższy od
1-ego kwantu czasu (jeśli kwant jest duży to mamy algorytm FCFS, a jak krótki to mamy tzw. dzielenie
procesora – wrażenie, że n procesów ma własny procesor działający 1/n szybkości rzeczywistego procesora)

Gdy faza procesora w danym procesie przekracza 1 kwant czasu, to proces będzie wywłaszczony i wycofany do
kolejki procesów gotowych

Implementacja – kolejka FIFO

Długi średni czas oczekiwania

wywłaszczający


background image

17. Algorytmy zastępowania stron.


Gdy brak wolnych stron, trzeba wytypować stronę-ofiarę, którą odsyła się na dysk (do zwolnionej ramki
wprowadza się wtedy brakująca strona i uaktualnia się tablica stron) – przykład odwołania się do strony, której
nie ma

Algorytmy zastępowania stron:

Powinny minimalizować częstotliwość braków stron (page-fault rate)

Ocenia się je na podstawie wykonania ich na pewnym ciągu odniesień (reference string) do pamięci (ciąg
adresów zredukowany do numerów kolejnych różnych stron) i sumowania braków stron (przy znanej
liczbie ramek)

Ciąg odniesień można tworzyć sztucznie lub na podstawie śledzenia danego systemu


Przy wzroście liczby ramek maleje logarytmicznie błąd braku stron

algorytm

opis

FIFO

Ofiarą staje się strona, która najdłużej przebywa w pamięci (kolejka FIFO)

Algorytm ten nie bierze pod uwagę właściwości obsługiwanych procesów i zastępuje strony na chybił-trafił

Prosta implementacja i niewielkie narzuty

Anomalia Belady’ego – liczba błędów braku stron przy wzroście liczby ramek zamiast maleć – wzrasta; dopiero przy
minimum 5-ciu ramkach stan jest ustalony

Optymalny

(teoretyczny)

Ofiarą staje się strona, która będzie nieużywana przez najdłuższy okres (problem z implementacją – nei wiadomo, do
jakich stron w przyszłości algorytm będzie się odwoływać)

Porównanie czysto-teoretyczne z innymi algorytmami

Najniższy współczynnik braków stron ze wszystkich algorytmów

Wolny od anomalii Belady’ego

Trudny do realizacji (wymaga wiedzy o przyszłej postaci ciągu odniesień)

LRU

(least

recently

used)

Ofiarą jest strona nieużywana od najdłuższego czasu

Algorytm zastępowania najdawniej używanych stron używa niedawnej historii do oszacowania najbliższej przyszłości

Lepszy od FIFO (mniej braków stron) i wolny od anomalii Belady’ego

Często stosowany

Trudności z zapamiętaniem historii użycia stron – może wymagać sporego zaplecza sprzętowego (oprogramowanie
zbyt wolne); każda strona powinna mieć swój proces licznika (przy wyborze ofiary wybieramy stronę, która ma
najmniejszą wartość licznika)

Podobnie jak OPT, LRU to algorytm stosowy (zbiór stron przy n ramkach jest zawsze podzbiorem zbioru stron w
pamięci przy n+1 ramkach)

Efektywna przy wykorzystaniu mikroprogramów


Określenie porządku ramek:

Liczniki

- W każdej pozycji tablicy stron rejestr czasu użycia
- Wymiana strony z najmniejszą wartością rejestru
- Wymaga przeglądania tablicy stron

Stos (2-kierunkowa lista ze wskaźnikami do czoła i końca

- Przy każdym odwołaniu do strony jej numer wyjmuje się ze stosu i umieszcza na jego szczycie
- Dno stosu – wskaźnik końcowy listy określa najdawniej używaną stronę

Algorytmy

przybliżające

LRU

Istnieje mało sprzętu do LRU – często stosuje się algorytmy przybliżające LRU

- Algorytm bitów odniesień

o Z każdą pozycją w tablicy stron związany jest bit odniesienia (ustawiony początkowo na 0)
o Przy odwołaniu do strony ustawia się naa 1
o Strona zastępowana w porządku FIFO, która ma bit odniesienia = 0

- Algorytm dodatkowych bitów odniesień

o Z każdą pozycją związany jest 8-bitowy rejestr ustawiony początkowo na 0000 0000
o W regularnych odstępach czasowych SO wprowadza na najbardziej znaczącą pozycję rejestru bit

background image

odniesienia

o Wymieniana jest strona najdawniej używana – najmniejsza liczba w rejestrze
o Jeżeli kilka stron ma taką samą wartość rejestru – wymiana wszystkich lub FIFO

- Algorytm drugiej szansy

o Strony przeglądane w porządku FIFO
o Sprawdzenie bitów odniesienia (0-zastąpiona, 1-druga sznasa)
o 2-ga szansa = zerowanei bitu odniesienia, ustawienie czasu bieżącego (koniec kolejki)
o Cykliczne przewijanie stron
o Strona często eksploatowana nigdy nie będzie zastąpiona
o Ulepszony algorytm 2-ej szansy używa bitu odniesienia i modyfikacji


Oprócz tego są algorytmy zliczające (licznik odwołań do każdej strony, odwołanie = +1 do licznika; wykorzystują
algorytm LFU – zastępowanie strony o najmniejszym liczniku odwołań oraz MFU – odwrotnie; kosztowne) i
algorytmy buforowania stron (pula wolnych ramek, lista zmienionych stron na dysk

Szamotanie – zmniejszenie wykorzystania procesora przy zwiększeniu stopnia wieloprogramowości; gdy proces
ma za mało stron, wysoka częstotliwość braku stron (wtedy planista pobiera dodatkowe procesy)

18. Schematy RAID (Redundant Array of Independent Disks). Porównanie pod kątem

niezawodności i wydajności.


Macierz RAID

system umożliwiający łączenie 2 lub więcej urządzeń blokowych (dysków) w jedną przestrzeń logiczną
(wolumen)

zalety: zwiększenie niezawodności i/lub wydajności odczytu i zapisu

wady: konieczność stosowania prawie identycznych dysków (pojemność, czas dostępu)

kilka typów macierzy RAID

typ

opis

rysunek

Raid linear

JBOD

pojemność dysków w macierzy zsumowana

zapis liniowy, po przepełnieniu jednego dysku zapis danych na następnym

zalety:

 duża pojemność
 łączenie dysków o różnych pojemnościach
 mniejsze koszty

wady:

 brak zabezpieczonych danych
 czas odczytu i zapisu nie zmienia się

inne nazwy: NRAID (Non - RAID), append

Raid 0

(ang.

Stripping)

dane są dzielone na paski (stripe) o rozmiarze 4-128KB i przenoszone kolejno
naprzemiennie na poszczególne dyski

pojemność dyskowa macierzy = ilość dysków * pojemność najmniejszego dysku

zalety:

 duża pojemność
 duża szybkość odczytu/zapisu (proporcjonalnie do ilości dysków)

wady:

brak zabezpieczenia danych, awaria jednego dysku prowadzi do utraty
wszystkich danych (szansa na awarię rośnie wraz z N)

zastosowanie – duże i wydajne macierze do multimediów

background image

Raid 1

(ang.

mirroring)

dyski łączy się parami

dane zapisywane na obu dyskach (sekwencyjny lub równoległy)

odczyt sekwencyjny z kolejnych dysków lub wyłącznie ze wskazanych dysków

zalety:

duża niezawodność, przy awarii jednego działa drugi

możliwy równoległy odczyt z dwóch dysków

możliwość zwiększenia szybkości odczytu i zmniejszenia czasu dostępu

odporność na awarię n-1 dysków przy n-dyskowej macierzy

wady:

zmniejszona szybkość zapisu - konieczność zapisu na dwóch dyskach
jednocześnie

utrata połączonej pojemności macierzy (jest taka, jak najmniejszego
dysku)

Raid 2

dane na dyskach są paskowane

zapis: 1 bit/pasek

potrzeba minimum 8 powierzchni do obsługi danych + dodatkowe dyski do
przechowywania informacji generowanych za pomocą kodu Hamminga
(korekcja błędów)

liczba dysków do przechowywania tych informacji proporcjonalna do logarytmu
liczby chroniących dysków

połączone dyski zachowują się jak 1 duży dysk

pojemność = suma pojemności dysków przechowujących dane


zalety:
+ każdy dowolny dysk (dane/kod Hamminga) w razie uszkodzenia może zostać

odbudowany przez pozostałe dyski


wady:
- konieczność dokładnej synchronizacji wszystkich dysków z kodem Hamminga

(inaczej dezorganizacja i nieprzydatność tych dysków)

- długotrwałe generowanie kodu Hamminga (wolna praca całego systemu)

Raid 3

dane składowane na N-1 dyskach

ostatni dysk = przechowuje sumy kontrolne

działa jak Raid 0, ale w macierzy na dodatkowym dysku przechowywane są kody
parzystości (obliczane przez specjalny procesor)


zalety:
+ odporność na awarię 1 dysku
+ zwiększona szybkość odczytu

wady:
- zmniejszona szybkość zapisu (kalkulowanie sum kontrolnych; eliminacja

poprzez sprzętowe kontrolery Raid)

- awaria dysku = spowolniony dostęp do danych(obliczenia sum kontrolnych)
- odbudowa macierzy po wymianie dysku = kosztowna obliczeniowo,

spowolnienie operacji odczytu i zapisu

- pojedynczy, wydzielony dysk na sumy kontrolne zazwyczaj jest wąskim gardłem

w wydajności całej macierzy

Raid 4

dane dzielone są na paski i przenoszone kolejno naprzemiennie na poszczególne
dyski; dane dzielone na większe bloki niż w raid 3

“w locie” obliczane są kody parzystości i zapisywane na dodatkowym,
dedykowanym dysku

zalety:

zwiększona niezawodność

lepsze wykorzystanie przestrzeni niż w mirroringu

dobre dla sekwencyjnego odczytu i zapisu danych (duże pliki)

background image

wady:

ciągłe obciążenie jednego dysku

minimum 3 dyski

obliczanie parzystości

A xor B xor C xor D = P

P xor B xor C xor D = A

Raid 5

Wartość parzystości zapisywana na różnych dyskach

dane dzielone na paski o rozmiarze 4-128KB i przenoszone kolejno
naprzemiennie na poszczególne dyski

“w locie” obliczane są kody parzystości i zapisywane kolejno na każdym z
dysków

zalety:

zwiększenie niezawodności

równomierne wykorzystanie wszystkich dysków

zwiększony odczyt

wady:

skomplikowany i długotrwały proces odbudowania

zmniejszona szybkość zapisu (kalkulacja sum kontrolnych)

odbudowa macierzy po wymianie dysku – kosztowna (obliczeniowo, I/O)

minimum 3 dyski

Raid 6

jak w RAID-5, ale występują tu 2 nadmiarowe dyski

zalety:

zwiększenie niezawodności

odporność na awarię maksimum 2-óch dysków

ochrona systemu w momencie uszkodzenia jednego dysku podobna do
RAID-5, z Hot Spare ale ochrona w trakcie odbudowania systemu

wady:

skomplikowany i długotrwały proces odbudowy

minimum 4 dyski


19. Omów metody zarządzania pamięcią.


Metody przydziału PAO procesom użytkowym:

Brak podziału, wolna przestrzeń adresowa w danej chwili przydzielana 1-emu procesowi użytkowemu
(wieloprogramowanie można realizować przez wymiatanie (ang. swapping))

podział pamięci, wolna przestrzeń adresowa podzielona na części przydzielane pojedynczym procesom
użytkowym.

- podział statyczny- dzieli pamięć na stałe partycje o różnej długości lub na bloki o stałej długości zwane

ramami (ang. frames)

- podział dynamiczny- realizacja z wykorzystaniem struktur opisujących wolne bloki pamięci o różnych

długościach oraz mechanizm wymiatania.

wykorzystanie pamięci wirtualnej - istnieje jedna lub wiele wirtualnych przestrzeni adresowych
przydzielanych procesom użytkowym, a mających w niewielkim stopniu pokrycie w pamięci operacyjnej.


Zarządzanie PAO:

przemieszczanie procesów

ochrona zawartości pamięci

dostęp do obszarów dzielonych

organizacja fizyczna pamięci

organizacja logiczna pamięci

- adres logiczny – wytworzony przez procesor (adres wirtualny)
- adres fizyczny – umieszczony w rejestrze adresowym pamięci

background image

Odwzorowanie adresów wirtualnych na fizyczne MMU (Memory Managment Unit – jednostka zarządzająca
pamięcią).

Przemieszczanie procesów:

opis

Ładowanie

dynamiczne

podprogram nie jest wprowadzany do pamięci dopóki nie zostanie wywołany

wszystkie podprogramy przechowywane są na dysku w postaci kodów przemieszczalnych (gotowe do załadowania)

podprogram sprawdza czy inny podprogram jest w pamięci (jeśli nie to używa programów łączących i ładujących
moduły przemieszczalne – wprowadzają do pamięci i uaktualniają tablicę adresów programu)


zalety:
+ lepsze wykorzystanie pamięci – nieużywany program nigdy nie zostanie załadowany
+ użyteczne kiedy od czasu do czasu trzeba wykonać duże fragmenty kodu (np. podprogram obsługi błędów)
+ nie wymaga specjalnego wsparcia ze strony systemu operacyjnego – użytkownicy są odpowiedzialni za odpowiednie

projektowanie programów

Wymiana

(swapping)

proces może być tymczasowo odesłany z pamięci operacyjnej do pamięci pomocniczej (po pewnym czasie może być
sprowadzony z powrotem)

wymagana pamięć pomocnicza – na ogół szybki dysk (pojemny, umożliwiający bezpośredni dostęp do tych adresów
pamięci)

wtaczanie i wytaczanie = proces o niższym priorytecie odsyłany z pamięci, by proces o wyższym priorytecie mógł być
załadowany i wykonany (algorytmy planowania priorytetowego)

czas przesłania proporcjonalny do ilości wymienianej pamięci (główna składowa czasu wymiany)

obecnie standardowa wymiana stosowana jest rzadko (zamiast tego stronicowanie)

jest wiele zmodyfikowanych wersji swappingu w różnych SO

nakładki

przechowywanie w pamięci tylko tych rozkazów i danych, które są stale potrzebne

inne wprowadzane w miarę zapotrzebowania, na miejsce zajmowane przez zbyteczne rozkazy i dane


zalety:
+ można uruchomić proces o rozmiarze większym od przydzielonej mu pamięci
+ mogą być w całości implementowane przez użytkownika, ale projektowanie i programowanie nakładek jest

skomplikowane – obecnie dość ograniczone w użyciu

+ nie wymagają wsparcia ze strony SO

Przydział

ciągły

procesy zawierają różną wielkość

przydział ciągły = blok za blokiem

pamięć poszatkowana = szachownica

problem – gdzie umieścić procedury?


Ochrona:
Kontrola dostępu programów, procesów i użytkowników do zasobów zdefiniowanych przez system
komputerowy.
- środki specyfikujące rodzaje wymaganej ochrony (polityka)
- środki ich wymuszenia (mechanizmu)
- miarą zaufania do systemu – ochrona i bezpieczeństwo
- kontrolowanie dostępu do programów, procesów lub użytkowników
- proces ma dostęp tylko do tych zasobów, do których został uprawniony
- ochrona kodu i danych SO przed procesami usera/ procesów wzajemnie przed sobą = rejestr graniczny i

rejestr przemieszczenia

- rejestr przemieszczenia = wartość najmniejszego adresu fizycznego
- rejestr graniczny = górny zakres adresów logicznych

Dynamiczny przydział pamięci

jak na podstawie listy wolnych dziur spełnić zamówienie na obszar o rozmiarze n?

Pierwsze dopasowanie

(First-Fit)

Najlepsze dopasowanie

(Best-Fit)

Najgorsze dopasowanie

(Worst-Fit)

- dziury uporządkowane malejąco pod

względem adresów bazowych

- szukamy najmniejszej dziury (są

uporządkowane rosnąco) do której

- uporządkowane malejąco
- segment umieszczamy w pierwszej

background image

- szukamy najmniejszej dziury s<=xi
- po pewnym czasie wszystkie adresy małych

dziur będą na początku listy

przydziela się 1-wszą dziurę o
wystarczającej wielkości

wyszukiwanie od początku wykazu dziur
lub miejsca ostatniego wyszukiwania

dziury posortowane względem adresu

najszybsza

zmieści się nasz segment

przydział najmniejszej z pasujących
dziur

najmniejsze pozostałości kosztem
przeszukiwania całej listy

dziury posortowane względem
rozmiaru

dziurze, a pozostałe miejsce tworzy
nową dziurę

przydział największej dziury

wymaga przeszukiwania całej listy

czasami bardziej przydatne niż wiele
rozproszonych, małych dziur

duże zużycie czasu i pamięci


W pamięci występuje fragmentacja zewnętrzna - trzeba tak ułożyć dziury, żeby wszystkie małe tworzyły jedną
dużą (ale spada wydajność systemu). Rozwiązaniem segmentacja i stronicowanie.

segmentacja

stronicowanie

Schemat zarządzania pamięcią ukazujący sposób
widzenia pamięci przez użytkownika

przestrzeń adresów logicznych jest zbiorem
segmentów

segment = jednostka logiczna, np. program
główny, procedura, metoda

numeracja segmentów = łatwiejsza
implementacja

adres logiczny: <nr_segmentu, odległośc>

tablica segmentów (odwzorowanie 2-
wymiarowych adresów logicznych w 1-
dnowymiarowe fizyczne; każda pozycja = baza
segmentu (początkowy adres segmentu w
pamięci) + granica segmentu (jego długość);
przechowywana w pamięci )

czas dostępu do pamięci logicznej 2-krotnie
większy od dostępu do fizycznej; metody
zmniejszania tego czasu:

- liczba segmentów musi być

ograniczona (można wykorzystać
szybszą pamięć asocjacyjną – rejestry)

- wykorzystanie tablicy podręcznej

segmentu (informacje o ostatnim
zachowaniu segmentu (szybszy dostęp
niż do tablicy segmentu))

inne rozwiązanie problemu segmentacji zewnętrznej

przydział procesowi dowolnych dostępnych miejsc pamięci fizycznej ale
ustalonymi porcjami (dopuszczenie nieciągłości logicznej przestrzeni
adresowej)

pamięć fizyczna podzielona na równe bloki (ramki; rozmiar od 512 B)

pamięć logiczna podzielona na bloki takiego samego rozmiaru (strony)

system utrzymuje info o wolnych i przydzielonych ramkach (tablica ramek)
i do jakiego procesu są przydzielone

strony działającego procesu obecne w pamięci pomocniczej wprowadza
się do wolnych ramek PAO (n stron wymaga n ramek, porozrzucanych w
różnych miejscach PAO)

brak fragmentacji zewnętrznej kosztem fragmentacji wewnętrznej
(ostatnia strona nie jest w 100% zapełniona)

adres logiczny generowany przez procesor zawiera:

- numer strony s (index w tablicy stron)
- odległości na stronie o (o + adres bazowy = adres fizyczny

pamięci, wysyłany do jednostki pamięci)

rozmiar ramki = rozmiar strony

strony lądują do dowolnych ramek

dla procesu pamięć logiczna = spójny adres (gdy podział na strony, to
bardziej znaczące bity = strona, mniej = przesunięcie)

stronicowanie hierarchiczne – we współczesnych systemach
komputerowych (np. 2-poziomowe – tablica stron podzielona na strony)

duże strony = wzrost fragmentacji wewnętrznej, małe strony = wzrost
rozmiaru tablicy stron (mniejsza fragmentacja wewnętrzna)

cel: logiczny podział przestrzeni adresów

rozmiar segmentów różny

podział adresu programu na nr segmentu i bajtu
jest logiczny (przekroczenie zakresu nr bajtu nie
ma żadnego wpływu na nr. segmentu)

cel: fizyczny podział pamięci

identyczny rozmiar stron

podział adresu programu na nr stron i bajtu na stronie wykonywany
środkami sprzętowymi (przekroczenie zakresu = zwiększenie numeru
strony)


Pamięć wirtualna

umożliwia wykonywanie procesów nie przechowywanych w całości w PAO

abstrakcyjna pamięć główna (jednolita tablica, odseparowanie pamięci fizycznej i logicznej)

logiczna przestrzeń adresowa może być większa od fizycznej

możliwe wykonanie programu, który tylko w części jest w pamięci fizycznej

większa wieloprogramowość (więcej procesów wykonywanych w tym samym czasie – lepsze wykorzystanie
procka i przepustowości)

wydajne tworzenie i wymiana procesów

ułatwia programowanie

background image

implementowania w formie stronicowania na żądanie (procesy podzielone na strony są w pamięci
pomocniczej i sprowadzane do PAO) i segmentacji na żądanie

20. Mechanizmy komunikacji międzyprocesowej IPC (Inter Process Communication).


Mechanizmy IPC (ang. Inter process communication) to grupa mechanizmów komunikacji i synchronizacji
procesów działających w ramach tego samego SO

Mechanizmy IPC obejmują:

Kolejki komunikatów (przekazywanie określonych porcji danych)

Pamięć współdzieloną (współdzielenie kilku procesom tego samego fragmentu wirtualnej przestrzeni
adresowej)

Semafory (synchronizacja procesów w dostępie do współdzielonych zasobów np. pamięci współdzielonej)


Mechanizmy IPC:

Część jądra systemowego (komunikacja przetwarzana w kontekście jądra – synchronizacja kosztem
wydajności – każda operacja IPC wymaga przełączenia kontekstu, spory narzut czasu; niezawodność –
atomowość operacji: niedopuszczenie do kolizji w dostępie czy wyścigu)

Może odnosić się do komunikacji w 1 SO, klastrze czy systemami odległymi (używa się wtedy numery
portów lub unikalnych nazw -RPC)

Polega na budowaniu w pamięci/nośnikach dynamicznych struktur (przesyłanie komunikatów
międzyprocesowych np. stan wątków)

Nie posiada sztywnej specyfikacji (SO posiada semafory, które można wykorzystać w aplikacji)

Wszystkie urządzenia IPC posiadają podobny interfejs (mechanizmy)

Najważniejszą wspólną cechą jest klucz urządzenia IPC

Klucz = liczba do identyfikacji obiektów IPC, umożliwiają wspólne użycie zasobów IPC przez kilka
niespokrewnionych procesów

Klucze różnych obiektów nie mogą się powtarzać

Do znajdowania unikalnego klucza zależnego od ścieżki pliku służy funkcja fork()

Użycie: rozbudowane wielowątkowe aplikacje (bazy danych, serwery WWW, serwery aplikacyjne…)

nazwa

opis

Piki i blokady

Najprostsza i najstarsza forma IPC

Pliki – nie stosuje się do komunikacji procesów współbieżnych (czytelnik może wyprzedzić pisarza –
rozwiązaniem łącza komunikacyjne)

sygnały

Przerwania programowe (DOS)

semafory

Używane do kontroli dostępu do zasobów systemu dzielonych przez kilka procesów (kontrola czasowa)

Implementowany w jądrze, procesy otrzymują id semafora (możliwość odwołania)

Problem synchronizacji czasowej – alternatywą rejony krytyczne i monitory (dla każdego języka
programowania)

Łącze

nienazwane

(komunikacyjne)

Nie są plikami ale mają swój i-węzeł; brak dowiązania

Uśpienie nadgorliwego pisarza, oczekiwanie nad-ambitnego czytelnika

Komunikacja tylko w 1 stronę (też łącza nazwane)

Łącza do których dostęp mają tylko procesy pokrewne (proces + potomkowie)

Potomkowie dziedziczą deskryptory plików, łącza nienazwane oparte są na deskryptorach

Jądro systemu na żądanie procesu tworzy łącze bez nazwy i umieszcza jego deskryptor w tablicy deskryptorów
plików otwartych w procesie (korzysta najpierw proces, potem potomkowie)

Gdy zrealizowany ostatni proces – zamknięcie łącza

powolne

Łącza nazwane

Wykorzystują FIFO

Łączą cechy pliku i łączy (1-kierunkowy przepływ danych)

Identyfikowane przez nazwę

Procesy niespokrewnione mogą przesyłać między sobą dane

Łącze to ma dowiązanie do systemu plików (istnieje w systemie jako plik w jakimś katalogu)

Pozostaje w systemie nawet po zakończeniu ostatniego używającego je procesu

background image

powolne

Kolejki

komunikatów

niewielka liczba danych

stała/zmienna długość komunikatu

operacje nadaj/odbierz

procesy z uprawnieniami mogą pobierać komunikaty z tej kolejki

Komunikacja między procesami

Komunikaty umieszczone są w kolejce FIFO

Gdy komunikat pobrany przez odbiorcę – usuwany z kolejki

Pamięć dzielona

(segmenty

pamięci

dzielonej)

Obszar pamięci dzielony między kilkoma procesami

Dane umieszczane przez proces w segmentach (obszar adresowy procesu wywołującego)

Może z nich korzystać wiele procesów

Najszybszy rodzaj komunikacji między procesami

Komunikacja = obszar pamięci przydzielany kilku procesom (od razu procesy mogą korzystać z danych)

Gniazda

Wykorzystywane do komunikacji przez sieć (komunikacja międzyprocesowa)

Możliwość komunikacji dwukierunkowej (przesyłanie i odbiór danych)

Pojęcie abstrakcyjne (2-kierunkowy punkt końcowy połączenia)

Właściwości: posiadają typ (sposób wymiany danych), lokalny adres (adres IP – węzeł w sieci), port
(opcjonalnie; określa proces w węźle)

Komunikacja w obrębie 1-ego systemu (gniazda dziedziny Uniksa)

Komunikacja w wielu systemach

RPC

komunikacja w wielu systemach

protokół zdalnego wywoływania procedur

obsługiwany w bibliotekach języka Java

potrzebny:

- serwer (program z usługami, nasłuchujący na wybranym porcie czy ktoś się nie łączy)
- klient (program korzystający z usług serwera, łączność przez sieć)


21. Układy elektroniczne jako filtry. Klasyfikacja i przykłady zastosowań.


Kilka prawd ogólnych:

Urządzenie elektroniczne zasilane często z sieci energetycznej (zasilacze – transformacja napięcia 230 V
użyteczne 12V, które jest prostowane za pomocą prostownika dwupołówkowego – przebieg tętniący; gdy
podłączymy równolegle kondensator o odpowiedniej pojemności = zmniejszenie amplitudy tętnień =
proces filtrowania; im większa pojemność kondensatora, tym przebieg napięcia wyjściowego bardziej
przypomina przebieg stały)

Duże natężenie prądu = stosuje się cewki włączone szeregowo z odbiornikiem (tzw. dławnikiem) (zmiana
prądu w cewce = wygładzanie napięcia; powstaje napięcie przeciwdziałające zmianom)


Filtr

Fragment obwodu elektronicznego

Przepuszcza lub blokuje sygnały o określonym zakresie częstotliwości/zawierającego określone
harmoniczne

Podział filtrów – przeznaczenie:

- Dolnoprzepustowe
- Górnoprzepustowe
- Środkowoprzepustowe
- środkowozaporowe

podział filtrów – konstrukcja i rodzaj działania:

- pasywne
- aktywne

podział filtrów – typ obwodów (niewielkie różnice na poziomie konstrukcyjnym):

- analogowe
- cyfrowe (DSP – cyfrowe przetwarzanie sygnałów, ciągi liczb; użyte te same prawa co analogowe)

background image

Typ filtru

opis

rysunek

pasywny

brak elementów dostarczających energii do obwodu drgającego

nie wnosi wzmocnienia, jedynie tłumi (zmniejsza) napięcie wejściowe

zawierają tylko pasywne elementy RLC (jedno i wielostopniowe)

można uzyskać wiele typów filtrów (połączenie elementów RLC)

często wykonany z materiałów piezoelektrycznych z odpowiednio napylonymi
elektrodami

analiza układu w dziedzinie częstotliwości - graficzna reprezentacja =charakterystyka
amplitudo-częstotliwościowa (tłumienie sygnału w zależności od częstotliwości;
skala logarytmiczna)

czas dojścia do stanu ustalonego: =RC

szeroko stosowany w elektronice

przykłady:

- filtr dolnoprzepustowy - kondensator o dużej pojemności połączony równolegle

do filtrowanego napięcia + ew. szeregowy opornik - > filtrowanie napięcia
(przebieg stały)

o dla dużych częstotliwości tłumienie układu, dla małych napięcie

wyjściowe równe wejściowemu (pasmo przepustowe i zaporowe)

- filtr górnoprzepustowy – do filtrowanego napięcia podłączenie kondensatora

szeregowo i opornika równolegle (odwrotnie niż w dolnoprzepustowym)

o odwrotnie niż w dolnoprzepustowym

dla dolno i górnoprzepustowego

- graniczna częstotliwość filtra : fs=1/(2 RC)
- charakterystyka amplitudowa w paśmie tłumienia: opadanie o 20db/dekadę

częstotliwość graniczna – między pasmem przepustowym, a zaporowym

- napięcie wyjściowe jest mniejsze o 3 dB dla częstotliwości z zakresu pasma

przepustowego

- dla prostych filtrów 1-nioogniowych RC i RL poszukuje się częstotliwości, żeby

amplituda napięcia wyjściowego stanowiła 0,7 wejściowego (-3 dB)

- pasmo przepustowe = zakres częstotliwości, w którym układ cechuje się

wzmocnieniem (albo brakiem tłumienia)

jeśli natężenie prądu duże = cewki łączone szeregowo z odbiornikiem (LC)

w zależności od podłączenia L i C można uzyskać:

- filtr środkowoprzepustowy (strojenie radiowych odbiorników AM)
- filtr środkowo zaporowy (tłumienie niepożądanego pasma częstotliwości)

wszystkie charakterystyki filtrów można uzyskać poprzez szeregowe/równoległe
połączenie kilku filtrów, jednakże:

- tłumienie sygnałów poza pasmem przenoszenia zbyt małe
- kaskadowe połączenie kilku filtrów = znaczne tłumienie amplitudy (też w paśmie

przenoszenia)

- lepiej zastosować filtr aktywny

Charakterystyka filtra

dolnoprzepustowego RC

aktywny

elementy RLC + elementy sterujące i dostarczające energię do filtrowanego układu
(wzmacniacze, układy nieliniowe)

składa się z szerokopasmowego wzmacniacza (operacyjnego) i członu sprzężenia
zwrotnego

przykłady:

- filtr dolnoprzepustowy
- filtr górnoprzepustowy
- filtr środkowo-przepustowy
- filtr środkowo-zaporowy
- filtry multiple feedback (struktury realizacji elektronicznej filtru)
- Czybyszewa, Butterwortha …

Filtr dolnoprzepustowy – ma pasmo przepustowe od strony niskich częstotliwości i

Przykład aktywnego filtru

górnoprzepustowego

(trójkąt = wzmacniacz

operacyjny)

background image

zaporowe od wysokich

Filtr górnoprzepustowy – wzmocnione charakterystyki RC

- Wzmacniacz operacyjny = element aktywny (ma odrębne zasilanie i po części

dostarcza je do filtrowanego układu)

Filtr środkowo-przepustowy

- charakterystyka częstotliwościowa ostro obcięta po obu stronach

Lepsze tłumienie w paśmie tłumienia od pasywnych

Możliwość konstrukcji filtrów z użyciem techniki cyfrowej i sterowne
mikroprocesorowo


Dobroć filtru
- Stosunek częstotliwości środkowej filtru do jego szerokości pasma
- Gdy filtr ma większą szerokość pasma przenoszonego – określenie względnej szerokości pasma

(odwrotność dobroci, wyrażana w procentach częstotliwości środkowej)

22. Wzmacniacz operacyjny. Parametry charakterystyczne, zastosowania.


Wzmacniacz operacyjny

Analogowy układ scalony

Powszechnie traktowane jako wzmacniacze o sprzężeniach bezpośrednich i wejściu różnicowym

Typy wzmacniaczy:
- Z wejściami symetrycznymi
- Z wejściami asymetrycznymi

Zewnętrzny obwód sprzężenia zwrotnego = decydujący wpływ na ich sposób działania

Charakterystyka:

- Duża oporność wejściowa (różnicowa, jak też między poszczególnymi wejściami, a masą)
- Wielkie wzmocnienie przy otwartej pętli sprzężenia zwrotnego
- Mała oporność wyjściowa (zerowa dla idealnego wzmacniacza)
- Szerokie pasmo przenoszenia częstotliwości (ideał – nieskończenie szerokie)
- Znikome szumy
- Stabilność temperaturowa

Zasilany z zewnętrznego źródła napięcia (można pominąć na schemacie = czytelność), przeważnie stałym
napięciem symetrycznym (2 źródła napięcia: + i – względem masy)

Typowe wzmocnienia napięciowe: 3.000 do 1.000.000

Wzmacniacz operacyjny posiada 2 wejścia:

- Nieodwracające (+)
- Odwracające (-)

W zależności od tego, który potencjał będzie większy (na wejściu nieodwracającym czy odwracającym), taki
znak napięcia będzie na wyjściu

Niezależnie od konfiguracji pracy – ograniczony zakres zmian napięcia wyjściowego (nie większe od
napięcia zasilania)

Nasycenie = na wejście podane napięcie o wzmocnieniu przekraczającym zakres napięć zasilających, a
napięcie wyjściowe jest mu równe lub niewiele mniejsze; efekt niepożądany (zniekształcenia nieliniowe
sygnału)


Analiza działania wzmacniaczy opartych na WO:

Obwód wyjściowy wzmacniacza (z pętlą sprzężenia zwrotnego) stara się doprowadzić do zerowej różnicy
napięć między jego wejściami

Wejścia WO nie pobierają żadnego prądu z obwodów zewnętrznych


Zastosowania:

WO = punkt wyjścia dla analizy obwodów i producentów tych układów

Przykłady zastosowań:

- Wzmacniacz odwracający (odwrócona faza wyjściowa)
- Wzmacniacz nieodwracający (duża impedancja wejściowa)
- Wzmacniacz różnicowy

background image

- Wzmacniacz sumujący
- Wzmacniacz różniczkujący
- Wzmacniacz całkujący
- Przesuwnik fazowy
- Komparator napięć (WO pracuje z otwartą pętlą wzmocnienia, przekazuje do wyjścia wzmocniony

sygnał)

o Różnica napięć na wejściach powoduje duże zmiany napięcia wyjściowego (ogromne

wzmocnienie WO)

o WO nasycony, napięcie wyjściowe ograniczone napięciem zasilania
o Napięcie niezrównoważenia – mimo, że napięcia wejściowe po zsumowaniu są równe 0, to

wyjściowe jest różne od 0; w celu wyzerowania wyjścia trzeba dać niewielkie napięcie na
wejście (miliwolty)

- Detektor przejścia przez 0 – sygnalizuje logiczną jedynką napięcie niższe od 0V podane na wejście

układu

- Detektor wartości szczytowej (kondensator w układzie zapamiętuje na dużej szczytową wartość

napięcia, szybko się ładuje prądem wyjściowym wzmacniacza, wolno rozładowuje)

- Ogranicznik amplitudy – ograniczanie amplitudy sygnału wyjściowego (napięcie wyjściowe nie osiągnie

wartości większej niż ustalona przez diody Zenera, wchodzące w skład układu)

- Filtry aktywne


Dodatkowe informacje:

Różnicowe wzmocnienie napięciowe Au – stosunek napięcia wyjściowego do różnicowego napięcia na
wejściu przy otwartej pętli sprzężenia zwrotnego.

Wejściowa rezystancja różnicowa RID – rezystancja występująca między wejściowymi zaciskami
wzmacniacza operacyjnego.

Rezystancja wyjściowa RO – rezystancja występująca między zaciskiem wyjściowym, a masą we
wzmacniaczu zrównoważonym z otwartą pętlą sprzężenia zwrotnego.

Częstotliwość graniczna fT – największa częstotliwość, przy której wzmocnienie różnicowe (pasmo
wzmocnienia jednostkowego) jest równe wzmocnieniu maksymalnemu (wzmocnieniu dla prądu stałego).

23. Bramki i funktory logiczne. Tabele prawdy. Minimalizacja funkcji.


Bramka logiczna

Element konstrukcyjny maszyn i mechanizmów (układ scalony)

Realizuje fizycznie pewną prostą funkcję logiczną (jej argumenty – zmienne logiczne - oraz wartości mogą
przyjmować 0 lub 1)

Podstawowe elementy logiczne (budujące układy logiczne, realizujące funkcje logiczne – wystarczą 2 z
wymienionych; tzw. układy zupełne)

- Suma (alternatywa, bramka OR)
- Iloczyn (koniunkcja, AND)
- Negacja (NOT)

Bramki funkcjonalnie pełne (można zbudować układ realizujący dowolną funkcję logiczną z samych
NANDów albo NORów)

- Negacja koniunkcji (NAND)
- Negacja sumy logicznej (NOR)

Bramka logiczna XOR stosowana w układach arytmetyki (sumatory, subtraktory)

Funktory logiczne rzadko występują pojedynczo, częściej tworzą złożone układy logiczne

background image


Minimalizacja funkcji logicznych - przykład

Mam bramkę, która ma wejścia A,B i C oraz wyjście f, pytanie brzmi – jaką funkcje ona realizuje?

A

B

C

f

0

0

0

0

0

0

1

0

0

1

0

0

0

1

1

1

1

0

0

1

1

0

1

1

1

1

0

1

1

1

1

1



Metody minimalizacji funkcji logicznych:
- Metoda Karnaugh
- Metoda Quine’a-McCluskey’a
- Metoda iteracyjnego konsensusu
- Metoda espresso

Metoda Karnaugh – zasady (siatki, stany):

Tworzymy siatki o takim rozmiarze, by ilość opisujących je zmiennych była równa liczbie sygnałów
wejściowych

Tworzymy tyle siatek, ile układ posiada wyjść

Kanoniczna suma (dysjunkcyjna postać kanoniczna, AKPN):

f=~ABC+A~B~C+A~BC+AB~C+ABC // odczytuje argumenty dla wartości 1

Postać kanoniczna iloczynu (koniunkcyjna postać kanoniczna, KAPN)

f=(A+B+C)(A+B+~C)(A+~B+C)

// odczytuje te pola gdzie f = 0 i odwrotnie

UWAGA

F = ABC + AB~C = (AB)(C+~C)=AB

background image

Wewnątrz kratek danej siatki wpisujemy stany wewnętrzne, jakie mają pojawiać się na danym wyjściu przy
odpowiadającej im kombinacji sygnałów wejściowych opisujących siatkę


Zasady zakreślania jedynek:
- Ilość zakreślonych w grupie kratek musi być wielokrotnością 2

k

, k=0,1,2,3…

- Zakreślona grupa musi być symetryczna względem którejś z głównych (bądź podgłównych) osi siatki
- Możliwość „sklejania” skrajnych wartości
- Tworzymy implikanty/implicenty o jak największej ilości jedynek/zer (przy zachowaniu 1-ego warunku); im

więcej kratek, tym mniej zmiennych

-

Tworzenie funkcji logicznej na podstawie stanów z siatki Karnaugh:

Zakodowane stany zakreślamy w grupy (np. same jedynki – suma iloczynów; gdy same 0 – iloczyn sum)

Odczyt funkcji wyjściowej

- należy popatrzeć na współrzędne zakreślonej grupy
- do wyrażenia iloczynowego wchodzą tylko zmienne niezmieniające się w obrębie grupy
- każda zakreślona grupa jedynkowa (tzw. implikant; grupy zerowe - implicent) jest 1-nym iloczynem w

postaci kanonicznej



Metoda Karnaugh – przykład:
a) ~ (p^qv~r^p)

p

q

r

~r

p^q

~r^p

p^qv~r^p

f

0

0

0

1

0

0

0

1

0

0

1

0

0

0

0

1

0

1

0

1

0

0

0

1

0

1

1

0

0

0

0

1

1

0

0

1

0

1

1

0

1

0

1

0

0

0

0

1

1

1

0

1

1

1

1

0

1

1

1

0

1

1

1

0

Postać AKPN: ~p~q~r+~p~qr+~pq~r+~pqr+p~qr

Z postaci AKPN należy zrobić tabele Karnaugh

- Należy użyć kodu greja dla argumentów
- Jeśli wyraz wystąpi to daj 1, jak nie to 0

Tabela Karnaugh:

pq\r

0

1

00

1

1

01

1

1

11

0

0

10

0

1

W tabeli Karaugh zaznaczamy maksymalnie duży prostokąt możliwy do stworzenia i funkcje sklejone:

pq\r

0

1

00

1

1

01

1

1

11

0

0

10

0

1

Na podstawie odpowiednio zaznaczonych prostokątów z tabeli odczytuję argumenty (argumenty muszą
być niezmienne):

Y(p,q,r) = ~p + ~qr

background image

24. Układy sekwencyjne. Przykłady realizacji i obszary zastosowań.


Układ sekwencyjny:

Jednym z rodzajów układów cyfrowych (obok układów kombinacyjnych)

Stan wyjść zależy od stanu wejść i stanu poprzedniego (stanu wewnętrznego; zapamiętanego w rejestrach)

Stan stabilny = stan wewnętrzny nie ulega zmianie pod wpływem dania różnych sygnałów wejściowych

Może być opisany za pomocą 2-óch funkcji (A-stan wewnętrzny, X – wejście, Y - wyjście):

- Y = f(X,A) <- wyjście zależy od stanu wewnętrznego i wejść; automat Mealy’ego
- Y = f(A) <- wyjście zależy wyłącznie od stanu wewnętrznego; automat Moore’a

Opis układu sekwencyjnego:
- Słowny
- Przebieg czasowy (zależności czasowe między X i Y)
- Grafy przejść (zależy od rozpatrywanego automatu)
- Tablice przejść i wyjść


Typy układów sekwencyjnych

asynchroniczne

synchroniczne

Zmiana sygnałów wejściowych X powoduje natychmiastową
zmianę wyjść

Założenie: jednoczesna zmiana kilku sygnałów jest
niemożliwa

Budowane z przerzutników lub ze sprzężenia zwrotnego


+ Szybkie układy
- Podatność na hazard
- Wyścig (co najmniej 2 sygnały wejściowe zmieniają swój

stan w 1 chwili czasu; w praktyce niezerowy czas
przerzucania bramek i przerzutników – zmiana 1 sygnału
może być wcześniej; skutkuje w trudnych do wykrycia
błędach)

Zmiana wewnętrznego stanu (i wartości wyjściowej)
następuje wyłącznie w chwilach wyznaczonych przez sygnał
zegarowy clock

Posiada wejście zegarowe (clock, clk lub c)

Nawet, gdy stan wejść się nie zmienia, to stan wewnętrzny
może ulec zmianie (w kolejnych taktach zegara)

W automacie Moore’a wyjście układu jest funkcją stanu
wewnętrznego – możliwość zmiany jedynie w chwili
nadejścia taktu (gwarancja utrzymania się stanu wyjść przez
cały takt)

Automat Mealy’ego – zmiana wyjścia układu może nastąpić
też w momencie zmiany wejścia

Układ statyczny (wyzwalany poziomem) = reaguje na
określony stan logiczny zegara

Układ dynamiczny (wyzwalany zboczem) = reakcja na zmianę
sygnału zegarowego (wyzwalane zboczem narastającym
/opadającym / impulsem)

Układ autonomiczny = brak wejść, jedynie charakteryzuje go
stan wewnętrzny (liczniki stosowane w zegarkach
elektronicznych)


Przykłady:

Przerzutniki – układ z 2-ma stanami wyróżnionymi równowagi trwałej; przy przejściu z 1 stanu do 2 trzeba
doprowadzić sygnał zewnętrzny wyzwalający krótkotrwały proces generacji
- Bez sygnałów wejściowych zachowuje swój stan
- Ma 2 dopełniające się wzajemnie wyjścia: Q i ~Q

o Przerzutnik RS (syn i asyn; z bramek OR/NAND, ma stany niedozwolone – na wejściach nie

mogą być jednocześnie jedynki)

o JK (rozwinięty RS, brak stanów niedozwolonych; synchroniczny)
o D (synchroniczny; ma 1 wejście, przepisuje informacje z wejścia D do wyjścia Q z opóźnieniem

1 impulsu taktującego)

Rejestr = układ pamiętający (PI = wejście równoległe, SI – wejście szeregowe itd)

- Równoległe (PIPO)
- Przesuwne (SISO, SIPO, PISO)
- Zastosowanie przesuwne

Licznik

- Rewersyjny (liczy w przód i tył)

background image

25. Sumator równoległy. Sumator a jednostka arytmetyczno- logiczna.

Sumator

Układ kombinacyjny

Wykonuje operację dodawania 2 lub więcej liczb dwójkowych


Sumator równoległy

wielopozycyjne

Jednocześnie dodaje bity ze wszystkich pozycji

Przeniesienie realizowane w zależności od połączenia sumatorów jednobitowych

Sumator równoległy – podział ze względu na sposób wytwarzania przeniesień:

Sumatory z przeniesieniem szeregowym (sumatory kaskadowe/iteracyjne)

Sumatory z przeniesieniem równoległym

Sumator kaskadowy n-bitowy

Sumator z przeniesieniem równoległym

Układ powstały przez połączenie n sumatorów 1-bitowych

Przy sumowaniu liczb dodatnich wejście przeniesienia
początkowego C0 nie jest wykorzystywane (C0=0)

Wszystkie cyfry dodawanych liczb 2-kowych podawane są
na sumator jednocześnie

Czas uformowania się wyniku zależy od prędkości propagacji
sygnału przeniesienia przez kolejne komórki sumatora

Najgorszy przypadek – sygnał C musi przejść przez wszystkie
komórki sumatora

Generuje wszystkie wartości przeniesień jednocześnie na
podstawie wartości na poszczególnych bitach obu operandów

Przy wzroście bitów przewaga nad sumatorem kaskadowym
(mniejszy czas, szybszy o 20-40%)

Zbudowany jest

o z bloków wyznaczających sumę Si + grupy generacyjne gi i

propagacyjne pi (liczone niezależnie)

o z bloku generującego przeniesienia (zgodnie z

rozwiniętymi wyrażeniami)

w praktyce – buduje się 4-bitowe sumatory tego typu

Jednostka arytmetyczno-logiczna

Proste operacje na liczbach całkowitych

- Operacje logiczne
- Dodawanie/odejmowanie
- Przesunięcie bitowe
- Czasem mnożenie i dzielenie modulo

Wykorzystywany często jako sumator (w rzeczywistości układ ten realizuje wiele innych funkcji – np.
porównywanie wartości bezwzględnych liczb)

Sumatory i ALU wykonują funkcje arytmetyczne w czasie od pojedynczych nanosekund do dziesiątków
nanosekund (sumator = układ arytmetyczny, możliwość wyboru funkcji; ALU = arytmetyczny + logiczny)

background image

26. Budowa i zasada działania procesorów: potokowy, wektorowy, CISC, RISC.

typ

opis

RISC

stosunkowo niewiele rozkazów wykonywanych w pojedynczym cyklu rozkazowym,

stosunkowo niewiele trybów adresowania,

łatwe do zdekodowania, stałej długości formaty rozkazów

dostęp do pamięci ograniczony do rozkazów LOAD i STORE

stosunkowo obszerny zbiór uniwersalnych rejestrów

rozkazy działające zazwyczaj na argumentach zapisanych w rejestrach, a nie w PAO

układowo zrealizowana jednostka sterująca


to co jest unikalne w tych procesorach:

intensywne wykorzystanie przetwarzania potokowego, w tym potokowe wykonywanie rozkazów

kompilatory o dużych możliwościach optymalizacji kodu wykorzystujące architekturę potokową,

skompilowane funkcje zaimplementowane częściej programowo niż sprzętowo.

CISC

występowanie złożonych, specjalistycznych rozkazów (instrukcji) - do wykonania wymagają od kilku do kilkunastu cykli
zegara

szeroka gama trybów adresowania,

przeciwne niż w architekturze RISC rozkazy mogą operować bezpośrednio na pamięci (zamiast przesyłania wartości do
rejestrów i operowania na nich)

powyższe założenia powodują iż dekoder rozkazów jest skomplikowany

pojedynczy rozkaz mikroprocesora wykonuje kilka operacji niskiego poziomu (pobranie z pamięci, operacja
arytmetyczna, zapis do pamięci)

Wektorowy

w przeciwieństwie do skalarnego pozwala na przetwarzanie w pojedynczych cyklach całych wektorów danych

operandy instrukcji = wieloelementowe zbiory liczb (możliwość przyspieszenia obliczeń)

pracują na macierzy danych

koncepcja rejestru wektorowego (zbiór konwencjonalnych rejestrów, których wartości można załadować z pamięci 1-
nym rozkazem

stosowane we współczesnych superkomputerach

Potokowy

jedno z najlepszych rozwiązań

wcześniej: procesor jednocześnie pracował tylko nad 1 instrukcją = niska wydajność (tylko 1 jednostka procesora
zajmowała się działaniem, pozostałe elementy CPU oczekiwały lub nic nie robiły)

teraz: niepracujące jednostki i bloki procesora przetwarzają jednocześnie inne instrukcje

podział logiki procesora – wykonanie instrukcji - na wyspecjalizowane grupy; każda z grup wykonuje część pracy
związanej z rozkazem

grupy – połączenie sekwencyjne, praca równoległa (pobierają dane od poprzedniego elementu z sekwencji)

potok wykonawczy (ścieżka przetwarzania instrukcji wewnątrz procesora) = podział procesu wykonania instrukcji na
oddzielne, logiczne etapy

każdy etap wykonywany niezależnie na określonym stopniu potoku (1 takt zegara)

po pobraniu z pamięci instrukcja (1 po 2) przemieszczają się w potoku wykonawczym (przechodzenie przez kolejne
stopnie)

możliwość jednoczesnej pracy układów RISC nad wieloma instrukcjami (np. jednoczesne wczytywanie i zapis do
rejestru)

możliwość jednoczesnego wykorzystanie wszystkich bloków procesora (możliwość rozpoczęcia przetwarzania
kolejnych rozkazów przed zakończeniem wcześniejszych instrukcji)

po wykonaniu rozkazu w jednostce wykonawczej ma przygotowaną i oczekującą kolejną instrukcję (w przetwarzaniu
prostym trzeba było pobierać wszystko od nowa)

wzrost wydajności, przyspieszenie wykonywanych instrukcji

problem: rozkazy skoku (konieczność przeczyszczania całego potoku i wycofania rozkazów które nastąpiły zaraz po
instrukcji skoku; napełnianie potoku od początku do nowego adresu) – możliwość opóźnień (zależy od długości
potoku)

istnieją pewne metody przewidywania rozgałęzień (np. tablica historii czy przełącznik)

inny problem: różne czasy trwania 1-nych etapów powodują czekanie innych

postać rozkazu: pobranie, dekodowanie (określenie kodu operacji), obliczanie argumentów, pobranie argumentów,
wykonanie rozkazu i zapis argumentu (wyniku do pamięci)

background image

27. Klasyfikacja architektur komputerowych.


Taksonomia Flynna

klasyfikacja architektur komputerowych, opierająca się na liczbie przetwarzanych strumieni danych i
strumieni rozkazów

wyróżnia się 4 grupy

nazwa

opis

SISD

(single

instruction,

single data)

1 wykonywany program = 1 strumień danych

Klasyczny komputer sekwencyjny (1 procesor + 1 blok PAO)

Ciąg instrukcji wykonywany sekwencyjnie, ale może zawierać elementy równoległości (przetwarzanie
potokowe)

Komputer z kilku procesorów wykonujących niezależnie od siebie programy = zestaw komputerów SISD

Komputery skalarne (sekwencyjne)

architektura von Neumanna

SIMD

(single

instruction,

multiple data)

1 program = wiele strumieni danych

1 wspólny układ sterowania dla wielu rozkazów

Procesory przetwarzają równolegle te same instrukcje dla różnych danych (kolejne instrukcje = pojedynczy
strumień)

Brak możliwości realizacji różnych instrukcji równolegle

Odpowiedni dla obliczeń równoległych z modelem równoległości danych (wymagana częsta synchronizacja)

Komputery wektorowe

MISD

Wiele równoległych programów = 1 wspólny strumień danych (architektura przetwarzania równoległo)

Odpowiednik: przetwarzanie potokowe(poszczególne instrukcje cząstkowe = te same dane)

Zastosowanie: systemy z redundancją (wielokrotne wykorzystanie tych samych obliczeń) = minimalizacja
błędów

MIMD

Wiele równoległych programów = każdy przetwarza własne strumienie danych

Oddzielne jednostki sterujące dla każdego z elementów przetwarzających

Możliwość realizacji instrukcji z różnych strumieni instrukcji dla różnych strumieni danych (w tym samym
czasie)

Możliwe wykorzystanie równoległości danych

Np. komputery wielo[procesorowe, klastry, gridy


28. Systemy przerwań. Aspekty sprzętowe i programowe.


Przerwanie

Sygnał powodujący zmianę przepływu sterowania (niezależnie od wykowanego programu)

Powoduje wstrzymanie aktualnie wykonywanego programu i wykonanie przez procesor kodu procedury
obsługi przerwania

Charakter atomowy – przerwanie nie może przerwać innego przerwania blokowanie przerwań)

Jedno z udogodnień sprzętowych (wymagania, jakie musi spełnić sprzęt) dla SO


Typy przerwań

sprzętowe

programowe

zewnętrzne

wewnętrzne

Sygnał przerwania pochodzi z
zewnętrznego układu
obsługującego przerwania
sprzętowe

Przerwania te służą do komunikacji
z urządzeniami zewnętrznymi
(klawiatura itd.)

Informuje o zdarzeniach we/wy

Urządzenie generuje sygnał

Inaczej wyjątki

Zgłaszane przez procesor dla sygnalizowania
sytuacji wyjątkowych (dzielenie przez 0)

Dzielą się na 3 grupy:

- Faults – gdy instrukcja powoduje błąd; gdy

powrót do przerwanego kodu wykonuje tą
samą instrukcję wywołującą wyjątek

- Traps – nie jest błędem, cel: wykonanie

określonego kodu; debugery itd.; po

Z kodu programu wywoływana
jest procedura obsługi przerwania

Pułapka obsługiwana przez SO

Wykorzystywane do komunikacji z
SO

SO w momencie obsługi
przerwania umieszcza kod
wywołujący odpowiednie funkcje
systemowe do odpowiednich

background image

przerwania

Procesor przerywa wykonanie
instrukcji (odkłada na stos) i
obsługuje przerwanie

Koniec przerwania = powrót do
wykonywanego ciągu instrukcji

powrocie do przerwanego kodu
wykonywana jest następna instrukcja

- Aborts = błędy, których nie można naprawić

Zajmują część pozycji w tablicy wektorów
przerwań (pozostałe numer dowolnie
wykorzystane)

rejestrów ustawionych przez
program wywołujący lub
oprogramowaniem wbudowanym
(BIOS itd.)


Inny podział:

Blokowane

Nieblokowane

maskowane


Przerwania wielokrotne (inne przerwanie w momencie obsługi innego)

obsługa sekwencyjna (2-gie przerwanie czeka na zakończenie obsługi 1-ego)

obsługa zagnieżdżona (nowe przerwanie jest obsługiwane a stare wstrzymane; po wykonaniu nowszego
powrót do starszego przerwania)

obsługa priorytetowa (przerwanie o wyższym priorytecie jest wykonywane, nawet gdy było już jakieś
obsługiwane)


Metody rozróżniania przerwania:

Odpytywanie – procedura obsługi przerwania pytanie się kolejno wszystkich urządzeń czy to one
spowodowały przerwanie

Wektor przerwań – tablica systemowa, w każdej komórce określony rodzaj przerwania (obsługa) wraz z
odpowiadającym mu kodem

29. Omówić podstawowe tryby adresowania.

Podział słowa rozkazu (format rozkazu wewnętrznego): pola i sposób ich dekodowania (wyróżnienie pola
kodu operacji i pola adresowego)

Pole kodu operacji = wiele pól, każde określa 1 element kodu operacji rozkazu (sama operacja);

Pole adresowe = pochodzenie argumentów operacji, przeznaczenie wyniku; zawiera adres PAO, nr rejestru
lub daną umieszczoną w rozkazie

- Zawartość pola adresowego rozkazu nie jest bezpośrednio użyta jako adres danej/rozkazu – procesor

wykonuje na nim tzw. operacje adresujące (przekształcają go zanim zostanie wykorzystana jako
ostateczny adres argumentu rozkazu)

- Tryb adresowania = rodzaj operacji, którą procesor wykonuje na zawartości pola adresowego

(określony w 1 lub kilku polach należących do pola kodu operacji rozkazu; niekiedy tryb adresowania
wynika wprost z kodu operacji rozkazu)


Tryby adresowania:

tryb

opis

Natychmiastowy

Pole adresowe -> bezpośredni argument (dana dla rozkazu)

Długość argumentu (operandu) zależy od kodu operacji + ewentualnie dodatkowego pola sterującego w
rozkazie

Stosujemy, gdy chcemy bezpośrednio z rozkazu załadować do rejestru prostą daną (bez odwołania do
pamięci; bajt lub parę bajtów

Adresowanie

bezpośrednie

Najbardziej podstawowy tryb adresowania

Zawartość pola adresowego = finalny adres argumentu rozkazu w PAO (nie podlega przekształceniu)

Stosujemy, gdy nie zależy nam na przesuwalności programu w PAO (wykonanie przy zapisie w ściśle
określonym miejscu w PAO)

Adresowanie

pośrednie

Rozkaz zawiera adres komórki PAO (w niej finalny adres operandu rozkazu)

Komórka pamięci wskazana przez adres rozkazu pośredniczy w określeniu finalnego adresu

Stosujemy, gdy chcemy, by finalny adres operandu mógł być dynamicznie wstawiony do komórki
pośredniczącej w adresowaniu w czasie wykonania programu (gdy adres zależy od jakichś testów w yniku
operacji poprzedzającego rozkazu)

background image

Adresowanie

indeksowe

Inaczej: modyfikacja adresu przez indeksowanie

Rejestry indeksowe = specjalne indeksy procesora (zawierają przesunięcie)

Adres finalny operandu = adres istniejący w rozkazie + przesunięcie (rejestry indeksowe)

Pozwala przesunąć adres zawarty w rozkazie o wartości rejestru indeksowego

Jeśli użyty ten tryb we wszystkich rozkazach programu = możliwość wykonania programu przy załadowaniu w
dowolne miejsce pamięci (trzeba napisać program wstawiając do rozkazów programu adresy umieszczenia 1-
ej instrukcji programu pod adresem 0-wym w pamięci, a następnie umieszczamy go w rejestrze indeksowym)

Operacja indeksowania rozkazów programu = wszystkie adresy operandów przesunięte o tą samą wartość
(zawartość rejestru indeksowego = przesunięcie)

Dynamiczna realokacja programu w pamięci

Rejestrów indeksowych w procesorze jest wiele(możliwość przydzielania różnym programom lub ich
fragmentom)

Rejestr indeksowy może być określony przy pomocy specjalnego pola wspomagającego kodowanie trybu
adresowania w innym polu rozkazu (przydział fragmentu programu)

Adresowanie

względne

Polega na modyfikacji adresu zawartego w rozkazie przez aktualną zawartość licznika rozkazów

Dynamiczna przesuwalność adresów dostępu do danych (gdy nie znamy przesunięcia całości programu w
stosunku do adresu zerowego)

Finalny adres danej wyliczany względem bieżącej zawartości licznika rozkazów (do rozkazu wstawiamy
przesunięcie danej w programie względem adresu następnego rozkazu np. komórek w przód lub tył)

Dana musi być umieszczona w spodziewanym miejscu w pamięci (odległości od rozkazu wykorzystującego ją)
– planowanie odległości obszaru danych programu od rozkazu

Adresowanie

pośrednie

indeksowe

Jednoczesna możliwość zastosowania adresowania pośredniego z modyfikacją adresu odczytanego z komórki
pośredniczącej (poprzez zawartość rejestru indeksowego)

Umieszczony w rozkazie adres wskazuje na komórkę przechowującą adres danej (możliwość dynamicznego
wstawiania przez program; następnie stosuje się indeksowanie poprzez zawartość rejestru indeksowego;
podprogram też może wstawiać jej zawartość)

zawartość rejestru indeksowego -> komórka z operandem

jest 2-poziomowe = dynamiczne określanie adresu danych + metoda wpisania adresu bazowego (modyfikacja
przez rejestr indeksowy)

Adresowanie

indeksowe

pośrednie

najpierw modyfikacja adresu w rozkazie (zawartość rejestru indeksowego), potem stosowany do wskazania
komórki pamięci (w niej finalny adres operandu rozkazu)

możliwość dynamicznego określania adresów danych w programie (gdy wykonywany program); zapewnienie
przesuwalności w obrębie całego programu (program pisze się od adresu 0-ego w pamięci – adresowanie
indeksowe do wszystkich rozkazów poza tymi, które działają na danych wybieranych dynamicznie)

rozkazy adresujemy używając adresowania pośredniego indeksowego (umieszczając adres komórki
pośredniczącej – z wyjątkiem 0 – w bieżącym rozkazie)

załadowanie programu do pamięci = wpisanie do rejestru indeksowego wartości przesunięcia początku
programu w stosunku do adresu zerowego (program ładujący)

modyfikacja wszystkich adresów programu w trakcie jego wykonania

Adresowanie

rejestrowe

stosuje się gdy dana dla rozkazu jest w rejestrze

część adresowa rejestru = 1 lub więcej pól z identyfikatorami rejestrów

często stosowane w tym samym rozkazie z innymi trybami adresowania PAO (rozkaz PAO i rejestrów
procesora)

Adresowanie

rejestrowe

pośrednie

rejestr procesora o id umieszczonym w polu adresowym rozkazu = miejsce pobrania finalnego adresu
operandu rozkazu

możliwość dynamicznego określenia finalnego adresu operandu (odpowiednie załadowanie zawartości
rejestru w zależności od programu)








background image

Adresowanie wewnętrznej pamięci danych (mikrokontrolery):

natychmiastowe

bezpośrednie

pośrednie

bitowe

rejestrowe

bezpośrednie

rejestrowe

względne

dane od razu

w pamięci nie ma
danych

dana jest za
kodem rozkazu

np.

mov A,#32H
(A)<-32H

adres bitu np.
mov C,ACC.7
(C)<-(ACC.7)

adres określony
na sztywny, po
rejestrach np.
mov A,R1
(A)<-(R1)

„prawdziwie”
bezpośrednie

Za kodem rozkazów
podajemy adres z
miejscem w pamięci z
wartością

Np.

Mov A,32H
(A)<-32H

W rejestrach
mamy zapisany
adres np.
Mov A,@R1
(A)<-((R5))

przesunięcie
względem
jakiegoś adresu


Dodatkowo asemblery umożliwiają adresowanie symboliczne i definicji bloków

30. Formaty i typy rozkazów procesora, wpływ długości rozkazów procesora na wielkość

zajmowanej pamięci przez program oraz na jego czas wykonania.


Rozkaz (instrukcja maszynowa)

Najprostsza operacja do wykonania przez procesor

Programowanie za pomocą rozkazów = asembler

Lista rozkazów

Kod rozkazu = rodzaj (kod) operacji + operandy (i/lub) adresy operandów operacji (łącznie z ewentualnymi
argumentami)

- Kod operacji – określony w początkowej części kodu rozkazu (1-wszy bajt/jty); określa, w jaki

sposób ma przebiegać dalsza realizacja rozkazu przez mikroprocesor

Opis działania rozkazu:

- Wykonaj skok
- Pobierz kod rozkazu z komórki pamięci o adresie równym etykiety


Grupy rozkazów z listy rozkazów:

przesłań

arytmetyczne i

logiczne

sterujące

pozostałe

Najczęstsze

Brak zmiany
informacji, ale
przenoszą ją z
miejsca na
miejsce

Przykład: MOV

Przetwarzanie
informacji

Informacja jest
zmieniana

Np. ADD (+), SUBB (-),
inkrementacja,
dekrementacja, SWAP

Zmiana kolejności
wykonywania instrukcji
programu (rozkazy skoku,
bezwarunkowe i
warunkowe wywołania
programów, instrukcje pętli
itd.)

Charakterystyczne dla danego typu
procesora

Sterowanie pracą koprocesora,
rozkazy sterujące, operacje w trybie
chronionym itd.

Podprogramy i operacje na stosie
(PUSH, POP…)


Lista rozkazów procesora:

wszystkie rozkazy jakie potrafi wykonać dany procesor

rozkazy – postać binarna + zapis symboliczny (czytelność; mnemonik (np. JMP) + argument)

mnemonik = skrót (rodzaj operacji rozkazu), skrót angielskiej nazwy


format rozkazu:

zawiera: sposób rozmieszczenia informacji w kodzie + jej długość

określa rozkład bitów rozkazu w odniesieniu do jego części składowych (zawiera kod operacji + adresy
argumentów)

w sposób jawny lub domyślny określa tryb adresowania każdego argumentu

występuje więcej niż 1 format rozkazów (większość procesorów)

format: kod rozkazu, mnemonik i argument (etykieta-kod-argumenty)

background image


długość rozkazu

im mniejszy rozkaz, tym zajmuje mniej pamięci i może być szybciej wczytany

długi rozkaz = więcej informacji/dłuższe adresy

wielokrotność jednostki transferu (słowa) – możliwe wyjątki

słowo = wielokrotność długości znaku (gdy operacje na znakach brane pod uwagę, np. maszyny do obliczeń
numerycznych)


Sposób realizacji rozkazu

Nie jest istotny dla użytkownika

Wyznaczony przez projektanta mikroprocesora

31. Typy i hierarchia pamięci w systemie komputerowym.


Hierarchia pamięci (od najszybszej i najdroższej):

pamięć rejestru (pamięć najbliżej procesora),

pamięć kieszeniowa (podręczna lub cache)

- informacje przejściowe

pamięć operacyjna (pamięć RAM)

- obszar bezpośrednio dostępny dla procesora
- rozkazy LOAD/STORE (komunikacja z procesorem poprzez rejestry)
- cykl rozkazowy: pobranie rozkazu z PAO do rejestrów, dekodowanie, realizacja (ew. pobranie

argumentów)

- mała i ulotna (przechowujemy bajty)

pamięć pomocnicza 9trwałe przechowywanie danych)

- pamięć masowa (dyski)
- pamięć zewnętrzna (CD, taśmy)


Podział ze względu na trwałość zapisu

długoterminowe

krótkoterminowe

stałe - zapis nie ulega zniszczeniu po
wyłączeniu zasilania (ROM)

ulotne – zapis ulega zniszczeniu (PAO,
cache, rejestrowe…)

pamięć statyczna – układy przerzutnikowe bistabilne (zawartość dopóty jest
zasilanie; duża szybkość działania, duży pobór mocy, koszt, złożoność)

pamięć dynamiczna – dynamiczne układy pamiętające MOS (czynnik pamiętający
= tranzystor MOS; zanika szybko; zajmuje więcej miejsca, ale mniejszy pobór
mocy i koszta; mała szybkość działania)


Podział ze względu na dostęp do pamięci:

pamięć o dostępie swobodnym (RAM; dostęp przez adres, jednakowa szybkość dla wszystkich komórek
pamięci)

cyklicznym – dostęp co pewien czas (pamięć dyskowa)

sekwencyjnym – dostęp do kolejnych komórek odbywa się w pewnej stałej kolejności (pamięć taśmowa

pamięć asocjacyjna – dostęp w sposób kierowany wewnętrznymi adresami ustalającymi kolejność
przeszukiwania komórek


pamięć podręczna

cache – posiada: bank danych (pamięć danych), katalog pamięci cache i sterownika

3 główne typy:

- Pamięć podręczna całkowicie asocjacyjna
- Z odwzorowaniem bezpośrednim
- Wielodrożną pamięć podręczną

background image

32. Omów metody projektowania baz danych.


Metody projektowania bazy danych:

Wstępująca

(bottom-up)

Zstępująca

(top-down)

Strategia mieszana

Od szczegółu do ogółu

Początek na podstawowym poziomie z
atrybutami (tworzenie aktorów, analiza fazy
wymagań, usecasy)

następnie analiza powiązań = łączenie ich w
encje i związki między nimi

proste bazy danych z małą liczbą atrybutów

od ogółu do szczegółu

integracja istniejących baz danych (bazy
rozproszone)

początek od stworzenia modeli danych z niewielką
liczbą ogólnych encji/atrybutów/związków

metoda kolejnych uściśleń = wprowadzenie
encji/związków/atrybutów niższego poziomu

projektowanie złożonych baz danych

łączy cechy
metody
wstępującej i
zstępującej


Do projektowania potrzebny jest opis w języku naturalnym, na podstawie którego wyodrębnia się encje,
atrybuty i zależności. Encje i atrybuty to rzeczowniki, zależności to czasowniki itd

Tabele w bazie danych buduje się według określonych norm, dzięki którym baza będzie spójna, czytelna, dane
nie będą zajmować zbędnego miejsca na dysku

Prosty przepis na poprawny projekt bazy danych:
1. określenie zawartości BD
2. grupowanie danych z 1-ego punktu w tabelę (jednoznaczna charakterystyka danego obiektu)
3. każda tabela ma klucz główny (2 postać normalna)
4. kolumna = dane atomowe (1 postać normalna)
5. eliminacja zależności przechodnich (wykluczenie kolumn o wartościach nie zależnych bezpośrednio od

klucza głównego, lecz innej kolumny – 3 postać normalna)

6. połączyć (w miarę możliwości) kolumny z 1 tabeli z kolumnami 2-ej tabeli w sposób jednoznaczny

(jednoznaczna identyfikacja wierszy)


Ogólniej:
1. szukamy obiektów odzwierciedlających w rzeczywistości
2. wiążemy obiekty
3. uściślamy, szukamy atrybutów …

33. Omów relacyjny model danych.


Relacyjny model danych oparty jest tylko na 1 podstawowej strukturze danych (relacje)
Relacja = tabela zbudowana wierszy i kolumn (przy przecięciu każdej kolumny z każdym wierszem – wartość)
Stosowany dla większości systemów zarządzania bazą danych

Założenia relacyjnego modelu danych:

BD = prostokątne tablice (określona liczba kolumn + dowolna liczba wierszy (krotek))

Tablice = relacje; każda tablica posiada unikalną nazwę

Elementy krotek są atomowe (niepodzielne) i są wartościami

Nie można

- Tworzyć wskaźników do innych krotek
- Tworzyć krotki ze zbiorem wartości (1 postać normalna)

Porządek krotek/kolumn nie ma znaczenia

Użytkownik nie widzi reprezentacji relacji/usprawnień dostępu do relacji

Atrybuty = nazwy kolumn; wiersze = wartości atrybutów (w encjach)

Klucz = wyróżniony atrybut lub grupa atrybutów należący/ca do danej relacji

- Wartość klucza = identyfikacja krotki relacji
- Integralność relacji = każda relacja musi posiadać klucz główny
- Inna identyfikacja krotki (wewnętrzny identyfikator) niewidoczne dla użytkownika

background image

Manipulacja relacjami = operatory algebry relacji (makroskopowo; przetwarzanie „krotka po krotce”
niedozwolone)
- Rachunek normalizacyjny
- Teoria normalizacji
- Algebra relacji np. selekcja, projekcja, złączenie, produkt kartezjański, unia

34. Na czym polega proces normalizacji baz danych


Normalizacja bazy danych

Proces identyfikowania logicznych związków między elementami danych

Proces projektowania baz danych, który będzie identyfikować takie związki - bez anomalii

Proces, podczas którego schematy relacji posiadające niepożądane cechy są dekomponowane na mniejsze
schematy o pożądanych właściwościach

Nie usuwa danych, tylko zmienia schemat BD

Właściwości:

- Żaden atrybut nie może zostać zagubiony w trakcie procesu normalizacji
- Dekompozycja (podział atrybutów) tabeli nie może prowadzić do utraty informacji
- Wszystkie zależności funkcyjne muszą być reprezentowane w pojedynczych schematach tabel

Celem jest minimalizacja fizycznego rozmiaru BD i uniknięcie anomalii baz nieznormalizowanych

Anomalia baz danych nienormalizowanych:

anomalia dołączania – wstawienie informacji pozostawia puste pola w wierszach tabeli

anomalia aktualizacji – zmiana 1 atrybutu pociąga konieczność zmian w wielu wierszach

anomalia usuwania – niepożądane usunięcie innych danych przy usuwaniu jakiejś danej


W celu wykonania normalizacji danych potrzebujemy:

zrozumienia zależności funkcyjnej – głównie pomiędzy kolumnami

zdrowego rozsądku

zrozumienia znaczenia danych ( definicja wymagań)

zrozumienia oczekiwań zleceniodawcy w stosunku do bazy danych

znajomości procesu normalizacji


postacie normalne:

1-wsza

2-ga

3-cia

każda wartość atrybutu tabeli jest
wartością atomową (pojedyncza
wartość, a nie zbiór)

zakaz definiowania złożonych
atrybutów

nie gwarantuje wyeliminowania
anomalii (redundancja)

Wszystkie kluczowe atrybuty muszą być
zdefiniowane

Wszystkie atrybuty muszą zależeć od
klucza głównego.

musi być w 1 PN

każda tabela ma klucz główny

klucz główny umożliwia
identyfikację danych tabeli

tabelę można rozbić na
pomniejsze tabele,
zawierające jakieś konkretne
informacje

Nie ma częściowych zależności

Żaden atrybut nie jest zależny
od części klucza głównego
(kompozytowy klucz)

Jeżeli klucz główny jest tylko
jednym atrybutem, tabela jest
w 2NF.

Musi być w 2 PN

wykluczenie kolumn o wartościach nie
zależnych bezpośrednio od klucza
głównego, lecz innej kolumny (eliminacja
wartości przechodnich)

eliminacja wszystkich pól niezwiązanych z
kluczem głównym

należy tak ułożyć strukturę, aby przy
odpowiednim złączeniu dało się
wyciągnąć odpowiednie dane

35. Przedstawić koncepcję transakcyjności w relacyjnych bazach danych.

Transakcja

pewna ilość poleceń przesłana do systemu zarządzania celem przetworzenia jako całość (niepodzielnie)

Sesja składa się z jednej lub większej liczby transakcji

background image

Transakcje wykonywane są współbieżnie - jeżeli do bazy danych ma jednocześnie dostęp kilku
użytkowników

Transakcje współbieżne mogą być przeprowadzane na jeden z dwóch sposobów:

o Szeregowo - w momencie zakończenia jednej transakcji uruchamiamy następną
o Równolegle - wszystkie transakcje są realizowane jednocześnie - po jednej czynności na transakcję


Cechy transakcji
Każda transakcja powinna mieć następujące właściwości:

Niepodzielność (wszystkie operacje elementarne w transakcji muszą zakończyć się powodzeniem; jeśli nie,
to transakcja jest wycofywana, przywraca się wtedy stan bazy przed)

Spójność (integralność; baza danych musi być w stanie spójnym)

Izolacja (różne poziomy izolacji, faktyczne wzajemne oddziaływanie transakcji współbieżnie realizowanych;
czy dane z jednej transakcji widoczne w drugiej)

Trwałość (jeśli transakcja zakończy się sukcesem, to zmiany na trwałe zapisane w bazie)


Kończenie transakcji

Wszystkie transakcje kończą się na jeden z dwóch sposobów:

sukcesem (trwałe wprowadzenie wszystkich modyfikacji do bazy danych)
porażką (odwołanie transakcji i odtworzenie stanu bazy sprzed jej rozpoczęcia transakcji)

Z definicji, transakcja zakończona sukcesem nie może zostać odwołana

System zarządzania zapisuje wszystkie podejmowane przez transakcję czynności w rejestrze transakcji - aby
móc ją odwołać


Zakończenie transakcji
Status zakończenia:
- zatwierdzenie
- wycofanie

Zakończenie jawne:
- wykonanie poleceń kończących transakcję: COMMIT (zatwierdzenie) lub ROLLBACK (wycofanie)

Zakończenie niejawne:
- zakończenie sesji – zatwierdzenie
- wykonanie operacji DDL lub DCL – zatwierdzenie
- awaria – wycofanie

Wycofanie i zatwierdzenie transakcji

W trakcie wykonywania transakcja może być wycofana w dowolnym momencie (zignorowanie
wprowadzonych zmian)

Realizacja: ,,tymczasowe” wykonywanie transakcji.

Zmiany danych są tylko obliczane i zapisywane w specjalnym dzienniku transakcji.

Po zakończeniu wykonywania transakcji następuje jej zatwierdzenie, w wyniku czego zmiany są utrwalane
w bazie danych.


czynności:

zwolnienie założonych blokad

usunięcie punktów bezpieczeństwa

sprawdzenie odroczonych ograniczeń integralnościowych (kontrola po wykonaniu polecenia
modyfikującego dane)

trwały zapis zmian, wprowadzonych przez operacje w ramach transakcji (zmiany 1-nej transakcji widzi 2-
ga)




background image

36. Techniki modelowania bazy danych, diagramy E/R i UML, narzędzia do modelowania.


Model bazy danych

Zbiór zasad opisujących strukturę danych w BD + dozwolone operacje

Struktura danych = zasady określające model (encje) + ich związki

Główne modele BD:

- Hierarchiczny (związki nadrzędny-podrzędny; drzewa)
- Relacyjny
- Sieciowy (grafowy)
- Obiektowy (obiekty i klasy obiektów)
- Sieci semantyczne


Diagramy E/R (ERD):

Diagram = graficzne przedstawienie związków między encjami

Przejrzystość, łatwość implementacji, niezależność od systemu

Wykorzystanie: walka z redundancją, sprawdzanie zależności, wizualizacji, projektowania

Brak standardowej notacji

Modelowanie relacyjnych baz danych, podejście zstępujące (encje i związki, potem szczegółowe
informacje)

Tworzy się encję (tabelę danych), w nich atrybuty (pola o różnych typach danych)

Łączymy encje relacjami (Krotność):

- 1 do 1
- 1 do wielu
- Wiele do wielu (tworzy się dodatkową encję żeby nie duplikować danych i by tabele zależały od siebie)

Oprócz krotności występuje też opcjonalność (czy encja musi być, czy może wystąpić wraz z inną itd.)

- Linia przerywana = opcjonalność związku, ciągła = konieczność


UML (Unified Modeling Language):

Ujednolicony język modelowania

Notacja w modelowaniu analizy/programowaniu obiektowej/wym

Typy diagramów:

Struktury

interakcji

zachowań

pakietów

obiektów

wdrożenia

struktur złożonych

komponentów

klas

czasowy

przeglądu interakcji

komunikacji

sekwencji

maszyny stanowej

przypadków użycia

czynności

UML a BD:
- Większość aplikacji = pojęcie obiektowe
- Brak obiektowych BD
- UML = próba pogodzenia modelu obiektowego z relacyjnym (przekształcanie diagramu klas do

relacyjnej BD)

Typy relacji między klasami:

asocjacja

agregacja

złożenie

uogólnienie

Zwykły, równorzędny
związek między encjami

Rodzaj asocjacji

Wyraża relację typu całość-
część

Separowana = może istnieć
bez klasy agregującej

Związek całość-część

Podobny do agregacji,
ale klasa agregowana nie
może istnieć bez klasy
agregującej

Związek hierarchiczny

Klasa nadrzędna
bardziej ogólna od klasy
podrzędnej

Specjalizacja =
odwrotna hierarchia

Przechodzenie z diagramu klas do schematu relacyjnego:
- Konieczność sprowadzenia do fizycznego modelu danych (PDM)

background image

- Atrybuty klas automatycznie stają się kolumnami, identyfikatory -> kluczami głównymi (można

wyznaczać inne pola jako kluczowe, gdy identyfikatory nie istnieją)

- Metody klasy -> procedury

Diagramy klas = diagram ERD + szersze związki

- Szersze oznaczenia co do liczebności:

1-dokładnie 1

0..1 – zero lub 1

0..* - dowolnie wiele

1..* - co najmniej 1

* - wiele

6..8 – od 6 do 8

Narzędzia do modelowania BD/diagramów:

- MySQL Workbench
- MS Visio
- Visual Paradigm

37. Problemy współbieżności i wielodostępu w SZBD.


Anomalie współbieżnego dostępu:

anomalia

opis

Brudny odczyt

(ang. dirty read)

Groźna anomalia

Transakcja odczytuje dane zmienione przez inną, wycofaną transakcję

Utracona modyfikacja

(ang. lost update)

Groźna anomalia

Transakcja przetwarzana współbieżnie odczytuje dane, które zmieniła inna transakcja

2 transakcje modyfikują te same dane

Niepowtarzalny odczyt

(ang. non-repeatable

read)

Niegroźna anomalia

Transakcja wykonuje wielokrotnie tę samą operację odczytu danych (odczyt atrybutów, które mogą
zmienić inną transakcję), a my odczytujemy inne dane (1 komórka)

Niby odczyt 1-nej wartości, a tak naprawdę wielu

Fantomy

(ang. phantoms)

Niegroźna anomalia

Polecenie select na BD, za każdym razem wyświetla coraz więcej danych

inne pole rekordów (liczba zwracanych rekordów)

Nadpisanie danych (użytkownicy modyfikujący dane)


Poziomy izolacji transakcji:

Poziom iż. \ anomalie

Brudny odczyt

Niepowt. odczyt

fantomy

Odczyt niezat.danych

+

+

+

Odcz. zatw. danych

-

+

+

Powtarzalny odczyt

-

-

+

Uszeregowany

-

-

-

Gdzie: + (możliwa), - (niemożliwa)


38. Model ISO OSI. Model TCP/IP. Krótka charakterystyka warstw modelu.


Model ISO OSI

Ustandaryzowany model sieciowy

Warstwy wyższe (5,6,7) – współpraca z oprogramowaniem; interfejs do współpracy z warstwami niższymi

Warstwy niższe (pozostałe) – odnajdowanie drogi do celu, podział danych na pakiety PDU, weryfikacja
bezbłędności przesyłanych danych, ignorowanie sensu przesyłanych danych

Każda warstwa zrealizuje odwrotne zadania (w zależności od kierunku)


Korzyści:

background image

Mniejsza złożoność

Ustandaryzowane interfejsy

Projektowanie modułowe

Współdziałanie technologii

Przyspieszony rozwój, uproszczenie procesu nauczania


Warstwy:

Nr

Warstwa

Charakterystyka

7

aplikacji

Połączenie procesów sieciowych z aplikacjami

Interfejs między aplikacjami, a siecią (komunikacja, usługi sieciowe np. poczta, przesyłanie pliku)

Specyfikacja interfejsu (do przesłania danych aplikacji przez sieć)

Aplikacja = proces uruchomiony na odległych hostach

Usługi interfejsu tej warstwy: gniazda

Warstwa klienta i serwera (komunikacja przez warstwy niższe)

6

prezentacji

Reprezentacja danych

Ruch w dół - przetwarzanie danych aplikacji do postaci kanonicznej (ten sam format)

Ruch w górę – tłumaczenie formatu otrzymywanych danych dla systemu docelowego

Kodowanie, konwersja danych, (de)kompresja, (de)szyfrowanie

Negocjuje składnię przesyłanych danych dla warstwy aplikacji

5

Sesji

Komunikacja między hostami

Synchronizacja danych różnych aplikacji

Synchronizacja warstw sesji nadawcy i odbiorcy

„wie, która aplikacja łączy się z którą” = właściwy kierunek przepływu danych (nadzorowanie połączenia)

Wznawia połączenie po przerwaniu

Ustanawia i zamyka sesje między aplikacjami (zarządzanie sesjami)

4

Transportowa

Połączenie typu end-to-end

Segmentuje dane i łączy je w strumień

Całościowe połączenie między stacją źródła i docelową (cała droga transmisji)

Dzieli dane na części, numeruje i przesyła do docelowych stacji

Wykorzystuje protokół: TCP (konieczność potwierdzenia odbioru; kontrola błędów transportu) i UDP (szybszy
ale mniej bezpieczny, bez potwierdzeń)

Kontrola integralności pakietów – odrzucanie błędnych pakietów

3

Sieciowa

Tylko ona zna fizyczną topologię sieci

Używa 4-ech procesów: adresowanie, (de/en)kapsulacja, routing

Trasowanie (drogi łączące komputery)

Decyduje ile informacji przesyłać 1 połączeniem a ile drugim

Ignoruje przesyłanie danych, gdy jest ich zbyt wiele

Nie zapewnia pewności transmisji – pomija niepoprawne pakiety danych

NPDU = paczka danych (sprawna łączność między odległymi punktami sieci)

Routery

Ruch w dół: enkapsulacja danych (pakiety zrozumiałe dla niższych warstw)

Pakiety: IPv4, IPv6, ICMP …

2

Łącza
danych
(liniowa,
kanałowa)

Nadzoruje jakość przekazywanych informacji (tylko dla warstwy niższej)

Możliwość zmiany parametrów pracy warstwy fizycznej (obniżanie błędów przekazu)

Ruch w dół: pakuje dane w ramki i wysyła je do warstwy 1 (inkapsulacja pakietów = ramki ze standardem)

Ramka danych: id odbiorcy, nadawcy, (opow. adresy MAC), informacja sterująca, CRC…

Rozpoznaje błędy niedotarcia pakietu i uszkodzeniem ramek -> naprawa

Dzieli się na

- LLC (logi cal link control) = sterowanie łączem danych, kontrola transmisji
- MAC (media access control) – sterowanie dostępem do nośnika (współpraca z warstwą fizyczną)

Urządzenia: most, przełącznik

1

fizyczna

Transmisja binarna

Składniki sieci do obsługi elektrycznego odbierania i wysyłania sygnałów

4 obszary funkcjonalne: mechaniczny, elektryczny, funkcjonalny i proceduralny (transmisja danych)

background image

Brak weryfikacji integralności danych (tylko przesyłanie)

Przesyła i odbiera sygnały zaadresowane dla wszystkich protokołów jej stosu i aplikacji wykorzystujących ją

- Nadawanie danych (dane z ramek do postaci binarnych, metoda dostępu do nośnika, szeregowe

przesyłanie ramek danych)

- Odbiór – czekanie na transmisje hosta, odbiór strumieni, przesyłanie strumieni binarnych do łącza danych

(złożenie w ramki)


Model TCP/IP

Inny standard sieci internet

Ma mniej warstw niż OSI = prostszy

Standard komunikacji otwartej = dowolne urządzenia


Warstwy:

nr

warstwa

charakterystyka

4

Aplikacji

Protokoły wysoko-poziomowe

Reprezentacja danych, kodowanie, sterowanie konwersacją (aplikacje)

Opakowuje odpowiednio dane

Specyfikacja protokołów IP, TCP (internetowa, transportowa), a także przesyłania plików, poczty
elektronicznej, zdalnego logowania, FTP, NFS (rozproszony system plików), SMTP (przesyłanie poczty), Telnet
(zdalny dostęp do innego komputera), DNS …

3

Transportowej

Usługi przesyłania danych ze źródła do określonego hosta

Logiczne połączenie między komputerami w sieci

Podział/scalanie danych wyższych aplikacji w 1 strumień danych (połączenie logiczne)

Dzieli dane aplikacji, wysyła segmenty (TCP i UDP)

Kontrola przepływu, niezawodność, Transport typu end-to-end (między punktami końcowymi; tylko TCP)

2

Internetowej

Wybór najlepszej ścieżki dla pakietów w sieci i przełączanie pakietów

Protokoły: IP (bezpołączeniowe dostarczanie pakietów, format pakietu), ICMP (kontrola + informacja), ARP
(adres MAC dla IP), RARP (znajduje IP na podstawie MAC)

1

Dostępu
do sieci
(interfejs
sieciowy)

Łącze fizyczne przekazujące pakiet IP do medium

1+2 warstwa OSI

Działają tu sterowniki aplikacji, modemów i innych urządzeń

Działa tu wiele protokołów

Odwzorowuje adresy IP na adresy sprzętowe i inkapsuluje IP w ramki

Definiuje połączenie z fizycznym medium sieci w zależności od sprzętu/interfejsu sieciowego


Różnice:

Warstwa aplikacji TCP/IP = 5+6+7 OSI

Dostęp do sieci TCP/IP = 1 + 2 OSI

TCP/IP bardziej elastyczny od OSI

Brak stałej gwarancji dostarczania pakietów (w transportowej warstwie)

TCP/IP nie przypisuje sztywno funkcji do każdej warstwy (elastyczność)

39. Metody dostępu do medium. Protokół CSMA/CD.


Metody dostępu do medium

CSMA/CD (Ethernet)

Token Passing – przekazywanie znacznika, dostęp do medium = konieczność otrzymania tokena (ramki
sterującej); sieci Token Ring i FDDI

W modelu OSI – 2 warstwa (z MAC) = dostęp do nośnika


Problematyka dostępu do medium

Możliwość kolizji w sieci Ethernet (kilka urządzeń jednocześnie przesyła dane)


Mechanizmy dostępu do nośnika

Rywalizacja

background image

Priorytet żądań

Na zasadzie pierścienia


CSMA/CD

Protokół wielodostępu CSMA z badaniem stanu kanału (łącza) i wykrywaniem kolizji

Wykorzystywany w sieciach LAN typu Ethernet

Węzły są nadajnikami prądu o stabilizowanym natężeniu

Jeśli kolizja – urządzenie wstrzymuje przesyłanie danych i informuje o kolizji (sygnał zagłuszania)

Urządzenie/węzeł posiada dane do przesłania -> nasłuchuje łącza (sprawdzanie czy linie są wolne)

Węzeł, który nie wysyła danych jedynie nasłuchuje, czy jakieś dane są przesyłane do niego

Poziom sygnału informującego o kolizji jest wyższy od normalnie generowanego przez węzeł (pewność że
każdy węzeł otrzymał informację o kolizji)

Retransmisja między węzłami, między którymi doszło do kolizji (sprawdzanie zajętości kanału po losowym
czasie)

Konieczność potwierdzania każdej ramki – samo CSMA

40. Adresowanie IP, podsieci i maski podsieci zmiennej długości.


Podstawowe informacje:

Adresowanie IP = przydział IP z puli adresów (podsieci)

Prefix „/” = sposób zapisu maski, np.

Przykładowa maska

Odpowiadający jej prefix

255.0.0.0

/8

255.255.0.0

/16

255.255.255.0

/24

- Prefix określa liczbę bitów z jedynkami (licząc od lewej strony)

Maska podsieci = identyfikacja części sieci i hosta IP (podział na podsieci = wydajność)

Adres IP = sieć + host (oddzielenie poprzez funkcję AND dla maski i IP; 1AND1 = 1 r 0)

Przykład:
255.255.240.0

Wartość tą zmieniamy na binarną

1111 1111. 1111 1111.1111 0000.0000 0000

Same 1 = część sieci
Same 0 = część hosta


Przykład:
Adres IP:

192.168.1.1

-> 1100 0000.1010 0100.0000 0001.0000 0001

Maska:

255.255.255.0

-> 1111 1111.1111 1111.1111 1111.0000 0000

Adres sieci :

192.168.1.0

<- 1100 0000.1010 0100.0000 0001.0000 0000

(funkcja AND IP i maski)

Adres rozgłoszeniowy:

192.168.1.255

<- 1100 0000.1010 0100.0000 0001.1111 1111

Broadcast
(część hosta z adresu sieci wypełniamy 1)

Adresowanie klasowe

- 5 klas adresów protokołu IPv4

klasa

Adres początkowy

Adres końcowy

A

0.0.0.0 /8

127.255.255.255 /8

B

128.0.0.0 /16

191.255.255.255 /16

C

192.0.0.0 /24

223.255.255.255 /24

D

224.0.0.0 /4

239.255.255.255 /4

E

240.0.0.0 /4

255.255.255.255 /4

- Każdej podsieci przydzielona pula adresów z 1 z klas

background image

- Problem: zbyt duża pula adresów -> marnowanie adresów
- Braki w adresach -> rozwiązaniem adresowanie VLSM (bezklasowe – zmienna długość maski

podsieci)

Adresowanie bezklasowe

- Schemat adresowania IPv4
- Maski podsieci nie spełniają reguł z adresowania klasowego
- Duża elastyczność przy podziale zakresu adresów IP na odrębne sieci (p. 192.168.1.0 /8 jest

poprawne)

- VLSM (ang. variable length subnet mask)

 Maska podsieci o zmiennej długości -> oszczędność IP z puli
 Możliwość dobrania ilości IP do potrzeb

(np. 192.168.1.0/29 ma 6 hostów, bo: 32-29=3, 2

3

=8, 8-adres sieci i broadcast = 6)

Adresy specjalne:

127.0.0.0 – 127.255.255.255

<- pętle zwrotne

169.254.xxx.xxx

<- adresy domyślne

Subnetting (podsieciowanie)
- Podział zakresu adresów IP z 1 sieci na kilka podsieci
- Algorytm sprawdzania liczby hostów w ip: liczba hostów = 2

N

-2, N – bity hosta

- Ilość podsieci: 2

N

-2, N – bity sieci

- Przykład:

IP:

131.107.0.0

Maska: 255.255.0.0


Szukana maska dla 6 podsieci, liczba hostów do zaadresowania, przedziały


Rozwiązanie:
1) 6 = 2

3

-2 -> maska ma 3 bity z jedynką = 224

2) Rozpisuję maski binarnie:

255.255.0.0

<- 1111 1111.1111 1111.0000 0000.0000 0000

255.255.224.0

<- 1111 1111.1111 1111.1110 0000.0000 0000

3) Liczba hostów = 2

13

-2 = 8190

4) Liczmy przedział – szukamy najniższego bitu potrzebnego do uzyskania 224:

224 = 128 + 64 + 32

Zakres:
131.107.32.1

- 131.107.63.254

// bez broadcastu i adresu sieci

131.107.64.1

- 131.107.95.254

// dla klasy A trzeci oktet wynosi 255

131.107.96.1

- 131.107.127.254

// dla C w 4 oktecie startujemy od wartości + 1

131.107.128.1

- 131.107.159.254

131.107.160.1

- 131.107.191.254

131.107.192.1

- 131.107.223.254

5) Odpowiedź: maska: 255.255.224.0, można zaadresować 8190 hostów

41. Routing w sieciach komputerowych, metody routingu, porównanie.


Router (brama)

Urządzenie warstwy sieciowej

Określa optymalną ścieżkę przesyłania ruchu sieciowego, wykorzystując 1 lub kilka metryk

Przesyła pakiety z 1 sieci do 2-ej, wykorzystując informacje z warstwy sieci

Umożliwia komunikację między 2-ma różnymi sieciami


Routing = proces ustalania ścieżki i przesyłania ruchu sieciowego z 1 do 2-ej sieci


background image

Rodzaje routingu:

dynamiczny

statyczny

Automatyczne dostosowanie do topologii sieci lub ruchu w
niej (protokół routingu konfiguruje tablice routing)

Metody routingu: wektor odległości, stanu łącza,

Działa dzięki zręcznemu wprowadzeniu wpisów do tablicy
routingu


Topologie dynamiczne:

topologia

opis

Wektora

odległości

Algorytm distance vector (Bellman-ford)

- każdy router wysyła całą/część swojej tablicy routingu tylko do swoich bezpośrednich sąsiadów (routing oparty na

sąsiadach; zgłasza nie tylko info o swoich sieciach, ale też tego, czego się dowiedział)

- trasy jako wektory (odległość (koszt) + kierunek)
- informowanie sąsiadów o najniższych kosztach
- protokoły te zużywają mniej systemowych zasobów routera
- powolna zbieżność = powolna reakcja na zmiany w sieci
- czas zbieżności = czas ustalenia się tabeli routingu
- te metryki routingu nie nadają się do dużych sieci
- generowanie dodatkowego ruchu w sieci (cykliczne rozgłaszanie pełnych tabel routingu – nawet gdy brak zmian)
- brak odporności na pętle między routerami
- brak weryfikacji poprawności danych otrzymanych przez sąsiadów -> router ma błędne info i przekazuje je dalej

(propagacja błędnych informacji)

- ograniczenie – maksymalna rozpiętość sieci (max liczba kolejnych routerów w ścieżce); jeśli ścieżka przekracza tą

wartość -> sieć jest nieosiągalna

- odszukanie dystansu (liczba skoków) i wektora (właściwy kierunek do celu)
- wymiana danych: komunikacja rozgłoszeniowa (broadcast), multiemisja (multicast)
- protokoły: RIP, IGRP

Stanu

łącza

algorytm link state (shortest path first)

- przesłanie informacji o routingu do wszystkich routerów -> tworzy się mapa sieci -> wytyczenie najkrótszej ścieżki

do wszystkich miejsc w sieci (algorytm Dijkstry; każdy router wyznacza dla siebie – jest korzeniem swojego drzewa)

- złożona baza danych z informacjami o topologii sieci
- każdy router wysyła pakiet z informacjami (o bezpośrednio podłączonych do niego sieciach i ich stanie) do

WSZYSTKICH swoich sąsiadów (każdy router pośredni zapisuje sobie to info, ale nie zmienia go)

- każdy router gromadzi info o topologii sieci, koszcie pojedynczych ścieżek i stanie połączeń
- pakiet = informacja o sieciach połączonych do routera; pełne info o routerach sieci i ich połączeniach
- osiągnięta zbieżność -> następne pakiety z aktualizacjami nie są takie duże (rozsyłane tylko zmiany)
- zbieżność szybciej osiągalna niż przy wektorze odległości
- szybsza reakcja na zmiany, brak cyklicznych ogłoszeń
- zmiana topologii sieci -> rozesłanie pakietów LSA -> routery zapisują zmiany w topologii -> wyznaczenie nowych

ścieżek routingu (niezawodność, mniej przepustowości na łączach sieciowych i kontrola)

- mniejsza podatność na pętle/błędy w routingu
- lepsze scalenie sieci
- wada: zużycie większej liczby zasobów routera; droższe; zużywają sporo pasma transmisji w początkowej fazie ich

działania

- protokoły: OSPF, IS-IS


Protokoły routingu:

Wektor odległości

Stanu łącza

Protokoły routingu

zewnętrznego

Klasowe

RIP, IGRP (tylko CISCO)

EGP

Bezklasowe

RIPv2, EIGRP (tylko
CISCO)

OSPFv2, IS-IS

BGPv4





background image

42. Metody dostępu do sieci w technologii bezprzewodowej WiFi.

protokoły

opis

CSMA/CA
(ang. Cartier sense
multiple Access with
collision ayoidance
)

Stacja skompletowała ramkę -> sprawdzanie stanu łącza (gdy wolne, to nadaje; jeśli zajęte, to czeka)

Zastosowanie: niektóre bezprzewodowe sieci LAN i sieci Packet Radio

BTMA
(ang.busy tone multiple
access
)

Próba rozwiązania problemu ukrytych stacji (nie wszystkie stacje w sieci mają bezpośrednią łączność;
stacja ukryta – jest w zasięgu stacji odbierającej dane, ale poza zasięgiem stacji wysyłającej je)

Kanał transmisyjny rozbity na 2 podkanały:

- Podkanał komunikatów (przesyłane dane)
- Podkanał zajętości (każda stacja odbierająca informacje z podkanału komunikatów wysyła sygnał

zajętości – falę ciągłą)

Stacja z ramką do wysłania sprawdza stan podkanału zajętości (jeśli sygnał zajętości nieobecny – dane
wysłane; jeśli obecny – transmisja odkładana na później)

Wysoka efektywność protokołu – aż 70%

SRMA
(ang. slot reservation
multiple access
)

Wykorzystuje mechanizm rezerwacji przedziałów czasowych

Konieczność wprowadzenia w sieci stacji sterującej

Podział kanału transmisyjnego:

- Podkanał komunikatów (przesłanie danych)
- Podkanał sterujący (przesłanie żądań i odpowiedzi)

Dla SRMA-RM stacja z danymi do wysłania przesyła żądanie do stacji sterującej

- Jeśli bezbłędnie -> dołączane do kolejki żądań (kolejka obsługiwana według dowolnego algorytmu)
- Gdy kanał komunikatów udostępniony – stacja sterująca przesyła stacji zgłaszającej kanałem

sterującym zezwolenie na nadawanie

Dla SRMA-RAM

- Kanał sterujący podzielony jest na 2 podkanały: żądań i odpowiedzi
- Stacja z danymi wysyła żądanie do stacji sterującej -> gdy brak błędu, stacja sterująca w kanale

odpowiedzi przekazuje informację z czasem transmisji danych dla stacji zgłaszającej

MACA i MACAW
(ang. multiple Access
with collision ayoidance
)

Wymiana informacji sterujących przepływem danych (zamiast mechanizmu wykrywania fali nośnej)

Nadajnik wysyła ramkę RTS (gotowość do nadawania), odbiornik ramkę CTS (gotowość do odbioru)

- Mechanizm j.w. zapobiega kolizjom zakrytej i odkrytej stacji
- Istnieje ryzyko kolizji ramek sterujących

MACAW = dodatkowe ramki sterujące:

- DS. = poprzedza początek przesyłania danych
- ACK = potwierdzenie poprawy odbioru ramek danych
- RRTS = wysyłana gdy stacja nie może wcześniej odpowiedzieć na ramkę RTS z powodu wstrzymania

transmisji

BAPU
(ang. Basic Access
protocol solutions
)

Sprawniejsze eliminowanie problemu zakrytej i odkrytej stacji niż w MACA

Podział

- Kanał danych (fizyczne)
- Kanał sterujący (większy zasięg transmisji)

Eliminacja interferencji stacji w kanale danych

Protokół używa 5 ramek sterujących:

- RTS – zgłoszenie gotowości do nadawania
- CTS – zgłoszenie gotowości do odbioru
- DS – poprzedza rozpoczęcie nadawania danych
- NCTS – zgłoszenie braku gotowości do odbioru (np. gdy stacja w zasięgu innej transmisji danych)
- ACK – potwierdzenie poprawnego odbioru ramek danych


Problemy sieci bezprzewodowych

Odkryta stacja - stacja w zasięgu nadawcy, ale poza zasięgiem stacji odbierającej – spadek przepustowości
w sieci bo zbędne wstrzymanie transmisji

Ukryta stacja - jest w zasięgu stacji odbierającej dane, ale poza zasięgiem stacji wysyłającej je

Interferencja – zakłócenia transmisji; 1-dna ze stacji poza zasięgiem nadajnika i odbiornika, ale zakłóca inne
stacje

background image

Efekt przechwytywania – gdy do odbiornika docierają 2 sygnały o różnych mocach; silniejsza ramka
odczytana bezbłędnie – pozytywny efekt (poprawa wykorzystanie kanału transmisyjnego)


Typy dostępu do medium

Funkcje koordynacji dostępu

- DCF – typowy dostęp (bezprzewodowy dostęp połączenia sieciowego)
- PCF – specyficzny typ usług, wymagający braku rywalizacji o dostęp

Sprawdzanie zajętości kanału radiowego

- Gdy przejmowanie dostępu do kanału przez stację pełniącą funkcję nadawcy -> losowe opóźnienie

przy każdej ramce dla pozostałych stacji

- Czasami w DCF można stosować mechanizm RTS/CTS

Cechy funkcji PFC

- Konieczne stosowanie specjalnych stacji koordynujących
- Jedynie w sieciach strukturalnych
- Funkcja nadbudowana nad CDF
- Pierwszeństwo przed DCF (krótszy dostęp przed transmisją)

43. Podstawowe i złożone topologie sieci komputerowych.


Topologia = sposób organizacji koncentrator i okablowania

Topologia fizyczna = rzeczywisty układ przewodów i medium transmisyjnego; topologia logiczna = sposób
dostępu hosta do medium (rozgłaszanie i przekazywanie tokenu)

Topologie podstawowe:

topologia

opis

Magistrali

Wszystkie elementy sieci podłączone do 1 magistrali

Gwiazdy

Komputery podłączone do 1 punktu centralnego, koncentratora (koncentrator = fizyczna topologia gwiazdy, logicznie
– magistrala) lub przełącznika

Pierścienia

Poszczególne elementy połączone pomiędzy sobą odcinkami kabla (tworząc zamknięty pierścień)

podwójnego

pierścienia

poszczególne elementy połączone między sobą odcinkami tworząc 2 zamknięte pierścienie

Przełączana

(komutowana)

Wykorzystuje przełączniki (wieloporty);
Przełącznik uczy się adresów sterowania dostępem do nośnika
Między nadawcą ramki, a odbiorcą tworzone tymczasowe ścieżki przełączane (komutowane)

Siatki

oprócz koniecznych połączeń sieć zawiera połączenia nadmiarowe; sieci z wysoką bezawaryjnością


Dodatkowe:

Topologia liniowa – wszystkie elementy sieci (prócz granicznych) połączone są z dwoma sąsiadującymi

Gwiazdy rozszerzonej – posiada punkt centralny (jak w topologii gwiazdy) i punkty poboczne (1-na z
częstych topologii fizycznych Ethernet); rozszerzenie zasięgu


Topologie złożone:

Topologia

opis

Hierarchiczna
(drzewa)

Kombinacja topologii gwiazdy i magistrali, budowa podobna do drzewa binarnego; system podłączony do komputera
sterującego ruchem tej topologii

łańcuchy


Topologie złożone

-

rozszerzenia lub połączenia podstawowych topologii

-

topologie złożone = skalowalne,

-

w topologiach podstawowych skalowalność ograniczona

-

Łańcuchy

-

Hierarchie
-

Hierarchiczne pierścienie/ gwiazdy/ melanże

background image

44. Charakterystyka systemów rozproszonych - zalety i wady.


System rozproszony

Zbiór niezależnych urządzeń technicznych połączonych w 1 spójną logicznie całość

Połączenie przez sieć komputerową (jednak możliwość użycia prostszych magistrali komunikacyjnych)

przykład przetwarzania współbieżnego, do realizacji systemów równoległych (problemy występujące w
systemach rozproszonych występują także w systemach równoległych, które z kolei występują w
przetwarzaniu współbieżnym)

Cel: bezpieczeństwo, niezawodność

Każdy zasób ma własny SO i zasoby lokalne

Programowanie warstwy pośredniej – tworzy się wirtualne oprogramowanie dla SO, służące usługi jako
całość

Autonomiczne działanie pojedynczego systemu, luźniejsze powiązanie współpracujących procesów niż w
przypadku obliczeń równoległych (zamiast synchronizacji czasowej mamy przyczynowo-skutkową)

Urządzenia posiadają oprogramowanie do współdzielenia zasobów systemowych

Cechy: przezroczystość (wrażenie 1-nczego i zintegrowanego systemu)

SYSTEM ROZPROSZONY = Co najmniej 1 KOMPUTERY W SIECI + OPROGRAMOWANIE TWORZĄCE
USŁUGI DLA WSZYSTKICH SYSTEMÓW

zalety

wady

+ Podział zasobów (dane, urządzenia sprzętowe)
+ Przyspieszenie obliczeń (dzielenie obciążenia)
+ Niezawodność (awaria 1 urządzenia nie uniemożliwia

działania systemu, co najwyżej może pogorszyć jego
wydajność)

+ Komunikacja (poczta elektroniczna)
+ Ekonomiczność (tańszy od systemu scentralizowanego)
+ Wewnętrzne rozproszenie (niektóre aplikacje z natury

rozproszone, wymagają rozproszonych komputerów)

+ Stopniowy wzrost (można stopniowo zwiększać moc

obliczeniową systemu); skalowalność – zdolność systemu do
adaptowania się do zapotrzebowań

+ Lepsze wykorzystanie sprzętu
+ Polepszenie jakości usług (usługi dostępne na serwerze)

- Złożoność oprogramowania i konieczność jego standaryzacji
- Sieć – możliwość awarii/przeciążenia
- Mniejsze bezpieczeństwo komputera podłączonego do sieci
- Współdzielenie i rozproszenie zasobów
- Niejednorodność (wydajność nie idzie w parze z

bezpieczeństwem)

- Otwartość (możliwość ataków)


45. Modele programowania równoległego.

Model programowania równoległego

Abstrakcja zasłaniająca architekturę sprzętu i pamięci

Nie są przypisane do żadnych konkretnych architektur – możliwość realizacji na dowolnym sprzęcie


Modele programowania równoległego:

model

cechy

Pamięć

współdzielona

Specjalnie utworzony segment wirtualnej przestrzeni adresowej, dostęp dla wielu procesów

Najszybsza komunikacja między procesami

1 z procesów tworzy segment pamięci współdzielonej, dowiązuje go -> odwzorowanie w bieżący obszar
procesu (opcjonalny zapis danych w segmencie)

Dostęp = miejsce wyznaczone przez adres dowiązania procesu (inny dla każdego procesu)

Koniec korzystania z segmentu pamięci -> możliwość odwiązania segmentu (usuwanie dowiązań)

Usunięcie segmentu pamięci współdzielonej przez proces-twórcę = gdy nie korzysta z niego żaden proces

(pod)zadania korzystają ze wspólnej przestrzeni adresowej

Odczyt/zapis w obrębie pamięci – asynchroniczny

Blokady i semafory – kontrola dostępu do pamięci

Brak potrzeby wymiany danych między zadaniami -> uproszczone programy (brak własności danych)

background image

Utrudnione zarządzanie lokalnością danych

Zmniejszenie wydajności gry wiele procesorów potrzebuje tych samych danych = wymiana między PAO a
buforowaną cache

Implementacje:

- Natywne (bezpośrednie) kompilatory – przekład programów (obszar zmiennych w rzeczywistej lokalnej

pamięci)

- Brak powszechnych implementacji do tego modelu pamięci

Wątki

1 proces = wiele współbieżnych ścieżek do wykonania

Analogia: program zawierający szereg podprogramów

W przeciwieństwie do procesów wątki współdzielą przestrzeń adresową i inne struktur systemowych

Wymagają mnie zasobów, szybciej się tworzą

Łatwa komunikacja między wątkami (pamięć wspólna)

Związane z architekturą pamięci współdzielonej (wymóg odpowiednich funkcji SO)

Wykonanie programu:

- Załadowanie do pamięci
- Pozyskanie zasobów własnych i systemowych
- Sekwencyjne wykonanie prologu
- Utworzenie szeregu podzadań (wątków)
- Szeregowanie wątków (SO), wykonanie współbieżne
- Wątek ma dane lokalne i dostęp do pełnych zasobów programu (np. do obszaru pamięci)
- Komunikacja = wspólna pamięć -> konieczność synchronizacji dostępu
- Wątki tworzone i usuwane; program działa zaś do końca

Implementacje

- Biblioteka podprogramów programu równoległego
- Dyrektywy kompilatora w kodzie programu sekwencyjnego/równoległego
- Identyfikacja równoległości = programista

Standaryzacja

- POSIX Threads (PThreads)

o Oparta o bibliotekę funkcji
o Norma IEEE POSIX
o Tylko język C
o Konieczność kodowania równoległego
o Jawny opis równoległości
o Zależność efektu od umiejętności programisty

- OpenMP

o Oparty o dyrektywy kompilatora
o Języki Fortran/C++
o Wieloplatformowość, przenośność
o Możliwość użycia w kodzie sekwencyjnym
o prostota

Przekazywanie

komunikatów

zadania (podzadania) z własną lokalną pamięcią

zadania umieszczone w 1 fizycznej maszynie lub dowolnej ich liczbie

wymiana danych między zadaniami -> nadawanie i odbieranie komunikatów

- wymaga kooperacji zaangażowanych procesów (nadawanie + odbieranie)

implementacje

- biblioteka podprogramów kodu źródłowego
- programista = identyfikacja równoległości
- standard: MPI (standard przemysłowy)
- architektury o pamięci współdzielonej = nie korzysta z sieci (wydajność)

Dane

równoległe

operacje równoległe = działania na zbiorze danych

dane = struktura (p. tablica)

zadania (podzadania) = ta sama struktura danych

wykonanie tych samych operacji na swoich częściach struktury danych

systemy z pamięcią współdzieloną = wszystkie zadania sięgają do danych (pamięć globalna)

gdy pamięć rozproszona – podział na części struktury danych (jej kawałki umieszczone w lokalnej pamięci
odpowiednich zadań); kompilator przekształca program z wykorzystaniem API MPI (bez udziału programisty)

background image

implementacje

- postać wywołań specjalnych podprogramów bibliotecznych dla danych równoległych
- postać dyrektyw odpowiedniego kompilatora

przykłady: Fortran, High performance Fortran, dyrektywy kompilatora

hybrydowy

połączenie różnych modeli programowania równoległego

pasuje do maszyn SMP z funkcjami sieciowymi

Przykłady: MPI + PThreads, MPI+openMP


Modele programowania wysokiego poziomu:

SPMD (ang. single program multiple data)

MPMD (ang. multiple program multiple data)

1 program dla wszystkich zadań

W 1 chwili = zadania wykonują te same lub różne instrukcje
wspólnego programu

Zadanie nie muszą wykonać całego programu

Model programowania wysokiego poziomu

Wiele różnych programów wykonywanych przez poszczególne
zadania

Zadania mogą przetwarzać różne dane

46. Miary efektywności obliczeń równoległych.

// ja bym to potraktował tylko jako dodatek, ważniejsze jest to co było u prowadzącego na wykładach:

Miara

efektywności

charakterystyka

Obserwacja

dla danej liczby procesorów przyspieszenie obliczeń równoległych jest większe dla zadań większych (ten sam
problem, ten sam algorytm, ten sam program, zmienia się tylko wielkość zadania)

przyspieszenie obliczeń równoległych większe dla zadań większych (dla danej liczby procesorów)

zmiana tylko wielkości zadania (problem, algorytm, program – te same)

dla zadań, dla których przy stałym p i rosnącym rozmiarze ilość obliczeń rośnie szybciej niż narzut obliczeń
równoległych

Miara

wielkości

zadania

praca W = liczba operacji przy realizacji zadania

Funkcja 2-óch

parametrów

przyspieszenie funkcją 2-óch parametrów (liczba procesorów p i wielkości zadania: S(p,W))

efektywność E(p,W)

analiza funkcji 2-óch zmiennych ->różne jej przekroje


Przyspieszenie skalowalne = przyspieszenie dla danej liczby procesorów p i zadaniu p-ktotnie większym od
zadania z pojedynczego procesora:

S

S

(p)=


=


Liniowe przyspieszenie skalowalne

Czas rozwiązania nie zmienia się przy rozwiązaniu zadania o rozmiarze p-krotnie większym na p razy więcej procesorach

Stała efektywność zrównoleglenia

Badanie słabej skalowalności = analiza przyspieszenia skalowalnego i skalowalnej efektywności (wydajność przy stałym rozmiarze
zadania na 1 procesorze)

- Czas rozwiązania zadania p-ktornie większego na większej liczbie procesorów będzie niezmieniony

Skalowalność równoległa - - zachowanie programu równoległego dla rosnącego zadania i liczby procesorów

Program skalowalny równolegle = efektywość obliczeń równoległych: E(W(p),p) ograniczona od dołu przez liczbę > 0

- Gdy W(p) funkcją liniową = liniowa skalowalność (wymagany rozmiar pamięci tych funkcji nie przekracza dostępnych

zasobów; wzrost liczby procesorów = liniowy wzrost pamięci)

Analiza równoległej skalowalności = funkcja izoefektywności (efektywność jest stała: E(Wizo(p),p)=const (>0)); obliczenia dla f
izoefektywności są skalowalne; liniowa skalowalność = liniowa funkcja izoefektywności; izoefektywność – gdy narzut obliczeń
równoległych

Stała efektywność = stosunek narzutu wykonania równoległego do czasu obliczeń sekwencyjnych = const przy stałym rozmiarze
zadania (narzut całkowity jest stały -> narzut na 1 procesor maleje odwrotnie proporcjonalnie do liczby procesorów p)

Wzrost liniowy procesorów i zadania powoduje liniowy wzrost całkowity narzutu na 1 procesor

background image

Obliczenia liniowo skalowalne – 1 z warunków do spełnienia:

- stały czas rozwiązania zadania p-krotnie większego na p-razy większej liczbie procesorów
- stały narzut wykonania równoległego na 1 procesor (zadania rosnące liniowo wraz z liczbą procesorów)
- liniowa funkcja izoefektywności lub liniowe przyspieszenie skalowalności obliczeń

program dobrze skalowalne – niewielkie odstępstwa od warunków j.w. (duże odstępstwa = programy nieskalowane i źle skalowalne)

Skalowalność = kluczowe pojęcie dla równoległych obliczeń wysokiej wydajności

W praktyce nie istnieją programy dające się idealnie zrównoleglić (o liniowym przyspieszeniu), natomiast
istnieją programy dobrze skalowalne (o liniowym przyspieszeniu skalowanym)

Wydajność przetwarzania (różnie definiowana w różnych dziedzinach zastosowań) daje się często ustalić na
podstawie analizy skalowalności

W dziedzinie obliczeń wysokiej wydajności (HPC): wydajność = liczba_operacji /czas , co często daje się
przybliżyć jako: przyspieszenie*czas_wykonania_1_operacji



- - - - - - Z wykładów prowadzącego (chyba bardziej konkretne)

Cel obliczeń równoległych

Uzyskanie wysokiej wydajności obliczeń


Wydajność obliczeń równoległych

Szacowanie

wydajności na

podstawie

sprzętu

- Wydajny sprzęt = szybkie rozwiązania zadań
- Miara czasu rozwiązania zadania lub liczba zadań w jednostce czasu
- Zastosowanie: różne dziedziny (grafika – ramki na sek, BD – transakcje)
- Trudne zagadnienie, tylko dla określonych dziedzin
- Miary wydajności:

o MIPS (przetwarzanie procesora, jednak niewydajne bo zależy od urządzeń zewnętrznych; także różna

budowa procesorów -> inna liczba rozkazów dla programów)

o MFLOPS/ GFLOPS (szacowanie liczby rozkazów procesora na jednostkę czasu) -> algebra, rozwiązywania

układów liniowych; jednak problem, bo rezultaty praktyczne to nieraz 1% teoretycznego

Miary mierzone

bez sprzętu

- Miara przyspieszenia (obliczenia równoległe bez sprzętu); sprawdzamy wydajność programu przy zwiększaniu

liczby procesorów

- Podstawą – czas rozwiązania zadania
- Definicje przyspieszenia:

o Obliczenia równoległe (bezwzględne) = stosunek wykonania konkretnego zadania najlepszego programu

sekwencyjnego do czasu rozwiązania na p procesorach z użyciem algorytmu testowanego

S

(1)

(p) =

Intuicja podpowiada nam, że program na 4 procesorach powinien działać 4-rokrotnie szybciej (czyli, że
przyspieszenie = 4). W praktyce jednak nie zawsze algorytm sekwencyjny jest przystosowany do
zrównoleglenia. Czasami lepiej zastosować gorszy algorytm sekwencyjny, który jednak lepiej działa
równolegle. Algorytm dobrze skalowalny – stosujemy algorytm gorszy dla wykonania sekwencyjnego,
jednakże w przypadku wykonania równoległego jest bardziej wydajny

background image

o Przyspieszenie względne = stosunek wykonania algorytmu na 1 procesorze do wykonania na p

procesorach

S(p) =

ó
ó

groźba – przyspieszenie powoduje, że mamy zawsze opłacalny wynik; ponadliniowość (superlinear speed-
up) – coś lepszego od ideału

- Analiza przyspieszenia = klasyczna analiza złożoności
- Prawo Amdahla = czas wykonania równoległego w programie jest mniejszy od sekwencyjnego
- Prawo Gustavsona = stały czas rozwiązania zadania (mimo dokładania procesorów)


Efektywność Zrównoleglenia: E(p) = S(p)/p

Skalowalność programu równoległego

Silne (liniowe) przyspieszenie

słabe

Przy analizie Andhala

Liniowe przyspieszenie przy zwiększaniu liczby procesorów
– rozwiązywane te same zadania

Nie może być części sekwencyjnej oraz komunikacji i
synchronizacji

Kłopotliwa (embarassing), nie może być rzeczywista

świetna skalowalność

jedyne co możemy uzyskać

wystarcza w większości wypadków

Dostajemy liniowe przyspieszenie jeśli rozmiar zadania rośnie
wraz z liczbą procesorów

Duże maszyny stosuje się do wykonywania coraz większych
zadań w sensownym czasie

47. Środowiska programowania równoległego.

środowisko

charakterystyka

OpenMP

(ang.Open Multi-

Processing)

Wieloplatformowe API (interfejs) programowania aplikacji

Model SPMD

Programowanie z pamięcią wspólną

Umożliwia tworzenie programów współbieżnych z pamięcią dzieloną

Wykorzystywany w językach: C,C++, Fortran …

Dostępny dla wielu architektur: Windows, Linux

Zbiór dyrektyw kompilatora (z argumentami tzw. klauzule) + biblioteki + specjalne zmienne środowiskowe
(dostępne są też funkcje)

Dyrektywa podziału pracy (najważniejsza, podział pracy w pętlach)

Dyrektywy i funkcje OpenMP nie gwarantują poprawności

Duża przenośność, skalowalność, elastyczność, prostota użycia (przezroczystość kodu – nie wygląda on tak
strasznie)

Można użyć do aplikacji na klastrach (pod kontrolą MPI - hybryda)

Możliwość użycia rozszerzeń dla systemów bez pamięci współdzielonej

2 obszary równoległe mogą mieć różną liczbę wątków, istnieje możliwość zagnieżdżania obszarów
równoległych (obszar w obszarze)

Możliwość użycia zamków/sekcji krytycznych/barier (walka z wyścigiem)

RPC

(ang. Remote

Procedure Call)

Nie przystosowany do programowania obiektowego

Używany w systemach Unix

Bazuje na gniazdach

background image

Komunikacja – zdalne wywołanie procedur, namiastki (po stronie serwera i klienta; namiastka klienta
wysyła dane do namiastki serwera, które idą później do funkcji serwera i wracają drugą stroną)

Wspólny sposób reprezentacji podstawowych typów danych XDR (ang. external Data Representation)

Łatwiejsze zarządzanie stanem funkcji serwera niż obiektem w RMI

Ograniczenia:

- Zdalna procedura przyjmuje tylko 1 argument/1 wynik, który może być strukturą
- Zmiany w procedury w jej argumencie pozostają lokalne i nie są przekazywane do klienta
- Klient otrzymuje wynik jako dowolny typ XDR
- RPC używa port standardowy 111
- Wywołując funkcję w nazwie trzeba umieścić jej wersję

RMI

(ang. Remote

Method

Invocation)

Część Javy

Możliwość wywoływania metod obiektów istniejących w maszynie wirtualnej JAVY przez obiekty z innej
maszyny wirtualnej

Obiekty zdalne i lokalne = identyfikacja przez referencję

Przechowuje stany obiektów

Namiastka = przekazywanie całego obiektu na serwerze

Komunikacja między klientem, a serwerem poprzez zarządzanie referencjami (zdalne obiekty przesyła się
przez referencję)

Ograniczenia:

- Problemy rozproszonego bezpieczeństwa danych, synchronizacji, odświecania pamięci
- Możliwe wykonywanie metod zdalnego obiektu bez dostępu do jego pól
- Metody RMI zadeklarowane w interfejsie rozszerzającym interfejs Java.RMI.Remote

CORBA

(ang. Common

object request

broker

architecture)

Standard komunikacji aplikacji w środowisku rozproszonym (za pomocą wspólnego brokera ORB)

Usługi świadczone przez obiekty

Middleware = środowisko między aplikacją, a SO

Obiekty programów komunikują się zdalnie dzięki ORB

Object adapter = tłumaczenie programu na konkretny język

wywołanie klienta trafia najpierw do ORB, potem przekazywane jest do systemu i do adaptera. Adapter
sprawdza, z jakim językiem ma do czynienia i tłumaczy go (zmiana kodu na kod pisany w konkretnym
języku)

Opracowany przez Object Management Group

Interfejsy CORBY:

- Komunikacja modułów programowych z innymi poprzez brokery
- Brokery komunikują się ze sobą w sposób jednakowy
- Moduł poznaje charakterystykę interfejsu innego modułu
- Możliwość komunikacji modułów w różnych językach programowania
- Możliwość komunikacji modułów w różnych architekturach (język definicji interfejsów IDL)

MPI

Programowanie z modelem przesyłania komunikatów

synonim ogólnego programowania komputerów z pamięcią rozproszoną

przepość, elastyczność

Interfejs programowania definiujący powiązania z językami C, C++, Fortran

od początku wiele procesów

brak wspólnej przestrzeni adresowej

programy się kompiluje, powstają pliki binarne, które się uruchamia jednocześnie

różne schematy komunikacji (broadcast, scalther, gather itd.)


W Javie możemy tworzyć wątki dziedzicząc po klasie Thread, implementując interfejs Runnable
W Linuxie mamy możliwość użycia wątków systemowych PThreads

48. Prawo Amdahla.


Prawo Amdahla:

analiza przyspieszenia obliczeń zrównoleglonych

w programie występuje część, której nie da się zrównoleglić (rozgłaszanie, redukcja)

background image

czas wykonania równoległego w programie jest mniejszy od sekwencyjnego, a przyspieszenie nie
przekroczy


, f =

, s- czas wykonania części sekwencyjnej






Prawo Amdahla jest wyidealizowane

brak analizy komunikacji i synchronizacji (im więcej procesów, tym więcej komunikacji i synchronizacji)

rzeczywiste programy działają gorzej niż prawo Amdahla

49. Obrazy rastrowe i wektorowe: budowa, właściwości, różnice.

Obrazy rastrowe

Obrazy wektorowe

Budowa

Budowa obrazu za pomocą pionowo-
poziomej siatki odpowiednio
kolorowanych pikseli na monitorze
komputera

Piksel = położenie + kolor („mozaika”)

Obraz opisany jest za pomocą figur geometrycznych (2D) lub
brył geometrycznych (3D)

Figury umiejscowione są w matematycznym układzie
współrzędnych

Właściwości

Kolor każdego piksela zdefiniowany
pojedynczo (brak kompresji)

Obrazek z głębią koloru RGB = 3 bajty
(czerwony, zielony, niebieski)

Obrazy czarno-białe wymagają tylko 1
bajtu na piksel (bitmapa)

Bitmapę charakteryzują 2 liczby: wysokość
i szerokość bitmapy (w pikselach)

Analiza zmiany koloru ciągłych zbiorów
pikseli (gdy dane o obrazie pobierane
kolejnymi rzędami

Edycja = modyfikacja poszczególnych
pikseli

Figury opisane w sposób matematyczny -> możliwość
wykonywania operacji (obrót, przesunięcie … )

Jakość obrazu zależy od dokładności opisu obrazu

Możliwość zmiany kolejności obiektów na osi głębokości

Możliwość konwersji do grafiki rastrowej

Generowana komputerowo

Podstawą: linia (prosty odcinek lub krzywa); linie ograniczają
obszary Lu tworzą obrysy; linie jako wektory = linie odniesienia
przy przekształceniach geometrycznych

Obszary zamykane liniami mogą mieć nadawanie atrybuty
koloru o określonym stopniu przezroczystości lub tworzyć maski

Mniejsza objętość plików

Różnice

Wielkość obrazka nie może zostać
zwiększona bez zmniejszenia jego ostrości

Bardziej użyteczna do zapisywania zdjęć i
rzeczywistych obrazów

Obrót o kąt niebędący wielokrotnością 90

o

obrazu może go zniekształcać (utrata
jakości)

Operacja na obrazie są kosztowne
obliczeniowo

Konwersja do grafiki wektorowej
nieopłacalna

Zależy od rozdzielczości

Zapamiętuje kolory i położenie pikseli

Nie trzeba nic dodatkowo instalować

Obraz ideowy, nie literalny

Pokazuje obraz z użyciem obiektów geometrycznych (krzywe,
wielokąty)

Skalowalna -> wielkość obrazka można skalować bez strat
jakości -> możliwość dopasowania do urządzenia

Obrazy z figur geometrycznych i prezentacji tekstu (tabele,
wzory …)

Maksymalna możliwa rozdzielczość

Możliwość modyfikacji poprzez zmianę parametrów obrazu

Mniejszy rozmiar (zastosowania niefotorealistyczne)

Opis przestrzeni 3D

Możliwość użycia ploterów zgodnie z metodą ich pracy

Zachowuje informacje o liniach, krzywych (kształty) obiektu

Możliwość szerokiej edycji poszczególnych elementów

Gdzie:

S – czas wykonania części sekwencyjnej


Czas wykonania równoległego na p procesorach:

Trówn. (p) = S +



Wzór na przyspieszenie obliczeń:

S

A

(p) =



=

=



Przyspieszenie tylko do 10

background image

50. Grafika rastrowa - prymitywy graficzne 2D: kreślenie odcinków, okręgów, wypełnianie

obszarów.


Geometria obrazu – opis za pomocą „prymitywów”, jak:
- odcinki,
- trójkąty, prostokąty, wielokąty,
- łuki, okręgi, elipsy,
- koła i ich wycinki

Kreślenie odcinków

Kreślenie okręgów

Obliczanie współrzędnych pikseli o jak najmniejszej
odległości od wektora wyznaczającego jego przebieg

Idealny odcinek na siatce rastra + konwersja = zbiór
pikseli przybliżających wektor

Konwersja – algorytmy (zaokrąglenie przy wyborze
interesującego piksela):

- DDA (względem osi X lub Y) ; liczby

zmiennoprzecinkowe; mało efektywny

- Bresenhama (punk środkowy); liczby

stałoprzecinkowe

- Algorytm symetrii oktantowej (Podział okręgu na 8 symetrycznych
części)
- Algorytm z punktem środkowym (Obliczenia wykonywane w drugim
oktancie)
- W przypadku odcinka przyrost był wartością stałą, w przypadku okręgu
przyrosty są zmienne, gdyż zależą od wartości współrzędnych punktu P.
Punkt ten jest zatem punktem odniesienia


wypełnianie obszarów
Wypełnianie ograniczonego obszaru:
- barwą,
- gradientem,
- wzorem.

Problemy związane z wypełnianiem:
- wybór pikseli, które powinny zostać wypełnione,
- wybór metody wypełniania pikseli.

Wypełnianie wielokątów

Obraz analizowany wiersz po wierszu (linie przecinające wielokąt i wypełniane segmenty pikseli)

Wybór pikseli = reguła parzystości (przy przejściu przez kolejne krawędzi, bit raz parzysty, a raz nieparzysty;
rysowane tylko piksele o wartościach nieparzystych)

Problemyzwielokątami,któreposiadająwspólnekrawędzie–powielaniepunktówbrzegowych

Piksele znajdujące się wewnątrz dowolnego wielokąta powinny zostać wypełnione

Wypełnienie wielokąta przez spójność (punkt startowy – ziarno)

Sąsiedztwo piksela

Kontur figury na płaszczyźnie dyskretnej

„Drzazgi”

Negatywny efekt dyskretyzacji obrazu.

W wielokątach o krawędziach, między którymi jest niewielki kąt tworzą się „drzazgi”.

Segmenty pikseli zawartych we wnętrzu wielokąta mają niewielką lub zerową długość.

51. Algorytmy poprawy jakości obrazu rastrowego.


Metody poprawy jakości obrazu poprzez manewrowanie trzema głównymi elementami:

Jasność / zakresu koloru

Kontrast

Histogram



background image

Algorytmy:

algorytm

opis

Liniowe odwzorowanie poziomów jasności

dodawanie/odejmowanie od obrazu stałej wartości; wynik: jasny/ciemny obraz

przy mnożeniu – poprawa jakości(kontrast), jednak możliwość utraty części
danych (przekroczenie wartości);

solaryzacja = zmiana poziomów jasności pikseli

Metoda nasycenia/modulo

przekroczymy zakres - wartości pikseli idą od początku

normalizacja jasności - kilka metod, np. podział obrazu wynikowego przez
największą wartość piksela z obrazów składowych; zmniejszenie szumu obrazu

Nieliniowe odwzorowanie poziomów
jasności

transformacja kwadratowa/sześcianowa

funkcja z potęgą

pierwiastkowanie = zwiększenie kontrastu w ciemnych partiach obrazu

logarytmowanie obrazu


Korekcja gamma = punktowa transformacja obrazu
monochromatycznego/poszczególnych kanałach barw obrazu kolorowego


Inne:

,,Rozciąganie” histogramu obrazu = zwiększenie kontrastowości obrazu

Inwersja poziomu jasności obrazu

Wyrównywanie histogramu obrazu

Obliczanie histogramu skumulowanego

Eliminacja zniekształceń - sumowanie obrazów

Redukcja zakłóceń obrazu przez uśrednianie sekwencji obrazów


52. Metody skalowania obrazów rastrowych.

Metoda

opis

Metoda

najbliższego

sąsiada

Wartość nowych pikseli wyliczana poprzez wybór wartości jednego z 4-ech najbliżej położonych pikseli

Piksel przyjmuje barwę piksela położonego najbliżej (miara euklidesowa) = powielanie/eliminację wybranych
pikseli (w zależności czy powiększamy, czy zmniejszamy obraz)

Brak nowych wartości wprowadzonych do obrazu

Brak interpolacji nie powoduje zmniejszenia ostrości krawędzi

Jeśli 2 piksele źródła równooddalone od nowego piksela -> wybór przebiega według dowolnej metody
(konsekwentność)

Dobra, gdy zwielokrotniamy rozdzielczość (zmiana długości i szerokości)

Na wartość nowego piksela ma wpływ tylko 1 z sąsiadów

Metoda

interpolacji

dwuliniowej

Poddawane są piksele występujące najczęściej w układzie 4-sąsiedztwa

Im bliżej analizowanego punktu jest piksel z jego sąsiedztwa, z tym większą wagą wpływa na wartość nowego
piksela

wszystkie piksele mają wpływ na wartość nowego piksela

powstają zupełnie nowe wartości pikseli (nieobecne w obrazie źródłowym)

kontury obiektu ulegają rozmyciu

Metoda

interpolacji

dwukubicznej

brane jest tu 16 sąsiadujących pikseli

wartość piksela liczona jest z wielomianu 3-ego stopnia

wada: znaczna złożoność obliczeniowa

w obrazie pojawiają się nowe wartości = rozmycie krawędzi (tak jakby rozmazany obraz był wyraźniejszy)







background image

53. Modele barw stosowane w grafice komputerowej (RGB, CMY, HSV, LAB).

Model

Opis

RGB

Ukierunkowane na sprzęt (różna charakterystyka widmowa -> każde urządzenie ma zakres barw możliwych do
uzyskania)

Taka kostka; na osiach są barwy czerwona, niebieska i zielona

Powstał z właściwości odbiorczych ludzkiego oka (wrażenie dowolnej barwy = zmieszanie kolorów red, blue i Green w
ustalonych proporcjach)

Synteza addytywna = wartości najniższe – czerń, najwyższe - biel

CMYK

Ukierunkowane na sprzęt (drukarki)

Jedna z przestrzeni barw w pracy z grafiką komputerową

Jak RGB, tyle że na osiach są żółty, różowy i jasnoniebieski

HSV

Ukierunkowane na użytkownika (barwy = światło pochodzące z oświetlenia)

Wszystkie barwy wywodzą się ze światła białego (część widma wchłonięta, część odbita do oświetlanych przedmiotów)

Model opisu przestrzeni barw

Hue = barwa (dominująca długość fali)

Saturation = nasycenie (czystość pobudzenia)

Value (level) = jaskrawość

Model ten przypomina taki jakby stożek przecięty na części (poziomy)

LAB
(CIE

La*b*)

Niezależne od urządzenia

L = jasność, A,B = nieliniowo skompresowane koordynaty przestrzeni CIE XYZ

Najszersza zdefiniowana matematycznie przestrzeń barw (powstała w wyniku transformacji krzywoliniowego stożka
CIE)

Najważniejszy model grafiki komputerowej, wykorzystywany w obliczeniach barw przez systemy zarządzania barwami
CMS (ang. color management systems)

54. Cykl życia oprogramowania.


rola fazy strategicznej, etapy tworzenia oprogramowania

etap

opis

Wymagania

Analiza problemu, zrozumienie potrzeb użytkownika, dzielenie wejść/wyjść, prototypowanie

Tylko elementy istotne, precyzja, jasność, wykonalność

Warunki początkowe, przypadki użycia, uczestnicy, rozszerzenia

Specyfikowanie

Specyfikacja odbiorcy i ich potrzeb

Precyzowanie wymagań – formalizm (precyzja)

Języki specyfikacji: formalne i nieformalne

Oprogramowanie niebezpieczne

Projektowanie

Ogólne zasady projektowania = etap fazy analizy

Etapy projektowania = wysokiego poziomu i szczegółowe

Modele obiektowe i strukturalne

Sztuka tworzenia interfejsów

Notacja formalna

Kodowanie

Języki programowania i narzędzia wspomagające (analizatory, skrypty)

Projektowanie z użyciem pseudokodu, abstrakcyjne typy danych, hermetyzacja

Projektowanie obiektowe (obiekty rzeczywiste i programowe, wymagania obiektowe)

testowanie

Plan testów (cykl życia)

Implementacja, a testowanie

Testowanie funkcjonalne i oparte na błędach

Testy jednostek i systemu

Testy losowe, automatyczne, systematyczne i regresywne

Zarządzanie testowaniem

konwersacja

Dokumentacja systemu informatycznego

Zarządzanie projektem informatycznym

background image

55. Model kaskadowy i spiralny, charakterystyka i porównanie.


Model kaskadowy – taki jak w 54 zadaniu

Dokumentacja

Faza strategiczna

analiza

synteza

Instalacja i utrzymanie

wymagania

specyfikowanie

początek
projektowania

projektowanie

kodowanie i
implementacja

początek testowania

testowanie

konserwacja
produktu


Model kaskadowy – wady:

narzuca twórcom oprogramowania ścisłą kontrolę kolejności realizowanych prac

wysoki koszt błędów popełnionych we wstępnych fazach (błędy wymagań i specyfikacji -> odkryte przy
testowaniu)

klient bierze udział tylko we wstępnej fazie projektu, jest mało zaangażowany -> obniżenie zainteresowania
produktem


Można rozbudować testowanie (żeby było w każdym etapie; model V)
Można rozbudować o model iteracyjny – jeśli któraś z faz zwróci niesatysfakcjonujący wynik, to cofamy się
wykonując kolejne iteracje)


Model spiralny

proces tworzenia ma postać spirali

najbardziej ogólny model cyklu życia oprogramowania

dobrze rozpoznaje zagrożenia i zapobiega/redukuje -> wysoka niezawodność każdego oprogramowania,
pewność dalszej realizacji

4 główne fazy cyklu życia oprogramowania wykonywane cyklicznie: analiza ryzyka, konstrukcja,
atestowanie i planowanie

planowanie

Analiza ryzyka

Konstrukcja (model

kaskadowy)

atestowanie

Wymagania początkowe

Planowanie projektu

Kolejne iteracje – wynik kontaktu z
klientem

Analiza ryzyka w oparciu o
wymagania

Przy kolejnych iteracjach:
analiza ryzyka w oparciu o
reakcje klienta

Tworzenie
oprogramowania
w oparciu o
najbardziej
odpowiedni
model wybrany
na podstawie
zagrożeń

Customer evaluation
(ocena klienta)

56. Metryki oprogramowania, przykłady i obszary zastosowań.


Metryka (miara) programowania

Miara pewnej własności oprogramowania/jego specyfikacji

Brak 1 definicji - wszystko to, co charakteryzuje oprogramowanie

Można wyróżnić różne metryki na różnych etapach życia oprogramowania


Cechy metryki:

Zarejestrowana historia (podobny projekt realizowaliśmy przez rok) nosi znamiona miary.

Powiązanie ilości kodu KDSI (thousand of delivered source code instruction), LOC (line of code) z
elementami potrzebnymi do napisania tego kodu:

Ludzie (ilość, czas),
Czas (długość i etapy harmonogramu)
Sprzęt (czyli zasób rzeczy konieczny do stworzenia oprogramowania)

Gdy brak własnych danych historycznych –modele estymacyjne = algorytmiczne (na podstawie wzoru)

background image

Ocena rozwiązań:

Sukces = wybór realizacji przedsięwzięcia (faza strategiczna) -> wybiera się najlepsze

Trudności z wyborem rozwiązań: cele (kryteria oceny), niemożność precyzyjnej oceny rezultatów

Kryteria oceny: koszt, czas realizacji, niezawodność, możliwość ponownego wykorzystania systemu,
przenośność, wydajność


Wybór rozwiązania

Usunięcie rozwiązań zdominowanych (inne rozwiązanie nie gorsze w innych kryteriach i lepsze w co
najmniej 1 od wybranego)

Wagi dla poszczególnych kryteriów

Normalizacja wartości kryteriów

Suma iloczynów znormalizowanych wartości i wag = ocena rozwiązania

Niepewność = problem; szacowanie wartości optymistycznej i pesymistycznej (strategia działania);

- nie można w obiektywny sposób stwierdzić która strategia jest lepsza
- bardziej racjonalna ocena -> szacowanie prawdopodobieństw zdarzeń dla danych rozwiązań


Szacowanie kosztów oprogramowania

czynniki łatwe do oszacowania: koszt sprzętu/wyjazdów i szkoleń/zakupu narzędzi

czynniki trudne do oszacowania: nakład pracy

szacowanie kosztów oprogramowania = głównie nakłady pracy

metody:

metoda

charakterystyka

Przykład i zastosowanie

Modele algorytmiczne

wymaga opisu danego przedsięwzięcia za pomocą szeregu atrybutów
liczbowych i opisowych

odpowiedni algorytm = spodziewany nakład pracy

COCOMO

Ocena przez eksperta

Doświadczenie osoby

Nieraz duża precyzja

Ocena przez analogię

Wycena na podstawie wcześniej realizowanych przedsięwzięć

Sieci neuronowe

Systemy ekspertowe

Prawo Parkinsona

Przedsięwzięcie zawsze wiąże się z założonymi nakładami

Projekt zmieści się w założonych ramach

Wycena dla wygranej

Koszt oprogramowania szacowany na podstawie oceny możliwości
klienta i działań konkurentów

Obowiązuje tu prawo Parkinsona

Szacowanie
wstępujące

Realizacja przedsięwzięcia dzielona na mniejsze zadania -> koszt
łatwiej ocenić

Algorytmiczne modele szacowania kosztów oprogramowania

model

opis

Metoda punktów

fikcyjnych

Łatwiej oszacować rozmiar systemu niż nakład pracy

Model nie opierający się na liczbie instrukcji kodu

Szacowane czynniki:

- Dane odczytywane/pobierane przez system
- Interakcja z użytkownikiem
- Zewnętrzne interfejsy
- Pliki wykorzystywane przez system

COCOMO

(ang. COst

COnstruction MOdel)

Nakład pracy = możliwość oszacowania czasu realizacji przedsięwzięcia -> otrzymujemy przybliżoną
wielkość zespołu (korekcja za pomocą tzw. czynników modyfikujących – brane różne atrybuty
przedsięwzięcia, np. rozmiar bazy danych, wymagania niezawodności systemu itd)

Wymaga oszacowania liczby instrukcji systemu

Powszechnie wykorzystywany model

Opiera się na wielu rzeczywistych przedsięwzięciach

Nie do końca adekwatny w przypadku rzeczywistych przedsięwzięć (brak narzędzi CASE)

Pod uwagę bierze się czynniki i postać zależności w modelu

Przedsięwzięcie zalicza się do 1 z klas:

- Organiczne – mały zespół, podobne umiejętności każdego członka, dobrze znana dziedzina

background image

problemu/narzędzia/metody

- Półdrewniane – różnica stopnia zaawansowania dla członków zespołu, niektóre

metody/dziedziny nie są znane

- Osadzone – realizacja systemów o złożonych wymaganiach, dziedzina/metoda/narzędzia

znane, brak doświadczenia członków zespołu


----- dodatek:
Metryki statyczne

Ocena kodu źródłowego

Analiza statystyczna

Przydatne dla programistów i osób zaangażowanych w rozwój programu

Bieżące śledzenie jakości kodu i zwrócenie uwagi na miejsca do uproszczenia/testowania


Metryki rozmiaru:

metryka

opis

Linie kodu

Nie odróżnia trudnych i łatwych części kodu

Premiuje rozwlekły styl pisania programów

Liczba tokenów

Token = podstawowa jednostka składni języka programowania

Tok enem mogą być operatory (słowa kluczowe - akcje) i operandy (stałe, zmienne itd.)

Wagi dla mniej i bardziej znaczących linii kodu

Inne metryki

Jednostki rozmiaru programu większe od linii kodu

Metryki dla większych aplikacji – liczba modułów/funkcji

Metody mierzenia programowania obiektowego (liczba klas i interfejsów)


57. Specyfikacja wymagań funkcjonalnych i niefunkcjonalnych, rola UML w procesie

specyfikowania wymagań.


Określanie wymagań

Celem – określenie wymagań klienta wobec systemu; potem bez użytkownika można tworzyć dalsze etapy

Zamiana celów klienta na określone wymagania realizacji tych celów

Dokumentacja projektowa – wskazanie, jak wejścia systemu powiązać z wyjściami

Konieczny dobry opis wymagań (szczegółowy, zrozumiały, bezsprzeczny)

funkcjonalne

niefunkcjonalne

Opisują funkcje systemu (mogą być wykonywane przy udziale systemów
zewnętrznych)

Język naturalny = sposób opisu wymagań

- Niejednoznaczność - różne interpretacje
- duża elastyczność – 1 treść na wiele sposobów, utrudnienie wykrycia wymagań

kompromis między metodą formalną, a językiem naturalnym – formularz opisu
wymagań (zapis podzielony na konkretne pola = uniknięcie szeregu błędów)

wymagany efekt funkcji, nie jej algorytm

może być bardzo duża

jedne funkcje systemu są podfunkcjami innych, bardziej ogólnych (zapis hierarchiczny
– technika zstępująca – od ogółu do szczegółu -> dekompozycja; jeśli zaczynamy od
szczegółowych funkcji to agregujemy je)

tylko zewnętrzne funkcje systemu

nie rozbijać funkcji systemu na te poziomy funkcji, które są czysto implementacyjne

niektóre funkcje składowe w ramach wielu nadrzędnych

Ograniczenia systemu

Wymagania produktu,
procesu, zewnętrzne

Wykorzystanie tabeli miar =
ilościowy opis pewnych cech
systemu


UML

notacja formalna

Graficzny język do obrazowania, specyfikowania, tworzenia i dokumentowania systemów informatycznych.

pozbawiona wad języka naturalnego, ale notacja ta niezrozumiała dla klienta; uporządkowanie wymagań

background image

58. Model logiczny a model fizyczny systemu – rola w procesie tworzenia oprogramowania.


Model analityczny:

Pokazuje co system ma robić

Jest zorganizowany hierarchicznie, według poziomów abstrakcji

Unika terminologii implementacyjnej

Pozwala na wnioskowanie „od przyczyny do skutku” i odwrotnie



Model analityczny - wady

Wykracza poza zakres odpowiedzialności systemu

- Model posiada elementy nie będące częścią systemu, ale wyjaśniające jego działanie
- nie wiadomo, które elementy modelu realizowane przez oprogramowanie, a które w sposób

sprzętowy

- ograniczenie w środkach


Modelowanie

odpowiedź na wady modelu analitycznego

decyzja, jakie modele tworzyć

od identyfikacji problemu zależy rozwiązanie

różne poziomy szczegółowości modelu, odpowiadanie rzeczywistości

brak idealnych modeli (rozwiązaniem niewielka liczba niezależnych modeli)

model oprogramowania – uproszczony opis modelu analitycznego, z wszystkimi najważniejszymi cechami

- model logiczny i fizyczny


Model logiczny i fizyczny są modelami rozwiązania
Rolą tych modeli jest rozwiązanie problemu, zdefiniowanego na początku (fazy określenia wymagań)

Model logiczny systemu

Model fizyczny systemu

Model analityczny = model logiczny (podstawowy) systemu

Etap projektowania cyklu życia programowania (cel fazy analizy)

Odpowiada na pytanie – jak system ma działać?

Opisuje sposób realizacji przez system postawionych wymagań, ale bez szczegółów
implementacyjnych

Zbiór informacji określający zachowanie się systemu

Model pojęciowy (ze specyfikacji i analizy) dostosowywany do wymagań niefunkcjonalnych

Elementy:

- Lista funkcji systemu
- Określenie zewnętrznych obiektów systemu
- Określenie współzależności między funkcjami systemu

„inwentaryzacja stanu obecnego” (niezbędne porcje danych dla funkcji, połączenia
identycznych funkcji realizowanych na różne sposoby)

Podstawa prac analityczych i projektowania systemu informatycznego

Określa najlepszą strategię dla sposobu implementacji systemu

Unikanie niejednoznaczności

Określa się tu: encje, atrybuty, typy danych, ograniczenia + relacje

Model strukturalny (składowe pasywne – dane, aktywne - operacje) bądź obiektowy
(składowe = dane + operacje; obiekty, klasy …)

Opisany według notacji zgodnej z pewną konwencją

Implementacja konkretnego
modelu logicznego (faza
implementacji)

Cel fazy projektowania

Wynik: projekt
oprogramowania – opis
systemu implementacji

Techniczny projekt
oprogramowania i rozwiązań
sprzętowych

Model fizyczny = kod






background image

59. UML w analizie i projektowaniu – omówienie podstawowych cech notacji.


Notacja graficzna

Diagramy graficzne = szybkie przekazywanie podstawowych informacji

nie pozwala na ukazanie wszystkich szczegółów.

Nadmierne nagromadzenie szczegółów = niska czytelność diagramu graficznego

Notacje graficzne uzupełniane są o dodatkowe informacje tzw. specyfikacje


UML (ang. unified modeling language)

Graficzny język do obrazowania, specyfikowania, tworzenia i dokumentowania systemów informatycznych

Notacja opisująca model o szczególnie ważnej roli

język do specyfikowania, wizualizowania, konstruowania i dokumentacji tzw. „artefactów” oraz czynności
biznesowych lub innych z obszaru działalności człowieka

obrazowania, specyfikowania, tworzenia i dokumentowania elementów powstałych podczas
procesu budowy systemu informatycznego

wspomaga specyfikowanie wszystkich ważnych decyzji analitycznych, projektowych i
implementacyjnych, które muszą być podejmowane w trakcie wytwarzania i wdrażania systemu
informatycznego

nazwa

opis

Artefakt

fizyczny element informacyjny wyprodukowany lub używany w procesie wytwarzania oprogramowania (fragmenty
modeli, bazy danych … )

Klasyfikator

element składowy modelu opisujący jego zachowanie/strukturę

posiada reprezentację geometryczną

przykłady: klasy, aktorzy, przypadki użycia, relacje

Obiekt

kawałek kodu

posiada:

- stan = definiowany przez atrybuty
- zachowanie = operacje i usługi świadczone przez obiekt na żądanie innych obiektów
- tożsamość = unikalna cecha obiektu (2 obiekty mogą być równe, ale nie identyczne)

Klasy

Klasa = opis zbioru obiektów o tych samych atrybutach, związkach i znaczeniu; pewien byt

Symbol: prostokąt

Abstrakcja tego, co można zrobić z każdym obiektem klasy

grupa obiektów o tych samych właściwościach, ograniczeniach i semantyce

deskryptor grupy obiektów o podobnej strukturze, zachowaniu i relacjach

własności

- atrybut = nazwana właściwość klasy; właściwość pewnego modelowanego bytu (określona dla wszystkich

jego wystąpień); klasa może mieć dowolną liczbę atrybutów

- operacja = implementacja pewnej usługi (jej wykonania można zażądać od każdego obiektu klasy)

relacje

Odpowiedzialność klas = zadania klas

Związek = współpraca klas

- Zależność – zmiany 1 elementu wpływają na inny, powiązany z 1
- Uogólnienie – związek między elementem ogólnym a specyficznym (nadklasa-podklasa)
- Dziedziczenie – potomek dziedziczy atrybuty i operacje przodka + jakieś własne; polimorfizm (operacje

potomka o takiej samej sygnaturze jak przodka jest ważniejsza)

- Powiązanie – związek wskazujący że elementy 1 systemu połączone z obiektami innego

Nie każda klasa musi mieć związek

Instancja

danej klasy

obiekt przypisywany do określonej klasy obiektów

asocjacje = zależność łącząca 2 lub więcej klas (instancje)

mnogość – ile instancji 1 klasy jest w relacji do 1 instancji 2-ej klasy

agregacja – rodzaj asocjacji; wskazuje na zawieranie się klas. nadklasa zawiera wszystkie instancje podklasy

generalizacja

związek między klasyfikatorami (klasy, nie instancje); nie definiuje się tam mnogości

wprowadza 6 typów diagramów: struktura stanu, przypadki użycia, wykres (rejestr) stanu, diagram
współpracy, wykres aktywności, wykres implementacji

background image

UML – przypadki użycia

Obrazowanie zachowania systemu, podsystemu lub klasy

Zrozumiały dla użytkownika i programisty

Cele

- Modelowanie otoczenia systemu – wyznaczenie granicy wokół systemu; aktorzy korzystający z

systemu)

- Modelowanie wymagań stawianych systemowi (określenie co system ma robić)

Diagramy przypadków użycia (identyfikacja i uporządkowanie aktorów, )


Statyczny model klas = podejście klasyczne – obserwacja, że w wielu systemach są podobne klasy i obiekty ->
poszukiwanie podobnych klas (przedmioty namacalne, lokalizacje, zdarzenia…)

60. Diagramy stanu oraz diagramy sekwencji, porównanie obszarów stosowania.

Diagram stanów

Diagram sekwencji (interakcji)

Stany jakiegoś elementu, klasy z siecią
przejść między stanami

Nawiązuje do automatu skończonego

Maszyna stanów = stany + przejścia +
zdarzenia + czynności

Stan – pewna, stabilna sytuacja w jakiej
znajduje się dany element; określa
zachowanie się wybranego obiektu

Przejścia do innych stanów mogą
następować pod wpływem określonych
zdarzeń (np. Komunikatów otrzymanych od
innych elementów modelu)

Opis istotnych stanów pewnego procesu
(dla modelu pojęciowego) i przejścia
między stanami (wymuszane przez
wywoływanie usług projektu)

Określa reakcje obiektu na zdarzenia w
czasie jego życia

Dynamiczne aspekty systemu

Świat funkcjonalny + obiektowy

Ciąg interakcji między obiektami systemów

Pokazują następstwo czasowe w sekwencji komunikatów

- Linie życia –pionowe kolumny odnoszące się do obiektów z diagramów

obiektów

- Fragment włączony –sekwencje komunikatów realizowanych iteracyjnie
- Aktorzy również włączeni jako obiekty. Nazwa komunikatu nad strzałkami

obrazującymi ich wymianę. Komunikat powrotny –powrót sterowania

Odpowiada konkretnemu scenariuszowi przypadku użycia

Ważna kolejność komunikatów w czasie

W górnej jego części są obiekty uczestniczące w interakcji

Po lewej stronie – obiekt inicjujący interakcję

Po prawej stronie – obiekty coraz bardziej podrzędne

Komunikaty uporządkowane w czasie wzdłuż osi Y (wcześniejsze wyżej) ->
ułatwienie zrozumienia przepływu sterowania w czasie

Posiadają linie życia obiektów; uwzględnienie ośrodka sterowania

Współpraca obiektów – scentralizowana (kontroluje 1 obiekt) i zdecentralizowana

Modelowanie zachowania interfejsów, klas
i kooperacji

Projektowanie systemów interakcyjnych

Projektanci systemów czasu rzeczywistego

Wykorzystywane przez architektów (projektant) systemu oprogramowania


Te modele używa się do prezentacji systemu w działaniu, jednak brane są inne aspekty

61. Testowanie oprogramowania, omówić model V.


Testowanie oprogramowania

optymistycznie - celem sprawdzenie, czy oprogramowanie spełnia wymagania

pesymistycznie - Celem testowania oprogramowania jest znalezienie błędów

powinno być realizowane zgodnie z przyjętym planem testów

Dwa aspekty błędów:

awaria- oprogramowanie źle realizuje wymagania

usterka – błąd w kodzie programu powodujący awarię

Zasada IEEE: Celem testowania oprogramowania jest takie wyszukiwanie awarii, że gdy oprogramowanie
ulegnie awarii podczas testów, usterki odpowiedzialne za te awarie będą mogły być znalezione i
poprawione


background image

Testowanie jednostek a testowanie systemu

Gdy dany moduł jest zakończony może być testowany na poziomie jednostki przez programistę (cykl test-
poprawianie).

Moduły są łączone w podsystemy i następnie w cały system który jest testowany na poziomie systemu

Testowanie jednostek jest efektem dekompozycji problemu i nie wykrywa błędów w interfejsach pomiędzy
nimi.

Samodokumentowanie się kodu procedur bez ich funkcjonalnej specyfikacji często prowadzi do błędów
(kod jest swoją własną definicją – to nie może być oceniany)

Testowanie jednostek systemu wymaga wprowadzenia tzw. namiastek będącymi pozornymi procedurami
uruchamiającymi testowaną jednostkę. Są to oczywiście warunki odmienne od występujących w
rzeczywistej pracy systemu. Najczęściej namiastki są interaktywnymi interfejsami pomiędzy testowaną
jednostką a testującym ją testerem (człowiekiem). Często stanowią również jednostki tzw. puste nie
robiące nic, a jedynie zwracające sterowanie do jednostki testowanej

Uprzęże testowe, służą automatyzacji testowania jednostek poprzez automatyczne programy testujące np.
typy zmiennych

Testowanie podsystemów - ukryte informacje w danych wewnętrznych prowadzi do losowego zachowania
systemu – wprowadzenie dodatkowych funkcji drukowania czytelnej dla testera wersji struktur
wewnętrznych (polepszanie testowalności kodu)

Testowanie kodu obiektowego – metody klasy obiektowej są podprogramami dostępu i również tutaj
powstaje problem badania danych ukrytych. Pomaga tutaj dziedziczenie – jeżeli metoda nadklasy
dziedziczona przez podklasy była testowana jednostkowo to nie ma potrzeby testowania jej w każdej
podklasie.

Testowanie ciągów wejść do podsystemów – generowanie stanów które powinny być obsłużone przez
system – eliminacja ślepych zaułków


Testowanie systemu

Testy systemowe - ich efekt będzie widoczny dla użytkowników. Inne działania testowe nie będą widoczne
dla użytkowników.

Testowanie integracyjne – przyrostowa metoda integracji systemu, dokładanie kolejnych podsystemów.
Testowanie z „góry” i z „dołu”.

Tak naprawdę dopiero w testowaniu systemowym widać spełnianie wymagań i realizację opracowanych
specyfikacji.

Inspekcja kodu a testowanie jednostki lub podsystemu mają doprowadzić do znalezienia usterki kodzie
jednostki


Model V

Kaskadowy model cyklu życia oprogramowania ma pewne wady (patrz: zadanie 55)

W obliczu wad j.w. poszerzono ten model o rozbudowanie testowania (testy dla każdej fazy; projektowanie
i weryfikacja nie następują zaraz po sobie, ale są wykonywane równolegle)

Stworzone wymagania są podstawą do rozpoczęcia definiowania weryfikacji

Wymagania podlegają analizie, część zespołu sprawdza czy dana idea realizowana

w procesie analizy muszą uczestniczyć testerzy

architekci tworzą specyfikację -> podział systemu na komponenty

lewe ramię = projektowanie

prawe ramię = weryfikacja

Testy końcowe to zazwyczaj tzw. testy akceptacyjne, odpowiadające na pytanie, czy dany produkt spełnia
wymagania klienta.


Zalety i wady systemu V:

zalety

wady

+ Precyzyjnie pokazuje zależności kolejnych etapów projektu
+ Każdy etap projektowania kończy się stworzeniem danych wejściowych dla następnej fazy i

korespondującej z nim fazy weryfikacji

+ Zachęca do jak najwcześniejszego rozpoczęcia procesu tworzenia planów testów, specyfikacji

testowej i samego testowania.

+ Dzięki analizie grafu możemy łatwo zidentyfikować obszary, gdzie stworzona dokumentacja

Mało szczegółowy

Mało wydajny

background image

powinna być sprawdzona

+ Kooperacja między architektami, programistami, klientami …


Wygląd:

projektowanie

weryfikacja

Wymagania

Testy końcowe

Analiza

Testowanie systemu

Architektura projektu

Testowanie interfejsów

Architektura komponentu

Testowanie komponentów

Implementacja

62. Podstawowe pojęcia niezawodności systemów technicznych, niezawodność systemów

oprogramowania, miary niezawodności.

pojęcie

opis

zasoby

Wszystko, co ma wartość dla instytucji

Prawidłowe kierowanie zasobami = główny cel

Przykłady: zasoby fizyczne, dane, oprogramowanie, ludzie …

Zagrożenie

Potencjalna przyczyna niepożądanego incydentu, którego skutkiem może być szkoda dla systemu lub instytucji

Zagrożenie może wykorzystać podatność zasobów celem wyrządzenia szkody

Przykłady: atak (bez)pośredni na informację

Podatność

Słabość zasobu/grupy zasobów, która może być wykorzystana przez zagrożenie

Ryzyko

prawdopodobieństwo określające możliwości wykorzystania określonej podatności przez dane zagrożenie

cel zagrożenia: spowodowanie straty lub zniszczenia zasobu lub grupy zasobów = negatywne (bez)pośrednie
wpłynięcie na instytucję.

Ryzyko
szczątkowe

ryzyko, które pozostaje po wprowadzeniu zabezpieczeń

zabezpieczenia redukują ryzyko tylko częściowo

wszystko, co da się osiągnąć = ryzyko szczątkowe; im więcej chce się osiągnąć, tym większe koszta

Zarządzanie
ryzykiem

całkowity proces identyfikacji, kontrolowania i eliminacji lub minimalizowania prawdopodobieństwa zaistnienia
niepewnych zdarzeń, które mogą mieć wpływ na zasoby systemu informatycznego

Zabezpieczenie

praktyka, procedura lub mechanizm redukujący ryzyko

chronią przed zagrożeniem, wykrywają niepożądane incydenty

Analiza ryzyka

proces identyfikacji ryzyka, określania jego wielkości i identyfikowania obszarów wymagających zabezpieczeń.

identyfikuje ryzyko, które ma być kontrolowane lub zaakceptowane

analiza ryzyka = analiza wartości zasobów, zagrożeń i podatności

ryzyko określane jest przez potencjalne następstwa spowodowane naruszeniem poufności, integralności,
dostępności, rozliczalności, autentyczności i niezawodności

monitorowanie

Używanie zabezpieczeń powinno być monitorowane w celu zapewnienia ich prawidłowego działania,
upewnienia się, czy zmiany w środowisku nie wpłynęły na efektywność działania zabezpieczeń oraz czy
zapewniona jest rozliczalność


Efektywna ochrona = kombinacja różnych zabezpieczeń -> warstwy ochronne dla zasobów

63. Proces zarządzania bezpieczeństwem systemów informatycznych, polityka

bezpieczeństwa.


Zarządzanie bezpieczeństwem systemów informatycznych

Proces, którego celem jest osiągnięcie i utrzymanie odpowiedniego poziomu poufności, integralności,
dostępności, rozliczalności i niezawodności systemów informatycznych


Bezpieczeństwo systemu informatycznego (IT security):

wszystkie aspekty związane z definiowaniem, osiąganiem i utrzymywaniem poufności, integralności,
dostępności, rozliczalności, autentyczności oraz niezawodności

background image

Polityka bezpieczeństwa instytucji w zakresie systemów informatycznych (IT security policy): zasady,
zarządzenia i procedury, które określają jak zasoby – włącznie z informacjami wrażliwymi - są zarządzane,
chronione i dystrybuowane w instytucji i jej systemach informatycznych


Cele, strategie i polityki bezpieczeństwa

Cele, strategie i polityki bezpieczeństwa instytucji powinny być opracowane hierarchicznie od poziomu
instytucji do poziomu eksploatacyjnego.

Powinny odzwierciedlać potrzeby instytucji i uwzględniać wszelkie występujące w instytucji ograniczenia.

Bezpieczeństwo wchodzi w skład odpowiedzialności na każdym poziomie kierowniczym instytucji i w każdej
fazie cyklu życia systemów.

Cele, strategie i polityki powinny być utrzymywane i aktualizowane w oparciu o wyniki cyklicznych
przeglądów bezpieczeństwa (na przykład analizy ryzyka, audytów bezpieczeństwa) oraz zmian w celach
działania instytucji.


Polityka bezpieczeństwa instytucji

Na politykę bezpieczeństwa instytucji składają się podstawowe zasady bezpieczeństwa i wytyczne dla całej
instytucji dot. bezpieczeństwa

Polityka bezpieczeństwa instytucji powinna odzwierciedlać polityki o szerszym zakresie w instytucji, w tym
te, które obejmują prawa jednostki, wymagania prawne i normy.


Polityka bezpieczeństwa systemów informatycznych

Polityka bezpieczeństwa systemów informatycznych powinna odzwierciedlać podstawowe zasady
bezpieczeństwa i zarządzenia wynikające z polityki bezpieczeństwa instytucji oraz ogólne zasady
korzystania z systemów informatycznych w instytucji.


Definicje podstawowe:

pojęcie

opis

Poufność

właściwość zapewniająca, że informacja nie jest udostępniania lub ujawniana nieautoryzowanym
osobom, podmiotom lub procesom.

Integralność systemu

właściwość polegająca na tym, że system realizuje swoją zamierzoną funkcję w nienaruszony sposób,
wolny od nieautoryzowanej manipulacji, celowej lub przypadkowej

Integralność danych

właściwość zapewniająca, że dane nie została zmienione lub zniszczone w sposób nieautoryzowany

Dostępność

właściwość bycia dostępnym i możliwym do wykorzystania na żądanie, w założonym czasie, przez
autoryzowany podmiot

rozliczalność

właściwość zapewniająca, że działania podmiotu mogą być przypisane w sposób jednoznaczny tylko temu
podmiotowi

autentyczność

właściwość zapewniająca, że tożsamość podmiotu lub zasobu jest taka, jak deklarowana.

Autentyczność dotyczy takich podmiotów jak: użytkownicy, procesy, systemy i informacja

niezawodność

właściwość oznaczająca spójne, zamierzone zachowanie i skutki

64. Kryptosystemy symetryczne oraz metody dystrybucji kluczy w systemach

symetrycznych.

Kryptosystem

symetryczny

opis

DES

Opracowany przez IBM, najbardziej popularny

Szyfrowanie 64-bitowe bloki danych

Długość bloku wejściowego = wyjściowego = 64

(de)szyfrowanie wyznacza 64-bitowy klucz

8 bitów = bity parzystości

Aktualnie uznawany za słaby

3DES

Potrójny DES (3-krotny szyfr algorytmem DES – 3 różne klucze)

Bezpieczniejszy

Chroni przed atakami przestrzeni kluczy

IDEA

Alternatywa dla DES, stworzona w Europie

background image

Stosunkowo nowy algorytm

RC4

Algorytm szyfrowania strumieniowego

Opiera się o ciąg pseudolosowych permutacji generowanych z klucza

1 z częściej stosowanych algorytmów szyfrujących

RC5

Blokowy algorytm szyfrujący

Dane szyfrowane w 16, 32 lub 64-bitowych blokach

Długość klucza = parametr

Prosta budowa

Uważany za bezpieczny

RC6

Następca RC5

Blokowy algorytm szyfrujący

Prosta budowa wprost z RC5

Dane szyfrowane 128-bitowym kluczem

AES

Blokowy algorytm szyfrujący

Dane szyfrowane 128, 192 lub 256-bitowym kluczem

Wielkość bloku: 128

Standardowy algorytm szyfrowania symetrycznego

Serpent

Blokowy

Dane szyfrowane 256-bitowym kluczem

Twofish

Blokowy

Dane szyfrowane są 128-, 192- lub 256-bitowym kluczem w 128-bitowych blokach

Blowfish

Klucze o zmiennej długości (do 448 bitów)

bezpieczny

mars

Blokowy

Dane szyfrowane kluczem w 128-bitowych blokach

Długość klucza: 128 – 400 bitów

SAFER

Algorytm blokowy

Wersja z 64bitowym kluczem obejmująca 6 rund i z kluczem 128b o 12 rund


Szyfrowanie i odszyfrowywanie

Szyfrowanie polega na takim przekształceniu wiadomości (tekstu jawnego) by dla osoby trzeciej, różnej od
nadawcy i odbiorcy, stanowiła ona jedynie przypadkowy ciąg znaków, na podstawie którego nie jest
możliwe odtworzenie żadnej użytecznej informacji.

Otrzymany w wyniku szyfrowania ciąg znaków nosi nazwę tekstu zaszyfrowanego (lub inaczej szyfrogramu).

Procesem odwrotnym do szyfrowania, wykonywanym przez odbiorcę wiadomości jest odszyfrowywanie,
pozwalające na odtworzenie tekstu jawnego.

System kryptograficzny

zbiór wszystkich tekstów jawnych (wiadomości), które mogą być zaszyfrowane przy użyciu danego szyfru to
dziedzina przekształceń szyfrujących.

Nowoczesne szyfry zazwyczaj nie wprowadzają żadnych ograniczeń na postać wiadomości podlegającej
szyfrowaniu.

Wiadomość może stanowić dowolny – sensowny lub bezsensowny – ciąg znaków.

W rodzinie przekształceń odszyfrowujących istnieje zazwyczaj tylko jedno przekształcenie odwrotne do
wybranego przekształcenia szyfrującego.

Tylko użycie właściwego klucza po stronie odbiorczej zapewnia odtworzenie zaszyfrowanej wiadomości.

Klucze systemu kryptograficznego

Klucz kryptograficzny wyznacza odpowiednie przekształcenie szyfrujące i/lub odszyfrowujące.

Klucz szyfru jest parametrem, którego wartość decyduje o tym, które odwzorowanie ze zbioru
odwzorowań wyznaczonych przez ogólny algorytm szyfrowania, zostanie użyte do zaszyfrowania lub
odszyfrowania danej wiadomości.

Zbiór możliwych do wyboru kluczy powinien być na tyle liczny, by niemożliwe było (w praktyce)
odtworzenie będącego w użyciu klucza metodą sprawdzenia wszystkich możliwości

background image

Systemy kryptograficzne dzielą się na dwie podstawowe grupy:

Systemy symetryczne (klasyczne) - w systemach tych, zwanych również systemami szyfrowania z kluczem
tajnym nadawca i odbiorca posługują się tym samym kluczem, zarówno do szyfrowania jak i do
deszyfrowania.

Systemy asymetryczne (publicznego klucza) - systemy te, zwane również systemami szyfrowania z kluczem
jawnym, posługują się dwoma oddzielnymi kluczami, przy czym jeden klucz służy do szyfrowania, a drugi
do deszyfrowania.

Para takich kluczy jest przypisana każdemu użytkownikowi sieci

Klasy systemów kryptograficznych

Szyfry blokowe

Szyfry strumieniowe

Jednoczesna transformacja ustalonej porcji (bloku) znaków wiadomości
wejściowej do postaci zaszyfrowanej

Długie wiadomości są wstępnie dzielone na fragmenty odpowiadające długości
podstawowego bloku

Jeśli ostatni fragment (lub krótka wiadomość) ma mniej znaków niż ustalona
długość bloku dla danego szyfru -> konieczność uzupełnienia lub dopełnienia
wiadomości przed szyfrowaniem (wielokrotność długości podstawowego bloku)

Jest kilka metod dopełniania wiadomości (wszystkie rozróżniają na jednoczesne
odróżnienie wiadomości od dopełnienia po stronie odbiorczej)

Jeśli wiadomość generowana współbieżnie z szyfrowaniem = urządzenie
szyfrujące musi czekać aż wygenerowana zostanie liczba znaków odpowiadająca
długości bloku (szyfrowanie i przesłanie zaszyfrowanego bloku)

Szyfrowanie każdego pojawiającego się
na wejściu urządzenia szyfrującego
znaku wiadomości (połączenie go w
pewien odwracalny sposób z
wygenerowanym wewnątrz urządzenia
znakiem klucza)

Kolejne znaki wiadomości łączone są z
kolejno generowanymi znakami klucza -
> szyfruje się „strumień” znaków
wiadomości przy pomocy „strumienia”
znaków danych

65. Kryptografia asymetrycznej w zagadnieniach bezpieczeństwa sieciowych systemów

komputerowych – przykłady zastosowań.


Teoria szyfrowania asymetrycznego – zadanie 64

nazwa

opis

Kryptosystem
RSA

Pierwszy, powszechny algorytm szyfrowania asymetrycznego

oparty jest na trudności obliczeniowej faktoryzacji dużych liczb półpierwszych.

zachowuje poufność i uwierzytelnienie danych (w zależności od szyfrowania kluczem prywatnym, czy
publicznym)

ciąg bitów podawanych na wejście przekształcenia szyfrującego jest traktowany jako duże (rzędu kilkuset cyfr
dziesiętnych) liczba całkowita M.

rolę klucza prywatnego pełni trójka dużych liczb całkowitych SK=(d, p,q)

rolę klucza publicznego pełni para liczb PK=(e ,n)

liczby p i q są dużymi liczbami pierwszymi

liczba n jest iloczynem liczb p i q, n=p⋅q

liczby e i d związane są zależnością: 1=(e⋅d)mod (( p –1)(q – 1))

przy czym musi d spełniać warunek: d< ( p– 1)(q –1)

przeznaczony do szyfrowania i odszyfrowywania n-bitowych loków danych

blok wejściowy i wyjściowy mają taką samą długość; obecnie przyjęte n = 1024 i jest wielokrotnością

Przekształcenie odwrotne wymaga znajomości liczby d (zawartej w kluczu prywatnym i wyznaczone jest przez
algorytm: M=(M ') d mod n.

generowanie kluczy

zaszyfrowanie i deszyfrowanie -> korzystamy z pierwotnych wzorów:

o Tekst zaszyfrowany=(tekst jawny )mod n
o Tekst niezaszyfrowany=(tekst zaszyfrowany)mod n

standard do podpisów cyfrowych

El Gammal

wariant systemu Diffiego – Hellmana (rozszerzenie)

1 algorytm szyfrujący i 1 uwierrzytelniający


background image

Zaawansowane metody szyfrowania asymetrycznego

Algorytmy wykorzystujące dyskretne krzywe eliptyczne (ECC, Elliptic Curve Cryptosystems) opierają się na
innych zasadach matematycznych niż podzielniki czy dyskretny problem logarytmiczny

ECC są pod pewnymi względami lepsze niż RSA czy Diffie-Hellman - klucze są mniejsze, a tym samym
obliczenia przebiegają szybciej przy takim samym poziomie bezpieczeństwa .

Takie samo zabezpieczenie przy 1024-bitowym dla RSA można osiągnąć w ECC przy kluczu 160-bitowym.
Algorytmy wielomianowe oparte na trudnościach obliczeniowych tzw. pierścieni wielomianów ciał
skończonych.

66. Podpis elektroniczny a podpis cyfrowy, definicje, przykłady zastosowań.

elektroniczny

cyfrowy

Podpisanie dokumentu przez osobę fizyczną

Dane w postaci elektronicznej

Wraz z innymi danymi, do których został
dołączony/logicznie powiązany służy do identyfikacji osoby
składającej podpis elektroniczny

Równoważny pod względem skutków prawnych
dokumentowi podpisanego własnoręcznie (jeśli jest tzw.
Elektronicznym podpisem bezpiecznym)

Matematyczny sposób potwierdzenia autentyczności
cyfrowego dokumentu

Najpowszechniejszy – schemat podpisu dokumentów
cyfrowych w systemach kryptograficznych z kluczem
publicznym i 1-kierunkową funkcją skrótu (do wiadomości
dołącza się skrót dokumentu, zaszyfrowany prywatnym
kluczem nadawcy)


Zgodnie z ustawą bezpieczny podpis elektroniczny to podpis elektroniczny, który:

jest przyporządkowany wyłącznie do osoby składającej ten podpis

jest sporządzany za pomocą podlegających wyłącznej kontroli osoby składającej podpis elektroniczny
bezpiecznych urządzeń służących do składania podpisu elektronicznego i danych służących do składania
podpisu elektronicznego

jest powiązany z danymi, do których został dołączony, w taki sposób, że jakakolwiek późniejsza zmiana tych
danych jest rozpoznawalna.


Przykłady zastosowań:

deklaracje podatkowe

deklaracje ZUS

odwołania w postępowaniu administracyjnym

67. Zapory ogniowe – pojęcia podstawowe, obszary zastosowań.


Zapora sieciowa

Sposób zabezpieczania sieci i systemów przed intruzami

Odnosi się zarówno do dedykowanego sprzętu komputerowego i do specjalnego oprogramowania
blokującego dostęp do komputera

Ochrona sprzętowa + programowa sieci LAN przed dostępem z zewnątrz (i danych na zewnątrz)

Często komputer z odpowiednim oprogramowaniem – filtrowanie połączeń wchodzących i wychodzących =
odmowa żądań dostępu uznanych za niebezpieczne

Najczęstsze techniki obrony

Filtrowanie pakietów (akceptowanie pakietów)

Stosowanie algorytmów identyfikacji użytkownika

Zabezpieczanie programów obsługujących niektóre protokoły (FTP, TELNET)

Monitoruje ruch sieciowy i zapisuje zdarzeń do logu (możliwość zmian w konfiguracji)

Można zdefiniować strefę ograniczonego zaufania = podsieć izolującą od wewnętrznej sieci lokalne serwery
udostępniające usługi z zewnątrz

68. Systemy wykrywania zagrożeń (IDS) – koncepcja, zasady lokalizacji sondy.

background image

IDS, IPS (ang. Intrusion Detection System, Intrusion Prevention System – systemy wykrywania i zapobiegania
włamaniom) – urządzenia sieciowe zwiększające bezpieczeństwo sieci komputerowych przez wykrywanie (IDS)
lub wykrywanie i blokowanie ataków (IPS) w czasie rzeczywistym

Typowe elementy systemu IDS/IPS to:

sonda (ang. sensor) – element analizujący ruch sieciowy i wykrywający ataki

baza danych – zbierająca informacje o atakach z grupy sensorów

analizator logów – umożliwiający wizualizację i analizę logów z grupy sensorów

Architektura

zależy od lokalizacji sondy i zakresu analizowanych zdarzeń

rodzaje:

Hostowe (ang. Host-based IDS)

sieciowe(ang. Network IDS)

działają jako aplikacja w jednym,
ochranianym systemie
operacyjnym analizując
zdarzenia pochodzące z logu
systemowego oraz z lokalnych
interfejsów sieciowych

analizują ruch sieciowy dla wszystkich systemów w segmencie sieci, do którego są
podłączone

potrafi rozpoznawać ataki skierowane przeciwko systemom, które nie mają zainstalowanych
HIDS

Równocześnie jednak ma ograniczone zdolności analizowania ruchu przesyłanego w
kanałach SSL lub zdarzeń zachodzących lokalnie w systemie (np. brak pamięci, ataki lokalne
z konsoli)


Sieciowe systemy IPS mogą działać w następujących topologiach sieciowych:

pasywna sonda

Inline

podłączona do portu monitorującego przełącznika analizuje
kopie wszystkich pakietów w danym segmencie sieci

Sonda w tej topologii ma ograniczone możliwości reagowania
na ataki

techniki blokowania ataków w topologii pasywnej

wysyłanie fałszywych pakietów TCP RST do obu stron
komunikacji i zerwanie połączenia (blokowany tylko TCP)

dynamiczna rekonfiguracja zapory, z którą sonda może
współpracować (możliwość spóźnienia reakcji)

umieszczona pomiędzy dwoma segmentami sieci, pozbawiona
adresów IP i działająca w trybie przezroczystego mostu
analizuje i bezpośrednio uczestniczy w przekazywaniu
wszystkich pakietów w sieci

sonda ma możliwość blokowania 100% pakietów rozpoznanych
jako niebezpieczne (fałszywe pakiety TCP RST nadal są
wysyłane dla uniknięcia retransmisji).

Działanie w tym trybie nakłada na oprogramowanie sondy
znacznie wyższe wymagania co do wydajności i stabilności

69. Wirtualne sieci prywatne (VPN) - koncepcja, przykłady zastosowań, stosowane

protokoły.


VPN

tunel, przez który płynie ruch w ramach sieci prywatnej pomiędzy klientami końcowymi za pośrednictwem
publicznej sieci (takiej jak Internet) w taki sposób, że węzły tej sieci są przezroczyste dla przesyłanych w ten
sposób pakietów

Można opcjonalnie kompresować lub szyfrować przesyłane dane w celu zapewnienia lepszej jakości lub
większego poziomu bezpieczeństwa

Określenie "Wirtualna" oznacza, że sieć ta istnieje jedynie jako struktura logiczna działająca w
rzeczywistości w ramach sieci publicznej, w odróżnieniu od sieci prywatnej, która powstaje na bazie
specjalnie dzierżawionych w tym celu łącz.

Pomimo takiego mechanizmu działania stacje końcowe mogą korzystać z VPN dokładnie tak jak gdyby
istniało pomiędzy nimi fizyczne łącze prywatne.

Rozwiązania oparte na VPN stosowane są np. w sieciach korporacyjnych firm, których zdalni użytkownicy
pracują ze swoich domów na niezabezpieczonych łączach.

Wirtualne Sieci Prywatne charakteryzują się dość dużą efektywnością, nawet na słabych łączach (dzięki
kompresji danych) oraz wysokim poziomem bezpieczeństwa (ze względu na szyfrowanie).

Rozwiązanie to sprawdza się w firmach, których pracownicy często podróżują lub korzystają z możliwości
telepracy


background image

Protokoły

protokół

opis

IPSec

Najbardziej uniwersalny, ale mający też największe ograniczenia

Nadaje się do stworzenia wszystkich rodzajów VPNów

W wersji podstawowej nie radzi sobie z NATem i musi znać konfigurację zdalnej sieci.

zbiór protokołów stworzony w celu implementacji bezpiecznych połączeń pomiędzy komputerami

Protokół IP nie gwarantuje iż otrzymane datagramy:
– pochodzą od deklarowanego nadawcy
– zawierają dane, które były umieszczone w nim przez nadawcę
– ich zawartość nie został zmieniona


Tryb transportu

– Tryb transferu jest trybem domyślnym protokołu IPSec.
– Służy do ustanawiania komunikacji typu dwupunktowego (klient – serwer).
– Typowy tryb przy komunikacji software – urządzenie.
– W tym trybie szyfrowaniu podlega wyłącznie ładunek UP.
– IPSec zapewnia ochronę datagramów IP oraz protokołów warstw wyższych przy pomocy protokołów ESP i AH.

Tryb tunelowania

– W trybie tunelowania protokołu IPSec szyfrowane są nagłówek i ładunek IP (w trybie transportu szyfrowany jest
tylko ładunek IP).
– Tryb tunelowania zapewnia ochronę całego pakietu UP, traktując go jako ładunek AH lub ESP.
– W trybie tunelowania cały pakiet jest enkapsulowany za pomocą nagłówka AH lub ESP i uzupełniany dodatkowym
nagłówkiem IP.
– Adresy IP określone w zewnętrznym nagłówku IP są punktami końcowymi tunelu, a adresy IP określone w
enkapsulowanym nagłówku IP są ostatecznymi adresami-źródłowym i docelowym.
– Tryb tunelowania protokołu IPSec jest użyteczny do ochrony ruchu między....

L2TP

opcjonalnie wykorzystuje IPSec do zapewnienia poufności (szyfrowania).

Zazwyczaj Client-to-Site, prosta konfiguracja i autoryzacja na podstawie loginu i hasła

Wyraźny podział na serwer (router) i klienta (zdalny komputer). Serwer musi mieć publiczny (routowalny) adres IP, klient
może być za NATem, pod warunkiem, że router dostępowy w jego sieci obsługuje (i ma aktywną) funkcję L2TP Pass-
Through.

Ten sam problem co z IPSec - protokół ESP.

PPTP

Najmniej konfliktowy

Najniższy poziom bezpieczeństwa

GRE – protokół do transmisji danych

Autoryzacja na podstawie loginu i hasła

Autoryzacja przez MS-CHAP, opcjonalne szyfrowanie przez MPPE. Reszta zasad jak w L2TP

70. Wyjaśnij określenie "exploitation-exploration trade-off" w kontekście próby definicji

sztucznej inteligencji.

Trudność definicji sztucznej inteligencji

Wskazuje się na wspólne cechy będące mianownikami SI

Inteligentny system wykorzystuje wiedzę na temat problemu (exploitation) = wykorzystanie tego co już
wiemy w celu rozwiązania

System musi dążyć do poznania nowego (exploration)

Dobrze skonstruowany system, powinien odpowiednio wyważyć ile zasobów poświęcić na exploitation i
exploration zarazem

71. Na czym polega uczenie sieci neuronowej algorytmem typu backpropagation.


Jest to uczenie z nadzorem lub inaczej – z nauczycielem.
Pierwszą czynnością w procesie uczenia jest przygotowanie dwóch ciągów danych: uczącego i weryfikującego.
Ciąg uczący jest to zbiór takich danych, które w miarę dokładnie charakteryzują dany problem. Jednorazowa

background image

porcja danych nazywana jest wektorem uczącym. W jego skład wchodzi wektor wejściowy, czyli te dane
wejściowe, które podawane są na wejścia sieci i wektor wyjściowy czyli takie dane oczekiwane, jakie sieć
powinna wygenerować na swoich wyjściach. Po przetworzeniu wektora wejściowego, nauczyciel porównuje
wartości otrzymane z wartościami oczekiwanymi i informuje sieć czy odpowiedź jest poprawna, a jeżeli nie, to
jaki powstał błąd odpowiedzi. Błąd ten jest następnie propagowany do sieci ale w odwrotnej niż wektor
wejściowy kolejności (od warstwy wyjściowej do wejściowej) i na jego podstawie następuje taka korekcja wag
w każdym neuronie, aby ponowne przetworzenie tego samego wektora wejściowego spowodowało
zmniejszenie błędu odpowiedzi. Procedurę taką powtarza się do momentu wygenerowania przez sieć błędu
mniejszego niż założony. Wtedy na wejście sieci podaje się kolejny wektor wejściowy i powtarza te czynności.
Po przetworzeniu całego ciągu uczącego (proces ten nazywany jest epoką) oblicza się błąd dla epoki i cały cykl
powtarzany jest do momentu, aż błąd ten spadnie poniżej dopuszczalnego.

Uczenie sieci można przeprowadzić dwoma metodami:

on-line - polega na modyfikacji wag po wczytaniu każdej danej wejściowej

off-line - polega na modyfikacji wag po wczytaniu wszystkich danych wejściowych

72. Omów podstawowe metody bezstratnej i stratnej kompresji danych.

Kompresja stratna

Kompresja bezstratna

X

in

X

out

Wyższy poziom upakowania

metoda zmniejszania liczby
bitów potrzebnych do wyrażenia
danej informacji, które nie dają
gwarancji, że odtworzona
informacja będzie identyczna z
oryginałem

Dla niektórych danych algorytm
kompresji stratnej może
odtworzyć informację w sposób
identyczny.

Używa niedoskonałości ludzkich
zmysłów

Algorytmy kompresji stratnej ->
modele psychoakustyczne i
psychowizualne -> odrzucenie
najmniej istotnych danych o
dźwięku, obrazie

pozostawiają dane o wyższej
wartości dla rozpoznawania tej
informacji (akustycznej,
wizualnej) przez zmysły

stopień kompresji = ilość
odrzucanych danych

brak algorytmów kompresji
stratnej dla dowolnego typu
danych (np. pliki)

zastosowania: obrazy, dźwięki,
mowa, sekwencje video

dane wizualne – osobna
kompresja dźwięku i obrazu

X

in

=X

out

Stosowana tam, gdzie nie można dopuścić do różnicy między danymi a ich
rekonstrukcji

Typowe zastosowanie – tekst, rekordy bazy danych a także obrazy, które podlegają
dalszej obróbce (zdjęcia rentgenowskie, zdjęcia satelitarne itp.)

ogólna nazwa metod kompresji informacji do postaci zawierającej zmniejszoną
liczbę bitów, pod warunkiem że metoda ta gwarantuje możliwość odtworzenia
informacji z postaci skompresowanej do identycznej postaci pierwotnej.

dobrze kompresują "typowe" dane (ze znaczną nadmiarowością informacji
(redundancji))

Pewne rodzaje danych są bardzo trudne lub niemożliwe do skompresowania:

- strumienie liczb losowych (niemożliwe do skompresowania)
- strumienie liczb pseudolosowych (trudne do skompresowania, choć

teoretycznie łatwe)

- dane skompresowane za pomocą tego samego lub innego algorytmu (w

praktyce trudne)

Najczęściej używane metody kompresji bezstratnej: na słownikowe i statystyczne,
choć wiele metod lokuje się pośrodku:

- metody słownikowe - poszukiwanie dokładnych wystąpień danego ciągu

znaków, np. zastępują 'the ' krótszą ilością bitów niż jest potrzebna na
zakodowanie 4 niezwiązanych znaków. Jednak znajomość symbolu 'the '
nie pociąga za sobą usprawnień w kompresowaniu 'they' czy 'then'.

- metody statystyczne - mniejsza ilości bitów dla częściej występujących

symboli, w przypadku praktycznie wszystkich oprócz najprostszych metod,
prawdopodobieństwa zależą od kontekstu. A więc np. dla 'h'
występującego po 't' używają mniejszej ilości bitów niż dla innych znaków
w tym kontekście.


Popularne metody

kodowanie Shannona, Shannona-Fano, Huffmana, arytmetyczne

LZ77, LZ78 i pochodne (LZSS, LZP, LZW, LZMW, LZAP)

RLE

PPM

transformata Burrowsa-Wheelera, Move To Front

kodowanie transformacyjne

maskowanie (przesłanianie

Metody kodowania długości serii (zastępowanie serii jednakowych znaków jednym
opisem)

background image

brzmienia dźwięków)

kodowanie różnicowe
(nadmiarowość przestrzenna)

- unikatowej wartości (ciąg znaków dzielony na podciągi i potem od nowa

kodowany )

- unikatowych bitów (łączy wartość podciągu z licznikiem powtórzeń w 1 daną)
- dwóch serii (dane dzielone na serie danych powtarzających się/swobodnych)

Metoda Huffmana – metoda probabilistyczna, rozkład prawdopodobieństwa ->
tworzy się niezrównoważone drzewo binarne

Metoda arytmetyczna – rozkład występowania elementów z kodowanego zbioru
(dystrybuanta, tam sumowanie prawdopodobieństw)

Metody słownikowe – wykorzystują istnienie powtarzających się sekwencji symboli

- LZ77 – słownik wewnętrzny (zapisuje na wyjściu gdzie i jak długa sekwencja)
- LZW– słownik zewnętrzny (dynamiczna tablica kodowa, po starcie procesu na

wejściu symbole otrzymują kody)

metoda

opis

LZ77

kompresja bezstratna

Prosta metoda adaptacyjna, nie wymaga wcześniejszej wiedzy o charakterze źródła

Kodowanie czasochłonne (dużo porównań); dekodowanie proste i szybkie

Nieduże wymagania dotyczące pamięci

Asymptotycznie – wyniki najlepsze jakie można uzyskać przy pełnej częstości pojawiania się znaków i korelacji
między nimi

Można zastosować różne modyfikacje algorytmu (zwiększenie efektywności)

LZSS

Kompresja bezstratna

Odmiana LZ77

Redundancja – albo nie trzeba pointera (bo jest zerowy), albo kodu znaku (może być przekazany w następnym
wejściu)

Pkzip,

Zip, gzip,

ARJ,

LHarc

Kompresja bezstratna

poprawa efektywności kodowania – kodowanie trójek (lub dwójek liczb) kodowaniem o zmiennej długości

LZ78

Szybsze kodowanie niż LZ77 (znacznie mniej porównań stringów)

Łatwe dekodowanie (choć wolniejsze niż dla LZ77 – konieczność odbudowy słownika)

Wzorce są stale dodawane do słownika (1 wzorzec na jeden proces kodowania) i nie zapominane –
niebezpieczeństwo przepełnienia pamięci

Jest punktem wyjścia dla algorytmów pochodnych – najbardziej znany algorytm LZW.

LZW

Kompresja bezstratna

Zastosowanie: format GIF, kompresja danych wysyłanych przez modem


Kompresja stratna:

obraz

video

dźwięk

JPEG, podstawa algorytmu
MPEG, oparty na DCT i dający
relatywnie słabe rezultaty;
wykorzystuje ograniczenia
ludzkiego wzroku -> lepsza
kompresja, możliwe
odwzorowanie kolor 24-
bitowego; opis zdjęć i
naturalnych obrazów;
użytkownik określa stopień
kompresji

JPEG2000, oparty na falkach,
dający znacznie lepsze wyniki

DivX/XviD, przy odpowiednich
warunkach może skompresować
zawartość płyty DVD na zwykłą CD, bez
widocznych różnic.

MPEG, jedną z jego odmian stosuje się
przy filmach na DVD, bardzo wysoka
jakość, połączona z większymi
objętościowo plikami (100MB DivX =
ok. 350MB MPEG).

Real Video, niską jakość obrazu
rekompensuje mała objętość dzięki
czemu wykorzystywany jest przy
transmisjach na żywo.

MP3, najpopularniejsze kodowanie
stratne audio, oparte na MDCT,
stosuje model psychoakustyczny
Instytutu Fraunhoffera i firmy
Thomson.

Ogg Vorbis, oparte na MDCT

Real Audio, podobnie jak Real Video,
rekompensuje straty jakości małą
objętością, jest stosowany głównie do
transmisji na żywo.


background image

Kompresja bezstratna

obraz

video

dźwięk

GIF – prezentacja 8-bitowego koloru,
umożliwia wyświetlanie przeplotem;
GIF89a – zapis animacji

TIFF – mechanizm wymiany danych
rastrowych w sposób niezależny od
platformy, zapis wielu typów obrazów;
kompresja lub bez kompresji
(bestratna)

PNG – wszystkie typy grafiki rastrowej,
lepsza od kompresji GIF, 2-wymiarowy
przeplot, brak możliwości animacji

73.

Wymień standardowe metody kompresji sygnałów multimedialnych: obrazów
nieruchomych, dźwięku, video. Omów dokładniej jedną z nich.

Kompresja obrazków
JPEG
Najbardziej powszechnym algorytmem kompresji obrazów jest JPEG. Wiele rozwiązań użytych w JPEG jest
używanych także w innych algorytmach, więc warto je tutaj omówić. Kolejne kroki algorytmu JPEG to:

zamiana przestrzeni kolorów z RGB na kanał jasności i dwa kanały koloru. Ludzie znacznie dokładniej
postrzegają drobne różnice jasności od drobnych różnic barwy, a więc użyteczne jest tutaj użycie różnych
parametrów kompresji. Krok nie jest obowiązkowy.

obniżenie rozdzielczości kanałów koloru, zwykle odrzuca się co drugą wartość wzdłuż osi poziomej i każdą
na pionowej, choć możliwe są też inne ustawienia. Tak radykalne cięcie danych nieznacznie wpływa na
jakość, ponieważ rozdzielczość postrzegania kolorów przez ludzkie oko jest słaba. Krok nie jest
obowiązkowy.

podzielenie każdego kanału obrazka na bloki 8x8. W przypadku kanałów kolorów, jest to 8x8 aktualnych
danych, a więc zwykle 16x8.

transformata kosinusowa każdego z bloków. Zamiast wartości pikseli mamy teraz średnią wartość
wewnątrz bloku oraz częstotliwości zmian wewnątrz bloku, obie wyrażone przez liczby
zmiennoprzecinkowe. Transformata DCT jest odwracalna, więc na razie nie tracimy żadnych danych.

Zastąpienie średnich wartości bloków przez różnice wobec wartości poprzedniej. Poprawia to w pewnym
stopniu współczynnik kompresji.

Kwantyzacja, czyli zastąpienie danych zmiennoprzecinkowych przez liczby całkowite. To właśnie tutaj
występują straty danych. Zależnie od parametrów kompresora, odrzuca się mniej lub więcej danych.
Zasadniczo większa dokładność jest stosowana do danych dotyczących niskich częstotliwości niż wysokich
kodowanych algorytmem Huffmana.


Użyta transformata powoduje efekty blokowe w przypadku mocno skompresowanych obrazków.


Kompresja dźwięku

Dwa najpopularniejsze publicznie dostępne algorytmy - MP3 i Vorbis, używają podobnych technik. Warto tu
omówić algorytm Vorbis, ponieważ używa on bardziej efektywnych rozwiązań.

Strumień jest dzielony na okna. Okna występują w dwóch rozmiarach - duże (zwykle 2048 próbek) i małe
(zwykle 256 próbek). Małe służą do przedstawienia szybko zmieniającego się dźwięku oraz nagłego wzrostu
intensywności dźwięku w danej częstotliwości. Nie używa się ich w przypadku spadków intensywności,
ponieważ ludzkie ucho jest na nie znacznie mniej czułe. Okna nie są po prostu grupą kolejnych wartości
natężenia dźwięku. Okna częściowo się nakrywają i jedna wartość należy w tych obszarach częściowo do

background image

kilku okien. Dla obszarów zachodzenia na siebie okien, dana wartość należy do lewego okna w stopniu
sin(pi/2 × sin2(pi/2 × t)), gdzie t=0 dla początku obszaru i t=1 dla jego końca.

Na każdym oknie jest przeprowadzana zmodyfikowana transformata kosinusowa. Zamiast poszczególnych
wartości mamy teraz w bloku widmo parametrów MDCT czyli (pomijając szczegóły) częstotliwości.

Dane z MDCT są upraszczane zależnie od parametrów kompresji zgodnie z modelem psychoakustycznym.

Dane o energii przypadającej na daną częstotliwość są skalowane, co umożliwia równie dobrą kompresje
głośnych jak i cichych dźwięków.

Dane są kwantyfikowane i kompresowane bezstratnie.


Wyszukiwarka

Podobne podstrony:
opracowania inż chem egzamin
opracowane zagad na egz z roslin ozdobnych, studia ogrodnictwo inż
opracowania ochr instal niskiego nap, mgr inż
opracowanie inż almost2
fotoogniwa, PWr W9 Energetyka stopień inż, VII Semestr, EGZAMIN DYPLOMOWY, Stare opracowania, Egz. d
inz test do robienia opracowanie
Opracowanie - materialy, Technologia INZ PWR, Semestr 1, Materiałoznastwo, Materiały - opracowania
pyt. 36 - Metody opracowania zdjęć, geodezja inż, inż.pytania
opracowanie, TIN inż, Semestr 5, Sieci bezprzewodowe 2
inż 11, opracowania z forum
opracowania problemy zabezp inst el, mgr inż
SPRAWOZDANIA, flotacja miedzi, Opracowanie: dr inż
OPRACOWANE ZAGADNIENIA1, Studia, UR OŚ INŻ, semestr VI, doradztwo rolnicze i środowiskowe
opracowanie ochrona odgromowa, mgr inż
opracowania ochrona odgromowa, mgr inż
Matematyczne opracowanie badań, Semestr III, Geologia Inżynierska, Geologia inż ćwiczenia, Sprawka i
opracowanie pisemne kopia, Inż oprogramowania, projekt

więcej podobnych podstron