1. Wyjaśnić pojęcia: poufność i integralność informacji, dostępność, niezaprzeczalność, uwierzytelnienie.
Bezpieczeństwo sieci jest nieodłącznie związane z trzema zagadnieniami: poufnością, integralnością i dostępnością (ang. Confidentiality, Integrity oraz Availability, C-I-A). W zależności od kontekstu i konkretnego zastosowania, niektóre z tych zagadnień mogą być bardziej kluczowe od pozostałych. Przykładowo, w agencji rządowej w sieci mogą być przesyłane elektronicznie zaszyfrowane dokumenty, co chroni je przed dostępem niepowołanych osób. W tym przypadku poufność informacji jest zagadnieniem kluczowym. Jeśli nieupoważniona osoba uzyska możliwość złamania szyfru i przesłania do odbiorców zmodyfikowanej postaci dokumentu, zostanie naruszona integralność przekazu. Z drugiej strony organizacje zajmujące się handlem w Internecie odniosą znaczne straty finansowe w przypadku niedostępności usług przez dłuższy czas. W takich przypadkach kluczowym
zagadnieniem jest dostępność.
Poufność informacji polega na jej zabezpieczeniu przed dostępem osób niepowołanych. Złamanie poufności może być celowe, na przykład w razie złamania zabezpieczeń i odczytania informacji, lub przypadkowe, wskutek nieuwagi lub braku kompetencji
użytkowników biorących udział w przekazywaniu informacji.
Dostępność informacji zapewnia autoryzowanym użytkownikom bieżący i nieprzerwany
dostęp do danych w systemie i sieci.
Integralność – nienaruszenie oryginalnej postaci danych.
Niezaprzeczalność (ang. non-repudiation) - brak możliwości wyparcia się swego uczestnictwa w całości lub w części wymiany danych przez jeden z podmiotów uczestniczących w tej wymianie.
Zapewnienie niezaprzeczalności wiadomości jest jedną z cech bezpiecznego podpisu weryfikowanego kwalifikowanym certyfikatem.
Uwierzytelnianie (ang. authentification) — weryfikacja wiarygodności identyfikacji, na
przykład na podstawie podanego hasła.
2. Omówić cel, etapy i techniki stosowane w czasie testów penetracyjnych.
Mając świadomość w jaki sposób wykonywane są testy penetracyjne (symulacja realnych ataków), można wskazać pytania, na które odpowiedzieć może tego typu audyt:
Jakie luki bezpieczeństwa znajdują się w aplikacji? Jakie są potencjalne skutki wykorzystania tych podatności przez hackerów? W jaki sposób można naprawić znalezione błędy?
Jakie metody zabezpieczające przed atakami wykorzystuje aplikacja WWW?
W jakim stopniu działają ewentualne dodatkowe środki ochrony zaimplementowane w systemie (np. firewalle aplikacyjne, systemy klasy IDS).
W jakim stopniu próby ataków są wykrywane ? (np. poprzez reakcje zespołu bezpieczeństwa na automatycznie generowane alarmy).
Przez jaki czas aplikacja oraz cały system mogą skutecznie opierać się atakom?
Etapy:
Zebranie informacji o systemie poza nim samym
Próby uzyskania dostępu do zasobów badanego systemu
Wstępna ocena możliwości systemu w zakresie wykrywania i blokowania włamań
Próby włamań
Techniki:
Rekonesans, pierwszy etap działań rozpoznawczych:
przeszukiwanie ogólnodostępnych źródeł (strony WWW, listy dyskusyjne)
analiza sieci za pomocą baz whois
kontrola serwerów DNS (nslookup, przesyłanie strefy, rekordy)
badanie sieci (traceroute, tracert)
Skanowanie to badanie aktywności systemu lub usługi przez próbkowanie, obsługa specjalnie spreparowanych pakietów, interpretacja odpowiedzi lub jej braku. Pozwala na detekcję urządzeń, usług, rozpoznanie systemu operacyjnego, topologii sieci, konfiguracji urządzeń dostępowych.
skanowanie ICMP, UDP, TCP, IP, FTP
Pozyskiwanie bannerów, czyli informacji o wersji działających aplikacji.
Rozpoznanie systemu operacyjnego za pomocą analizy stosu TCP/IP, czyli sprawdzenie budowy pakietów i właściwości ich transmisji w celu określenia wersji i producenta oprogramowania.
Sniffing to odczytywanie danych przez węzeł, dla którego nie były przeznaczone.
Enumeracja (wyliczanie), proces wyszukiwania poprawnych kont użytkowników lub źle zabezpieczonych zasobów współdzielonych. Główne rodzaje zbieranych informacji to zasoby sieciowe i sposób ich udostępniania, użytkownicy i grupy oraz aplikacje.
Enumeracja SMTP, SNMP, DNS, Windows, NetBIOS
Denial Of Service (DOS), ataki mające na celu uniemożliwienie skorzystania z zasobów lub usługi systemów komputerowych przez uprawnionych użytkowników. Niszczą lub zmieniają informacje konfiguracyjne lub sprzęt. Blokują również konkretne usługi lub cały system. Dzięki DOS można sprawdzić odporność sieci na ataki.
Rozproszony DOS
Spoofing, atak poprzez podszywanie się. Agresor oszukuje mechanizm autentykacji wykorzystywany do komunikacji pomiędzy maszynami przekazującymi między sobą pakiety. Fałszowane są pakiety zaufanego w sieci hosta. Rodzaje spoofingu: ARP, routingu, DNS.
|
|
---|---|
|
|
3. Omówić trzy wybrane techniki skanowania portów.
Skanowanie połączeniowe TCP
Typowe skanowanie portów TCP nazywane jest niekiedy skanowaniem połączeniowym, gdyż podejmowana jest próba utworzenia pełnego połączenia i przestrzegane są normalne konwencje protokołu.
Najprostsza technika skanowania portów. Jest to najprostsza metoda polegająca na uzyskaniu pełnego połączenia z danym portem. Nawiązanie połączenia przebiega w trzech etapach:
Komputer próbujący nawiązać połączenia wysyła pakiet TCP z flagą SYN do docelowego hosta i interesującego go portu.
Następnie oczekuje, jaki pakiet zostanie odesłany w odpowiedzi: - jeżeli jest to SYN/ACK - to zwykle oznacza, że port jest otwarty i jest w stanie nasłuchu (listening); - jeżeli jest to RST/ACK, to oznacza, że port jest zamknięty i połączenie zostaje zerwane.
Trzystopniowy etap połączenia (three way handshake) jest kończony - jeżeli odebrany został pakiet SYN/ACK - przez wysłanie potwierdzenia odebrania tego pakietu (wysyłanie pakietu potwierdzającego ACK). Połączenie jest zamykane pakietami FIN i FIN/ACK.
Ten typ połączenia jest stosunkowo łatwy do wykrycia. Ataki tego typu są też łatwe do wykrycia przez zaawansowane mechanizmy zapór ogniowych, na których mogą być skuteczne blokowane. Do ich niewątpliwie mocnych stron należy bardzo duża szybkość i możliwość przeprowadzenia przez zwykłego użytkownika.
Skanowanie TCP półotwarte
Skanowanie półotwarte - technika ta jest odmianą techniki połączeniowej. Inicjowana jest tylko połowa procedury połączenia TCP: wysyłany jest pakiet TCP z ustawioną flagą SYN. Port docelowy odpowie, jeśli jest otwarty: pakietem z ustawionymi flagami SYN i ACK, natomiast zamknięty flagami RST i ACK. Komputer skanujący wysyła RST/ACK, dzięki czemu połączenie nie zostanie nawiązane. Otrzymanie odpowiedzi mówi o istnieniu hosta, brak odpowiedzi sugeruje nieistnienie hosta lub filtrowanie ruchu.
Zaletą tego skanowania jest to, że częściowe połączenie nie jest rejestrowane przez sporą liczbę systemów, aczkolwiek większość wyspecjalizowanych systemów ochrony jest w stanie je odnotować oraz zablokować (blokowanie pakietów z flagą SYN jest pożądane ze względu na ochronę przed atakami typu SYN Flood). Do wykonania skanowania potrzebne są uprawnienia superużytkownika, a metoda jest szybsza od metody połączeniowej.
Skanowanie UDP
Skanowanie portów UDP sprawia znacznie więcej problemów niż skanowanie TCP, gdyż system nie musi odpowiadać na pakiety wysłane do otwartego portu UDP. Pakiet wysłany do zamkniętego portu zazwyczaj powoduje odesłanie komunikatu ICMP "port niedostępny", ale to również nie jest gwarantowane. Wiele systemów operacyjnych nakłada limity na liczbę komunikatów o niedostępnych portach generowanych w ustalonym przedziale czasu. Może się również okazać, że wychodzący ruch ICMP jest blokowany.
Podobnie jak w przypadku technik wyszukiwania hostów, istotnym czynnikiem jest dostępne pasmo sieciowe: wysyłanie pakietów UDP szybciej, niż tempo odbierania komunikatów o niedostępnych portach może doprowadzić do błędnego uznania portów za otwarte. Najważniejszą rzeczą, o której należy pamiętać, jest to, że skanowanie UDP może jednoznacznie wskazać tylko te porty, które nie są otwarte, nie można jednak być pewnym, na których portach system nasłuchuje. Prowadzi to często do nieporozumień, powtórzmy to zatem jeszcze raz: uzyskanie komunikatu "port niedostępny" jest dowodem, że system docelowy nie nasłuchuje na danym porcie, brak odpowiedzi oznacza jedynie, że port ten może być otwarty. Inną rzeczą, którą należy mieć na uwadze podczas skanowania portów UDP, jest fakt, że wysłanie nieoczekiwanych danych (lub brak danych w pakiecie) do nasłuchującego portu może spowodować odmowę usługi w systemie docelowym. Jest to rzadki przypadek, ale możliwy.
Często można uzyskać użyteczne wyniki dzięki dobremu zrozumieniu mechanizmu działania usługi, której można oczekiwać na badanym porcie i wysłaniu odpowiednio sformatowanych pakietów, aby uzyskać odpowiedź. To skuteczny sposób pozytywnego sprawdzenia, czy port jest rzeczywiście portem nasłuchującym, jakkolwiek reakcje odmiennych implementacji danej usługi mogą być bardzo różne - od pozytywnej odpowiedzi po jej zakłamanie. Inne niebezpieczeństwo polega na tym, ze może się okazać, iż na danym porcie uruchomiona jest inna usługa, niż zakładano.
4. Scharakteryzować podstawowe grupy algorytmów kryptograficznych: symetryczne, z kluczem publicznym, funkcje skrótu.
Algorytm kryptograficzny (szyfr), jest to funkcja matematyczna używana do szyfrowania i deszyfrowania.
algorytmy symetryczne (z kluczem tajnym): klucz do szyfrowania i deszyfrowania jest taki sam, lub jeden jest łatwo wyprowadzany z drugiego.
algorytmy asymetryczne (z kluczem publicznym): klucze do szyfrowania i deszyfrowania są różne i nie jest możliwe wyprowadzenie z jednego z nich drugiego, pasującego klucza.
Funkcja skrótu, jednokierunkowa funkcja mieszająca lub funkcja haszująca to funkcja, która przyporządkowuje dowolnie dużej liczbie (wiadomości) krótką, zwykle posiadającą stały rozmiar wartość (skrót wiadomości). W informatyce funkcje skrótu pozwalają na ustalenie krótkich i łatwych do weryfikacji sygnatur dla dowolnie dużych zbiorów danych. Takie sygnatury mogą chronić przed przypadkowymi lub celowo wprowadzonymi modyfikacjami danych (sumy kontrolne), pozwalają się przekonać czy pobrane zbiory z Internetu np. obrazy ISO nie zostały uszkodzone. Na wielu stronach podaje się wyliczone skróty w celu weryfikacji (najczęściej są nimi CRC32, MD5 lub SHA-1). Funkcje skrótu mają również zastosowania przy optymalizacji dostępu do struktur danych w programach komputerowych (tablice haszujące), a także wykorzystywane są w podpisie cyfrowym.
5. Do czego służy podpis cyfrowy? Omówić procedurę tworzenia i weryfikowania podpisu cyfrowego?
Wraz ze wzrastającą liczbą informacji przenoszonych drogą elektroniczna powstała potrzeba opracowania cyfrowego odpowiednika tradycyjnego podpisu. Jak mówi ustawa o podpisie elektronicznym - „Podpisem elektronicznym są dane elektroniczne dołączone do innych danych elektronicznych lub logicznie z nimi powiązane w celu potwierdzenia tożsamości podmiotu podpisującego, który się nimi posługuje”
Nadawca tworzy dokument elektroniczny, dla którego odpowiednim programem generowany jest jego skrót gwarantujący integralność danych (przy użyciu jednokierunkowej funkcji hashującej). Podpis cyfrowy generowany jest w procesie szyfrowania skrótu wiadomości przy wykorzystaniu klucza prywatnego zapisanego na karcie (wtedy należy wprowadzić kartę do czytnika i podać kod PIN). Wiadomość wraz z podpisem może być swobodnie przesłana publicznymi środkami, np. pocztą czy przez Internet. Odbiorca przesyłki w celu zweryfikowania autentyczności dokumentu, musi odszyfrować kluczem publicznym podpis cyfrowy oraz obliczyć wartość charakterystyczną dla sprawdzanego dokumentu (przy użyciu tej samej funkcji skrótu). Dokument jest autentyczny, jeżeli obie otrzymane wartości są takie same
6. Wymienić i scharakteryzować podstawowe mechanizmy implementowane na zaporach sieciowych.
Filtrowanie pakietów (Packet Filtering)
Wyróżnia się dwa rodzaje filtrowania pakietów, bezstanowe i stanowe. W obu analizowane są informacje nagłówka pomijając zawartość pakietu. Pakiety mogą być filtrowane po rodzaju protokołu (TCP, UDP, ICMP), adresie IP (adres docelowy lub źródłowy), porcie TCP/UDP, wyborze trasy przez nadawcę (IP Source Routing). Zaletą tego filtrowania jest szybkość – monitorowane i filtrowane są jedynie pakiety posiadające flagę SYN. Odporne są na ataki zalewowe DoS.
Filtrowanie bezstanowe nie zapamiętuje stanu połączenia. W konsekwencji nie ma możliwości dokładnego sprawdzenia ładunków danych i decyzja podejmowana jest jedynie na podstawie zawartości nagłówka. Inną wadą jest problem określenia ruchu zwrotnego do portów, z których nawiązano połączenie i brak możliwości filtrowania ruchu do partów wysokich. Wszystko jest konsekwencją braku zapamiętywania stanu.
Filtrowanie stanowe jak nazwa wskazuje przechowuje informacje o stanie całego ruchu przechodzącego przez filtr. Zapora wykorzystuje to w celu określenia czy pojedynczy pakiet ma być odrzucony czy nie. Gdy host wewnętrzny łączy się z zewnętrznym, w pakiecie inicjującym umieszczony jest adres gniazda zwrotnego (adres IP i numer portu), na którym oczekuje na odpowiedź. Informacje te są zapamiętywane przez filtr i kiedy przychodzi odpowiedź, sprawdzane są zapisy tablicy filtra w celu sprawdzenia, czy pakiet ma zostać przepuszczony. Jeżeli z zewnątrz przychodzi pakiet, który nie ma pozycji w tablicy stanów, to jest odrzucony.
Translacja adresów (Network Address Translation)
NAT realizuje proces translacji jednego adresu w inny. Zwykle adres publiczny jest przekształcany w prywatny (ukryty dla sieci WAN), który nie jest routowalny. Podstawową zaletą jest możliwość zbudowania rozległej sieci prywatnej za jednym routerem, posiadającym np. jeden publiczny adres IP.
Translacja może odbywać się na dwa sposoby. Statycznie, dla każdego adresu sieci prywatnej przydzielony jest konkretny adres sieci publicznej lub dynamicznie, dla grupy adresów lub dla całej sieci prywatnej przydzielony jest jeden lub więcej adresów publicznych.
NAT podobnie jak Proxy ukrywa klientów z sieci wewnętrznej przed światem. Ogranicza to możliwość penetracji sieci przez agresora.
Usługi Proxy (Proxy Servers)
Pierwotnym zadaniem serwerów Proxy było przechowywanie w pamięci podręcznej przeglądanych stron WWW. Przyspieszało to dostęp do informacji. Obecnie są raczej zaporą sieciową. Pośredniczą w przekazywaniu żądań klientów sieci wewnętrznej do sieci zewnętrznej. Pozwala to ukrywać klientów przed badaniem z zewnątrz. Nasłuchuje zleceń usługi od klientów wewnętrznych i przesyła w ich imieniu do sieci zewnętrznej. Po otrzymaniu odpowiedzi z zewnątrz zwraca ją do rzeczywistego klienta.
Zalety tego mechanizmy to: ukrywanie klienta przed światem zewnętrznym, blokowanie niebezpiecznych URL, filtrowanie niebezpiecznej zawartości (wirusy, trojany), badanie spójności przesyłanej informacji czy eliminacja routingu między sieciami.
Wady to: wrażliwość na awarie pojedynczego punktu, współpraca klientów z usługą Proxy, każda usługa musi mieć Proxy, nie chroni systemu operacyjnego, zatory.
7. Omówić system operacyjny routerów Cisco
Jest to software, który ma za zadanie kontrolować funkcje routingu i switchingu na urządzeniach sieciowych. Cisco IOS zajmuje się następującymi zadaniami:
przeprowadzanie routingu i switchingu;
kontrola dostępu do sieci;
scalanie sieci;
Oprogramowanie Cisco używa jako środowiska pracy tak zwanego trybu command-line interface (CLI). Środowisko pracy z CLI jest dostępne na kilka sposobów. Poprzez bezpośrednie połączenie routera i komputera za pomocą kabla konsolowego. Poprzez port AUX dostępny na routerze można nawiązać połączenie modemowe typu dial-up. Żadna z tych dwóch metod nie wymaga, aby na routerze były skonfigurowane jakiekolwiek usługi sieciowe, jak na przykład adresy IP. Inną metodą dostępu do CLI jest nawiązanie sesji Telnet. Aby ustanowić takie połączenie przynajmniej jeden port na routerze musi być skonfigurowany i posiadać swój adres IP. Trzeba także skonfigurować sesję Telnet na routerze. Potrzebne jest podanie hasła i loginu.
Cisco CLI ma strukturę hierarchiczną. W zależności od potrzeby struktura ta pozwala wejść w różne tryby CLI. Na przykład, żeby skonfigurować interfej, użytkownik musi wejść w tryb konfiguracji interfejsu. W tym trybie jest dokonywana jest konfiguracja tylko konkretnego interfejsu (może to być interejs Ethernet 0 lub inny, który wybraliśmy). Każdy tryb posiada swój znak gotowości (prompt), dzięki temu wiemy, w którym miejscu struktury się znajdujemy. Każdy tryb pozwala na wprowadzenie tylko takich komend, które są dla niego przewidziane, inne polecenia nie zostaną rozpoznane. Środowisko wprowadzania komend w produktach Cisco zwane jest jako command executive (EXEC), które możemy nazywać "Trybem EXEC". Praca w CLI wygląda więc następująco: użytkownik wprowadza komendę, następnie jest sprawdzana jej poprawność, jeżeli wszystko się zgadza jest ona wykonywana, jeżeli pojawił się jakiś błąd składniowy to użytkownik otrzymuję informację w którym on jest miejscu.
Dla zachowania bezpieczeństwa sesje trybu EXEC zostały podzielone na dwa poziomy. Zwane trybem użytkownika (user EXEC mode) i trybem uprzywilejowanym (privileged EXEC mode). W trybie użytkownika można wprowadzić tylko ograniczoną liczbę komend monitorujących stan urządzenia. Tryb użytkownika jest identyfikowany przez znak gotowości ">". Tryb uprzywilejowany pozwala na wprowadzenie wszystkich komend jakie obsługuje dany model urządzenia. Podczas konfiguracji należy ustawić hasło dostępu do tego trybu. W trybie uprzywilejowanym powinni pracować tylko administratorzy sieci. Tryb ten jest rozpoznany przez znak gotowości "#".
8. Rodzaje pamięci w routerach
Rodzaje pamięci routera CISCO
ROM Inicjujący program ładujący (bootstrap) odpowiedzialny za znalezienie i wczytanie systemu operacyjnego oraz program monitora
wykorzystywany w procedurach naprawczych. Pamięć ROM może zawierać także
minimalny lub kompletny system operacyjny.
RAM Aktualna konfiguracja, zwykle obraz systemu
operacyjnego oraz inne dynamiczne struktury związane z bieżącą pracą routera.
NVRAM Konfiguracja startowa (zapasowa).
Flash Obrazy systemu operacyjnego
9. Zabezpieczenie routerów
NAT, ACL
RADIUS
hasła
Pierwsze hasło, oznaczone jako enable secret, chroni dostępu do trybu uprzywilejowanego, w którym administrator może uruchamiać wszystkie polecenia, a także przeprowadzać dowolne zmiany konfiguracyjne -zaszyfrowane
Enable password - Hasło to także chroni dostępu do trybu uprzywilejowanego, ale jest wykorzystywane tylko w starszych wersjach systemu oraz wtedy, gdy hasło enable secret nie jest zdefiniowane – jest nieszyfrowane !!
Trzecim wymagane hasło chroni dostępu do routera poprzez linie terminali wirtualnych VTY, zwykle są to połączenia z wykorzystaniem protokołu telnet
10. Podstawowa konfiguracja routera
uruchomić i połączyć kable RS do RJ45
łączymy się za pomocą Hyper Terminal w przypadku Windows – należy pamiętać o odpowiednich wartościach HT
po uruchomieniu automatycznie ukazuje się Dialog konfiguracyjny w którym ustalamy:
hasła
Pierwsze hasło, oznaczone jako enable secret, chroni dostępu do trybu uprzywilejowanego, w którym administrator może uruchamiać wszystkie polecenia, a także przeprowadzać dowolne zmiany konfiguracyjne -zaszyfrowane
Enable password - Hasło to także chroni dostępu do trybu uprzywilejowanego, ale jest wykorzystywane tylko w starszych wersjach systemu oraz wtedy, gdy hasło enable secret nie jest zdefiniowane – jest nieszyfrowane !!
Trzecim wymagane hasło chroni dostępu do routera poprzez linie terminali wirtualnych VTY, zwykle są to połączenia z wykorzystaniem protokołu telnet
możliwość zdefiniowania społeczności protokołu SNMP, w której pracować będzie router. Domyślnie proponowana jest społeczność Public i początkowo można tę nazwę pozostawić bez zmiany. Właściwe zdefiniowanie społeczności może mieć duże znaczenie dla pracujących w trybie graficznym programów do zdalnego zarządzania routerem, które działanie opierają na protokole SNMP
Kolejne pytania dialogu konfiguracyjnego dotyczą protokołów routingu dynamicznego, takich jak RIP czy IGRP
Ostatnia sekcja dialogu konfiguracyjnego pozwala w pętli zdefiniować parametry dotyczące poszczególnych interfejsów routera, np.: adres IP czy maska podsieci. Po udzieleniu odpowiedzi na wszystkie pytania pojawia się możliwość przejrzenia zdefiniowanych ustawień oraz zapamiętania konfiguracji startowej w pamięci NVRAM
Po tych czynnościach i ponownym uruchomieniu routera będziemy mieli dostep do trybu wykonywania poleceń EXEC
11. Rodzaje protokołów routingu
Router może korzystać z różnych protokołów routingu, które są zestawione w Warstwie Internetu stosu TCP/IP. Przykłady protokołów routingu IP:
RIP- wewnętrzny protokół routingu typu distance vector - Algorytm Distance vector (znany także jako algorytm Bellman-Ford) nawołuje każdy router do wysyłania całej lub części swojej tablicy routingu tylko do swoich bezpośrednich sąsiadów.
IGRP- wewnętrzny protokół routingu typu distance vector stworzony przez firmę CISCO
OSPF- wewnętrzny protokół routingu typu link state - Algorytmy Link state (znane także jako shortest path first, czyli najpierw najkrótsza ścieżka) wysyłają informacje o routingu do wszystkich routerów kreując w ten sposób mapę całej sieci
EIGRP- zaawansowany protokół routingu typu distance vector stworzony przez firmę CISCO
BGP- zewnętrzny protokół routingu typu distance vector
Routing Information Protocol (RIP) jest dokładnie opisany w dokumencie RFC 1058, jego cechy charakterystyczne zawierają:
jest protokołem opartym na algorytmie distance vector
jako metryki wyboru ścieżki używa liczby skoków
jeżeli liczba skoków przekracza 15 pakiet jest porzucany
uaktualnienia są domyślnie pobierane co 30 sekund
Interior Gateway Routing Protocol (IGRP) jest prawnie zastrzeżony i rozwijany przez firmę CISCO. Kilka harakterystycznych cech tego protokołu to:
jest protokołem typu distance vector
jako metryk routingu używa przepustowości pasma, obciążenia pasma, opóźnienia i niezawodności pasma
pakiety uaktualniające są domyślnie rozsyłane co 90 sekund
Open Shortest Path First (OSPF) jest otwartym protokolem routingu typu link state, jego cechy charakterystyczne to:
jest protokołem opartym na algorytmie link state
jego otwarty standard jest opisany w dokumencie FRC 2328
używa lagorytmu SPF do wyliczenia ścieżki o najmniejszym koszcie
uaktualnienia sa domyślnie wysyłane jeżeli nastąpi zmiana w topologii sieci
EIGRP jest protokolem zastrzeżonym i rozwijanym przez firmę CISCO. Jest to zaawansowany potokół typu distance vector, jego cechy to:
jest zaawansowanym protokołem
używa load balancing
używa kombinacji cech obu algorytmów, distance vector i link state
do wyliczenia najkrótszej ścieżki używa Diffused Update Algorithm (DUAL)
pakiety uaktualniające są rozsyłąne co 90 sekund lub gdy zmieni sie topologia sieci
Border Gateway Protocol (BGP) jest zewnętrznym protokołem routingu. Cechy charakterystyczne to:
zewnętrzny protokół routingu oparty o distance vector
działa między obszarami IPS
używany do wewnętrznego routingu między Autonomus Systems
12. Charakterystyka protokołu RIP
Protokół RIP (ang. Routing lnformation Protocol) jest protokołem routingu o trybie rozgłoszeniowym, w którym zastosowano algorytm distance-vector, który jako metryki używa licznika skoków między routerami. Maksymalna liczba skoków wynosi 15. Każda dłuższa trasa jest jako nieosiągalna, poprzez ustawienie licznika skoków na 16. Informacje o routingu w protokole RIP przekazywane są z routera do sąsiednich routerów przez rozgłoszenie IP z wykorzystaniem protokołu UDP i portu 250. Jest on szeroko stosowany w sieciach jako protokółwewnętrzny IGP (Interior Gateway Protocol), co oznacza, że wykonuje routing pojedynczym autonomicznym systemem albo protokołem zewnętrznym EGP (Exterior Gateway Protocol) - wykonuje routing pomiędzy różnymi autonomicznymi systemami. ProtokółRIP jest obecnie szeroko wykorzystywany w Internecie i używany w sieciach jako podstawowa metoda wymiany informacji o routingu pomiędzy routerami.
13. Charakterystyka protokołu EIGRP
Protokół EIGRP (ang. Enhanced IGRP) podobnie jak IGRP, ogłasza informacje tablicy routingu tylko routerom sąsiednim. Jednak w przeciwieństwie do powyższego protokołu, sąsiedzi rozpoznawani są poprzez wymianę protokołu hello dokonywaną między routerami w tej samej sieci fizycznej. Po wykryciu sąsiednich routerów, EIGRP używa niezawodnego protokołu transportu, dzięki czemu zapewnia właściwe i uporządkowane informacje z tablicy routingu oraz aktualizacje. Router śledzi nie tylko połączone z nim trasy, ale także wszystkie trasy ogłaszane przez sąsiadów. Na podstawie tych informacji, protokół ten może szybko i efektywnie wybrać ścieżkę docelową o najniższym koszcie i zagwarantować, ze nie jest ona częścią pętli routingu. Dzięki przechowywaniu informacji na temat sąsiadów, algorytm może szybciej określić trasę zastępczą lub dopuszczalne zastępstwo w przypadku awarii łącza bądź innego zdarzenia modyfikującego topologię
14. Charakterystyka protokołu OSPF
Protokół OSPF (ang. Open Shortest Path First) został zaprojektowany, by spełniać potrzeby sieci opartych na IP, uwierzytelnianiu źródła trasy, szybkością konwergencji, oznaczaniem tras przez zewnętrzne protokoły routingu oraz podawanie tras w trybie rozgłoszeniowym. W przeciwieństwie do protokołów RIP i IGRP, które ogłaszają swoje trasy tylko sąsiednim routerem, routery OSPF wysyłają ogłoszenia stanu łącza do wszystkich routerów w obrębie tego samego obszaru hierarchicznego poprzez transmisję IP w trybie rozgłoszeniowym. Ogłoszenie stanu łącza zawiera informacje dotyczące podłączonych interfejsów, używanych metryk oraz inne niezbędne do przetwarzania baz danych ścieżek sieciowych i topologii. Routery OSPF gromadzą informacje na temat łącza danych i uruchamiają algorytm SPF (znany także jako algorytm Dijkstry), aby obliczyć najkrótszą ścieżkę do każdego węzła
15. Na czym polega mechanizm NAT
Technologia NAT (Network Address Translation) jest to mechanizm tłumaczenia adresów IP komputerów w sieci lokalnej na pojedynczy adres IP. Polega to na zastosowaniu w sieci wewnętrznej odmiennej puli adresów IP niż te, które są wykorzystywane do komunikacji z resztą Internetu. W tym celu serwer dokonuje konwersji adresów intranetowych, na właściwe adresy używane do komunikacji zewnętrznej. Technika ta ma tę zaletę, iż nawet pełna klasa adresów C przydzielona komputerom w sieci wewnętrznej może być widziana od strony Internetu jako zaledwie jeden adres IP. Same adresy wewnętrzne nie muszą spełniać wymogu niepowtarzalności w skali całego Internetu, gdyż pakiety z sieci wewnętrznej nigdy nie są przez mechanizm NAT wysyłane bezpośrednio do adresata. Oprócz wspomnianych korzyści NAT skutecznie przeciwdziała także programom skanującym sieć w poszukiwaniu adresów IP, które mogą wówczas rozpoznać tylko router NAT. Technika NAT ma jednak także wady. Przede wszystkim obniża wydajność sieci, gdyż każdy przesyłany do lub z Internetu pakiet danych musi zostać przeanalizowany, a następnie przekierowany do właściwego odbiorcy. Translacja taka powoduje również, iż niektóre aplikacje sieciowe nie mogą poprawnie funkcjonować, gdyż serwer danej usługi wstawia adres odbiorcy do danego pakietu (a więc w tym wypadku adres serwera NAT, a nie rzeczywistego odbiorcy pakietu), a tego serwer NAT nie jest w stanie zmienić.
16. Sieci Frame Relay
Frame Relay to nowoczesna technologia używana do łączenia ze sobą odległych sieci LAN, sieci transmisji danych, dostępu do Internetu oraz przesyłania głosu i obrazu.
Technologia ta dzieli informację na ramki, które niosą dane pomiędzy sieciami LAN, dzięki czemu stwarza możliwość budowy sieci rozległych - WAN. Ramki przepływają przez szereg węzłów sieci Frame Relay aż dotrą do miejsca przeznaczenia.
Sieć Frame Relay składa się z „zakończeń sieciowych" (endpoints), urządzeń dostępowych oraz urządzeń sieciowych.
Technologia ta jest często przedstawiana jako „chmura sieciowa" ponieważ nie występuje w niej indywidalne fizyczne połączenie pomiędzy jej użytkownikami. Zamiast tego w sieci Frame Relay tworzona jest logiczna ścieżka zwana połączeniem wirtualnym (Virtual Circut). Pasmo przepustowe jest alokowane dla danej ścieżki logicznej tylko wtedy, kiedy dane
są naprawdę przesyłane.
Struktura sieci Frame Relay:
Połączenia wirtualne są połączeniami typu full-duplex i są realizowane przez oprogramowanie węzłów sieci Frame Relay. Opisywana technologia oferuje dwa typy połączeń wirtualnych:
- przełączane połączenia wirtualne - switched virtual circuits (SVCs)
- stałe połączenia wirtualne - permanent virtual circuits (PVCs) - wykorzystywane przez TP S.A.
Do określania przepustowości połączenia wirtualnego (PVC)
w sieci Frame Relay stosowane są dwa parametry:
1) EIR - Excess Information Rate - jest maksymalną przepustowością połączenia ponad przepustowość gwarantowaną dostępną wtedy, gdy sieć nie jest obciążona ruchem. Zwykle jest ona określona przepustowością urządzeń dostępowych
2) CIR - Committed Information Rate - jest gwarantowaną przepustowością połączenia wirtualnego i określa zawsze dostępną przepustowość połączenia wirtualnego w warunkach normalnej pracy sieci
17. Wymienić oraz krótko scharakteryzowania kontrolki walidacji danych dostępna w ASP.NET.
RequiredFieldValidation - która umożliwia sprawdzanie czy użytkownik wpisał coś do danego pola. Powyższy kod tworzy pole testowe, które jest sprawdzane przez kontrolkę walidacyjną
CompareValidator -Kontrola ta pozwala porównywać dwie wartości między sobą. Do podstawowych zastosowań można zaliczyć porównywanie haseł w trakcie wprowadzania nowego hasła lub sprawdzanie kolejności dat
Może on przyjąć następujące wartości:
DataTypeCheck – sprawdza czy typy danych w kontrolkach są poprawne
Equal - sprawdza czy kontrolki mają jednakowe wartości (ustawione domyślnie)
GreaterThan sprawdza czy jedna kontrolka jest większa od drugiej
GreaterThanEqual sprawdza czy jedna kontrolka nie jest mniejsza od drugiej
LessThan sprawdza czy jedna kontrolka jest mniejsza od drugiej
LessThanEqual sprawdza czy jedna kontrolka nie jest większa od drugiej
NotEqual sprawdza czy kontrolki nie są sobie równe
RangeValidator - Kontrolka RangeValidator pozwala na sprawdzenie czy wpisana wartość mieści się w przedziale
Aby użyć tej kontrolki należy zdefiniować następujące atrybuty:
MaximumValue – wartość maksymalna jaka może być wpisana
MinimumValue - wartość minimalna jaka może być wpisana
Type – typ danych wpisywanych
RegularExpressionValidator - Pozwala ona na sprawdzenie czy wpisane wyrażenie odpowiada wyrażeniu regularnemu
CustomValidator - Dzięki tej kontrolce możemy sprawdzać walidowane pola w sposób dowolny. Umożliwia ona stworzenie własnej funkcji, która będzie sprawdzać poprawność walidowanego pola
Dochodzą do zadeklarowania dwa nowe atrybuty kontrolki:
ClientValidationFunction – Zawiera nazwę funkcji, która jest odpowiedzialna za walidację po stronie klienta. Najczęściej używa się w tym celu funkcji napisanych w JavaScript.
OnServerValidate – Służy do walidacji po stronie serwera. Używana jest gdy nie ma możliwości sprawdzenia po stronie klienta (chyba, że programista wykluczył możliwość sprawdzania po stronie klienta).
ValidationSummary - Kontrolka ta służy do zebrania wszystkich komunikatów wyświetlanych przez powyższe kontrolki walidacyjne w jednym miejscu.
18. Wymienić oraz krótko scharakteryzować mechanizmy stosowane do zarządzania stanem w środowisku ASP.NET.
Zarządzanie stanem oznacza zdolność do przechowywania informacji - w przypadku aplikacji sieci WWW oznacza ono możliwość przechowywania i przekazywania informacji z jednej strony do drugiej. (przeglądarka nie przechowuje strony ani żadnych jej danych - strona jest tylko zbiorem instrukcji html dla przeglądarki).
W ASP.NET istnieją trzy główne sposoby przechowywania i zarządzania stanem:
Zarządzanie stanem aplikacji - do przechowywania danych stosowanych w obrębie całej aplikacji - dostęp dla każdego użytkownika tej aplikacji
Zarządzanie stanem sesji - do przechowywania i dostępu do danych w ramach danej sesji użytkownika - dostęp tylko dla tego użytkownika (możliwe również bez użycia cookies)
Pojemnik stanu - dla pojedynczej strony - do przechowywania informacji dotyczącej strony pomiędzy kolejnymi jej przetworzeniami.( nie musimy stosować ukrytych pól tekstowych w ramach formularza).
19. Omówić sposób obsługi wyjątków w ASP.NET.
Jeżeli spodziewamy się, że może dojść do nieprawidłowego zadziałania aplikacji na przykład na skutek braku połączenia z bazą danych czy przekroczenia dopuszczalnych wartości, to określony fragment kodu, który jest odpowiedzialny za wykonanie tego krytycznego zadania, należy obsłużyć wewnątrz bloku sekcji try...catch. Sekcja try zawiera potencjalnie niebezpieczne polecenia, mogące być przyczyną powstania wyjątków. Jeżeli w tym fragmencie wystąpi wyjątek lub błąd aplikacji, wykonywane są automatycznie instrukcje zawarte w sekcjach catch (instrukcja może mieć więcej niż jeden blok catch). Zadaniem sekcji catch jest określenie typu wyjątku oraz wyświetlenie odpowiedniego komunikatu. Istotna jest kolejność sekcji catch - od najbardziej szczegółowej do ogólnej, ponieważ obsłużenie wyjątku zawsze kończy się na pierwszej sekcji catch.
20. Podać różnicę pomiędzy uwierzytelnianiem Windows a uwierzytelnianiem formularzy.
Użytkownik nie musi logować się samemu do aplikacji za pomocą formularza. System Windows automatycznie loguje się w aplikacji za pomocą konta Windowsowego aktualnie zalogowanego użytkownika. Uwierzytelnianie Windows tak naprawdę określa tożsamość użytkownika oraz ją weryfikuje, nie na poziomie aplikacji ASP.NET, jak to ma miejsce w uwierzytelnianiu Forms. Tym wszystkim zajmuje się Microsoft Internet Information Services (IIS) . IIS po określeniu oraz weryfikacji tożsamości użytkownika przekazuje ją do aplikacji ASP.NET.
21. Wymienić elementy składowe wiadomości SOAP oraz omówić ich przeznaczenie.
SOAP jest protokołem wymiany danych zapisanych w języku XML. Korzysta się z niego w sieciach komputerowych najczęściej za pomocą HTTP/HTTPS, jednak również można używać SMTP czy też FTP. Wiadomość SOAP ma następujące elementy składowe:
Envelope – wymagany element nadrzędny wiadomości SOAP, gdyż określa on dokument XML jako wiadomość SOAP.
Header – opcjonalny element, może zawierać dodatkowo określone przez aplikację informacje na temat wiadomości SOAP. Jeśli występuje to musi być pierwszym elementem podrzędnym do elementu Envelope.
Body – wymagany element, zawiera wiadomość SOAP.
Fault - opcjonalny element, używany w celu dostarczenia informacji o błędach, które wystąpiły w czasie tworzenia wiadomości. Ten element może tylko wystąpić w wiadomości pełniącej rolę odpowiedzi i być podrzędnym do elementu Body. Może pojawić się tylko raz w obrębie jednego komunikatu SOAP.
Zalety SOAP:
1.Komunikacja za pomocą HTTP/HTTPS pozwala łatwo omijać zapłony ogniowe oraz inne problemy charakteru połączeniowego.
2.Można użyć innych niż HTTP/HTTPS protokołów transportowych.
3.Nie zależy od platformy.
4.Nie zależy od języków programowania czy używanych narzędzi.
5.Prosty i rozszerzalny.
Wady SOAP:
1.W związku z użyciem XML wiadomości SOAP dziedziczą wady XML. Najbardziej wpływową jest w tym przypadku chyba nadmiarowość samej składni tego języka.
2.Przy użyciu HTTP/HTTPS tylko jedna strona może być usługobiorcą, w związku z tym programiści muszą co jakiś czas odpytywać się serwis zamiast notyfikować klienta.
22. Omówić sposoby wywoływania metod udostępnianych przez usługi WWW.
Synchroniczne wywołanie metody.
Synchroniczne wywołanie metody serwisu webowego nie różni się od powszechnie wykorzystywanego modelu synchronicznego przetwarzania danych. Jego idea polega na zainicjowaniu przetwarzania i oczekiwaniu na jego wynik tak długo, aż nie będzie on dostępny, bądź zostanie przekroczony ustalony limit czasu oczekiwania. W momencie uzyskania wyniku kończy się przetwarzanie synchroniczne. W odniesieniu do usług webowych powoduje to zakończenie wywołania metody. W momencie przetwarzania proces oczekujący na wynik nie wykonuje żadnych dodatkowych operacji.
W odniesieniu do usług webowych takie rozwiązanie jest mało komfortowe. Wynika to z faktu, iż serwer, na którym działa usługa, może znajdować się w znacznym oddaleniu od klienta owej usługi. W takim przypadku czas przesyłu danych pomiędzy usługą, a klientem odgrywa istotną rolę w szybkości działania programu i powoduje jego znaczące spowolnienie. Istotnym problem może okazać się także przesyłanie przez sieć dużych porcji danych np. w momencie wykorzystania serwisu webowego, jako warstwy pośredniczącej pomiędzy aplikacją kliencką, a bazą danych.
Istnieją przypadki, w których synchroniczne wywołanie metody jest uzasadnione. Z taką sytuacją mamy do czynienia, gdy jedyną operacją, którą chcemy wykonać za pomocą aplikacji klienckiej jest dalsze wykorzystanie wyniku wywołania metody. Czasem, gdy nie zależy nam na szybkości działania aplikacji, natomiast liczy się efektywność implementacji również synchroniczne wywołanie metody serwisu webowego i jego prostota znajdują uzasadnienie.
Asynchroniczne wywołanie metody
Pozwala ono na zainicjowanie przetwarzania metody bez zablokowania działania procesu związanego z oczekiwaniem na jej wynik. Oczekiwanie takie dokonuje się w tle i w momencie uzyskania wyniku zapisuje go, do dalszego wykorzystania przez programistę. W momencie gdy programista chce wykorzystać wynik wywołania metody usługi webowej, musi wywołać metodę związaną z zakończeniem jej działania, która zwróci wynik, gdy jest dostępny, będzie oczekiwać na niego do momentu uzyskania. Opisywane rozwiązanie jest bardziej użyteczne od synchronicznego wywołania metody głównie ze względu na fakt, iż w momencie oczekiwania na wynik możemy dokonywać lokalnego przetwarzania danych, a także (w przypadku aplikacji okienkowej) wchodzić w interakcję z użytkownikiem. Dzięki temu aplikacja działa sprawniej i stwarza wrażenie bardziej stabilnej
23. Wymienić rodzaje operatorów SOAP i omówić ich przeznaczenie.
Ważnym pojęciem podczas tworzenia wiadomości SOAP jest pojęcie operatora wiadomości SOAP. Rozróżniamy dwa typu operatorów: operatorzy domyślni oraz pośrednicy. Operatorem domyślnym wiadomości jest jej adresat (odbiorca), natomiast zadaniem pośredników jest przekazywanie wiadomości dalej. Mogą oni również wpływać na treść tej wiadomości, mogą ją modyfikować. Mimo tego wiadomość dostarczona do adresata będzie ciągle jedną i tą samą wiadomością.
24. Omówić sposób kodowania typów prostych i złożonych w wiadomości SOAP.
Typy proste - Są to liczy całkowite, zmiennoprzecinkowe, znakowe, łańcuchy znaków, data/czas, logiczne itd., np.: liczba całkowita:
Typy złożone –
- struktury – logiczne zamknięcie w obiekt jakiegoś wycinka rzeczywistości
- tablice proste obiektów jednego typu – specyfikacja SOAP wypełnia w tym miejscu lukę w specyfikacji XML.
- tablice proste obiektów różnych typów
- tablice wielowymiarowe równomierne – tablice te są z reguły prostokątne
- tablice wielowymiarowe nierównomierne – rozumiane jako tablice tablic
- tablice częściowe – czasami kodowanie całej tablicy nie jest konieczne, tablica częściowa to taka, w której koduje się tylko część elementów następujących zaraz po sobie
- tablice częściowe przesunięte – są to tablice częściowe, w których kodowane elementy znajdują się w dowolnym miejscu w tablicy (niekoniecznie na początku tablicy), założenie: wszystkie te elementy następują zaraz po sobie
- Tablice rzadkie – w tablicach takich kodowane elementy nie muszą następować po sobie, a mogą być rozrzucone po całej tablicy
25. Wymienić oraz krótko scharakteryzować rodzaje wiadomości SOPA.
26. Wymienić oraz krótko scharakteryzować metody uwierzytelniania stosowane na serwerze IIS.
Internet Information Services udostępnia kilka mechanizmów pozwalających na zweryfikowanie tożsamości użytkownika. Są to:
Anonimowe uwierzytelnianie
Zintegrowane z Windows (NTLM, Kerberos)
Basic
Digest
Oparte o certyfikaty klienta.
Uwierzytelnianie Anonymous umożliwia użytkownikowi dostęp do publicznych części aplikacji bez wymagania od niego loginu oraz hasła. Chociaż widnieje na liście sposób uwierzytelniania przez IIS, tak naprawdę nie jest wymagane od użytkownika potwierdzanie tożsamości.
Za:
Oferuje najlepszą wydajność, ponieważ uwierzytelnianie anonimowe nie nakłada dodatkowego obciążenia;
Nie wymaga zarządzania kontami użytkowników;
Jeśli IIS nie kontroluje hasła, każdy użytkownika ma dostęp do zasobów sieci;
Przeciw:
Nie uwierzytelnia klientów w sposób indywidualny;
Jeśli IIS nie kontroluje hasła, konto musi mieć możliwość logowania lokalnego;
IIS umożliwia wykorzystanie mechanizmu uwierzytelniania typu Basic , który jest częścią specyfikacji protokołu HTTP 1.0. Kiedy programista używa uwierzytelniania Basic przeglądarka przesyła login oraz hasło konta Windows użytkownika. Dane te są przesyłane przez HTTP, gdzie są kodowane za pomocą algorytmu BASE64 . Mimo, że większość web serwisów, serwerów proxy, czy przeglądarek obsługuje uwierzytelnianie Basic, to niestety sposób ten jest mało bezpieczny. BASE64 jest łatwe do rozkodowania, co w gruncie rzeczy powoduje, że hasło jest przesyłane czystym tekstem.
Za:
Ponieważ uwierzytelnianie Basic jest częścią standardu HTTP 1.0, jest powszechnie wspieranym sposobem uwierzytelniania;
Umożliwia uwierzytelnianie użytkowników wykorzystujących serwer proxy;
Umożliwia śledzenie poczynań użytkownika, dzięki czemu można zbierać indywidualne statystyki korzystania z witryny;
Może być połączony z uwierzytelnianiem Kerberos;
Przeciw:
Z natury jest słabo zabezpieczony bez wykorzystania szyfrowania połączenia, co z kolei może rzutować na wydajność;
Wymaga tworzenie indywidualnych kont Windows dla każdego użytkownika;
Mechanizm uwierzytelniania Digest zostało stworzone głównie w celu rozwiązania największej słabości uwierzytelniania Basic: wysyłanie hasła w czystym tekście. Mechanizm uwierzytelniania Digest w celu uwierzytelniania wykorzystuje hashe. Hash jest wynikiem (o stałej długości pewnej) funkcji matematycznej (zwanej funkcją hashującą) na dowolnej ilości danych. Poziom szyfrowania zależy od długości wykorzystywanego hasha.
Jeżeli użytkownik próbuje uzyskać dostęp do zasobu, do którego jest wymagane uwierzytelnianie Digest, IIS wysyła do użytkownika żądanie przesłania hasha. Klienta za pomocą owej funkcji hashującej łączy hasło oraz dane znane dla obu stron (klienta i serwera). Klient wykorzystuje sposób łączenie danych określony przez serwer. Klient w odpowiedzi wysyła serwerowi hash. Serwer po swojej stronie wykonuje te same operacje (na haśle użytkownika wyciągniętym np. z Active Directory). W przypadku, gdy oba hashe (wysłany przez klienta oraz obliczony przez serwer) są takie same, użytkownik zostaje uwierzytelniony.
Uwierzytelnianie Digest jest niewielką poprawą bezpieczeństwa w stosunku do uwierzytelniania Basic. W przypadku braku wykorzystywania szyfrowania połączenia, atakujący może podsłuchać komunikację między klientem oraz serwerem. Następnie może użyć zebrane informacje w celu powtórzenia komunikacji.
Za:
Przesyłany jest hash zamiast hasła przez sieć;
Współpracuje z serwerami proxy i zaporami sieciowymi;
Nie jest wymagane szyfrowanie połączeń w celu ochrony hasła użytkownika;
Przeciw:
Nie umożliwia delegowania poświadczeń bezpieczeństwa;
Jest wspierane przez przeglądarkę Internet Explorer w wersji 5.0 lub nowszej;
Jest narażony na ataki w przypadku nieużywania szyfrowania połączeń;
Wymaga przechowywania hasła za pomocą odwracalnych algorytmów szyfrowania (do obliczenia hasha jest potrzebne hasło w pierwotnej postaci);
Wymaga stworzenia indywidualnego konta dla użytkownika w Active Directory;
Uwierzytelnianie zintegrowane z Windows (Integrated Windows Authentication) umożliwia użycie mechanizmu NTLM lub Kerberos i działa tylko w przeglądarce Internet Explorer 2.0 lub nowszej.
W przypadku uwierzytelniania zintegrowanego z Windows, kiedy Internet Explorer próbuje uzyskać dostęp do chronionych zasobów, IIS wysyła dwa nagłówki uwierzytelniające Negotiate oraz NTLM:
Jeżeli Internet Explorer rozumie nagłówek Negotiate, skorzysta z tego nagłówka. Używając Negotiate przeglądarka zwróci serwerowi informacje dla uwierzytelniania NTLM oraz Kerberos. Po stronie serwera IIS użyje uwierzytelniania Kerberos w przypadku, gdy klient korzysta z Internet Explorera 5.0 lub nowszego, IIS jest w wersji 5.0 lub nowszej uruchomiony na systemie Windows 2000 lub nowszym oraz obie strony są członkami tych samych domen lub domen zaufanych. W przeciwnym przypadku serwer będzie wykorzystywał uwierzytelnianie NTLM
Jeżeli natomiast Internet Explorer nie rozumie nagłówka Negotiate, użyte zostanie uwierzytelnianie NTLM
Jak widać mechanizm, jaki zostanie użyty zależy od negocjacji serwera z przeglądarką.
Kiedy w połączeniu jest używany mechanizm uwierzytelniania Kerberos, IIS może przekazywać poświadczenie bezpieczeństwa wśród komputerów z systemem Windows 2000 lub nowszych, które są zaufane oraz konfigurowane do delegacji. Delegacja umożliwia dostęp do zdalnych zasobów w imieniu delegacji użytkownika.
Uwierzytelnianie zintegrowane z Windows jest najlepszym mechanizmem uwierzytelniania w środowisku Intranetowym, gdzie użytkownicy posiadają konta w domenie Windows zwłaszcza, kiedy używane jest uwierzytelnianie Kerberos.
Za:
Może zostać użyte z połączeniu z Kerberos, dzięki czemu istnieje możliwość delegowania poświadczeń bezpieczeństwa;
Najlepszy mechanizm dla aplikacji działających w środowisku Intranetowym;
Przeciw:
Nie można uwierzytelniać użytkownika przez zaporę sieciową chyba, że przez stosowanie połączenia PPTP;
Nie wspiera delegacji poświadczeń bezpieczeństwa w przypadku, gdy używamy jest mechanizm NTLM;
Jest obsługiwany przez Internet Explorer 2.0 lub nowszy;
Kerberos jest obsługiwany przez IIS 5.0 lub nowszy;
Mechanizm uwierzytelniania Client Certificate Mapping wykorzystuje mechanizm certyfikatów w celu zabezpieczenia całego procesu uwierzytelniania. Certyfikat jest podpisanym cyfrowo poświadczeniem, że zawiera informacje na temat jednostki oraz jest publicznym kluczem. Zaufana organizacja nazwana Urzędem Certyfikacji wydaje certyfikat po sprawdzeniu, czy podmiot jest tym, za kogo się podaje. Certyfikaty mogą zawierać różne dane.
Systemy operacyjne takie jak Windows nadal wymagają pojęcia konta użytkownika. Mapowanie certyfikatów umożliwia administratorowi na powiązanie pojedynczego certyfikatu (mapowanie jeden do jednego) lub kilku certyfikatów (mapowanie wiele do jednego) do konta użytkownika. Mapowanie wiele do jednego określa zasady do definiowania kryteriów certyfikatów do mapowania.
IIS używa protokołu SSL / TLS do uwierzytelnienia serwera i zapewnia szyfrowanie sesji HTTP. IIS może również skorzystać z protokołu SSL / TLS w celu uwierzytelnienia użytkownika. W tym celu wymaga od niego przedstawienia zaświadczenia. Przy żądaniu certyfikatu klienta, serwer przedstawia klientowi listę urzędów, którym wierzy. Lista ta z serwerowej listy zaufanych certyfikatów (CTL). Jeżeli klient posiada certyfikat wydany przez urząd certyfikacji z listy dostarczonej przez serwer, wysyła kopię poświadczenia do serwera w celu weryfikacji. Jeśli certyfikat jest ważny, IIS uwierzytelnia użytkownika, którego mapuje na podstawie świadectwa.
Za:
Dostarcza bezpieczny sposób uwierzytelniania użytkowników;
Zapewnia obustronne uwierzytelnianie klienta i serwera;
Umożliwia dostęp do sieciowych zasobów;
Przeciw:
Nie umożliwia przekazywania poświadczenia bezpieczeństwa;
Nie współpracuje z wszystkimi przeglądarkami;
Wymaga szyfrowania SSL / TLS;
Jest trudne w konfiguracji, jednakże mapowanie wiele do jednego jest łatwiejsze niż jeden do jednego;
27. Omówić sposób przekazywania informacji o błędach w protokole SOAP.
Element Fault
Informacja na temat błędu pochodzącego z aplikacji SOAP znajduje się wewnątrz elementu Fault. W przypadku wystąpienia elementu Fault, musi on znaleźć się wewnątrz elementu Body. Element Fault może tylko wystąpić raz w tej samej wiadomości SOAP.
Element Fault posiada następującą składnię:
<faultcode> - Kod identyfikujący błąd
<faultstring> - Opis błędu w postaći łańcucha znaków (tekstu)
<faultactor> - Kto/co wywołało błąd
<detail> - Szczegółowe informacje na temat błędu
28. Omów podstawowe standardy przesyłania danych w sieciach 802.11 (a,b,g,n) oraz podaj
częstotliwość pracy, maksymalną prędkość.
Standardy 802.11 |
---|
Nazwa |
802.11 |
802.11a |
802.11b |
802.11g |
802.11n |
29. Jakie elementy związane z bezpieczeństwem sieci bezprzewodowych realizuje protokół EAP (802.1.x)?
Protokół 802.1x pracuje w warstwie 2 modelu ISO-OSI (warstwa łącza danych), tak więc bez poprawnego uwierzytelnienia, niemożliwe jest skorzystanie z jakichkolwiek usług sieciowych, czy też (celowe lub przypadkowe) zakłócenie ich pracy Protokół uwierzytelniania rozszerzonego (EAP, Extensible Authentication Protocol) pozwala uwierzytelniać połączenia dostępu zdalnego za pomocą dowolnego mechanizmu uwierzytelniania. Klient dostępu zdalnego oraz wystawca uwierzytelnienia (serwer dostępu zdalnego lub serwer usługi RADIUS) negocjują dokładny schemat uwierzytelniania, który ma zostać użyty. Protokół EAP-TLS jest domyślnie obsługiwany przez usługę Routing i dostęp zdalny. Aby zapewnić inne metody protokołu EAP, można podłączyć inne moduły protokołu EAP do serwera z uruchomioną usługą Routing i dostęp zdalny.Metody EAP:
TLS - jest operacja wzajemnego uwierzytelnienia klienta i serwera RADIUS oparta na wymianie podpisów cyfrowych, po których sprawdzeniu do klienta jest wysyłany klucz WEP.
Radius
OTL – one time password
GTC – generic token card
Kerberos
30. Omów standardy szyfrowania transmisji bezprzewodowych.
WEP - WEP (ang. Wired Equivalent Privacy). Standard specyfikuje klucze 40- i 104-bitowe, do których w procesie wysyłania ramki dołączany jest wektor inicjujący (IV) o długości 24 bitów. Stąd popularnie mówi się o 64 i 128-bitowych kluczach WEP – słaby i niw uzywany
WPA – następca WP,dłuższy wektor inicjujący 48 bit WPA= 802.1x(EAP)+ TKIP (RC4)+MIC TKIP-wykorzystuje algorytm RC4 MIC- odpowiada za integralność przesyłania danych i wykorzystuje algorytm Michael, który dysponuje unikatowym kluczem, różnym od klucza używanego do szyfrowania ramek danych. Klucz ten miesza się ze źródłowym i docelowym adresem MAC oraz z całym pozostałym fragmentem ramki zawierającym dane niezaszyfrowane.
WPA2 - Najważniejszą różnicą pomiędzy WPA a WPA2 jest używana metoda szyfrowania WPA2 wykorzystuje CCMP oparty o protokół AES. Korzysta z kluczy o długościach 128,192 i 256 bitów AES wykonuje 10 (klucz 128 bitów),12 (klucz 192 bity) lub 14 (klucz 256 bitów) rund szyfrujących. Składają się one z substytucji wstępnej, permutacji macierzowej (mieszanie wierszy, mieszanie kolumn) i modyfikacji za pomocą klucza.
31. Jak i w jakim celu obliczany jest promień pierwszej strefy Fresnela?
Strefa Fresnela jest to jedno z najważniejszych, a może i najważniejsze pojęcie w tematyce wireless. Kształt obszaru w strefie fresnela ma dwie postacie: w przekroju wzdłużnym jest elipsą, a w przekroju poprzecznym kołem. Promień tego koła zmienia się na całej długości sygnału radiowego i najwyższą wartość przyjmuje na jego środku (w połowie odległości pomiędzy antenami).
W sieciach radiowych największe znaczenie ma pierwsza strefa gdyż właśnie w niej przenoszona jest prawie cała energia sygnału.
gdzie
Fn – promień n-tej strefy Fresnela w metrach
dnad – odległość od nadajnika w metrach
dodb – odległość od odbiornika w metrach
λ – długość fali radiowej w metrach
32. Czym rożni się sieć bezprzewodowa typu BSS od IBSS?
IBSS – sieć równorzędnych klientów (per to per), często nazywana siecią tymczasową, ad-hoc.
BSS – sieć hierarchiczna z punktem dostępowym (access point - AP).
33. Omów wektor alokacji pasma (NAV)?
Stacja, która z powodzeniem rozpoczęła transmisję informuje w każdym pakiecie jaki czas rezerwuje na transmisję: jest to tzw Wektor Alokacji Sieci (NAV – Network Alocation Vector) a pozostałe stacje przeliczają ten czas niezależnie (mogą być chwilowo poza zasięgiem).
34. Na czym polega roaming w sieciach bezprzewodowych standardu 802.11?
IEEE 802.11f - definiuje roaming w sieciach 802.11a, 802.11g i 802.11b przy zastosowaniu protokołu IAPP (Inter Accces point Protocol). Z pojęciem roamingu związana jest domena roamingu warstwy drugiej ISO/OSI.(łącza danych)
Ważnym parametrem określającym roaming jest czas przełączania, na który składa się:
_ czas próbkowania (rozpoznania);
_ czas uwierzytelniania 802.11;
_ czas kojarzenia;
_ czas uwierzytelniania 802.1x (opcjonalnie).
Zadania podczas roamingu
1. Dotychczasowy AP musi stwierdzić, że klient przełącza się na inny AP;
2. Dotychczasowy AP musi zbuforować dane kierowane do tego klienta (tego zadania nie opisuje standard 802.11);
3. Nowy AP powinien poinformować dotychczasowy AP o poprawnym przejęciu klienta. Przeważnie realizowane jest to poprzez wysłanie z nowego AP ramki do dotychczasowego AP – adres źródłowy ustawiony jest na MAC klienta;
4. Dotychczasowy AP wysyła zbuforowane dane do nowego AP a ten do klienta.
5. Aktualizacja tablic adresów MAC na przełącznikach infrastruktury przewodowej (często zrealizowany przy okazji zadania w pkt.3).
35. Wymień i krótko scharakteryzuj mechanizmy integracji sieci IPv6 i IPv4?
Zwiększenie długości pola adresowego, chociaż pozornie wydaje się rozwiązaniem najprostszym, w rzeczywistości jest rozwiązaniem bardzo skomplikowanym. Wymaga ono zmiany oprogramowania na wszystkich węzłach, które miałyby wykorzystywać nowy adres, i nowej implementacji powszechnie stosowanych aplikacji w sieci Internet
Termin podwójny stos (ang. dual stack) odnosi się do węzłów sieci, których oprogramowanie stosu TCP/IP jest w stanie poprawnie obsługiwać protokół IP w wersji czwartej i w wersji szóstej. Nie oznacza to, że aplikacje uruchomione na komputerze z obsługą podwójnego stosu są w stanie wykorzystać pakiety pochodzące z sieci IPv4 i IPv6 – aplikacje również muszą być dostosowane do obsługi pakietów obu wersji protokołu IP
Tunelowanie polega na tym, że cały pakiet jednej wersji protokołu IP jest traktowany jako ładunek (to znaczy, że cały pakiet jest umieszczany w polu danych) pakietu innej wersji protokołu IP. Czynność ta nosi nazwę kapsułkowania lub enkapsulacji (ang. encapsulation). Czynność odwrotna polegająca na odpakowaniu pakietu nosi nazwę dekapsulacji (ang. decapsulation). Wykorzystując mechanizm tunelowania można transferować pakiety jednej wersji protokołu przez infrastrukturę drugiej wersji protokołu. Istnieje możliwość kapsułkowania pakietów protokołu IPv6 w pakietach protokołu IPv4 i odwrotnie. Tunelowanie pakietów może być zastosowane w dwóch rożnych sytuacjach:
Mechanizm translacji protokołów umożliwia integrację sieci opartych wyłącznie na protokole IPv6 z sieciami wykorzystującymi jedynie IPv4. Urządzenie, które dokonuje translacji protokołów, musi obsługiwać podwójny stos IPv4/IPv6. Jednym z rozwiązań oferujących translację protokołów jest NAT-PT (ang. Network Address Translation – Protocol Translation).
36. Na czym polega routing pomiędzy systemami autonomicznymi
BGP - protokół routingu BGP wykonuje routing międzydomenowy w sieciach pracujących z protokołem TCP/IP. Należy do klasy protokołów zewnętrznych. Wykonuje routing pomiędzy wieloma systemami autonomicznymi (AS) zwanych domenami i wymienia informacje o routingu i dostępności z innymi systemami posługującymi się tym protokołem. Podobnie jak każdy protokół routingu, BGP utrzymuje tablice routingu, przesyła uaktualnienia routingu i podejmuje decyzje o trasie kierowania ruchu. Główną funkcją systemu BGP jest wymiana z innymi systemami BGP informacji o dostępności sieci, w tym informacji o ścieżkach systemów autonomicznych. Informacja ta jest niezbędna do konstrukcji grafu połączeń systemów autonomicznych, z którego można eliminować pętle i podejmować strategiczne decyzje o wyborze trasy pakietów. Każdy router utrzymuje tablicę routingu, zawierającą wszystkie możliwe ścieżki do poszczególnych sieci. Informacja o routingu otrzymana jest od równorzędnego routera (peer), i jest przechowywana do czasu, gdy zostanie odebrane przyrostowe uaktualnienie. Protokół BGP stanowi także ochronę przed przeciążeniem czy awarią łącz, pozwala optymalnie rozłożyć obciążenie i likwidować "wąskie gardła" na poszczególnych łączach.
Przy wyznaczaniu trasy niezbędna jest właściwa wymiana informacji pomiędzy protokołami EGP i IGP. Obecnie najbardziej zaawansowanym rozwiązaniem jest protokół BGP 4, który spełnia rolę protokołu uniwersalnego, który można wykorzystać do budowy tablic routingu wewnętrznego w systemie autonomicznym (IBGP) oraz ścieżek routingu pomiędzy dostawcami (EBGP). Obecnie wyróżnia się dwie podstawowe grupy protokołów wewnątrzdomenowe IGP (Interior Gateway Protocol) oraz pozadomenowe EGP (Exterior Gateway Protocol). Protokoły grupy IGP służą do wymiany informacji o topologii sieci w obrębie jednolitego systemu autonomicznego, w jednej domenie administracyjnej i posługują się dwiema metodami badania sieci. Metoda wektora odległości pozwala wyliczyć trasy, gdy wszystkie sąsiadujące routery w sieci prześlą do siebie swoje tablice routowania. W metodzie stanu łącza, po rozpowszechnieniu w sieci informacji o lokalnych połączeniach innych routerów, specjalny algorytm o nazwie Shortest Path First pozwala wyliczyć odległości do wszystkich sieci i podsieci Protokoły EGP służą do wymiany informacji pomiędzy dostawcami usług internetowych i transportowych sieciowych. Można obrazowo powiedzieć, że śledzą one główne trasy, a identyfikację ostatecznego odbiorcy powierzają routerom systemów autonomicznych wykorzystujących IGP.
1. Systemy liczbowe (liczenia), przykłady zapisu liczby w każdym z nich.
System dziesiętny( zwany też systemem decymalnym lub arabskim to pozycyjny system liczbowy, w którym podstawą pozycji są kolejne potęgi liczby 10) – 5304,7 = 5*103+3*102+0*101+4*100+7*10-1
System ósemkowy( to pozycyjny system liczbowy o podstawie 8. System ósemkowy jest czasem nazywany oktalnym) – 100 (dziesiętne) będzie liczbą 144(w ósemkowym) np.: 100/8=12 r.4, 12/8=1 i r.4,1/8=0 i r.1 od końca czytając wychodzi 144
System dwójkowy(binarny) -1+1=10,1+0=0 0,1,10,11,100,101,110,111
System szesnastkowy – 0123456789ABCDEF – 1000 to 3E8 czyli 3x162+14x161+8x160=768+224+8=1000
Definicja systemu dziesiętnego: 2548 = 8 * 100 + 4 * 101 + 5 * 102 + 2 * 103
Definicja systemu binarnego: 110010012 = 1*20 + 0*21 + 0*22 + 1*23 +0*24 + 0*25 +1*26 + 1* 27 = 1 + 0 + 0 + 8 + 0 + 0 + 64 +128 = 20110
201 | :2 | | 1 |
100 | :2 | | 0 |
50 | :2 | | 0 |
25 | :2 | | 1 |
12 | :2 | | 0 |
6 | :2 | | 0 |
3 | :2 | | 1 |
1 | :2 | | 1 |
Definicja systemu oktalnego: przykład: 2368 = 6*80 + 3*81 + 2*82 = 6*1 + 3*8 + 2*64 = 6 + 24 + 128 = 15810
158 | :8 | | 6 |
19 | :8 | | 3 |
2 | :8 | | 2 |
Definicja systemu szesnastkowego: 0, 1, 2, 3, 4, 5, 6, 7, 8, , B, C, D, E, F
przykład: AB12h = 2*160 + 1*161 + B*162 + A*163 = 2*160 + 1*161 + 11*162 + 10*163 = 2 + 16 + 2816 + 40960 = 4379410
43794 | :16 | | 2 |
2737 | :16 | | 1 |
171 | :16 | | 11 = B |
10 | :16 | | 10 = A |
2. Programowanie strukturalne i niestrukturalne.
Programowanie strukturalne to paradygmat programowania zalecający hierarchiczne dzielenie kodu na bloki, z jednym punktem wejścia i jednym lub wieloma punktami wyjścia. Chodzi przede wszystkim o nieużywanie (lub ograniczenie) instrukcji skoku (goto). Dobrymi strukturami są np. instrukcja warunkowe (if, if...else), pętle (while, repeat), wyboru (case, ale nie switch z C i potomnych). Czasami jednak podporządkowanie się
tej zasadzie powoduje zbytnie zagnieżdżenie struktur programu i czyni go mniej czytelnym. W takiej sytuacji należy oczywiście zastosować rozwiązanie dające program bardziej przejrzysty, nawet jeśli jest ono niestrukturalne. Innym powodem zastosowania konstrukcji niestrukturalnej jest chęć skrócenia kodu wynikowego (na przykład w programach rezydentnych). W takich sytuacjach mądrze zaplanowany skok pozwala często uniknąć zbędnego powtarzania jakiejś sekwencji instrukcji.Programowanie niestrukturalne nadużywa instrukcji goto ,break oraz continue
3. Rola wskaźników w programowaniu.
Wskaźnik jest zmienną służącą do przechowywania adresu (zmiennej dowolnego typu, funkcji, kolejnego wskaźnika).
Wskaźnik wskazuje adres zmiennej typu określonego na etapie deklaracji.
Wskaźniki można rzutować, dzięki czemu mogą wskazywać na różne typy docelowe (w przypadku wskaźnika do typu void: void* wskaźnik;)
Wskaźniki w języku C mają następujące zastosowania:
* umożliwiają funkcjom modyfikację przekazywanych parametrów,
* umożliwiają korzystanie z mechanizmu dynamicznego przydziału pamięci,
* umożliwiają korzystanie z dynamicznych struktur danych.
Wskaźnik jest deklarowany tak jak zmienna, aczkolwiek dodatkowo z postawionym znakiem gwiazdki między nazwą zmiennej a jej typem:
int zmienna; //zmienna typu int
int *wskaźnik; //wskaźnik do typu int
Dwoma podstawowymi operatorami związanymi ze wskaźnikami są
* - zawartość zmiennej wskazywanej przez wskaźnik
& - adres zmiennej
Wskaźniki mogą być deklarowane dwojako:
1. jako wskaźnik „tylko do odczytu” (const int *wskaznik) - zmiennej wskazywanej przez wskaźnik nie da się zmodyfikować. Adres wskaźnika jest modyfikowalny, można zmieniać adres wskazywany przez wskaźnik:
int x = 0, y = 0;
const int *wsk = &x; // wsk wskazuje na x
...
wsk = &y; // powiedzie się, adres wskaźnika można zmieniać
*wsk = 50; // BŁĄD, wartości wskazywanej przez wskaźnik nie da się modyfikować
2. jako stały wskaźnik do zmiennej (int *const wskaznik) - zmienna wskazywana przez ten wskaźnik jest modyfikowalna aczkolwiek nie da się zmienić adresu wskaźnika:
int x = 0, y = 0;
int *const wsk = &x; // wsk wskazuje na x
...
wsk = &y; // BŁĄD, adresu wskaźnika nie da się zmienić, wskaźnik od etapu deklaracji już zawsze wskazuje na ten sam adres pamięci
*wsk = 50; // powiedzie się, zawartość zmiennej można zmieniać
Przykład wykorzystania:
int a = 0;
char b = 'a';
void *wskaznik = NULL; // deklaracja pusta
...
//rzutowanie wskaznika void* na konkretny typ
wskaznik = &a; // teraz wskaźnik wskazuje na zmienna 'a'
printf("%d\n", *(int*)wskaznik);
wskaznik = &b; // teraz wskaźnik wskazuje na zmienna 'b'
printf("%c\n", *(char*)wskaznik);
4. Sposoby przekazywania parametrów do funkcji, np. na przykładzie języka C.
Wyróżniamy dwa sposoby przekazywania parametrów do funkcji:
przez wartość,
przez wskaźnik.
referencje
W przypadku przekazywania parametru przez wartość funkcja tworzy kopię parametru na własny użytek i podczas swojego działania pracuje na kopii. Dlatego też wszelkie zmiany wartości zmiennej wewnątrz funkcji nie wpływają na oryginał parametru.
W przypadku przekazywania parametru przez wskaźnik funkcja otrzymuje informację o bezpośrednim adresie zmiennej. Dlatego też wszelkie zmiany wartości zmiennej wewnątrz funkcji mają bezpośredni wpływ na orginał parametru.
Aby funkcja mogła zmieniać zawartość zmiennej musi otrzymać jej adres lub zmienna musi być przekazana przez referencję.
5. Rola w programowaniu instrukcji pętli, rodzaje instrukcji pętli.
W programowaniu pętla to jedna z trzech podstawowych konstrukcji programowania strukturalnego (obok instrukcji warunkowej i instrukcji wyboru). Umożliwia cykliczne wykonywanie ciągu instrukcji określoną liczbę razy, do momentu zajścia pewnych warunków, dla każdego elementu kolekcji lub w nieskończoność.
Pętla licznikowe(iteracyjne) – wykonują się ustalona liczbę razy
Pętla warunkowa(repetycyjna)- wykonuje się aż do odpowiedniej zmiany warunków. Przeważnie wyrażenie testujące sprawdzane jest na początku lub na końcu pętli
Pętla ogólna - Umożliwia definiowanie zarówno pętli repetycyjnej (ze sprawdzeniem warunku na początku pętli), jak i pętli iteracyjnej, jednak w porównaniu do niej pętla ta jednak definiowana jest na niższym poziomie abstrakcji, co oznacza, że programista musi sam definiować warunek jej zakończenia i operację zmiany wartości zmiennej sterującej przy kolejnym przebiegu pętli.
Pętle o określonej liczbnie powtórzeń jak i pętle nieskończone
6. Istota zjawiska rekurencji.
rekurencja jest to metoda rozwiazywania problemów oparta na założeniu, ze dany problem można rozłożyć na k pomniejszych podproblemów; żeby rozwiązać problem wystarczy rozwiązać poszczególne podproblemy
Funkcje rekurencyjne są funkcjami, które w swoim ciele wywołują samą siebie. Należy wiedzieć, iż przy wywołaniu funkcji rekurencyjnej dochodzi do jej wielokrotnego wywołania bez kończenia wywołań poprzednich. Idzie za tym konieczność wielokrotnego składowania parametrów na stosie, co może prowadzić do jego przepełnienia. Wadą funkcji rekurencyjnych jest mała szybkość wykonywania i duża ilość zużywanej pamięci stosu, przez konieczność odkładania na nim parametrów oraz adresu funkcji. Zaletą jest możliwość ich użycia do wykonywania operacji, których nie da się zaimplementować w żaden inny sposób np.: przejście przez drzewo.
Ogólna postać funkcji rekurencyjnej
int funkcja_rek (int parametr)
{
...
liczba_int=funkcja_rek(parametr);
...
return wynik;
}
Przykładem funkcji rekurencyjnej może być funkcja obliczająca ciąg Fibonacciego, silnię itp.:
unsigned long silnia_rekurencyjna(unsigned int liczba){
if(liczba < 2) return 1;
return liczba * silnia_rekurencyjna(liczba - 1);
}
Silnia w postaci iteracyjnej (szybszej I zużywającej mniej zasobów):
unsigned long silnia_iteracyjna(unsigned int liczba){
unsigned long wynik = 1;
while(liczba)
wynik *= liczba--;
return wynik;
}
7. Algorytmy rekurencyjne.
Algorytm rekurencyjny (recursive algorithm), algorytm, który wywołuje sam siebie do rozwiązania tego samego problemu. Algorytm rekurencyjny jest często realizacją zasady “dziel i zwyciężaj”, która składa się z trzech kroków:
1) “dzielenia”, tj. podziału problemu na podproblemy;
2) rekurencyjnego rozwiązania podproblemów, chyba że można je rozwiązać metodą bezpośrednią – takie postępowanie prowadzi do “zwycięstwa” w sensie czasu rozwiązywania problemu;
3) “połączenia” rozwiązań podproblemów w rozwiązanie całego problemu.
8. Własności dynamicznych struktur danych.
Procedury służące do dynamicznego przydzielania i zwalniania pamięci, zmienne typów wskaźnikowych są wykorzystywane do programowania dynamicznych struktur danych, którym pamięć jest przydzielana i zwalniana w trakcie wykonywania programu. Ze względu na organizację oraz sposoby dołączania, wstawiania i usuwania składników można wyróżnić między innymi następujące metody:
kolejki, w których można dołączyć tylko w jednym końcu, a usunąć tylko w drugim końcu,
listy, które charakteryzują się tym, że dla każdego składnika poza pierwszym i ostatnim, jest określony jeden składnik poprzedni i jeden składnik następny lub tylko składnik poprzedni lub następny, przy czym w dowolnym miejscu takiej struktury można dołączyć nowy składnik lub usunąć składnik istniejący.
stosy, w których wstawianie, usuwanie i dostęp są możliwe tylko w jednym końcu zwanym wierzchołkiem stosu,
9. Drzewa binarnych poszukiwań.
Drzewo BST (binary search tree) jest drzewem binarnym. Oprócz pola wartości drzewo BST posiada jeszcze dwa pola: L i P, wskazujące odpowiednio na lewy i prawy następnik. Drzewo BST ma szczególną własność:
jeżeli element drzewa znajduje się w lewej gałęzi to jest mniejszy od swego poprzednika
jeżeli element drzewa znajduje się w prawej gałęzi to jest większy od swego poprzednika
Przeszukiwanie drzewa:
Wzdłużna - preorder: korzeń, lewe poddrzewo, prawe poddrzewo.
Poprzeczna - inorder: lewe poddrzewo, korzeń, prawe poddrzewo.
Wsteczne - postorder: lewe poddrzewo, prawe poddrzewo, korzeń.
10. Metody reprezentacji grafów.
Graf to po prostu zbiór wierzchołków połączonych ze sobą na różne sposoby krawędziami.V –wierzchołki, E- krawędzie Oczywiście V2>=E. Grafy, w których E=V2 nazywamy pełnymi, E jest trochę mniejsze od V2 - gęstymi, a dużo mniejsze - rzadkimi. Reprezentacje:
lista krawędzie - lista par wierzchołków (początki i końce krawędzi) bez żadnej specjalnej kolejności.
Macierz incydencji - Macierz incydencji składa się z V wierszy (odpowiadającym wierzchołkom) i E kolumn (odpowiadającym krawędziom). Na "skrzyżowaniu" wierzchołka z krawędzią jest -1 gdy krawędź wychodzi z wierzchołka, +1 - krawędź wchodzi, 2 - pętla, 0 - brak incydencji.
Listy sąsiedztwa - Reprezentacja grafów przez listy sąsiedztwa, jak sama nazwa wskazuje, polega na trzymaniu dla każdego wierzchołka listy jego wszystkich sąsiadów (następników albo poprzednikó
Macierz sąsiedztwa - Macierz sąsiedztwa ma wymiary VxV. Idea jest prosta: jeżeli na "skrzyżowaniu" i-tego wiersza i j-tej kolumny znajduje się 1 to znaczy, że istnieje krawędź (i,j) (wychodząca z i-tego wierzchołka i wchodząca do j-tego); jeśli 0 to znaczy, że tej krawędzi nie ma.
Macierz grafu - Ta metoda jest ulepszeniem metody listowej o szybki czas sprawdzenia istnienia krawędzi, kosztem zwiększenia złożoności pamięciowej (która przy grafach gęstych wcale się nie pogarsza).
11. Algorytm szukania w głąb dla grafu.
Przeszukiwanie w głąb . Przeszukiwanie w głąb polega na badaniu wszystkich krawędzi wychodzących z podanego wierzchołka. Po zbadaniu wszystkich krawędzi wychodzących z danego wierzchołka algorytm powraca do wierzchołka, z którego dany wierzchołek został odwiedzony
Gdybyśmy podany na obrazku graf chcieli przejść wykorzystując algorytm przeszukiwania w głąb, zaczynająć od wierzchołka A, to węzły zostałyby odwiedzone w następującej kolejności (w nawiasach podano wierzchołki do których algorytm powraca): A, B, D, (B), F, E, (F), (B), (A), C, G, (C), (A).
12. Szacowanie złożoności obliczeniowej algorytmów.
Złożoność obliczeniowa (czasowa) algorytmu - zależność pomiędzy rozmiarem danych wejściowych a liczbą operacji elementarnych wykonywanych w trakcie przebiegu algorytmu (podawana jako funkcja rozmiaru danych). Operacje elementarne to np. liczba porównań dwóch liczb w algorytmie sortowania, liczba mnożeń w algorytmie obliczania silni, liczba dzieleń w algorytmie sprawdzania czy dana liczba jest pierwsza, ogólna liczba operacji arytmetycznych wykonywanych przez dany algorytm itp..
Złożoność obliczeniowa jest jednym z najważniejszych parametrów charakteryzujących algorytm. Decyduje ona o efektywności całego programu.
Podstawowymi zasobami systemowymi uwzględnianymi w analizie algorytmów są czas działania (złożoność obliczeniowa algorytmu) oraz obszar zajmowanej pamięci (złożoność pamięciowa algorytmu). Złożoność pamięciowa wynika z liczby i rozmiaru struktur danych wykorzystywanych w algorytmie. Złożoność algorytmu może być rozumiana w sensie złożoności najgorszego przypadku lub złożoności średniej. Złożoność najgorszego przypadku nazywamy złożonością pesymistyczną - jest to maksymalna złożoność dla danych o zadanym rozmiarze n. Złożoność średnia lub oczekiwana to średnia wartość złożoności dla wszystkich problemów rozmiaru n.
13. Podstawowe elementy jednostki wykonawczej i sterującej procesora oraz ich funkcje.
Jednostka wykonawcza
- Zadaniem jednostki wykonawczej jest wykonywanie operacji arytmetycznych i logicznych w zależności od wewnętrznych sygnałów sterujących.
- Składa się z rejestru części wykonawczej oraz z bloku arytmetyczno-logicznego (ALU)
ALU – uniwersalny układ kombinacyjny, który realizuje operacje matematyczne i logiczne w zależności od zaprogramowanej operacji -> rozkazy umieszczonego w programie
Rejestr części wykonawczej – (tu moje wypociny) zbiór rejestrów ogólnego przeznaczenia, segmentowych, wskaźnikowych i indeksowych, które są potrzebne zarówno dla ALU jak i dla Układu Sterowania znajdującego się w jednostce sterującej procesora
Jednostka sterująca po pobraniu z pamięci kodu rozkazu dekoduje ten rozkaz i na jego podstawie generowane są wewnętrzne i zewnętrzne sygnały sterujące. Jednostka sterująca składa się z:
Rejestru rozkazów – (moje domysły) w rejestrach tych są przechowywane rozkazy bądź adresy rozkazów
Dekodera rozkazów – (moje domysły) tutaj rozkaz zostaje zdekodowany, czyli przetłumaczony dla układu sterowania.
Układ sterowania – złożony automat sekwencyjny, generujący odpowiednie ciągi słów podawanych na wejścia sterujące układu ALU. Cechy:
- konieczność posiadania dużej liczby stanów dostosowanych do wymaganej liczby wykonywanych rozkazów
- konieczność zapewnienia synchronizacji pracy układu sterowania i wykonawczego
Układy sterowania są to w praktyce generatory sekwencyjne oraz układy mikroprocesorowe.
14. Rodzaje, charakterystyka i przeznaczenie rejestrów procesora.
Rejestry procesora dzielą się na:
- Rejestry powszechnego stosowania – przeznaczone do przechowywania dowolnych danych i wykonywania operacji (arytmetycznych i logicznych). Rodzaje:
- AX – akumulator
- BX – rejestr bazowy
- CX - licznik odliczający rozkazy
- DX – wskaźnik adresów w rozkazach wej/wyj
- Rejestry segmentowe – zbiór wskaźników do miejsc , w których znajduje się dany rozkaz, argument, rej. te są użyteczne przy obsłudze stosów. Rodzaje:
- Rejestr CS – wskazanie bloku pamięci, w którym znajduje się kolejny do wykonania rozkaz
- Rejestr DS. – wskazuje argumenty
- Rejestr ES – stosowany do różnych pojawiających się otrzeb
- Rejestr SS – obsługa stosów
- Rejestry wskaźnikowe i indeksowe – główne zastosowanie to wskazywanie obszarów pamięci. Rodzaje:
- SI – rejestr indeksowy źródła
- DI – rejestr indeksowy przeznaczenia
- BP – wskaźnik bazy
- SP – wskaźnik stosu
15. Model pamięci RAM (4x4) z jednym i dwoma wejściami wybierającymi, wady i zalety obu rozwiązań.
Aby zorganizować komórki pamięci w sprawnie funkcjonujący układ, należy je odpowiednio zaadresować. Najprostszym sposobem jest zorganizowanie pamięci liniowo - jest to tak zwane adresowanie 2D. Do każdej komórki podłączone jest wejście, sygnał wybierania pochodzący z dekodera oraz wyjście. Nieco innym sposobem jest adresowanie przy użyciu tzw. matrycy 3D. Pamięć organizuje się tutaj dzieląc dostępne elementy na wiersze i kolumny. Dostęp do pojedynczego elementu pamiętającego można uzyskać po zaadresowaniu odpowiedniego wiersza i kolumny. Dlatego też komórka RAM obok wejścia i wyjścia musi dysponować jeszcze dwoma sygnałami wybierania, odpowiednio z dekodera kolumn i wierszy. Zaletą pamięci adresowanej liniowo jest prosty i szybszy dostęp do poszczególnych bitów niż w przypadku pamięci stronicowanej (3D), lecz niestety, przy takiej organizacji budowanie większych modułów RAM jest kłopotliwe. Dlatego też w przemyśle stosuje się zazwyczaj układy pamięci zorganizowanej w matrycę 3D, pozwala to na nieskomplikowane tworzenie większych modułów o jednolitym sposobie adresowania. W komputerach PC procesor uzyskuje dostęp do danych zawartych w pamięci DRAM w pakietach o długości 4-bitów (z pojedynczego rzędu), które są przesyłane sekwencyjnie lub naprzemiennie (tzw. przeplot - interleave). Pomimo tego, że ostatnie trzy bity są dostarczane wraz z taktem zegara, to konieczność odpowiedniego przygotowania transmisji danych sprawia, że przed pierwszym bitem "wstawiony" zostaje jeden cykl oczekiwania. Taki sposób transferu danych można oznaczyć jako cykl 2-1-1-1.
16. Istota pamięci wirtualnej, mechanizm tłumaczenia adresu wirtualnego na rzeczywisty.
Pamięć wirtualna jest techniką programową a także sprzętową gospodarowania pamięcią operacyjną RAM pozwalającą na przydzielanie pamięci dla wielu procesów, zwalnianie jej i powtórne przydzielanie.
Mechanizm umożliwia przydzielenie procesom więcej pamięci niż rzeczywista ilość pamięci fizycznej zainstalowanej w komputerze poprzez przeniesienie danych z ostatnio nie używanej pamięci do pamięci masowej (np. twardego dysku), w sytuacji gdy procesor odwołuje się do danych z pamięci przeniesionej na dysk przesuwa się te dane do pamięci w wolne miejsce, a gdy brak wolnej pamięci zwalnia się ją przez wyżej opisane przerzucenie jej na dysk.
Najczęściej spotykane są dwa sposoby przechowywania danych zrzuconych z pamięci fizycznej na dysk. Pierwszy, stosowany w systemach rodziny Windows polega na zapisie pamięci w pliku (znajdującym się na ustalonej partycji komputera). Drugi, stosowany w systemach z rodziny UNIX to utworzenie osobnej partycji wymiany (partycji swap) przeznaczonej wyłącznie na pamięć wirtualną. Zapewnia to szybszy dostęp do danych niż pierwsze rozwiązanie (głównie ze względu na ominięcie obsługi systemu plików).
Pamięć wirtualna jest najczęściej zaimplementowana przy użyciu stronicowania. Procesor gospodaruje wówczas pamięcią w blokach będących wielokrotnością strony o jednakowej wielkości (w procesorach Pentium 4 kB lub 4 MB). Procesy (poza procesem zarządzania pamięcią) "widzą" pamięć poprzez adresy logiczne. Gdy proces rezerwuje pamięć proces rządzący pamięcią przydziela blok opisujący parametry tej pamięci w tablicy stron (adres logiczny, wielkość, adres fizyczny, warunki użycia i inne informacje umożliwiające gospodarowaniem pamięcią).
Adresy logiczne są tłumaczone na ich fizyczne odpowiedniki przy pomocy tablicy stron. Ta znajdująca się w RAM struktura zawiera informacje o tym, gdzie w danej chwili znajduje się dana strona. Tablica stron pamięci jest najczęściej buforowana poprzez bufor TLB, zawierający kilkadziesiąt (zwykle ok. 32) wpisów, do których w ostatnim czasie nastąpiło odwołanie.
Pamięć wirtualna może także działać w innych trybach - najpopularniejsze z nich to segmentacja i stronicowanie z segmentacją.
Pierwsza implementacja tej techniki (w systemie UNIX) pojawiła się w systemie 3BSD, napisanym na UCB.
17. Charakterystyka architektury i funkcjonowania pamięci CACHE drugiego poziomu (Czy cała zawartość pamięci operacyjnej może być ładowana do pamięci CACHE? Uzasadnić każdą z odpowiedzi.)
System pamięci kieszeniowej cache składa się z trzech zasadniczych elementów:
- banku danych pamięci cache (pamięci danych) przeznaczonego do przechowywania zapisywanej i odczytywanej informacji,
- katalogu pamięci cache (tzw. TAG-RAM) służącego do szybkiego sprawdzania, czy poszukiwana informacja znajduje się w pamięci danych,
- sterownika pamięci cache, którego zadaniem jest zapewnienie współpracy pamięci kieszeniowej z systemem, a przede wszystkim zapewnienie zgodności zawartości pamięci cache z pamięcią główną.
Pamięci typu CACHE są wyspecjalizowanymi pamięciami współpracującymi z pamięcią operacyjną i procesorem. Służą one buforowaniu generowanych z procesora instrukcji i optymalizacji wykonywania zadań. Jest to pamięć o najszybszym dostępie, ale o najmniejszej pojemności.
Pamięć drugiego poziomu, o rozmiarze od 64KB do 12MB, 2,4 lub 8-drożna, o długości linii od 64 do 128 B, jest wykorzystywana jako bufor pomiędzy stosunkowo bardzo wolną pamięcią RAM a jądrem procesora i pamięcią cache L1. Na bardzo starych procesorach, jak np. Pentium, Pentium II była tylko pamięć poziomu pierwszego; pamięć poziomu drugiego znajdowała się na płycie głównej. Obecność pamięci drugiego poziomu powoduje duży wzrost wydajności w wielu aplikacjach - dzieje się tak, ponieważ dane poddawane obróbce muszą być pobierane z pamięci RAM, która ma opóźnienia rzędu kilkudziesięciu-kilkuset nanosekund. Dzisiejsze procesory są wyposażone w złożone układy przewidywania, jakie dane będą potrzebne - dane te są pobierane z wyprzedzeniem do pamięci cache, która ma opóźnienia rzędu kilku-kilkunastu nanosekund, co znacznie skraca czas oczekiwania procesora na dane do oblicze
18. Charakterystyka czynników wpływających na szybkość wykonywania rozkazów przez procesor.
Pobieranie instrukcji z rejestru instrukcji IR do dalszego przetwarzania (dekodowania, wykonania) odbywa się z różna prędkością w zależności od:
* trybu adresowania,
* liczby argumentów,
* czasu ich pobierania z pamięci,
* liczby taktów zegara w jakich wykonywana jest instrukcja.
Również w różnym tempie odbywa się dostarczanie instrukcji do rejestru rozkazów IR w zależności od obciążenia szyny danych. Mogą zatem powstawać sytuacje, w których dekoder instrukcji czeka na instrukcję w IR a układ pobierania instrukcji nie może jej na czas dostarczyć bo szyna danych jest akurat zajęta innymi transmisjami albo sytuacje w których szyna i pamięć są gotowe i mogą dostarczyć instrukcję, natomiast procesor jest jeszcze zajęty przetwarzaniem instrukcji poprzedniej.
W obu przypadkach jest konieczność wstrzymania pracy niektórych bloków poprzez wygenerowanie martwych cykli ich pracy, tzn. czynności polegających na nie zrobieniu niczego w danym cyklu zegara.
Aby martwych cykli pracy pamięci i ALU było jak najmniej stosuje się kolejkę instrukcji.
Jeżeli przemieszczenie wypadnie większe od wielkości segmentu to procesor automatycznie wykryje błąd przekroczenia segmentu i przejdzie w tryb obsługi tego błędu (tzw. wyjątek).
19. Szeregowanie procesów, jakie algorytmy są stosowane w szeregowaniu procesów w systemach operacyjnych.
Algorytm szeregowania to algorytm jak rozdzielić czas procesora i dostęp do innych zasobów pomiędzy zadania, które w praktyce zwykle o te zasoby konkurują. Najczęściej spotykane algorytmy szeregowania:
- FIFO - zadanie wykonuje się aż nie zostanie wywłaszczone przez siebie lub inne zadanie o wyższym priorytecie
- planowanie rotacyjne (Robin-round) - każde z zadań otrzymuje kwant czasu; po spożytkowaniu swojego kwantu zostaje wywłaszczone i ustawione na końcu kolejki
- planowanie sporadyczne - ten algorytm pomaga pogodzić wykluczające się reguły dotyczące szeregowania zadań okresowych i nieokresowych
Mniej używane algorytmy szeregowania:
- FCFS (pierwszy przyszedł pierwszy wykonany) - Algorytm ten dokonuje najsprawiedliwszego przydziału czasu (każdemu według potrzeb), jednak powoduje bardzo słabą interakcyjność systemu - pojedynczy długi proces całkowicie blokuje system na czas swojego wykonania, gdyż nie ma priorytetów zgodnie z którymi mógłby zostać wywłaszczony. Algorytm ten stosuje się jednak z powodzeniem w systemach wsadowych, gdzie operator ładuje zadania do wykonania, a one wykonują się do skutku
- SJF (najpierw najkrótsze zadanie) - Jest algorytmem optymalnym ze względu na najkrótszy średni czas oczekiwania. W wersji z wywłaszczaniem, stosowana jest metoda: najpierw najkrótszy czas pracy pozostałej do wykonania. Problemem tego algorytmu jest głodzenie długich procesów - może się zdarzyć, że cały czas będą nadchodzić krótsze procesy, a wtedy proces dłuższy nigdy nie zostanie wykonany.
Planowanie długoterminowe. Decyzja o dodaniu procesu do puli procesów wykonywanych (systemy wsadowe).
Planowanie średnioterminowe. Decyzja o dodaniu (usunięciu) procesu do puli procesów częściowo lub całkowicie obecnych w pamięci -Określa stopień wieloprogramowości.
Planowanie krótkoterminowe. Decyzja o przyznaniu (usunięciu) procesu do puli procesów częściowo lub całkowicie obecnych w pamięci - Związane z wymianą i zarządzaniem pamięcią.
Planowanie dysku. Decyzja o wyborze żądania we-wy spośród żądań zgłoszonych przez procesy.
W interakcyjnych systemach z podziałem czasu planowanie długoterminowe (często również planowanie średnioterminowe) może nie występować. Przykład: Linux.
Algorytm wywłaszczający - Algorytm, który może przerwać wykonanie procesu i przenieść go z powrotem do kolejki.
Algorytm niewywłaszczający - Algorytm, w którym procesy przełączają się dobrowolnie. Proces aktywny (wykonujący się) jest przenoszony do kolejki procesów oczekujących tylko wtedy, gdy sam przerwie (wstrzyma, zawiesi) swe działanie; dopóki tego nie uczyni (lub nie zakończy działania), żaden inny proces nie otrzyma dostępu do procesora
20. Synchronizacja procesów, jakie metody synchronizacji procesów można wykorzystać w programach komputerowych.
Synchronizacja procesów, koordynowanie procesów (angielskie process synchronization, process coordination), zabiegi mające na celu ustalenie właściwej kolejności działania procesów współpracujących, w szczególności procesów korzystających ze zmiennych dzielonych. Do synchronizacji służą rozmaite mechanizmy programowe implementowane przez jądro systemu operacyjnego, takie jak semafory, monitory, zamki, regiony krytyczne, zmienne warunkowe, znaczniki czasu i bariery.
Synchronizacja procesów za pomocą wspólnych zmiennych
Zanim poznamy wyspecjalizowane narzędzia programistyczne służące do synchronizacji procesów, spróbujmy rozwiązać problem synchronizacji procesów używając zwykłych konstrukcji programistycznych. Procesy mogą synchronizować swoje działania modyfikując współdzielone zmienne. Spróbujemy rozwiązać problem synchronizacji procesów na przykładzie problemu producenta-konsumenta i sekcji krytycznej.
Semafory
Nazwa dobrze oddaje naturę semaforów -- jest to mechanizm synchronizacji idealnie pasujący do rozwiązywania problemu sekcji krytycznej, a jego działanie przypomina działanie semafora kolejowego. Wyobraźmy sobie wielotorową magistralę kolejową, która na pewnym odcinku zwęża się do k torów. Pociągi jeżdżące magistralą to procesy. Zwężenie to uogólnienie sekcji krytycznej. Na zwężonym odcinku może znajdować się na raz maksymalnie k pociągów, każdy na oddzielnym torze. Podobnie jak w przypadku sekcji krytycznej, każdy oczekujący pociąg powinien kiedyś przejechać i żaden pociąg nie powinien stać, jeżeli jest wolny tor. Semafor to specjalna zmienna całkowita, początkowo równa k. Specjalna, ponieważ (po zainicjowaniu) można na niej wykonywać tylko dwie operacje:
P -- Jeżeli semafor jest równy 0 (semafor jest opuszczony), to proces wykonujący tę operację zostaje wstrzymany, dopóki wartość semafora nie zwiększy się (nie zostanie on podniesiony). Gdy wartość semafora jest dodatnia (semafor jest podniesiony), to zmniejsza się o 1 (pociąg zajmuje jeden z k wolnych torów).
V -- Wartość semafora jest zwiększana o 1 (podniesienie semafora). Jeżeli jakiś proces oczekuje na podniesienie semafora, to jest on wznawiany, a semafor natychmiast jest zmniejszany.
Istotną cechą operacji na semaforach jest ich niepodzielność. Jeżeli jeden z procesów wykonuje operację na semaforze, to (z wyjątkiem wstrzymania procesu, gdy semafor jest opuszczony) żaden inny proces nie wykonuje w tym samym czasie operacji na danym semaforze. Aby zapewnić taką niepodzielność, potrzebne jest specjalne wsparcie systemowe lub sprzętowe.
Rozwiązanie problemu sekcji krytycznej za pomocą semaforów jest banalnie proste. Wystarczy dla każdej sekcji krytycznej utworzyć odrębny semafor, nadać mu na początku wartość 1, w sekcji wejściowej każdy proces wykonuje na semaforze operację P, a w sekcji wyjściowej operację V. Wymaga to jednak od programisty pewnej dyscypliny: Każdej operacji P musi odpowiadać operacja V i to na tym samym semaforze. Pomyłka może spowodować złe działanie sekcji krytycznej.
Kolejki komunikatów przypominają uporządkowane skrzynki na listy. Podstawowe dwie operacje, jakie można wykonywać na kolejce, to wkładanie i wyjmowanie komunikatów (pakietów informacji) z kolejki. Komunikaty są uporządkowane w kolejce na zasadzie FIFO (ang. first in, first out). Włożenie powoduje dołączenie komunikatu na koniec kolejki, a pobranie powoduje wyjęcie pierwszego komunikatu z kolejki. Jeżeli kolejka jest pusta, to próba pobrania komunikatu powoduje wstrzymanie procesu w oczekiwaniu na komunikat.
Możliwych jest wiele różnych implementacji kolejek komunikatów, różniących się zestawem dostępnych operacji i ew. ograniczeniami implementacyjnymi. Pojemność kolejki może być ograniczona. Wówczas próba włożenia komunikatu do kolejki powoduje wstrzymanie procesu w oczekiwaniu na pobranie komunikatów. Niektóre implementacje mogą udostępniać nieblokujące operacje wkładania/pobierania komunikatów -- wówczas zamiast wstrzymywania procesu przekazywana jest informacja o niemożności natychmiastowego wykonania operacji. Możliwe jest też selektywne pobieranie komunikatów z kolejki.
Monitory to przykład strukturalnego mechanizmu synchronizacji wbudowanego w języki programowania wysokiego poziomu. Monitor to rodzaj klasy, której metody stanowią sekcję krytyczną. (Mówiąc o klasach, pomijamy tutaj zjawisko dziedziczenia.) Atrybuty monitora są dostępne jedynie wewnątrz (metod) monitora. Konstrukcja monitora zapewnia, że tylko jeden proces na raz może znajdować się w monitorze. Pozostałe procesy oczekują w kolejce (FIFO). Jeśli jakiś proces chce wejść do monitora, który jest właśnie zajęty, to jest on wstawiany na koniec kolejki procesów oczekujących na wejście do monitora. Jeśli proces opuszcza monitor, a inne procesy czekają w kolejce na wejście do monitora, to pierwszy proces z kolejki wchodzi do monitora.
21. Zakleszczenie procesów, jakie metody postępowania z zakleszczeniami są stosowane we współczesnych systemach operacyjnych.
Zakleszczenie (ang. deadlock) jest pojęciem opisującym sytuację, w której co najmniej dwie różne akcje czekają na siebie nawzajem, więc żadna nie może się zakończyć.
Zapobieganie, unikanie i likwidowanie zakleszczeń
Kluczowy i najważniejszy w zapobieganiu zakleszczeniom jest etap projektowania aplikacji oraz systemu. Zakleszczenie może wystąpić, jeśli chociaż jeden z czterech wymienionych warunków dotyczących zakleszczenia nie zostanie spełniony.
Wzajemne wykluczenie - nie jest możliwe całkowite zapobieżenie tej sytuacji, ponieważ obsługa urządzeń w większości przypadków realizowana jest w trybie wyłączności.
Trzymanie zasobu i oczekiwanie - zadanie może rozpocząć działanie dopiero w momencie dostępności wszystkich zasobów niezbędnych do jego zakończenia. Metoda ta jest podatna na zagłodzenie, dla procesów które żądają wielu zasobów. Środkiem zaradczym może być tymczasowe zwiększanie priorytetu takiego procesu po odrzuceniu żądania przydziału zasobu.
Cykliczne oczekiwanie - ustalenie określonej kolejności w jakiej muszą wystąpić żądania przydzielania konkretnych zasobów (Zasoby są numerowane, indeksowane lub priorytetyzowane co określa jedyną możliwą kolejność ich zajmowania)
Wywłaszczanie zasobu - rozwiązaniem najprostszym jest arbitralne zakończenie zadania; przy tym rozwiązaniu system powinien kierować się "minimalizowaniem strat" np. przez wybieranie takich procesów, które mają bardzo krótki czas uruchomienia; znacznie trudniejsze, ze względu na spójność struktur danych związanych z zasobem, jest wywłaszczenie zadania bez kończenia go.
22. Pamięć wirtualna, jakie strategie wymiany informacji w pamięci operacyjnej są stosowane w systemach operacyjnych
Pamięć wirtualna zapewnia wykonywanym na komputerze procesom wrażenie posiadania własnej pamięci RAM, niezależnej od innych procesów. Ułatwia to tworzenie aplikacji, a także sztuczne zwiększenie ilości dostępnej pamięci poprzez wykorzystanie części dysku twardego do tego celu.
Prawie wszystkie istniejące obecnie implementacje dzielą wirtualną przestrzeń adresową procesu na strony. Strona jest to obszar ciągłej pamięci o stałym rozmiarze, zazwyczaj 4 KB. Systemy, gdzie zapotrzebowanie na wielkość wirtualnej przestrzeni adresowej jest większe lub dysponujące większymi zasobami pamięci operacyjnej mogą używać stron o większym rozmiarze. Rzeczywista pamięć operacyjna podzielona jest na ramki, których rozmiar odpowiada wielkości stron. System operacyjny według uznania może przydzielać ramkom strony pamięci lub pozostawiać je puste.
Tablice stron
Każde odwołanie przez dany proces do wirtualnego adresu pamięci powoduje jego przetłumaczenie na adres fizyczny przy pomocy tablicy stron. Wpisy w tablicy stron przechowują namiary na ramkę, gdzie aktualnie znajduje się dana strona lub znacznik informujący, że dana strona znajduje się aktualnie na dysku twardym.
Dynamiczne tłumaczenie adresów
Dynamiczne tłumaczenie adresów jest zadaniem głównego procesora. Najczęściej wykonywane jest przez sprzętowy komponent zwany Memory management unit (ang. układ zarządzania pamięcią) obsługujący każde odwołanie do pamięci. MMU przeszukuje aktualną tablicę stron w poszukiwaniu ramki zawierającej żądane dane i przekazuje rzeczywisty adres pozostałym częściom procesora odpowiedzialnym za wykonanie instrukcji. Jeśli MMU stwierdzi, że dana strona nie znajduje się w pamięci, generuje przerwanie braku strony, które musi zostać obsłużone przez zarządcę pamięci systemu operacyjnego.
Zarządca pamięci
Ta część systemu operacyjnego odpowiada za tworzenie i zarządzanie tablicami stron, a także obsługuje przerwanie braku strony generowane przez MMU. W przypadku jego wystąpienia zarządca poszukuje wskazanej strony na dysku twardym (pamięć wymiany), ładuje ją do aktualnie wolnej ramki, uaktualnia tablicę stron i nakazuje MMU ponowne przetłumaczenie adresu. Ładowanie brakujących stron z dysku jest powolnym procesem, dlatego jeśli system dysponuje wystarczającą liczbą ramek, dąży do minimalizacji wystąpień błędów braku strony.
Gdy ilość dostępnej pamięci operacyjnej jest na wyczerpaniu, zarządca może podjąć decyzję o przeniesieniu części stron z ramek na dysk. Do wyznaczenia niepotrzebnych stron stosowany jest algorytm LRU (Least Recently Used), w którym na dysk przenoszone są najrzadziej używane strony jako te, których najprawdopodobniej proces będzie potrzebować najpóźniej.
23. Strategie przydziału segmentów pamięci stosowane w systemach operacyjnych.
Gdy system operacyjny przydziela procesowi obszar pamięci, to zwykle może go przydzielić z jednego z wielu obszarów wolnej pamięci. Oczywiście obszar wolnej pamięci, z którego przydzielamy pamięć musi być wystarczająco duży. Istnieje kilka strategii wybierania, z którego obszaru przydzielić pamięć.
First-Fit
Jest to najprostsza możliwa strategia. Wybierany jest pierwszy (pod względem adresów) wolny obszar, który jest wystarczająco duży.
Best-Fit
Wybieramy najmniejszy wolny obszar, który jest wystarczająco duży. Pomysł, który się kryje za tą strategią jest następujący: Wolny obszar jest zwykle większy niż przydzielany obszar, więc po przydzieleniu część wolnego obszaru pozostaje wolna. W przypadku strategii best-fit, taka "końcówka" jest możliwie najmniejsza. Jeśli w przyszłości nie wykorzystamy jej, to straty z powodu fragmentacji zewnętrznej będą możliwie małe.
Worst-fit
Przydzielamy pamięć zawsze z największego wolnego obszaru (oczywiście, o ile jest on wystarczająco duży). W przypadku tej strategii, część obszaru, która pozostaje wolna jest możliwie jak największa. Jest więc szansa, że będzie można ją jeszcze wykorzystać bez konieczności kompaktyfikacji.
24. System plików i jego realizacja w systemie komputerowym.
System plików – metoda przechowywania plików, zarządzania plikami, informacjami o tych plikach, tak by dostęp do plików i danych w nich zgromadzonych był łatwy dla użytkownika systemu.Systemy plików stosuje się dla różnych nośników danych, takich jak dyski, dyskietki, a także w strumieniach danych, sieciach komputerowych, pamięciach. We współczesnych systemach operacyjnych bezpośrednie operowanie na danych w plikach zarezerwowane jest tylko dla systemu operacyjnego, aplikacje mają dostęp tylko do operacji na plikach i mają zabroniony bezpośredni dostęp do nośnika danych.
Rodzaje:
Dyskowy system plików – "normalny" system plików pozwalający na zarządzanie danymi na stacjonarnych nośnikach danych, takich jak twarde dyski. Każdy system posiada swój własny system plików (np. Linux – ext2; Windows NT,XP,Vista,Seven – NTFS; Windows 95,98,ME – FAT,FAT32 itd.).
Systemy dziennikujące (lub księgujące, ang. journaling) – systemy z mechanizmem księgującym, zwiększającym bezpieczeństwo danych i umożliwiającym szybkie przywrócenie sprawności systemu po awarii. Mechanizm taki posiadają nowsze systemy plików (np. NTFS, HFS+ lub ext3).
Sieciowy system plików – w zasadzie jest to protokół umożliwiający przesyłanie poleceń do serwera przez sieć oraz wykonywanie operacji na odległość. Informacje są z powrotem przekazywane z serwera do klienta. Dzięki takiemu rozwiązaniu użytkownik nie widzi żadnej różnicy między pracą na sieciowym systemie plików a pracą na lokalnym systemie plików. Najbardziej znane to NFS, Coda, AFS (System plików Andrew'sa), SMB oraz NCP (Novella).
Specjalne systemy plików (Wirtualne systemy plików) – nie umożliwiają zarządzania danymi, np. system /proc (w Linuksie) dostarcza interfejsu, który umożliwia dostęp do niektórych struktur jądra.
Systemy oparte na bazie danych – systemy plików, w których pliki są identyfikowane na podstawie swojej charakterystyki (np. autora, typu czy tematu, którego dotyczą) – jak w bazach danych.
Popularne:
LINUX –minix,ext (extendet file system) ext2i 3, xfs
DOS- fat,fat16
Windows- fat32,ntfs
25. Sposób wyznaczania trasy dla przesłania pakietu przy wykorzystaniu protokołów routingu dynamicznego.
Wymiana informacji między ruterami odbywa się zgodnie z określonymi algorytmami i przy wykorzystaniu protokołów routingu dynamicznego. Protokoły te muszą uwzględniać w przekazywanych informacjach dane, które pozwolą optymalizować i upraszczać trasy. Muszą także umieć wykryć awarie lub przeciążenia na części łączy. Przed protokołem stawiane jest również wymaganie, by zapobiegał zapętleniu drogi przy automatycznej analizie tras. Jednocześnie, wymieniane informacje o trasach nie mogą powodować przeciążeń łączy. Podstawą trasowania są tablice, które w jednym ruterze mogą być tworzone za pomocą kilku protokołów używanych na różnych łączach fizycznych rutera. Wykorzystywany jest algorytm Dijkstry, służy on do znajdywania długości najkrótszych ścieżek od ustalonego źródła do pozostałych wierzchołków w grafie Algorytm pozwala na przypisanie krawędziom nieujemnych wartości zwanych wagami i określa odległość między dwoma wierzchołkami jako sumę wag wzdłuż ścieżki między wierzchołkami. Algorytm Dijkstry oblicza najkrótsze ścieżki w grafie, wykorzystując wagi krawędzi jako miarę dystansu. Ścieżka z najmniejszą liczbą krawędzi może nie być ścieżką o najmniejszej wadze.
26. Porównanie protokołów routingu dynamicznego: RIP oraz OSPF.
Warstwie Internetu stosu TCP/IP
RIP - nawołuje każdy router do wysyłania całej lub części swojej tablicy routingu tylko do swoich bezpośrednich sąsiadów – distance vektor – czyli wybrany będzie droga pomiędzy routerami o najlepszych właściwościach łacza
OSPF - ) wysyłają informacje o routingu do wszystkich routerów kreując w ten sposób mapę całej sieci – link state –wybrana będzie najkrótsza droga nawet gdby łącza były dużo wolniejsze
27. Rodzaje i charakterystyka metod unikania kolizji stosowane w sieciach przewodowych oraz bezprzewodowych.
Dla sieci przewodowych:
Aby umożliwić w takich sytuacjach urządzeniom transmisję danych, stosuje się metodę współdzielenia nośnika z detekcja kolizji CSMA/CD (ang. Carrier Sense Multpile Access/Collision Detection). Składa się ona z kilku etapów.
Sprawdzenie przez stację, która ma zamiar wysyłać dane czy medium transmisyjne nie jest zajmowane przez któreś z urządzeń - Collison Detect.
Rozpoczęcie transmisji ramką minimalnej długości.
Jeśli medium jest wolne to więcej niż jedna stacja może zacząć nadawać na podstawie informacji od Multpile Access. Wynika to stąd, że czas opóźnienia, który występuje między najdalszymi hostami oddalonymi od siebie zgodnie z zaleceniem IEEE uniemożliwia na tyle szybkie wykrycie kolizji by im całkowicie zapobiec. Czas potrzebny do ich wykrycie to 51,2 ms, co pozwala na wysłanie w sieci 10Mb/s 64 bajtów danych. Jeżeli stacja potrzebuje wysłać mniej, to ramka danych jest uzupełniana zerami. Wysyłanie krótszych ramek nie ma sensu, gdyż w przypadku wystąpienia kolizji pozostanie ona przez stację nadawczą nie zauważona i stacja nie będzie świadoma że gubi ramki.
W czasie nadawania oba urządzenia sprawdzają obecność zniekształceń danych Collison Detect, które wysłały.
Po zakończeniu nadawania urządzenia nadające nasłuchują, czy transmisja przebiegła domyślnie. Jeśli któreś z urządzeń wykryło kolizję jako pierwsze, to emituje odpowiedni sygnał (prąd o podwyższonym natężeniu), po którym nadający stwierdzają, że ich transmisja nie dotarła do celu.
Każde z urządzeń, które odebrało informację o kolizji i chce znów nadawać wstrzymuje się na losowo wybrany okres czasu, po czym znowu sprawdza, czy medium nie jest zajęte i jeśli nie jest, to zaczyna od nowa transmisję.
Dla sieci bezprzewodowych:
CSMA/CA (ang. Carrier Sense Multiple Access with Collision Avoidance) to protokół wielodostępu do łącza ze śledzeniem stanu nośnika i unikaniem kolizji. Jest to rozszerzona wersja CSMA.
Sposób arbitrażu w przypadku, gdy kilka urządzeń próbuje wysyłać informacje na tym samym łączu w tym samym czasie jest następujący: każde urządzenie przed próbą wejścia na linię wysyła sygnał próbny (pilot) i jeżeli nie zaszła kolizja z sygnałem innego urządzenia – uzyskuje zgodę na nadawanie. Należy wspomnieć, że w przypadku zapełnienia łącza protokół ten generuje duże straty czasowe. Dlatego powstały mechanizmy CSMA/AMP i CSMA/CA+AMP (ang. AMP – Arbitration on Message Priority, czyli arbitraż w oparciu o priorytet wiadomości).
Protokół CSMA/CA ma zastosowanie w bezprzewodowych sieciach lokalnych. Stacja odbierająca dane od terminali i zarządzająca ruchem to punkt dostępowy.
28. Rodzaje i charakterystyka technologii stosowanych w sieciach rozległych.
Połączenie z siecią WAN może zostać utworzone w oparciu o następujące protokoły: ADSL, ATM, DSL, Frame Relay, HDLC, ISDN, PPP, SMDS, X.25[1]. Można je podzielić na następujące grupy technik łączenia[1]:
komutacja kanałów – PPP, ISDN - polega na przydzieleniu wybranemu połączeniu wybranej sekwencji połączonych kanałów od terminala źródłowego do terminala docelowego
łącza dzierżawione (trwałe, dedykowane) - utworzone przez operatora telekomunikacyjnego dla danego klienta. Łącze dzierżawione transmisji danych ma stałą przepustowość.
komutacja komórek – ATM, SMDS - Dane przesyłane są w porcjach o stałej i niezbyt dużej długości (np. 53 bajty). Możliwe są transmisje z szybkościami rzędu setek Mbit/s i większymi. Technika ta przeznaczona jest dla łączy o bardzo dobrej jakości np. światłowodów.
komutacja pakietów – Frame Relay, X.25- w telekomunikacji sposób transmisji danych polegający na dzieleniu strumienia danych na kawałki (pakiety), a następnie wysyłaniu ich za pomocą łączy komunikacyjnych pomiędzy węzłami sieci. Każdy pakiet podlega osobnemu trasowaniu - może podążać do celu ścieżką niezależną od wcześniejszych pakietów.
29. Charakterystyka stosu protokołów TCP/IP.
Model TCP/IP (Transmission Control Protocol / Internet Protocol) – teoretyczny model warstwowej struktury protokołów komunikacyjnych. Model TCP/IP został stworzony w latach 70. XX wieku w DARPA, aby pomóc w tworzeniu odpornych na atak sieci komputerowych. Potem stał się on podstawą struktury Internetu.
Podstawowym założeniem modelu TCP/IP jest podział całego zagadnienia komunikacji sieciowej na szereg współpracujących ze sobą warstw (ang. layers). Każda z nich może być tworzona przez programistów zupełnie niezależnie, jeżeli narzucimy pewne protokoły według których wymieniają się one informacjami. Założenia modelu TCP/IP są pod względem organizacji warstw zbliżone do modelu OSI. Jednak liczba warstw jest mniejsza i bardziej odzwierciedla prawdziwą strukturę Internetu. Model TCP/IP składa się z czterech warstw.
1. Warstwa aplikacji
Warstwa procesowa czy warstwa aplikacji (ang. process layer) to najwyższy poziom, w którym pracują użyteczne dla człowieka aplikacje takie jak, np. serwer WWW czy przeglądarka internetowa. Obejmuje ona zestaw gotowych protokołów, które aplikacje wykorzystują do przesyłania różnego typu informacji w sieci.
2. Warstwa transportowa
Warstwa transportowa (ang. host-to-host layer) zapewnia pewność przesyłania danych oraz kieruje właściwe informacje do odpowiednich aplikacji. Opiera się to na wykorzystaniu portów określonych dla każdego połączenia. W jednym komputerze może istnieć wiele aplikacji wymieniających dane z tym samym komputerem w sieci i nie nastąpi wymieszanie się przesyłanych przez nie danych. To właśnie ta warstwa nawiązuje i zrywa połączenia między komputerami oraz zapewnia pewność transmisji.
3. Warstwa Internetu
Warstwa Internetu lub warstwa protokołu internetowego (ang. internet protocol layer) to sedno działania Internetu. W tej warstwie przetwarzane są datagramy posiadające adresy IP. Ustalana jest odpowiednia droga do docelowego komputera w sieci. Niektóre urządzenia sieciowe posiadają tę warstwę jako najwyższą. Są to routery, które zajmują się kierowaniem ruchu w Internecie, bo znają topologię sieci. Proces odnajdywania przez routery właściwej drogi określa się jako trasowanie.
4. Warstwa dostępu do sieci
Warstwa dostępu do sieci lub warstwa fizyczna (ang. network access layer) jest najniższą warstwą i to ona zajmuje się przekazywaniem danych przez fizyczne połączenia między urządzeniami sieciowymi. Najczęściej są to karty sieciowe lub modemy. Dodatkowo warstwa ta jest czasami wyposażona w protokoły do dynamicznego określania adresów IP.
Warstwa aplikacji: ADSP (AppleTalk) • APPC • AFP (AppleTalk): 548 • DAP • DLC • DNS: 53 • ed2k • FTAM • FTP: 20, 21 • Gopher • HTTP: 80 • HTTPS: 443 • IMAP: 143 • IRC: 194, 529 • Named Pipes • NCP: 524 • NetBIOS: 137, 138, 139 • NWLink • NBT • NNTP: 119 • NTP: 123 • PAP • POP3: 110 • RPC • RTSP • SNMP: 161, 162 • SMTP: 25 • SMB • SSL/TLS • SSH: 22 • TDI • Telnet: 23 • X.400 • X.500 • XDR • ZIP (AppleTalk)
Warstwa transportowa: ATP (AppleTalk) • NBP (AppleTalk) • NetBEUI • RTP • RTMP (AppleTalk) • SPX • TCP • UDP • SCTP
Warstwa sieciowa: IP • ICMP • IGMP • IPsec • NAT • IPX • NWLink • NetBEUI • DDP (AppleTalk)
Warstwa dostępu do sieci: ARP • 10Base-T • 802.11 WiFi • ADSL • Ethernet • EtherTalk • FDDI • Fibre Channel • ISDN • LocalTalk (AppleTalk) • NDIS • ODI • PPP • RS-232 • SLIP • Token Ring • TokenTalk (AppleTalk) • V.90
UDP
UDP (ang. User Datagram Protocol – Datagramowy Protokół Użytkownika) – jeden z podstawowych protokołów internetowych. Umieszcza się go w warstwie czwartej (transportu) modelu OSI.
Jest to protokół bezpołączeniowy, więc nie ma narzutu na nawiązywanie połączenia i śledzenie sesji (w przeciwieństwie do TCP). Nie ma też mechanizmów kontroli przepływu i retransmisji. Korzyścią płynącą z takiego uproszczenia budowy jest większa szybkość transmisji danych i brak dodatkowych zadań, którymi musi zajmować się host posługujący się tym protokołem. Z tych względów UDP jest często używany w takich zastosowaniach jak wideokonferencje, strumienie dźwięku w Internecie i gry sieciowe, gdzie dane muszą być przesyłane możliwie szybko, a poprawianiem błędów zajmują się inne warstwy modelu OSI. Przykładem może być VoIP lub protokół DNS.
UDP udostępnia mechanizm identyfikacji różnych punktów końcowych (np. pracujących aplikacji, usług czy serwisów) na jednym hoście dzięki portom. UDP zajmuje się dostarczaniem pojedynczych pakietów, udostępnionych przez IP, na którym się opiera. Kolejną cechą odróżniającą UDP od TCP jest możliwość transmisji do kilku adresów docelowych na raz (tzw. multicast).
Pakiety UDP (zwane też datagramami) zawierają oprócz nagłówków niższego poziomu nagłówek UDP. Składa się on z pól zawierających sumę kontrolną, długość pakietu oraz porty: źródłowy i docelowy.
Podobnie jak w TCP, porty UDP zapisywane są na dwóch bajtach (szesnastu bitach), więc każdy adres IP może mieć przypisanych 65536 różnych zakończeń. Z przyczyn historycznych, porty 0-1023 zarezerwowane są dla dobrze znanych usług sieciowych – dla aplikacji użytkownika przydziela się porty od 1024.
30. Istota działania zdalnego wywoływania procedur (RPC) - na wybranym przykładzie.
Istotą działania RPC jest umożliwienie programom wykonywania procedur znajdujących się na innych maszynach. Gdy proces na maszynie A wywołuje procedurę na maszynie B, to następuje jego zawieszenie (możliwa jest też praca w trybie asynchronicznym bez blokowania), a wykonanie procedury przebiega na maszynie B. Informacje od procesu wywołującego do wywoływanego są przenoszone przez sieć za pomocą parametrów, a wracają w postaci wyników procedury . Za interpretację ciągów bajtów przesyłanych najczęściej z użyciem gniazd między współpracującymi maszynami odpowiadają mechanizmy wewnętrzne RPC. Programista nie ma do czynienia z żadnym przekazywaniem komunikatów ani wejściem-wyjściem. W przypadku zdalnego wywołania procedur kluczową rolę odgrywa łącznik. Kiedy klient wywołuje procedurę zdalną, jego działania lokalne sprowadzają się do wywołania procedury jego łącznika. Zadaniem łącznika jest upakowanie parametrów w komunikacie wyjściowym i przekazanie żądania wywołania zdalnej procedury do łącznika serwera. Dopiero łącznik serwera po otrzymaniu zlecenia i parametrów wywołania ze strony klienta wywołuje odpowiednią metodę serwera. Po zakończeniu działania wykonywanej procedury na serwerze zwrócone parametry są upakowywane w komunikacie wyjściowym do łącznika klienta. Łącznik klienta po otrzymaniu odpowiedzi ze strony maszyny serwera przekazuje wyniki do wywołującego modułu klienta. Mechanizm ten jest przezroczysty dla programisty, tzn. identycznie wygląda wywołanie metod lokalnych, jak i zdalnych, przy ukrytej implementacji komunikacji sieciowej, która przy użyciu łączników może być realizowana z wykorzystaniem dowolnych technik komunikacji sieciowej. Może to być zarówno bezpośrednie stosowanie interfejsu gniazd, jak również protokołów warstw wyższych takich jak HTTP.
31. Przegląd paradygmatów programowania.
Paradygmat programowania definiuje sposób patrzenia programisty na przepływ sterowania i wykonywanie programu komputerowego
Programowanie proceduralne to paradygmat programowania zalecający dzielenie kodu na procedury, czyli fragmenty wykonujące ściśle określone operacje.
Programowanie strukturalne to paradygmat programowania zalecający hierarchiczne dzielenie kodu na bloki, z jednym punktem wejścia i jednym lub wieloma punktami wyjścia
Programowanie funkcyjne – odmiana programowania deklaratywnego, w której funkcje należą do wartości podstawowych, a nacisk kładzie się na wartościowanie (często rekurencyjnych) funkcji, a nie na wykonywanie poleceń.
Programowanie imperatywne – paradygmat programowania, który opisuje proces wykonywania jako sekwencję instrukcji zmieniających stan programu.
Programowanie obiektowe — paradygmat programowania, w którym programy definiuje się za pomocą obiektów — elementów łączących stan (czyli dane, nazywane najczęściej polami) i zachowanie (czyli procedury, tu: metody). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań.
Programowanie uogólnione (lub generyczne) – jeden z paradygmatów programowania. Programowanie uogólnione pozwala na pisanie kodu programu bez wcześniejszej znajomości typów danych, na których kod ten będzie pracował. Obecnie wiele języków programowania ma możliwość wykorzystywania uogólnień, np. C++, D, Java oraz Haskell.
Programowanie sterowane zdarzeniami (Programowanie zdarzeniowe) – metodologia tworzenia programów komputerowych, która określa sposób ich pisania z punktu widzenia procesu przekazywania sterowania między poszczególnymi modułami tej samej aplikacji. Programowanie sterowane zdarzeniami jest mocno powiązane ze środowiskami wieloprocesowymi (nie mylić z komputerami wieloprocesorowymi), z graficznymi środowiskami systemów operacyjnych oraz z programowaniem obiektowym.
Programowanie modularne — paradygmat programowania zalecający stosowanie nadrzędności modułów w stosunku do procedur bloków tworzących program
32. Klasa i jej składowe. Klasy abstrakcyjne.
Klasa jest konstrukcją składniową języka zorientowanego obiektowo, która zawiera opis komponentów klasy i implementacje metod klasy.
Klasa to w programowaniu obiektowym częściowa lub całkowita definicja dla obiektów, bądź też zbiór wszystkich obiektów mających wspólną strukturę i zachowanie.
Każda klasa składa się z pewnych elementów (C# przynajmniej, w C++ są chyba tylko 1,2,3,5 z obrazka niżej):
Stałe (1)
Pole (2)
Konstruktor (3)
Właściwości (4)
Metoda (5)
Zdarzenie
Stałe - Do deklarowania zmiennych reprezentujących stałe wartości używamy słowa kluczowego const. Wartości tych nie można zmienić od momentu kompilacji. Stała musi być typu prostego, dostęp do stałych jest niemożliwi za pomocą obiektów.
Pola - Pola są wykorzystywane do przechowywania danych wewnątrz klasy. Pole różni się od stałej w dwóch zasadniczych aspektach: jego wartość jest określana dopiero w czasie wykonywania programu, zaś jego typ nie musi być typem prostym.
Właściwości - Właściwości są wykorzystywane do kontrolowania dostępu do wartości wewnątrz klasy. Programiści języków Java i C++ tworzą właściwości poprzez pisanie metod pełniących rolę akcesorów oraz mutatorów. Kompilator C# sam rozpoznaje specjalne konstrukcje właściwości i obsługuje uproszczoną składnię reprezentowania danych.
Metody - Metody odpowiadają za wykonywanie działań, które definiują zachowanie klas. Metoda składa się z nazwy metody, listy typów i nazw parametrów, wartości zwracanej oraz ciała metody. Z metodami związane jest również pojęcie polimorfizmu. Parametry metod domyślnie są przekazywane przez wartość, oznacza to że do metod trafia sporządzona kopia danych parametru. Zmiana danych w kopii nie będzie miała więc wpływu na oryginalne parametry. Jeżeli przekazany parametr jest typem referencyjnym, metoda otrzyma referencję tego obiektu. Język C# oferuje dwa modyfikatory przekazywania parametrów: ref i out. Oba słowa kluczowe powodują ze do funkcji zostanie przekazany adres parametru. Wybór właściwego modyfikatora zależy od tego czy przekazujemy już zainicjalizowany (jest zarezerwowana pamiec) parametr (ref) do metody, czy parametr, który ma zostać zainicjalizowany (out).
Konstruktory - Konstruktor jest odpowiedzialny za inicjalizację klasy lub obiektu w momencie pierwszego odwołania. Wyróżniamy trzy typy konstruktorów:
konstruktor kopiujący
Prostokat::Prostokat(const Prostokat& ob)
{// konstruktor kopiujący
d=ob.d;
s=ob.s;
}
konstruktor z argumentami
Prostokat::Prostokat(int s,int d)
{// konstruktor z argumentami
this->s=s;
this->d=d;
}
konstruktor z listą inicjacyjną
Prostokat::Prostokat(): d(30),s(150)
{// konstruktor z listą inicjacyjną
}
Komponenty klasy można podzielić na:
• pola składowe, zwane także „atrybutami”, „danymi składowymi”, ”zmiennymi klasy”,
• metody klasy, zwane również ”funkcjami składowymi”, ”funkcjami klasy”, ”procedurami klasy”.
Pola składowe (atrybuty) są to zmienne ze wskazanym typem.
Metody klasy są procedurami (funkcjami) zawierającymi ciągi operatorów języka programowania.
W niektórych językach do pól i metod mogą być dołączone jeszcze definicje typów z zakresom działania w granicach klasy. Pola i metody klasy mogą tworzyć trwałe grupy. W środowiskach Delphi, C++ Builder i w językach Visual Basic .NET, Visual C# .NET taką grupą nazywana jest właściwością klasy (ang. class property). W językach C++, Java i Visual C# struktury programowe są równe klasom. Struktury programowe są interpretowane jako klasy z dostępem publicznym do pól i metod, tj. z możliwością odwołania do pól i metod z każdego miejsca programu. W języku Java oprócz pól i metod klasa może zawierać jeszcze segment stałego kodu wykonywanego przy tworzeniu obiektu danej klasy.
Klasa abstrakcyjna.
Jest to klasa, która nie reprezentuje żadnego konkretnego obiektu. Klasa abstrakcyjna jest po to by ją dziedziczyć. Funkcje klas abstrakcyjnych zawierają cechy, które mogą być cechami kilku klas. Jednocześnie realizacja tej funkcji jest odmienna dla każdej z klas, dlatego w klasie abstrakcyjnej przy tej funkcji umieszczamy słowo virtual. Nie można tworzyć obiektów klas abstrakcyjnych.
33. Zjawisko polimorfizmu.
Polimorfizm (z gr. wielopostaciowość) to mechanizmy pozwalające programiście używać wartości, zmiennych i podprogramów na kilka różnych sposobów. Podczas pisania programu wygodnie jest traktować nawet różne dane w jednolity sposób. Niezależnie czy należy wydrukować liczbę czy napis, czytelniej (zazwyczaj) jest gdy operacja taka nazywa się po prostu drukuj, a nie drukuj_liczbę i drukuj_napis. Jednak napis musi być drukowany inaczej niż liczba, dlatego będą istniały dwie implementacje polecenia drukuj ale nazwanie ich wspólną nazwą tworzy wygodny abstrakcyjny interfejs niezależny od typu drukowanej wartości. Czasami nawet nie trzeba dostarczać różnych implementacji, przykładowo podczas implementacji stosu nie jest bardzo istotne jakiego typu wartości będą na nim przechowywane. Można napisać ogólne algorytmy obsługujące stos i ewentualne ukonkretnienie pozostawić systemowi. Mechanizmy umożliwiające takie udogodnienia nazywane są właśnie polimorfizmem. Wiele mechanizmów polimorficznych można napisać ręcznie, jednak wiąże się to często z koniecznością powielania kodu z jedynie niewielkimi poprawkami, a co za tym idzie rozrost kodu źródłowego i jego zaciemnienie. Istotą polimorfizmu jest to aby to system decydował o szczegółach, nie programista. Przez system należy tu rozumieć kompilator i system czasu wykonania. Niektóre decyzje mogą być podjęte już na etapie kompilacji, mamy wtedy do czynienia z polimorfizmem statycznym (czasu kompilacji). Czasami jednak decyzja musi zostać odwleczona do momentu wykonywania programu - polimorfizm dynamiczny (czasu wykonania). Przykładem statycznego może być przeciążanie operatorów - to którą wersję operatora należy wywołać można ustalić podczas kompilacji, natomiast dynamicznego - metody wirtualne - konkretna wersja metody może być ustalona dopiero w czasie wykonywania programu.
34. Dziedziczenie klas.
Dziedziczenie to niezwykle istotny element wszystkich obiektowo zorientowanych języków programowania. Dość często bowiem zachodzi konieczność budowy hierarchii definiowanych klas (chociażby ze względu na wygodę i przejrzystość kodu). Klasa bazowa (nazywana również super klasą lub klasą-matką) definiuje szkielet konstrukcji rodziny klas. Klasy pochodne (potomne) dziedziczą wszystkie właściwości (to znaczy metody oraz pola danych) swej klasy bazowej. Klasa potomna może oczywiście na nowo implementować odziedziczone metody oraz dodawać nowe funkcje i pola, może jednak pozostać przy odziedziczonej zawartości. Dzięki dziedziczeniu unikamy więc wielokrotnego powtarzania fragmentów kodu. Unikamy ponadto błędów, które w przypadku użycia kolejnej wersji funkcji mogłyby powstawać przez pomylenie któregoś z jej parametrów. Oprócz tego hierarchie klas pomagają w utrzymaniu przejrzystości struktury programu. Oczywiście zbudowanie odpowiedniej hierarchii klas wymaga z reguły wcześniejszego starannego przemyślenia. Z kolei po jej zbudowaniu pozostaje jeszcze nie mniej ważny problem stworzenia optymalnej struktury samego programu.
35. Wzorce (szablony) funkcji i klas.
Wzorce funkcji stosowane są do wykonywania identycznych operacji na różnych typach danych. Programista pisze pojedynczą definicje wzorzec danej funkcji. Kompilator opierając się na typach argumentów dostarczonych w jej wywołaniu, automatycznie generuje oddzielny kod wynikowy funkcji do odpowiedniej obsługi każdego wywołania.
Wzorce klas są nazywane typami parametryzowanymi ponieważ wymagają jednego lub więcej parametrów do określenia, jak dostosować wzorzec „klasy ogólnej” do formy określonych klas wzorcowych. Programista, który pragnie stworzyć szereg klas wzorcowych, może po prostu napisać jedną definicje wzorca klasy. Za każdym razem, gdy potrzebuje nowej realizacji dla określonego typu danych, stosuje prostą, zwięzłą notacje i kompilator tworzy kod źródłowy dla potrzebnej klasy wzorcowe
36. Modelowanie obiektowe.
Modelowanie obiektowe – postrzeganie elementów świata jako obiektów. Obiekty mają nazwy, właściwości, elementy składowe (pomniejsze obiekty). Obiekty są połączone sieciami zależności i przynależności.
Modelowanie obiektowe (ang. object modeling) polega zatem na:
znajdowaniu obiektów w otoczeniu,
opisywaniu struktury i dynamiki działania obiektów,
klasyfikacji obiektów,
opisywaniu struktury powiązań klas obiektów oraz
opisywaniu dynamiki współpracy obiektów podczas funkcjonowania systemu
37. Popularne modele barw wykorzystywane w grafice komputerowej.
RGB
Jeden z modeli przestrzeni barw, opisywanej współrzędnymi RGB. Jego nazwa powstała ze złożenia pierwszych liter angielskich nazw barw: R – red (czerwonej), G, – green (zielonej) i B – blue (niebieskiej), z których model ten się składa. Z połączenia barw RGB w dowolnych kombinacjach ilościowych można otrzymać szeroki zakres barw pochodnych. Zapis koloru jako RGB często stosuje się w informatyce (np. palety barw w plikach graficznych, w plikach html). Najczęściej stosowany jest 24-bitowy zapis kolorów (po 8 bitów na każdą z barw składowych), w którym każda z barw jest zapisana przy pomocy składowych, które przyjmują wartość z zakresu 0-255. W modelu RGB wartość 0 wszystkich składowych daje kolor czarny, natomiast 255 - kolor biały.
CMYK
Cyjan – odcień niebieskiego, ale trochę bledszy i bardziej spłowiały, można go określić jako szarobłękitny lub sinoniebieski. Najbardziej podobne kolory to błękit, szafir i turkus. Nazywanie koloru cyjanowego kolorem "zielononiebieskim" jest błędem wynikającym z niezrozumienia różnic pomiędzy addytywną i subtraktywną metodą mieszania barw. W syntezie addytywnej kolor uzyskany w wyniku połączenia zielonego i niebieskiego.
Magenta – w syntezie addytywnej kolor uzyskany w wyniku połączenia czerwieni i niebieskiego. Najbardziej podobne kolory to purpura, karmazyn i amarant.
Yellow – kolor bardzo podobny do żółtego, jednak trochę bledszy od typowej nasyconej żółcieni. W syntezie addytywnej kolor uzyskany w wyniku połączenia czerwieni i zielonego.
Black – kolor czarny, jednak o niezbyt głębokiej czerni.
Barwy wynikowe w metodzie CMYK otrzymuje się poprzez łączenie barw podstawowych w proporcjach (dla każdej z nich) od 0% do 100%. Farby CMYK to substancje barwiące przepuszczające (lub rozpraszające) światło, czyli barwniki, tak więc łączy się je nie metodą mieszania tylko nakładania warstwami i dlatego barwa wynikowa może mieć od 0% do 400% koloru (czyli kolorów składowych). Na kolory budowane wg CMYK należy patrzeć jak na warstwy kolorowej, przepuszczającej światło folii.
HSV –stożek barw
Symbole w nazwie modelu to pierwsze litery nazw angielskich dla składowych opisu barwy: H – barwa światła (ang. Hue) wyrażona kątem na kole barw przyjmująca wartości od 0° do 360°. Model jest rozpatrywany jako stożek, którego podstawą jest koło barw. Wymiary stożka opisuje składowa S – nasycenie koloru (ang. Saturation) jako promień podstawy oraz składowa V – (ang. Value) – moc światła białego (ang. Brightness) jako wysokość stożka.
38. Różnice pomiędzy grafiką rastrową i wektorową oraz ich zastosowania.
Grafika Rastrowa – internet,dtp,fotografia
W grafice rastrowej obrazy tworzone są z położonych regularnie obok siebie pikseli. Posiadają one różne kolory lub odcienie jasności. Tworzone w ten sposób obrazy i rysunki zwykło się nazywać mapami bitowymi (bitmapami). Wielkość pliku =ilość pikseli w pionie * ilość pikseli w poziomie * ilość kolorów
Przetwarzanie map bitowych wymaga odpowiedniej ilości pamięci RAM w komputerze. Im więcej, tym lepiej. W przypadku obrazów rastrowych liczba pikseli przypadająca na jednostkę powierzchni jest wielkością stałą (rozdzielczość), dlatego też przy powiększeniu mapy bitowej występuje efekt powiększenia piksela. W praktyce objawia się to widocznymi na ekranie monitora lub wydruku schodkami, stąd jakość obrazu nie jest najlepsza. Występująca wtedy utrata ostrości obrazu map bitowych jest ich podstawową wadą. Inną wadą jest brak możliwości operowania na fragmentach obrazu. Grafikę rastrową można przyrównać do obrazka namalowanego farbkami. Zmiana barwy dowolnego fragmentu polega na nałożeniu pędzelkiem innego koloru. Nie można tutaj zmienić np. kształtu liścia przez jego modelowanie, a jedynie przez namalowanie w jego miejscu nowego.
Grafika Wektorowa – gry,grafika 3D
Zupełnie inaczej wygląda to w grafice wektorowej. Tutaj obrazy i rysunki składają się z szeregu punktów, przez które prowadzi się linie proste i krzywe. Obiekty te definiuje się za pomocą równań algebraicznych (wektorów). Obrazy i rysunki wektorowe możemy poddawać skalowaniu i modelowaniu bez utraty ich jakości. W przypadku grafiki wektorowej nie używamy określenia rozdzielczości obrazu. Obiekty są wyświetlane na ekranie monitora z rozdzielczością, z jaką pracuje karta graficzna i drukowane z rozdzielczością drukarki.
39. Podstawowe pojęcia typografii.
Typografia – termin mający szereg pokrewnych znaczeń związanych z użyciem znaków pisarskich w druku, prezentacją ich na ekranie monitora komputerowego itp.
Font - cyfrowy nośnik pisma czyli elektroniczny (komputerowy) następca czcionki drukarskiej
Cechy fontu:
Krój - to charakterystyczny obraz kompletu znaków pisma o jednolitych podstawowych cechach graficznych,
Odmiana - Odmiana nie jest cechą bezpośrednio fontu, tylko jego kroju. Tak więc nie mówimy o odmianie fontu, tylko o odmianie kroju fontu. Odmiana jest modyfikacją kroju danego fontu poprzez zmianę grubości jego kresek oraz zmianę szerokości i pochylenia całych znaków,
Stopień – Stopień pisma to wielkość, a dokładniej mówiąc - wysokość i wyrażamy ją w punktach typograficznych (pt).
Przykład:
Swiss 721 PL Light Condensed Italic 8pt
nazwa kroju: Swiss 721 PL
w odmianie: Light Condensed Italic
i w stopniu: 8pt
Majuskuła (wersalik, wielka lub duża litera) – każda z wielkich liter alfabetu, tj. większego formatu i innego kształtu w stosunku do małej.
Minuskuła (mała litera, litera tekstowa) – każda z małych liter alfabetu. Antonim majuskuły.
Kursywa – termin oznaczający używanie znaków pisarskich w postaci pochylonej
Linie pisma - teoretyczne linie proste, poziome i równoległe do siebie, wyznaczające granice rysunku liter oraz pozostałych znaków w czcionkach i fontach. Mówiąc dokładniej są to linie odniesienia, wobec których wyznacza się znaki, ponieważ ich obrys nie zawsze musi być do tych linii styczny.
Główne linie pisma:
podstawowa linia pisma (bazowa, główna, normalna, ang. baseline) - linia pokrywająca się z dolną krawędzią liter majuskułowych i minuskułowych bez wydłużeń dolnych, np. A, B, C, a, b, c
dolna linia pisma (ang. descender) - linia pokrywająca się z dolną krawędzią minuskuł z wydłużeniami dolnymi, np. g, j, p
średnia linia pisma (ang. x-height) - linia pokrywająca się z górną krawędzią minuskuł bez wydłużeń górnych, np. a, c, e
górna linia pisma (ang. ascender) - linia pokrywająca się z górną krawędzią majuskuł oraz minuskuł z wydłużeniami górnymi, np. A, B, C, b, d, f
Interlinia - Jest to odległość między sąsiednimi wierszami tekstu liczona jako odstęp pomiędzy dolną linią pisma w wierszu górnym i górną linią pisma w wierszu dolnym
Szeryf (błędne spolszczenie z ang. serif) – poprzeczne lub ukośne zakończenia kresek głównych liter danego kroju pisma. Jego forma graficzna jest jednolita w danym kroju. Ze względu na sposób prowadzenia narzędzia pisarskiego przy projektowaniu pism durkarskich można rozróżnić: szeryfy zwrotne, charakteryzujące antykwy i szeryfy przechodnie charakterystyczne dla pisanek.
Szeryfy zwrotne można podzielić na:
belkowe – w kształcie prostokątów,
kreskowe – w kształcie cienkich kresek silnie skontrastowanych z kreską główną,
klinowe – w kształcie trójkątów,
skryte (ukryte) – nieznaczne poszerzenia zakończeń kresek tworzących znak.
Kerning - regulowanie odległości pomiędzy konkretnymi parami znaków w danym kroju pisma i jego odmianie. Określane w ten sposób są nie tylko odstępy pomiędzy literami, ale także pozostałymi znakami (np. litera-cyfra, cyfra-cyfra, cyfra-znak interpunkcyjny). Kerning może być ujemny lub dodatni. Częściej stosowany jest kerning ujemny (tzw. podcinanie) czyli dosuwanie do siebie znaków, które wyglądają na nienaturalnie oddalone. Kerningiem dodatnim jest odsuwanie od siebie znaków sprawiających wrażenie zbyt "ściśniętych" (tzn. położonych zbyt blisko siebie).
Zmniejszony kerning między V i A
Tracking, gęstość składu – równomierne odsuwanie lub przybliżanie do siebie znaków w tekście, możliwość regulowania odległości pomiędzy znakami globalnie w skali całego tekstu lub w jego wybranym fragmencie
40. Podstawowe formaty plików graficznych.
Formaty plików graficznych można podzielić na formaty przechowujące grafikę rastrową oraz formaty przechowujące grafikę wektorową. Z kolei formaty przechowujące grafikę rastrową można podzielić na stosujące kompresję bezstratną, stosującekompresję stratną oraz nie stosujące kompresji.
Używające kompresji stratnej:
JPEG (Joint Photographic Experts Group) - niewątpliwie najpopularniejszy format plików graficznych z kompresją stratną; używany zarówno w sieci internet (obsługiwany przez prawie wszystkie przeglądarki), jak i w aparatach cyfrowych
JPEG 2000 - nowsza wersja formatu JPEG, oferująca lepszą kompresję,
DjVu - format stworzony do przechowywania zeskanowanych dokumentów w formie elektronicznej,
TIFF (Tagged Image File Format) - popularny format plików graficznych udostępniający wiele rodzajów kompresji (zarówno stratnej jak i bezstratnej) oraz umożliwiający przechowywanie kanału alfa.
Używające kompresji bezstratnej:
PNG (Portable Network Graphics) - popularny format grafiki (szczególnie internetowej); obsługiwany przez większość przeglądarek WWW; obsługuje kanał alfa,
GIF (Graphics Interchange Format) - popularny format grafiki (szczególnie internetowej); obsługiwany przez prawie wszystkie przeglądarki WWW; może przechowywać wiele obrazków w jednym pliku tworząc z nich animację; obsługuje przeźroczystość monochromatyczną (pełna przeźroczystość lub wcale),
TIFF - patrz wyżej.
BMP - oferuje zapis z kompresją RLE lub bez kompresji (powszechniejszy), wykorzystywany m.in przez program MS Paint
Bez kompresji:
XCF (eXperimental Computing Facility) - mapa bitowa programu GIMP; może przechowywać wiele warstw,
XPM - format zapisu plików przy pomocy znaków ASCII,
PSD - mapa bitowa programu Adobe Photoshop; może przechowywać wiele warstw,
Formaty grafiki wektorowej[edytuj]
SVG (Scalable Vector Graphics) - format oparty na języku XML; promowany jako standard grafiki wektorowej; umożliwia tworzenie animacji,
CDR (Corel Draw) - format opatentowany przez firmę Corel Corporation
SWF (Adobe Flash) - format grafiki wektorowej popularny w internecie; umożliwia tworzenia animacji, a nawet całych aplikacji,
EPS (Encapsulated PostScript) - format PostScript z ograniczeniami
41. Podstawowe etapy tworzenia animacji komputerowej.
Punktem wyjściowym do animacji jest obiekt statyczny (np. postać).
Następnie generuje się klatki animacji wybraną metodą.
W przypadku animacji czasu rzeczywistego, generowane klatki są zapisywane do bufora sprzętowego, a następnie przenoszone na ekran
Tworzenie modeli obiektów,
Pokrywanie ich teksturami,
Przygotowanie sceny – wstawienie oświetlenia, kamer,
Animowanie obiektów,
Renderowanie,
Montaż.
Animacja szkieletowa jest metodą tworzenia animacji ludzi oraz zwierząt kręgowych. Obiekt składa się z dwóch części:
• skóra (skin) - powierzchnia określająca wygląd obiektu;
• szkielet (skeleton) składa się z układu kości (bones), połączonych w strukturę hierarchiczną; służy do określenia ruchu obiektu.
Metoda daje dość realistyczną animację, problemy powstają np. przy próbie realistycznego oddania ruchów mięśni.
Łączenie hierarchiczne używane jest w animacji postaci do powiązania ze sobą poszczególnych segmentów postaci lub kości szkieletu.
Hierarchia pozwala określić zależności pomiędzy „rodzicem” a „potomkiem”.
• animowanie sekwencyjne (forward kinematics) – poruszając obiektem rodzicem porusza się również jego obiektami potomnymi;
• odwrotna kinematyka (inverse kinematics) – przemieszczające się obiekty potomne powodują ruch obiektów będących ich rodzicami.
Animacja z użyciem systemu kości
• Postać jest reprezentowana za pomocą ciągłej siatki złożonej z wielokątów.
• System kości tworzy szkielet, który pełni funkcję pomocniczą i nie jest renderowany.
• Szkielet musi zostać dokładnie dopasowany do siatki modelującej postać.
• Przy budowie szkieletu można posługiwać się połączeniami hierarchicznymi.
• Ruch postaci symulowany jest przez odkształcanie siatki pod wpływem ruchu kości szkieletu.
42. Technologie prezentacji scen 3D na stronach internetowych.
VRML (ang. Virtual Reality Modeling Language) jest de facto niezależnym od platformy standardem opisu wirtualnej rzeczywistości na potrzeby Internetu. Plik zapisany w tym formacie to zwykły plik tekstowy ASCII.
X3D jest następcą języka VRML. Jest to oparty o technologię XML, otwarty standard opisu interaktywnej grafiki 3D. Wspiera:
Grafikę 3D – obiekty wielokątowi i parametryczne, budowę hierarchiczną, światła, tekstury, materiały
Grafikę 2D – tekst, krzywe 2D
Animacje – timery i interpolatory
Przestrzenny dźwięk i obraz video
Interakcyjność – wybieranie i przesuwanie za pomocą myszy, interakcja klawiaturą
Nawigację – Kamery, poruszanie użytkownika wewnątrz sceny 3D, kolizje
Sieciową budowę – możliwość złożenia jednej sceny z elementów porozrzucanych w sieci
Możliwość tworzenia nowych funkcjonalności przeglądarki i nowych typów obiektów (PROTO)
Możliwość dynamicznej modyfikacji scen za pomocą języków programowania i języków skryptowych
Symulacje fizyczne – grawitacja
Plik X3D definiuje graf sceny, który obejmuje wszystkie węzły i kolejność ich umieszczenia określa zasady współdziałania i przynależności. Każdy węzeł w grafie sceny jest jednym z możliwych typów węzłów np. Shape – definiuje kształt obiektu Transform – pozycję, orientację i skalę węzła dziecka, DirectionalLight – definiuje światło kierunkowe wewnątrz sceny.
43. Definicja i przegląd metod sztucznej inteligencji.
Sztuczna inteligencja (Artificial inteligence – AI) jest dziedziną badań na pograniczu informatyki i innych dziedzin pokrewnych, której celem jest tworzenie systemów informatycznych (i maszyn) posiadających takie cechy jak:
- zdolność uczenia się i pozyskiwania wiedzy,
- adaptacyjność, to jest zdolność przystosowywania się do zmiennych warunków otoczenia,
- autonomiczność.
Ogólny przegląd metod sztucznej inteligencji:
- Automatyczne wnioskowanie
Metody te opierają się na osiągnięciach logiki formalnej. Metody automatycznego wnioskowania stanowią podstawę tzw.
systemów eksperckich oraz systemów automatycznego dowodzenia twierdzeń. Powyższy związek jest też często wykorzystywany w systemach uczących się. Jeśli za zbiór przesłanek podstawimy informację trenującą, wówczas
otrzymany zbiór konkluzji możemy uznać za nową wiedzę nabytą przez system. Wiedzę tę system może wykorzystać w dalszym procesie uczenia się. Taki rodzaj uczenia się nazywamy też uczeniem dedukcyjnym. Jego własciwoscią jest „zachowanie prawdy”. Bowiem tylko z prawdziwości przesłanek P wynika prawdziwość konkluzji logicznej K.
Rozumowanie dedukcyjne w odróżnieniu od rozumowania indukcyjnego nie wymaga tworzenia nowych twierdzeń czy pojęć, lecz jest tylko prostym wyciąganiem wniosków.
Indukcja logiczna to sposób rozumowania polegający na wyprowadzaniu nowych pojęć, twierdzeń lub sugerowaniu możliwosci zaistnienia nowych faktów na podstawie intuicyjnej analizy wejściowych przesłanek. Indukcji logicznej nie należy mylic z indukcją matematyczną, gdyż mimo zbieżności nazwy pojęcia te nie maję z sobą wiele wspólnego.
Indukcja to rozumowanie "w odwrotnym kierunku" - ze zbioru
przesłanek wyprowadzamy wniosek ogólny, teorie czy prawo. Na przykład, na podstawie wielokrotnej obserwacji można zauważyć, że przed deszczem jaskółki latają nisko nad ziemią. Wniosek - jeżeli jaskółki nisko latają, to znaczy, że będzie padać deszcz. Takie wnioskowanie nie musi zawsze jednak prowadzić do prawdziwych konkluzji, gdyż z tego, że coś wydarzyło się wiele razy, nie wynika jeszcze, że zdarzy się następnym razem.
Intuicja (wg. Kopalińskiego) to wyczucie, przeczucie; albo: proces bezpośredniego uzyskiwania wiedzy, pewność w jakiejś sprawie bez rozumowania, lub wnioskowania. Intuicja jest więc procesem myślowym polegającym na dopasowaniu danej sytuacji, problemu, zagadnienia do znanych już szablonów i zależności.
W uczeniu opartym na wnioskowaniu indukcyjnym wiedza nabyta i informacja trenująca nie wyznaczają jednoznacznie hipotezy indukcyjnej. Zależy ona również od algorytmu wnioskujacego.
- Transmutacje wiedzy
Są to różnego rodzaju przekształcenia (dedukcyjne, lub indukcyjne) stosowane do wiedzy wrodzonej lub nabytej i informacji trenującej, w celu generowania nowej wiedzy. Wiedza ta ma zwykle postać opisów odnoszących się do obiektów pewnej dziedziny. W inferencyjnej teorii uczenia się przekształcenia te są pogrupowane w pary transmutacji o działaniu w przybliżeniu odwrotnym:
Generalizacja/specjalizacja – transmutacja polegająca na poszerzaniu/zawężaniu zbioru obiektów, do którego odnosi się opis
Abstrakcja/konkretyzacja – transmutacja polegająca na zmniejszaniu/zwiększaniu liczby szczegółów, do których odnosi się opis
Podobieństwo/kontrastowanie – transmutacja polegająca na generowaniu wiedzy o pewnych zbiorach na podstawie ich podobieństwa/różnic w stosunku do innych zbiorów obiektów
Wyjasnianie/predykcja – transmutacja polegająca na znajdowaniu wiedzy wyjaśniającej wiedzę posiadaną wcześniej, lub na przewidywaniu na jej podstawie nowej wiedzy.
W inferencyjnej teorii uczenia się twierdzi się, że zapominanie jest wynikiem konkurencji (wzajemnego oddziaływania na siebie) reakcji należących do dwóch zdań A i B. W sytuacji przypominania lub ponownego uczenia się pierwszego zadania A, reakcje należące do drugiego zadanie B przeszkadzają w przywołaniu zdania.
- Inteligentne przeszukiwanie i uczenie się systemów
* Przeszukiwanie wyczerpujące - Zakłada się tutaj, że problem jest charakteryzowany przez przestrzeń możliwych stanów z wyróżnionymi stanami końcowymi. Oczekuje się optymalnego (wg. pewnych kryteriów) rozwiązania, zwykle w postaci osiągnięcia jednego ze stanów końcowych przy możliwie małym zużyciu
pamięci i czasu obliczeń. Przeszukiwania wyczerpującego zawsze wiąże się z potrzebą dużych zasobów pamięci lub/i bardzo dużych (wykładniczych) czasów obliczeń.
* Przeszukiwanie dynamiczne przestrzeni stanów (gry) - Tutaj przestrzeń możliwych stanów zostaje jeszcze rozszerzona na skutek reakcji przeciwnika, który dąży do maksymalizacji swoich celów minimalizując szansę na znalezienie optymalnego rozwiązania przez gracza pierwszego. Prowadzi to do przeszukiwania drzewa gry, powstałego przez rozważenie sytuacji wynikających z możliwych do wykonania ruchów gracza, następnie dla każdej z tych sytuacji, rozważenie konsekwencji możliwych ruchów przeciwnika.
- Stosowanie heurystyk
Metody heurystyczne na ogół nie dają gwarancji poprawy efektywności w przypadku pesymistycznym, lecz wyraźnie poprawiają oczekiwaną efektywność w przypadku przeciętnym. Najczęściej opierają się one na liczbowym szacowaniu jakości stanów (np. ze wzgledu na odległość do stanu końcowego) w przypadku przeszukiwania
wyczerpującego, lub całych sytuacji wystepujących w grze ze wzgledu na szansę zwycięstwa w przypadku przeszukiwania dynamicznego (gry).
- Algorytmy mrówkowe
Rozwiązywane przez algorytmy mrówkowe problemy należą do tzw. problemów kombinatorycznej optymalizacji. Klasyczny problem z tej dziedziny to problem komiwojażera.
- Maszynowe uczenie się,
* Uczenie się można w przybliżeniu zdefiniować jako proces zmian autonomicznie zachodzących w systemie na podstawie jego doświadczeń prowadzących do poprawy jego jakości działania.
* Maszynowe uczenie się należy do najważniejszych działów sztucznej inteligencji. Systemy uczące się mają też bezpośrednie odniesienie do dwóch innych głównych działów sztucznej inteligencji: automatycznego wnioskowania i przeszukiwania heurystycznego.
* Inferencyjna teoria uczenia się opisuje to uczenie jako proces wnioskowania na podstawie wiedzy wrodzonej i informacji trenującej, realizowany za pomocą różnych transmutacji wiedzy, w wyniku którego powstaje nowa wiedza, zapamiętywana następnie przez system.
* Najważniejsze zastosowania systemów uczących się, to:
odkrywanie wiedzy w bazach danych, automatyczne sterowanie, adaptacyjne interfejsy użytkownika, i wiele innych.
- Odkrywanie asocjacji i wzorców sekwencji
Odkrywanie w danych zależności asocjacyjnych sprowadza się do wydobywania z nich statystycznie istotnego współwystępowania pewnych określonych wartości atrybutów. Owo współwystępowanie można opisać za pomocą reguł asocjacyjnych. Każda z nich zawiera dwie listy wartości atrybutów, z których jedna jest listą wartości warunkujących, a drugą listą wartości warunkowanych. Wzorce sekwencji dotyczą współwystępowania wartości atrybutów w układach z pewną dynamiką.
- Boty (inteligentni agenci)
Są to inteligentne programy komputerowe służące najczęściej do przeszukiwania i pozyskiwania wiedzy. Inteligentne boty mogą dodatkowo podejmować decyzje na bazie wcześniej zdobytej wiedzy.
Najczęściej identyfikowane boty:
• chatterboty – automaty do pogawędek,
• searchboty – zajmują się automatyczną obsługą baz danych,
• shoppingboty – pomagają przy robieniu zakupów przez Internet,
• databoty – są oparte na sieciach neuronowych z funkcjonalnoscią podobną do searchbotów,
• updateboty – służą do uaktualniania danych i programów użytkownika,
• infoboty – programy automatycznie udzielające odpowiedzi za pomocą poczty elektronicznej.
44. Automatyczne wnioskowanie - systemy ekspertowe.
System ekspertowy (funkcjonują też nazwy system ekspercki, system z bazą wiedzy) jest to program lub zestaw programów komputerowych wspomagający korzystanie z wiedzy i ułatwiający podejmowanie decyzji.
Tak więc system ekspertowy jest systemem komputerowym, który symuluje procesy uczenia się, zapamiętywania, komunikacji, przyczynowości i realizacji działań ludzkiego eksperta w danej dziedzinie wiedzy, dzięki czemu człowiek może być zastąpiony przez komputer z gwarancją sukcesu w rozwiązywaniu problemu. System ekspertowy jest to program komputerowy symulujący czynności intelektualne specjalisty z danej dziedziny problemowej. Dysponując
odpowiednio przygotowanym zbiorem wejściowym system jest w stanie - podobnie jak ekspert z danej dziedziny - wykonać operacje wnioskowania, sformułować diagnozę końcową posługując się językiem quasi-naturalnym,
a także – na żądanie użytkownika – objaśnić, ujawnić przesłanki, jakie zadecydowały o ostatecznym kształcie proponowanych diagnoz i wniosków.
systemy dedykowane
są to systemy z zaszytą w nich wiedzą, tworzone na konkretne zamówienie
systemy narzędziowe
systemy z pustą bazą wiedzy, umożliwiające użytkownikowi wprowadzenie własnych informacji, z którymi ma pracować system (zwane czasem szkieletowymi)
Wnioskowanie do przódu
Wnioskowanie rozpoczyna się od analizy faktów. Na podstawie dostępnych reguł i faktów generowane są fakty tak długo, aż wśród nich znajdzie się poszukiwany przez użytkownika cel lub aż zabraknie reguł.
Wnioskowanie wstecz
W tym algorytmie zaczyna się od hipotezy i poszukuje się argumentów (dowodów), które ją potwierdzą lub obalą.
Wnioskowanie wstecz łatwo się programuje (rekurencja)
W przypadku wnioskowania wstecz generowana jest mniejsza liczba faktów, niż w przypadku wnioskowania do przodu (+/-)
Wnioskowanie mieszane jest przydatne w rozwiązywaniu problemów, wymagających bardzo skomplikowanej sieci zależności reguł. Wymaga jednak istnienia w systemie dodatkowych metareguł określających kiedy jakie wnioskowanie może być użyte oraz implementacji obu sposobów wnioskowania.
45. Algorytmy genetyczne.
Jest to cała grupa algorytmów służąca do poszukiwania najlepszych rozwiązań danego problemu. Zasada ich działania opiera się na obserwacji praw natury i przeniesieniu ich na grunt informatyki. U podstaw algorytmów genetycznych znajduje się dobór naturalny oraz dziedziczność. Najlepiej przystosowane jednostki (niosące rozwiązania zbliżone do właściwego) są powielane oraz krzyżowane ze sobą w celu powielenia informacji.
Zastosowanie:
Algorytmy genetyczne znajdują zastosowanie tam, gdzie nie jest dobrze określony lub poznany sposób rozwiązania problemu, ale znany jest sposób oceny jakości rozwiązania.
Projektowanie maszyn bądź obwodów elektrycznych jest doskonałym polem dla wykazania się algorytmów genetycznych. Inżynierowi podczas tworzenia nowych pomysłów nie chodzi o znalezienie najlepszego możliwego rozwiązania. Wystarczy tylko przybliżone spełnienie granicznych warunków oraz optymalizacja projektu.
Selekcja, krzyżowanie, mutacja
46. Zbiory rozmyte i wnioskowanie rozmyte.
Teoria zbiorów rozmytych wprowadza bardziej intuicyjne podejście do rzeczywistych zjawisk. Element zbioru rozmytego może należeć do niego tylko w pewnym stopniu. Podejście takie odzwierciedla łagodne przejście ze stanu przynależności do stanu nieprzynależności.
Wiemy, że klasyczna logika bazuje na dwóch wartościach: 0 i 1, czyli prawda i fałsz. Granice między tymi wartościami są ściśle określone, natomiast logika rozmyta znosi te granice i umożliwia pojawienie się wartości niepełnych, takich jak np. prawie fałsz, trochę prawdy itp.
Wnioskowanie rozmyte jest procesem formułowania zależności wejściowo-wyjściowej przy wykorzystaniu
logiki rozmytej.
Proces wnioskowania rozmytego składa się z następujących etapów:
a) rozmywanie zmiennych wejściowych
b) zastosowanie rozmytych operatorów logicznych (AND lub OR) do poprzedników reguł systemu
c) utworzenie następników reguł
d) agregacja następników reguł (łączenie)
e) defuzyfikacja w celu utworzenia odpowiedzi systemu – (wyostrzanie)
Wadą teorii zbiorów rozmytych jest niejednoznaczna przynależnośc elementu do konkternego zbioru
47. Sztuczne sieci neuronowe
ogólna nazwa struktur matematycznych i ich programowych lub sprzętowych modeli, realizujących obliczenia lub przetwarzanie sygnałów poprzez rzędy elementów, zwanych sztucznymi neuronami, wykonujących pewną podstawową operację na swoim wejściu.
Rodzaje:
Sieci jednokierunkowe to sieci neuronowe, w których nie występuje sprzężenie zwrotne, czyli pojedynczy wzorzec lub sygnał przechodzi przez każdy neuron dokładnie raz w swoim cyklu
Mianem sieci rekurencyjnej określa się sieć, w której połączenia między neuronami stanowią graf z cyklami.
Samoorganizujące się mapy (Self Organizing Maps, SOM), zwane też sieciami Kohonena, to sieci neuronów, z którymi są stowarzyszone współrzędne na prostej, płaszczyźnie lub w dowolnej n-wymiarowej przestrzeni.
Sztuczne sieci neuronowe znajdują zastosowanie w rozpoznawaniu i klasyfikacji wzorców (przydzielaniu wzorcom kategorii), predykcji szeregów czasowych, analizie danych statystycznych, odszumianiu i kompresji obrazu i dźwięku oraz w zagadnieniach sterowania i automatyzacji.
Najpopularniejsze obecnie zastosowanie sieci neuronowych[potrzebne źródło]:
w programach do rozpoznawania pisma (OCR)
na lotniskach do sprawdzania, czy prześwietlony bagaż zawiera niebezpieczne ładunki
do syntezy mowy.
Cechy sztucznych sieci neuronowych
• Sieci neuronowe mogą uczyć się na przykładach
• Potrafią poradzić sobie z zaszumionymi danymi
• Przetwarzają dane w sposób równoległy
• Są zdolne do generalizowania wiedzy szczegółowej, zdobytej w oparciu o przykłady
• Jeden fragment oprogramowania implementującego algorytmy sieci neuronowych może być wykorzystywany do rozwiazywania różnorakich problemów
• Proces treningu trwa zwykle bardzo długo
• Nie istnieją w 100% pewne zasady dotyczące tego, jakie sieci stosować i jak je uczyć dla konkretnego zadania. Wiele elementów musi być dobieranych metoda prób i błędów
• Niekompletny zbiór uczący może spowodować, że sieć będzie dawać błędne wyniki podczas rzeczywistego użytkowania.
48. Grupowanie danych i odkrywanie wiedzy w danych.
Wynikiem grupowanie jest wyróżnienie w danych grup podobnych przykładów i wygenerowanie opisów tych grup, pozwalających na klasyfikowanie do nich dowolnych nowych przykładów.
Etapy procesu odkrywania wiedzy
Analiza i poznanie dziedziny zastosowania, identyfikacja dostępnej wiedzy i celów użytkownika,
Wybór danych związanych z celami procesu,
Czyszczenie i wstępne przetwarzanie danych oraz ich redukcja,
Wybór zadań i algorytmów eksploracji danych,
Pozyskiwanie wiedzy z danych (krok eksploracji danych),
Interpretacja i ocena odkrytej wiedzy,
Przygotowanie wiedzy do użycia
Zastosowanie:
Marketing
• „Target marketing”, identyfikacja profilu klientów, ocena lojalności klientów,problem koszyka zakupów - asocjacje produktów w sieciach sprzedaży, segmentacja rynków, klientów, itp.
• Analizy finansowe
• Analiza ryzyka kredytowego, rekomendacje produktów, przewidywanie trendów i przebiegów czasowych,…
• Wykrywanie nieprawidłowości i anomalii
• Analiza defraudacji i nieprawidłowości kart kredytowych, systemy telekomunikacyjne, towarzystwa bezpieczeniowe, systemy opieki medycznej.
• Text mining oraz Web mining (zachowania użytkowników w e-serwisach, wspomaganie wyszukiwania informacji)
49. Zasady definiujące model danych rozumiany jako architektura BD.
Model danych jest zbiorem ogólnych zasad posługiwania się danymi:
- model hierarchiczny – odwrócone drzewo, relacja nadrzędny/podrzędny, przeszukiwanie od korzenia i przedzierani się do intersującego nas miejsca, użytkownik musi znać strukturę bazy danych
- model sieciowy – dwa odwrócone drzewa połączone gałęziami, relacje są rozwiązywane za pomocą kolekcji, wyszukiwanie wykorzytując kolekcje w dowolnym miejscu
-model relacyjny
- model obiektowy- jest modelem danych w którym podstawą są pojęcia obiektowości: obiekt,klasa, dziedziczenie
Zbiór zasad które określają model danych można podzielić na trzy kategorie:
- definicja danych – określają strukturę danych
- operowanie danymi- reguły operowania danymi
- integralność danych- określa które stany bazy są poprawne
50. Typy architektonicznych modeli danych
Wyróżnia się trzy typy architektonicznych modeli danych:
- proste modele danych – pliki płaskie z rekordami - termin odnosi się do sekwencyjnych plików, w których dane przechowywane są w sposób liniowy. Aby wyszukać w nim rekord należy przejrzeć plik od początku
- klasyczne modele danych- (hierarchiczne, sieciowe, relacyjne) – relacyjne bazy danych są teraz najbardziej popularną obecnie podstawą architektury systemów baz danych
- semantyczne modele danych (obiektowe) – semantyka to inaczej znaczenie. Klasyczne modele danych nie dostarczają łatwego sposobu odczytywania informacji o semantyce danych, stąd podejmuje się próby stworzenia innych modeli, uzupełniających ten brak.
51. Trójpoziomowa architektura SBD
.- warstwa zewnętrzna – opisuje jak użytkownicy widzą bazę danych i w jaki sposób uzyskują do niej dostęp
- warstwa koncepcyjna – opisuje cała strukturę bazy danych w sposób zrozumiały i wystarczający dla końcowych użytkowników bazy danych. Schemat koncepcyjny ukrywa szczególy fizycznych struktur do przechowywania danych
- warstwa wewnętrzna – opisuje fizyczną strukturę przechowywania bazy danych
Korzyści z architektury trójwarstwowej:
- większość zalet architektury klient – serwer
- prostsze projektowanie
- prostsza implementacja
- możliwość powtórnego wykorzystania komponentów po stronie serwera
Wady architektury trójwarstwowej:
- wysokie wymagania sprzętowe (serwery aplikacyjne)
- ograniczenia funkcjonalności interfejsu użytkownika – chudy klient
- zwiększony ruch sieciowy.
Trójwarstwowa architektura SZBD
Jądro
Interfejs
Narzędzia
52. Istota relacyjnego modelu danych.
W najprostszym ujęciu w modelu relacyjnym dane grupowane są w relacje, które reprezentowane są przez tablice. Relacje są pewnym zbiorem rekordów o identycznej strukturze wewnętrznie powiązanych za pomocą związków zachodzących pomiędzy danymi.
Rodzaje związków:
związek wieloznaczny, wiele do wiele (n:m)
związek jednoznaczny, wiele do jeden, jeden do wiele (n:1, 1:n)
związek jedno – jednoznaczny, jeden do jeden
-Relacyjny model danych jest oparty o koncepcję relacji
-relacja jest pojęciem matematycznym bazującycm na zbiorach
- relacja to tablica posiadająca kolumny i wiersze
- każdy wiersz reprezentuje pewien fakt odnoszący się do modelowego kawałka świata
- atrybut to nazwana kolumna relacji
53. Elementy i funkcje jądra systemu zarządzania BD.
Jądro- elementy
• Procesor czasu wykonywania
obsługuje operacje wyszukiwania i modyfikowania, wyrażone względem bazy danych. Dostęp do dysku jest realizowany przez menedżera danych,
• Procesor zapytań
obsługuje interaktywne zapytania, wyrażone w języku operowania danymi (DML) takim jak SQL. Dokonuje on analizy składniowej i semantycznej zapytania, po czym przystępuje do generowania wywołań procesora czasu wykonywania.
• Prekompilator, kompilator DML, kompilator języka gospodarza
Prekompilator wycina polecenia DML z programu użytkowego napisanego w języku gospodarza. Polecenia te są następnie przekazywane do kompilatora DML, który tworzy kod wynikowy realizujący dostęp do bazy danych. Pozostałe części programu użytkowego są wysyłane do konwencjonalnego kompilatora i następnie te dwie części są wiązane razem, tworząc transakcję, która może być wykonana na bazie danych
Jądro- funkcje
• Baza danych i katalog systemowy
przechowują dane i metadane aplikacji.
• System operacyjny
Dostęp do urządzeń dyskowych jest kontrolowany głównie przez system operacyjny gospodarza, który szereguje dyskowe operacje we-wy.
• Menedżer bazy danych
kontroluje dostęp do informacji DBMS przechowywanej na dysku.
Wszystkie operacje dostępu do informacji w bazie danych są wykonywane pod jego kontrolą. Menedżer danych używa funkcji zarządzania danymi niższego poziomu, dostarczonymi przez system operacyjny gospodarza w jego systemie zarządzania plikami lub używa swoich własnych podprogramów. Takie funkcje będą realizować przesyłanie danych między pamięcią główną a dyskiem.
54. Charakterystyka tzw. metody blokowania, zapewniającej współbieżne wykonywanie transakcji w BD.
Jednym z podstawowych wymogów stawianych bazom danych jest ich spójność , polegająca na poprawności składowaniu w nich danych. Głównym zagrożeniem przechowywania i przetwarzania danych jest anormalne przerwanie procesu przetwarzania, uszkodzenie nośnika oraz interferencja między równoległymi sesjami kilku użytkowników. Transakcje są rozwiązaniem tych bolączek. Transakcja jest sekwencją logicznie powiązanych operacji wykonywanych na bazie danych w ramach sesji użytkownika. Przykład: wypłata z bankomatu – jedno bez drugie nie zakończy transakcji czyli wypłata pieniędzy z umniejszniem konta.
Najpowszechniej stosowanym mechanizmem synchronizacji jest metoda blokowania dwufazowego. W metodzie tej każda operacja na danych musi być poprzedzona ustawieniem odpowiedniej blokady na tej danej. W przypadku uzyskania wymaganej blokady dana operacja jest bezzwłocznie wykonywana. Niemożność ustawienia blokady ze względu na konflikt z inną już założoną blokadą , zawiesza wykonanie związanej z nią operacji aż do momentu zdjęcia konfliktowej blokady.Stosowane są dwie blokady: blokada wyłączna do zapisu i blokada współdzielona do zapisu.
55. Rodzaje diagramów w projektowaniu systemów informatycznych dostępne w języku UML.
Diagramy w projektowaniu SI w języku UML możemy podzielić na 3 grupy:
- Diagramy struktury – klas, komponentów, struktur połączonych, obiektów, pakietów, wdrożeniowy
-Diagramy zachowań – czynności(aktywności), maszyny stanowej, przypadków użycia
- Diagramy interakcji – interakcji, komunkacji, sekwencji, przebiegów czasowych, stanów
Diagram klas, to statyczny diagram strukturalny, przedstawiający strukturę systemu w modelach obiektowych przez ilustrację struktury klas i zależności między nimi.
Diagram komponentów (zwany także diagramem implementacji) to diagram przedstawiający jeden z aspektów modelu zgodnego z UML. Przedstawia fizyczne elementy wchodzące w skład systemu i połączenia między nimi.
Diagram struktur połączonych służy do dokumentowania wpsółdziałania elementów systemu – pojęci a z tym diagramem to: współdziałanie, część, połączenie, interfejs, konektor skąłdany,port
Diagramy obiektów obrazują obiekty występujące w systemie i ich związki. Są one zazwyczaj wykorzystywane do wyjaśnienia znaczenia diagramów klas. Każdy obiekt może być opisany przy pomocy trzech elementów: tożsamości, stanu i zachowania. Tożsamość jest cechą wyróżniającą obiekt, przedstawiając go jako indywidualną jednostkę. Stan jest zbiorem wszystkich wartości i właściwości obiektu, które każdy z nich posiada i jest przez nie wyróżniany. Zachowanie jest zbiorem usług, które mogą być wykonane przez obiekt na rzecz innych obiektów.
Diagram pakietów – to raficzne przedstawienie logicznej struktury systemu w postaci zestawów pakietów połączonych zależnościami i zagnieżdżeniami
Diagramy wdrożenia przedstawiają powiązania między oprogramowaniem (artefaktami) i sprzętem (węzłami)
Diagram czynności (zwany czasami diagramem aktywności) w języku UML służy do modelowania czynności i zakresu odpowiedzialności elementów bądź użytkowników systemu. Jest niejako podobny do diagramu stanu, jednak w odróżnieniu od niego nie opisuje działań związanych z jednym obiektem a wieloma, pomiędzy którymi może występować komunikacja przy wykonywaniu czynnościDiagram maszyny stanowej (stanu) reprezentuje zachowanie obiektu o skończonej liczbie stanówi zdefiniowanych przejściach między nimi
Diagram przypadków użycia - graficzne przedstawienie, aktorów oraz związków między nimi, występujących w danej dziedzinie przedmiotowej, służy do modelowania funkcjonalności systemu.
Diagram interakcji w języku UML służy do opisu zależności przy przesyłaniu komunikatów pomiędzy obiektami, czyli zależności w przepływie sterowania pomiędzy obiektami.
Diagram komunikacji Przedstawia sposób wymiany informacji pomiędzy obiektami (aktorami, klasami), które wchodzą ze sobą w interakcję.
Diagramy sekwencji - opisują interakcje pomiędzy częściami systemu w postaci sekwencji komunikatów wymienianych między nim
Diagramy czasowe - reprezentują na osi czasu zmiany dopuszczalnych stanów, jakie może przyjmować uczestnik w interakcj
Diagram stanów Pokazuje przede wszystkim możliwe stany obiektu oraz przejścia, które powodują zmianę tego stanu. Można też z niego odczytać, jakie sekwencje sygnałów (danych) wejściowych powodują przejście systemu w dany stan, a także jakie akcje są podejmowane w odpowiedzi na pojawienie się określonych stanów wejściowych
56. Diagram przypadków użycia w tworzeniu systemów informatycznych.
Diagramy przypadków użycia mają pomóc w zrozumieniu potrzeb i wymagań klientów, ułatwić komunikację pomiędzy klientami, analitykami i projektantam
Diagram przypadków użycia - graficzne przedstawienie, aktorów oraz związków między nimi, występujących w danej dziedzinie przedmiotowej, służy do modelowania funkcjonalności systemu.
Cel stosowania:
Określenie wymagań stawianych systemowi — czyli co system ma robić z punktu widzenia jego otoczenia.
Określenie granic systemu — jego otoczenia oraz elementów, które wchodzą z nim w interakcję
Główne zastosowania:
Określanie i doprecyzowanie funkcji systemu — opisywane przypadki użycia zwykle generują nowe wymagania, a projekt przybiera coraz wyraźniejszy kształt.
Zastosowanie:
Komunikacja z klientami — prostota notacji i intuicyjność sprawiają, że diagramy przypadków użycia są dobrym sposobem porozumiewania się projektantów z przyszłymi użytkownikami systemu.
Generowanie przypadków testowych — opis danego przypadku użycia może zasugerować sposoby testowania i konkretne dane testowe.
Zrozumienie różnych scenariuszy wykorzystania projektowanego systemu.
Porozumiewanie się projektantów systemu i jego przyszłych użytkowników.
Komponenty: aktor (Aktorami mogą być ludzie, urządzenia, inne systemy informatyczne, Jeden aktor może reprezentować całą grupę fizycznych użytkowników systemu),przypadek użycia(Przypadek użycia reprezentuje sekwencję operacji wykonywanych przez system, inicjowanych przez aktora, Uruchomienie danego przypadku użycia ma dostarczyć aktorowi wymiernych wyników ) ,związek (wiele przypadków użycia może mieć współny sekwencję INCLUDED<zawiera>, EXTENDED<rozszerza>)
Podsumowanie:
- PU służą do modelowania oczekiwanego zachowania systemu a nie sposobu implementacji systemu.
reprezentują jedynie najważniejsze aspekty zachowania systemu — nie są zbyt szczegółowe szczególne ani zbyt ogólne.
57. Diagram klas tworzony w języku UML
Diagram klas (diagramy struktury), to statyczny diagram strukturalny, przedstawiający strukturę systemu w modelach obiektowych przez ilustrację struktury klas i zależności między nimi. Klasa w modelu UML programu obiektowego jest reprezentowana przez prostokąt z umieszczoną wewnątrz nazwą klasy. Oddzielona część prostokąta pod nazwą klasy może zawierać atrybuty klasy, czyli metody (funkcje), właściwości (properties) lub pola (zmienne). Każdy atrybut pokazywany jest przynajmniej jako nazwa, opcjonalnie także z typem, wartością i innymi cechami. Metody klasy mogą znajdować się w osobnej części prostokąta. Każda metoda jest pokazywana przynajmniej jako nazwa, a dodatkowo także ze swoimi parametrami i zwracanym typem. Atrybuty: public (dostęp globalny), protected (chroniony dostęp pochodnych klasy),Private (prywatny –dostępny w obrębie klasy),package (pakiet-dostęp w obrębie pakietu,projektu)
Zależnośći diagramu klas:
Kompozycja, zwana również złożeniem, jest związkiem typu całość-część. W relacji kompozycji, części należą tylko do jednej całości, a ich okres życia jest wspólny — razem z całością niszczone są również części. Na diagramie, kompozycję oznacza się za pomocą linii zakończonej wypełnionym rombem.
Agregacja również reprezentuje związek typu całość-część. Jednak, w odróżnieniu od kompozycji, występuje tutaj relacja posiadania — co oznacza, że elementy częściowe mogą należeć do większej całości, jednak również mogą istnieć bez niej. Na diagramie, agregację oznacza się za pomocą linii zakończonej pustym rombem lub wypełnionym całkowita
Dziedziczenie tworzy hierarchię klas, od ogólnych do bardziej szczegółowych
Generalizacja - związek opisujący dziedziczenie po klasach.
Asocjacja reprezentuje czasowe powiązanie pomiędzy obiektami dwóch klas.
Zadania diagramu Klas
Modelowanie słownictwa systemu (podejmowanie decyzji, której abstrakcje są częścią rozważanego systemu i określenie ich zobowiązań)
Modelowanie prostych koopercji (określenie zbioru kooperujących klas i związków między nimi; realizują one wspólnie zadania które są niemożliwe do wykonania w pojedynkę; pokazanie różnorakich sposobów współpracy elementów ze słownika)
Modelowanie schematu logicznej bazy danych (w wielu systemach zachodzi konieczność przechowywania trwałych danych w relacyjnej lub obiektowej bazie danych; przez schemat rozumiemy plan projektu koncepcyjnego bazy danych.)
Dziedziczenie
Uogólnienie – związek między elementem ogólnym (przodkiem) a pewnym specyficznym jego rodzajem (potomkiem).
Uogólnienie polega na tym, że potomek może wystąpić wszędzie tam, gdzie jest spodziewany jego przodek a nie na odwrót.
Potomek dziedziczy wszystkie właściwości przodka, w szczególności atrybuty i operacje.
Uogólnienie może posiadać nazwę.
polimorfizm – polega na tym, że operacja potomka mająca tę samą sygnaturę co operacja przodka jest ważniejsza (ma pierszeństwo).
root (korzeń) – klasa bez przodków z conajmniej jednym potomkiem.
(leaf) liść – klasa bez potomków.
Polimorfizm- dosłownie „wiele kształtów”.
W technologii obiektowej nazywamy tak możliwość wystosowania ogólnego
żądania (komunikatu) i uzyskania różnych efektów, w zależności od rodzaju obiektu,
który realizuje żądanie.
58. Projektowanie systemów informatycznych.
Projektowanie systemu informatycznego jest działaniem wieloetapowym.
Najwazniejsze etapy to: planowanie,analiza,projektowanie,konstrukcja,wdrażanie,działanie Najlepsza jest METODYKA - zbiór zasad dotyczących świadomego i konsekwentnego wykonywania jakiejś pracy lub trybu postępowania prowadzącego do określonego celu.
Zarzxądzanie projektem (planowanie) Zadania/cele(Jak?)Fazy/kroki(kto?)(czym?)techniki/narzędzia(jak?)
Podstawowe zagrożenia w realizacji SI: 1. Brak umiejętności zarządzania pracami projektowo-programowymi w dziedzinie informatyki 2. Zła kontrola jakości, szczególnie we wczesnych fazach cyklu życiowego realizacji systemów informatycznych 3. Dynamika zmian wymagań użytkowych w stosunku do systemów informatycznych
59. Testowanie, weryfikacja i walidacja oprogramowania.
Zadania diagramu Klas
Modelowanie słownictwa systemu (podejmowanie decyzji, której abstrakcje są częścią rozważanego systemu i określenie ich zobowiązań)
Modelowanie prostych koopercji (określenie zbioru kooperujących klas i związków między nimi; realizują one wspólnie zadania które są niemożliwe do wykonania w pojedynkę; pokazanie różnorakich sposobów współpracy elementów ze słownika)
Modelowanie schematu logicznej bazy danych (w wielu systemach zachodzi konieczność przechowywania trwałych danych w relacyjnej lub obiektowej bazie danych; przez schemat rozumiemy plan projektu koncepcyjnego bazy danych.)
Dziedziczenie
Uogólnienie – związek między elementem ogólnym (przodkiem) a pewnym specyficznym jego rodzajem (potomkiem).
Uogólnienie polega na tym, że potomek może wystąpić wszędzie tam, gdzie jest spodziewany jego przodek a nie na odwrót.
Potomek dziedziczy wszystkie właściwości przodka, w szczególności atrybuty i operacje.
Uogólnienie może posiadać nazwę.
polimorfizm – polega na tym, że operacja potomka mająca tę samą sygnaturę co operacja przodka jest ważniejsza (ma pierszeństwo).
root (korzeń) – klasa bez przodków z conajmniej jednym potomkiem.
(leaf) liść – klasa bez potomków.
Polimorfizm- dosłownie „wiele kształtów”.
W technologii obiektowej nazywamy tak możliwość wystosowania ogólnego
żądania (komunikatu) i uzyskania różnych efektów, w zależności od rodzaju obiektu,
który realizuje żądanie.
60. Instalacja, wdrażanie oraz konserwacja oprogramowania.
Instalacja systemu
Szczególnie istotna w przypadku oprogramowania wykonywanego na konkretne zamówienie; w jej trakcie następuje przekazanie systemu klientowi, który w momencie zakończenia instalacji staje się właścicielem systemu
Podstawowe czynności podczas instalacji systemu:
przygotowanie środowiska pracy: dostarczenie nowego lub wykorzystanie istniejącego sprzętu (serwery, stacje, sieć, drukarki, ...); odpowiednie skonfigurowanie systemów operacyjnych; instalacja i/lub dostrojenie systemów bazodanowych
przeniesienie stworzonych aplikacji (instalacje na serwerach i stacjach)
dostosowanie oprogramowania do wymogów konkretnego stanowiska
inicjalizacja baz danych (zdefiniowanie reguł postępowania, wypełnianie słowników i kartotek, przeniesienie - import danych z funkcjonujących systemów,...)
zdefiniowanie użytkowników (ew. grup lub ról), przydzielenie im uprawnień i weryfikacja dostępu do odpowiednich części systemu
sprawdzenie możliwości wykorzystania przynajmniej podstawowej funkcjonalności systemu
Szkolenia i wdrożenie
Część wstępna szkoleń (najczęściej w postaci seminarium, bez bezpośredniej pracy użytkowników z systemem) może być przeprowadzona jeszcze przed ukończeniem systemu;
Szkolenia muszą być dostosowane do poziomu użytkowników (np. odzielnie dla użytkowników końcowych i administratorów systemu) i powinny być organizowane w taki sposób, aby osoby uczestniczące były zainteresowane całością zagadnienia
Zaleca się, aby szkolenia przeprowadzały (lub przynajmniej je rozpoczynały) osoby, które były zaangażowane w prowadzenie przedsięwzięcia; jest im łatwiej nawiązać kontakt z przyszłymi użytkownikami
Bardzo często stosowane jest tzw. nadzorowane korzystanie z systemu (użytkownicy pracują w nowym systemie pod kontrolą wdrożeniowca), często równoległe z tradycyjnym sposobem pracy, po którym następuje weryfikacja rezultatów
Konserwacja i modyfikacja oprogramowania
Inne używane terminy to pielęgnacja lub utrzymanie (ang. maintenance)
Konserwacja polega na zapewnieniu poprawnego i efektywnego funkcjonowania systemu poprzez wprowadzenie niezbędnych modyfikacji
Istnieją trzy główne klasy wprowadzanych w oprogramowaniu modyfikacji:
poprawiające - polegają na usuwaniu z oprogramowania wykrytych podczas normalnej pracy błędów (nie zostały one wykryte podczas testowania) a popełnionych w czasie analizy wymagań, projektowania lub najczęściej implementacji
ulepszające - polegają na poprawie jakości oprogramowania,
dostosowujące - polegają na dostosowaniu oprogramowania do zmian zachodzących w wymaganiach użytkownika lub w środowisku pracy oprogramowania
61. Charakterystyka co najmniej trzech elementów niezbędnych do budowy systemu wbudowanego.
Pamięć programu (najczęściej zewnętrzna, ponieważ ta wbudowana jest zbyt mała (wg.Murawskiego)) — najczęściej wyróżniana tylko na poziomie logicznym część pamięci operacyjnej przeznaczona do zapamiętania rozkazów programu. W komputerach przemysłowych jest zazwyczaj zrealizowana w postaci stałej jako pamięć ROM. (najczęściej zewnętrzna, ponieważ ta wbudowana jest zbyt mała (wg.Murawskiego))
Pamięć operacjna - W pamięci RAM przechowywane są aktualnie wykonywane programy i dane dla tych programów oraz wyniki ich pracy. Zawartość większości pamięci RAM jest tracona kilka sekund po zaniku napięcia zasilania, niektóre typy wymagają także odświeżania, dlatego wyniki pracy programów
62. Charakterystyka trzech elementów mikrokontrolera.
Mikrokontroler (skrót ang. MCU lub μC) - system mikroprocesorowy zrealizowany w postaci pojedynczego układu scalonego, zawierającego jednostkę centralną (CPU), pamięć RAM, na ogół, pamięć programu oraz rozbudowane układy wejścia-wyjścia.
Mikrokontroler stanowi użyteczny i całkowicie autonomiczny system mikroprocesorowy, nie wymagający użycia dodatkowych elementów, których wymagałby do pracy tradycyjny mikroprocesor. Skądinąd, mikrokontrolery przystosowane są do bezpośredniej współpracy z rozmaitymi urządzeniami zewnętrznymi, w tym również takimi, do których obsługi tradycyjny mikroprocesor wymagałby użycia dodatkowych układów peryferyjnych.
Mikrokontrolery wykorzystuje się powszechnie w sprzęcie AGD, układach kontrolno-pomiarowych, w przemysłowych układach automatyki, w telekomunikacji itp.
- Procesor nazywany często CPU (ang. Central Processing Unit) - urządzenie cyfrowe sekwencyjne potrafiące pobierać dane z pamięci, interpretować je i wykonywać jako rozkazy.
W funkcjonalnej strukturze procesora można wyróżnić takie elementy, jak:
zespół rejestrów do przechowywania danych i wyników, rejestry mogą być ogólnego przeznaczenia, lub mają specjalne przeznaczenie,
jednostkę arytmetyczną (arytmometr) do wykonywania operacji obliczeniowych na danych,
układ sterujący przebiegiem wykonywania programu.
- RAM - podstawowy rodzaj pamięci cyfrowych o bezpośrednim dostępie do dowolnej komórki pamięci, które mogą być też zapisywane przez procesor, a wyklucza pamięci ROM (tylko do odczytu), pomimo iż w ich przypadku również występuje swobodny dostęp do zawartości.
W pamięci RAM przechowywane są aktualnie wykonywane programy i dane dla tych programów oraz wyniki ich pracy. Zawartość większości pamięci RAM jest tracona kilka sekund po zaniku napięcia zasilania, niektóre typy wymagają także odświeżania, dlatego wyniki pracy programów muszą być zapisane na innym nośniku danych.
Pamięć programu — najczęściej wyróżniana tylko na poziomie logicznym część pamięci operacyjnej przeznaczona do zapamiętania rozkazów programu. W komputerach przemysłowych jest zazwyczaj zrealizowana w postaci stałej jako pamięć ROM.
- uniwersalne porty wejścia - wyjścia (na ogół przypisane do konkretnych wyprowadzeń układu scalonego); część tych portów może pełnić alternatywne funkcje wybierane programowo - np. mogą to być elementy opcjonalnej magistrali adresów i danych (Magistrala – zespół linii oraz układów przełączających służących do przesyłania sygnałów między połączonymi urządzeniami w systemach mikroprocesorowych, złożony z trzech współdziałających szyn:
sterująca (kontrolna) - mówi, czy sygnał ma zostać zapisany, czy odczytany
adresowa (rdzeniowa) - mówi, z jakiej komórki pamięci sygnał ma zostać odczytany lub do jakiej komórki pamięci sygnał ma zostać zapisany;
danych - tą magistralą przepływają dane.
63. Zasadnicze różnice i podobieństwa występujące między mikroprocesorem, a mikrokontrolerem.
1. Różnice pomiędzy mikroprocesorem a mikrokontrolerem
Mikrokontroler jest niezależnym systemem komputerowym, zawierającym w sobie (pamięć
RAM,ROM, układy I/O, timer, układy kontroli przerwań, rdzeń CPU), układ transmisji (szeregowej,
równoleglej), jednostkę obliczeniową ALU, zegar czasu rzeczywistego RTC :
mała moc obliczeniowa (20 MIPSów)
na ogół brak instrukcji zmiennoprzecinkowych
przetwarzanie potokowe
bogate peryferia
liczniki i układy czasowe
przetworniki A/C i C/A
duża liczba interfejsów
dostępne operacje bitowe
brak układu zarządzania pamięcią MMU
praca tylko w trybie rzeczywistym
rzadko obsługiwany bezpośredni dostęp do pamięci DMA
zastosowanie: aparatura kontrolno pomiarowa
Mikroprocesor jest sekwencyjnym układem logicznym działającym w takt sygnału zegarowe CLK:
duża moc obliczeniowa (6000 MIPSów obecnie)
wielordzeniowość oraz technologia HT
przetwarzanie potokowe
dostępne instrukcje zmiennoprzecinkowe
do działania wymaga dodatkowych peryferiów
kontroler DMA
pamięć (programu i danych)
kontroler przerwań PIC (ang. Programmable Interrupt Controller)
dostępny układ zarządzania pamięcią MMU
adresowanie w trybie rzeczywistym i wirtualnym
z reguły architektura Von-Neumana
możliwość pracy w systemie wieloprocesorowym
zastosowanie: komputery (stacje robocze - komputery osobiste, serwery
64. Konsekwencje stosowania systemów operacyjnych w systemach wbudowanych.
System wbudowany (ang. Embedded system) - system komputerowy specjalnego przeznaczenia, który staje się integralną częścią obsługiwanego przez niego sprzętu. System wbudowany spełnia określone wymagania, zdefiniowane do zadań które ma wykonywać. Nie można nim więc nazywać typowego wielofunkcyjnego komputera osobistego. Każdy system wbudowany oparty jest na mikroprocesorze (lub mikrokontrolerze), zaprogramowanym do wykonywania ograniczonej ilości zadań lub nawet tylko do jednego. Zależnie od złożoności wykonywanych zadań, może zawierać oprogramowanie dedykowane wyłącznie temu urządzeniu (firmware) lub może to być system operacyjny wraz ze specjalizowanym oprogramowaniem. Może o tym decydować też stopień niezawodności jakie ma oferować dany system wbudowany. Ogólną zasadą jest, iż im mniej złożone i specjalizowane jest oprogramowanie, tym bardziej system jest niezawodny oraz może szybciej reagować na zdarzenia krytyczne.Niezawodność systemu może być zwiększona, przez rozdzielenie zadań na mniejsze podsystemy, a także przez redundancję. Polegać to może np. na zastosowaniu do jednego zadania dwóch identycznych urządzeń, które mogą przejąć zadania drugiego, w przypadku awarii jednego z nich.Za pierwszy komputer wbudowany uznaje się ten, który sterował amerykańskim statkiem kosmicznym Apollo
65. Znaczenie terminów: OTP, programowanie w systemie, bootloader.
OTP ROM (ang. One Time Programming- Read Only Memory) - rodzaj pamięci komputerowej typu ROM programowalnej elektrycznie.
Strukturalnie jest tożsama z pamięcią EPROM (programowalną elektrycznie i wymazywalną przez wystawienie na promieniowanie UV), jednak, w odróżnieniu od EPROM, kostka z układem OTP ROM nie posiada okienka kwarcowego umożliwiającego wystawienie jej na światło ultrafioletowe i wymazanie w ten sposób zawartości pamięci (pamięć zapisywalna tylko raz).
programowanie w systemie (bez wylutowywania). Jest to programowanie np. mikroprocesorów lub pamięci, które są już wlutowane w układ. Jest to po prostu możliwość programowania mikrokontrolera w płytce, bez wylutowywania go, czy wyjmowania z podstawki. Jest to bardzo wygodne rozwiązanie, zwłaszcza dla elektronika - amatora, które umożliwia mu uruchomienie urządzenia czy wykonanie zmian w programie bez „dewastowania” całego układu. Nie do pominięcia jest również fakt, że niektóre mikrokontrolery (np. z serii HC firmy MOTOROLA czy ATMega firmy ATMEL) producent wyposaża w mechanizmy sprzętowych pułapek
oraz możliwość pracy krokowej, umożliwiając w ten sposób tanie uruchamianie układu krok po kroku,
bez użycia kosztownego emulatora sprzętowego a następnie zapis gotowej, uruchomionej aplikacji do
pamięci programu. Wróćmy jednak do tematu artykułu.
Aby programowanie mikrokontrolera w układzie było możliwe, projektant układu (aplikacji mikrokontrolera)
musi komponując otoczenie układu, spełnić pewne podstawowe warunki. Po pierwsze musi
pamiętać, że bardzo często linie służące do zapisu pamięci FLASH są wykorzystywane również przez
układy peryferyjne, również czasami jako dwukierunkowe. Na przykład UART (jednokierunkowo,
doprowadzenia RxD i TxD mikrokontrolera) czy SPI (jednokierunkowo tylko, jeśli mikrokontroler
pracuje wyłącznie w jednym z trybów, jako master lub jako slave; doprowadzenia MISO, MOSI, SCK
oraz ewentualnie SS). Programowanie mikrokontrolera nie może też zakłócać pracy dołączonych
układów. Po drugie należy spełnić takie warunki dopasowania sygnałów programujących, aby
(zwłaszcza przy programowaniu mikrokontrolerów przez SPI!) sygnał SCK miał odpowiednio krótkie
czasy narostu i opadania zboczy. Najlepiej aby nie przekraczały one 70..100ns. Niedopuszczalne jest
również, aby sygnały programujące były zniekształcone, aby - zwłaszcza na zboczach sygnałów -
występowały objawy wzbudzania się układu.
Bootloader – (Program rozruchowy) to działający na zasadzie samorozruchu program uruchamiany jako pierwszy po wykonaniu BIOS-u, służący do załadowania systemu operacyjnego do pamięci operacyjnej komputera (mikrokontrolera).
Program rozruchowy oraz cały system operacyjny może być pobierany także z innych urządzeń takich jak stacja dyskietek, napęd CDROM, dyski USB a nawet spoza komputera, z serwera w sieci lokalnej.
66. Napisz kod programu zmieniający na przeciwny 0 bit zmiennej „B” umieszczonej w pamięci wewnętrznej danych mikrokontrolera pod adresem 000000001000000 Bin.
67. Odpowiedzialność zawodowa i etyczna informatyków.
Technologie informatyczne są wykorzystywane praktycznie w każdej działalności zawodowej i życiu osobistym każdego człowieka. Stąd informatycy muszą mieć pełną świadomość konsekwencji wynikających z prowadzonych działań informatycznych - stanowi to istotę odpowiedzialności zawodowej. Powierzone zadania powinny być zawsze wykonywane z należytą starannością. W 1976 r. Walter Maner określił teorię o wpływie komputeryzacji na społeczeństwo mianem Etyki Komputerowej. Odpowiedzialność etyczna informatyków to obowiązek podejmowania i prowadzenia działań zgodnie zzasadami etyki. Nie można przywłaszczać sobie i wykorzystywać obcych produktów programistycznych. Nie godzi się oszukiwać i naciągać klienta, trzeba wywiązać się z umowy, być rzetelnym i terminowym, dostarczyć to, co klient zamówił, dbać o jakość, nie zawyżać cen za oferowane produkty i usługi, itd. Należy spełniać wymagania klienta, ale nie można zgadzać się na wszystko i za wszelką cenę
68. Kodeksy etyczne i kodeksy postępowania w informatyce.
W 1992 r. został zatwierdzony przez organizację ACM, grupującą wybitnych informatyków, "Kodeks Etyczny Stowarzyszenia Sprzętu Komputerowego". Kilka ogólnych imperatyw moralnych tego kodeksu to: 1) Przyczyniać się do dobra społeczeństwa i człowieka. 2) Unikać szkodzenia innym ludziom. 6) Respektować własność intelektualną. 7. Respektować prywatność innych. Inne dokumenty to "Kodeks Instytutu Inżynierów Elektryków i Elektroników", "Karta Praw i Obowiązków Dydaktyki Elektronicznej", "Dziesięć Przykazań Etyki Komputerowej" oraz metodyka Software Development Impact Statement (SoDIS) dotycząca prowadzenia prac projektowo-programowych. Do dnia dzisiejszego nie stworzono w Polsce żadnego kodeksu dla informatyków. W 2000 r. biuro DiS opracowano projekt "Kodeksu etycznego zawodu informatyka". Przykładem obowiązującego kodeksu jest "Kodeks Etyki i Standardy Postępowania", opracowany i obowiązujący w Kanadzie.
69. Ryzyko i odpowiedzialność związane z systemami informatycznymi.
Pod pojęciem ryzyka rozumie się wszelkie zagrożenia w prowadzonych działaniach. Ryzyka przedsięwzięcia dotyczą możliwych zagrożeń w realizacji kontraktu: organizacyjnych, finansowych, prawnych, legislacyjnych i technicznych oraz uwarunkowanych przez organizacje zewnętrzne. Ryzyka projektu dotyczą ukończenia projektu w określonym terminie i budżecie oraz spełniania przez wytworzony produkt (np. oprogramowanie) wyspecyfikowanych oczekiwań klienta. Zarządzanie ryzykiem obejmuje działania oceny ryzyka i sterowania ryzykiem w kolejnych etapach: Identyfikacja, Analiza, Planowanie, Obniżenie ryzyka, Monitorowanie oraz Ponowna ocena. Dla każdego zagrożenia planowane są działania obejmujące: Obniżenie ryzyka, Uniknięcie ryzyka, Transfer ryzyka oraz Zaakceptowanie ryzyka. Odpowiedzialność obejmuje zarówno odpowiedzialność zawodową, jak i etyczną.
70. Problemy i zagadnienia prawne dotyczące własności intelektualnej w informatyce.
Wyróżnia się dwa podstawowe rodzaje prawnej ochrony programów komputerowych: typ własnościowy - zapewnia ustawa o prawie autorskim i prawach pokrewnych z 1994 r. oraz typ wolnościowy - zapewniają odpowiednie licencje. W prawie autorskim wyróżnia się prawa osobiste - chronią nieograniczoną w czasie i nie podlegającą zrzeczeniu się lub zbyciu więź twórcy z utworem oraz prawa majątkowe - zespół uprawnień jakie przysługują twórcy, ze szczególnym uwzględnieniem kwestii ekonomicznych tych uprawnień. Programy komputerowe są przedmiotem prawa autorskiego i podlegają analogicznej ochronie jak utwory literackie z uwzględnieniem wyspecyfikowanych różnic. Korzystanie z programów komputerowych odbywa się na podstawie licencji. Licencja w odniesieniu do oprogramowania to regulacja prawna określająca warunki jego użytkowania i zasady odpłatności. Korzystanie z programu komputerowego bez licencji lub w sposób niezgodny z licencją stanowi naruszenie praw twórcy.
71. System patentowy w informatyce.
Patent to prawo wydane osobie fizycznej lub prawnej do zabronienia innym osobom fizycznym lub prawnym zarobkowego bądź zawodowego użytkowania danego wynalazku bądź wynalazków (będących przedmiotem patentu). W ostatnich latach toczy się publiczny spór na temat patentów na oprogramowanie, który ogniskuje się wokół przyjęcia lub odrzucenia przez Unię Europejską regulacji opartych na amerykańskim prawie patentowym. W Europie i w szczególności w Polsce ochrona prawna wytwarzanego oprogramowania odbywa się w ramach prawa autorskiego - powodem jest ocena, ze patenty na oprogramowanie szkodzą innowacyjności i powiększają siłę monopoli w tak zasadniczej dziedzinie informatycznej oraz że są one szczególnie niekorzystne dla europejskich firm, ponieważ przedsiębiorstwa z USA posiadają większość patentów na oprogramowanie oraz zasady ich wykorzystywania. Polskie prawo nie dopuszcza patentowania oprogramowania. Patentowanie oprogramowania jest za to szeroko stosowane w Stanach Zjednoczonych iJaponii - prawie 75% patentów.
72. Prawne podstawy ochrony prywatności użytkowników technologii informatycznych.
Prywatność z punktu widzenia użytkownika technologii informatycznych to prawo do decydowania czy ujawnić dane osobowe, a jeśli tak to komu i kiedy. Użytkownik Internetu zostawia w nim dwojakiego rodzaju informację na swój temat: gdy dokonuje z kimś transakcji lub gdy robi coś publicznie - wysyła swą opinię, czy wiadomość do kilku osób, czy też zamieszcza informację we własnej witrynie WWW. Ochrona prywatności każdego człowieka to zabezpieczenie go przed różnymi formami inwigilacji, jak np. podglądanie czy podsłuchiwanie. Sposobem ochrony prywatności jest posługiwanie siępseudonimami w dyskusjach internetowych i ukrywanie swego nazwiska i adresu poczty elektronicznej, co, jak każde rozwiązanie, ma wady i zalety. Prawne podstawy ochrony prywatności zapewnia ustawa o ochronie danych osobowych z 1997 r. Kluczowe ustalenia tej ustawy to:
1) Przetwarzanie danych osobowych jest dopuszczalne, jeżeli osoba, której dane dotyczą, wyrazi na to zgodę.
2) Dane mogą być przetwarzane w systemach zabezpieczonych przed dostępem niepowołanych osób.
3) Odstąpienie od obowiązku informowania zainteresowanych osób możliwe jest, gdy dane służą do celów naukowych, dydaktycznych, historycznych, statystycznych lub archiwalnych, zaś nakłady na informowanie są niewspółmiernie wysokie w porównaniu z zamierzonym celem.