Wykonaj obliczenie 117-3 tak, jak wykonałby to komputer.
117 = 01110101 (bin) 01110101 01110010 (U2) = 114 (dec)
-3 = 11111101 (U2) +11111101
---------------
101110010
Wykonaj obliczenie 17*5 tak, jak wykonałby to komputer.
17 = 00010001 (bin) 00010001 01010101(bin) = 85 (dec)
5 = 00000101 (bin) *00000101
---------------
00010001
00010001
00000000
--------------------------
0000000|01010101
Podaj najważniejsze różnice pomiędzy zapisem stało- i zmiennoprzecinkowym, oraz główne wady i zalety obu zapisów liczb.
Zapis stałoprzecinkowy(fixed point):
-Z góry przyjęta liczba bitów dla części całkowitej i części ułamkowej
WADY: ograniczony zakres liczb możliwych do zakodowania, mała precyzja zapisu części ułamkowej
ZALETY: arytmetyka stałoprzecinkowa może zostać zrealizowana za pomocą działań całkowitoliczbowych. Dzięki temu działania na ułamkach są do realizowania tam gdzie nie ma możliwości użycia liczb zmiennoprzecinkowych (procesory bez jednostki zmiennopozycyjnej, np. w mikrokontrolerach), część całkowita zawsze zapisana dokładnie, elastyczność (samodzielne ustalenie, gdzie jest przecinek)
Zapis zmiennoprzecinkowy(floating point):
Liczbę dzieli się na części: znak, mantysę(część ułamkową) i cechę. Mantysa jest znormalizowana, tzn. należy do przedziału <1;B) gdzie b to podstawa systemu obliczeń( w binarnym B=2). Liczba bitów cechy i mantysy jest stała. W celu określenia cechy przesuwa się przecinek tak długo, aż mantysa będzie należała do przedziału <1;B). L=(-1)^s*m*B^c (L-liczba, s-bit znaku, c-cecha, m-mantysa, B-podstawa systemu obliczeń). Im większa liczba tym mniejsza dokładność, im mniejszy ułamek, tym więcej cyfr po przecinku (nie da się zapisać dużej liczby z małym ułamkiem). Zapisywana jest pewna ustalona, najważniejsza część liczby. Zwykle na cechę przeznaczony jest jeden bajt, a na mantysę minimum 3 bajty.
WADY: skomplikowane obliczenia (wydajne wymagają dedykowanego bloku procesora, zapisuje najbardziej znaczącą część liczby (utrata części ułamkowej przy dużej całkowitej), część całkowita może nie być zapisana dokładanie (gdy jest duża)
ZALETY: znaczne zwiększenie dokładności obliczeń i zakresu liczb rzeczywistych bez zajmowania dodatkowych obszarów pamięci, zmienny skok liczb w całym zakresie zmienności: mały dla liczb małych, duży dla liczb dużych, duża dokładność ułamków, zapis najbardziej istotnej części liczby.
Z jakimi praktycznymi problemami można spotkać się podczas prowadzenia obliczeń na liczbach zmiennoprzecinkowych?
Zapisywana jest stała liczba cyfr znaczących- Im większa liczba tym mniejsza dokładność, im mniejszy ułamek tym więcej cyfr po przecinku.
Nie da się zapisać jednocześnie dużej liczby z małym ułamkiem.
Liczba bajtów przeznaczona na cechę decyduje o zakresie.
Liczba bajtów przeznaczonych na mantysę decyduje o błędzie.
Nie da się według zasad zapisu zmiennoprzecinkowego zapisać liczby zero (trzeba użyć kombinacji - wszystkie bity mantysy i wykładnika równe 0, bit znaku decyduje o znaku wartości)
Ponieważ zakres mantysy to <1,2) więc najstarszy bit zawsze jest równy jeden, można go zatem pominąć(zysk dodatkowego bitu dla zapisu cechy).
Przy zapisie liczb bardzo małych nie zakłada się że najstarszy bit cechy jest równy jeden.
Reprezentacja liczb rzeczywistych w komputerze jest przybliżona.
Nie da się dokładnie zapisać pewnych liczb ze względu na inny system obliczeń(2)
Porównując dwie teoretycznie identyczne wartości wynik porównania może być negatywny( wystarczy różnica na jednym bicie – lepiej stosować >= niż ==)
Duża liczba cyfr po przecinku w wyniku nie znaczy że obliczenia są bardzo dokładne (w ogólności wynik należy zaokrąglić do tylu cyfr znaczących, ile cyfr znaczących miały dane wejściowe)
Opisz główne cechy procesorów typu CISC / RISC. Do której grupy zaliczysz współczesne procesory
rodziny x86? Uzasadnij.
CISC:
Złożona lista instrukcji
Duża liczba rozkazów.
Występowanie złożonych, wyspecjalizowanych rozkazów mimo że wiele z nich jest wykorzystywana sporadycznie.
Krótszy kod programu.
Słaba optymalizacja- niektóre rozkazy potrzebują dużej liczby cykli procesora do wykonania.
Duża liczba trybów adresowania (procesor troszczy się o dane dla siebie).
Powolne działanie dekodera rozkazów.
RISC:
Mała liczba rozkazów.
Proste rozkazy.
Rozkazy potrzebują jednego cyklu procesora do wykonania.
Dłuższy kod programu (więcej operacji do wykonania).
Tylko kilka trybów adresowania (program troszczy się o dane dla procesora, load-store)
Prostsze i szybsze dekodery rozkazów i adresów.
Niższa częstotliwość taktowania procesora.
Prostsza do wprowadzenia superskalarność (wiele jednostek równoległych)
Współczesne procesory z rodziny x86 z wierzchu wyglądają jak CISC a w środku - jak RISC. Obecnie popularne procesory Intela z punktu widzenia programisty są widziane jako CISC, ale ich rdzeń jest RISC-owy. Rozkazy CISC są rozbijane na mikrorozkazy (ang. microops), które są następnie wykonywane przez RISC-owy blok wykonawczy. W praktyce okazuje się że rozwiązanie takie (pomimo wielu znaczących wad) jest podejściem znacznie bardziej wydajnym (szczególnie że RISC-owy blok wykonawczy jest znacznie bardziej nowoczesny od architektury CISC widocznej dla programisty).
Opisz mechanizm potokowego przetwarzania instrukcji. W jaki sposób rozwiązano problemy występujące przy tego typu przetwarzaniu instrukcji?
Przetwarzanie potokowe polega na ułożeniu rozkazów w sposób zbliżony do linii produkcyjnej. Przetwarzanie pojedynczej instrukcji można podzielić na kilka etapów, które mogą być realizowane przez niezależne podukłady procesora. W potoku znajdują się rozkazy w różnym stadium przetwarzania, co prowadzi do zwiększenia szybkości przetwarzania. Największy wpływ na efektywność potoku ma jego głębokość(liczba poziomów).
Problemy:
różny czas trwania poszczególnych etapów prowadzi do powstawania opóźnień i wymusza stosowanie dodatkowych buforów
nie wszystkie etapy mogą być zawsze realizowane równolegle (możliwość wystąpienia konfliktów gdy sąsiednie instrukcje odwołują się do tej samej komórki pamięci)
wystąpienie instrukcji rozgałęzienia warunkowego może prowadzić do unieważnienia następnych rozkazów w potoku
Rozwiązania:
pobieranie rozkazu docelowego z wyprzedzeniem
zwielokrotnienie strumienia
przewidywanie rozgałęzień
stosowanie bufora pętli
zmiana porządku wykonywanych rozkazów
Opisz mechanizm przetwarzania superskalarnego instrukcji. W jaki sposób rozwiązano problemy przy tego typu przetwarzaniu instrukcji?
Przetwarzanie superskalarne:
kilka równoległych potoków przetwarzania
Możliwość równoczesnego wykonywania kilku rozkazów w jednym cyklu
teoretycznie wyniki nawet skomplikowanych rozkazów otrzymywane są co jeden cykl
w praktyce poszczególne potoki obsługiwane są przez nieidentyczne ALU (jedno wykonuje wszystkie instrukcje, inne tylko niektóre, prostsze)
Problemy:
potoki mogą być od siebie zależne (konflikty w dostępie do zasobów, rozgałęzienia programu)
nie wszystkie rozkazy mogą być dowolnie łączone
Rozwiązania:
odpowiednie łączenie rozkazów
wykonywanie rozkazów w zmienionej kolejności
dynamiczne wykonywanie instrukcji
spekulatywne wykonywanie instrukcji
Czym są instrukcje SIMD? Kiedy się je stosuje?
Single Instruction Multiple Data - są to instrukcje dotyczące systemów, w których przetwarzanych jest wiele strumieni danych w oparciu o pojedynczy strumień rozkazów. Instrukcja szczególnie przydatna w multimediach np. rozjaśnienie obrazu to dodanie pewnej stałej wartości opisującej kolejne piksele. Stosowane są także do obliczeń naukowo-technicznych.
Opisz jedną z wybranych architektur wieloprocesorowych . Czy dodanie kolejnego procesora/rdzenia w systemie wieloprocesorowym liniowo przyspieszy działanie całego systemu komputerowego? Dlaczego?
UMA- Uniform Memory Access:
Cała pamięć jest ogólnodostępna, czas dostępu dla poszczególnych procesorów jest taki sam, konieczny jest protokół zarządzający dostępem
Zalety: każdy z procesorów może wykonywać dowolny fragment programu, łatwa adaptacja programów pisanych na jeden procesor
Wady: słaba skalowalność(możliwość dołączenia kolejnych procesorów) - ograniczona wydajnością szyny systemowej
Dodawanie kolejnych rdzeni/procesorów nie daje liniowego przyrostu prędkości, ponieważ niektóre operacje nie mogą być rozłożone na operacje równoległe oraz wydajność szyn systemowych jest ograniczona (szczególnie negatywnie wpływa to na wydajność UMA).
Czym jest i jak działa pamięć podręczna (cache). Opisz jedną z architektur pamięci cache.
Pamięć cache jest pamięcią w której są zapisywane dane do których dostęp normalną drogą trwałby zbyt długo. Zawiera najczęściej używane dane oraz dane których prawdopodobnie wkrótce będzie potrzebował procesor. Dane te są kopią danych z pamięci operacyjnej. Ma bardzo krótki czas dostępu i zwykle jest połączona z procesorem bardzo szybką magistralą. Zwykle są 2 lub 3 poziomy tej pamięci(wyższy poziom= większa pojemność ale mniejsza szybkość).
Architektura dwuszynowa(Backside)- wyróżniamy dwie niezależne szyny dostępu procesora. Jedna z nich prowadzi do pamięci cache a druga do pamięci operacyjnej. Jej zaletą jest fakt że nie obciąża szyny, zerowe cykle oczekiwania, szybki dostęp do danych spoza cache oraz możliwość taktowania magistrali cache szybciej niż magistrali danych. Wadą jest wysoki koszt.
Co kryje się pod pojęciem RAID? Opisz jeden z typów RAID(3,5 lub 6). Jakie są jego główne wady i zalety?
Pod pojęciem RAID (Redundant Array of Intependent Disks) kryje się określenie macierzy dyskowych. Stosuje się je w systemach w których konieczne jest zwiększenie niezawodności, zabezpieczenie przed utratą danych, przyspieszenie transmisji danych oraz powiększenie przestrzeni dyskowej dostępnej jako jedna całość.
RAID 5: dane dzielone na części, bloki sum kontrolnych rozłożone na wszystkich dyskach, minimum 3 dyski fizyczne
Zalety: całkowita odporność na awarię 1 dysku, z możliwością jego odtworzenia, duża szybkość odczytu, duża pojemność, możliwość odzyskania danych „ w locie”, szybki zapis
Wady: zmniejszona szybkość zapisu z powodu konieczności kalkulowania sum kontrolnych (eliminowana poprzez zastosowanie sprzętowego kontrolera RAID5), w przypadku awarii dysku dostęp do danych jest spowolniony z powodu obliczeń sum kontrolnych, odbudowa macierzy po wymianie dysku jest operacją kosztowną, co powoduje spowolnienie operacji odczytu i zapisu. Wraz ze wzrostem pojemności pojedynczego dysku staje się to coraz większym problemem, gdyż rosnący czas odbudowy grupy RAID zwiększa ryzyko utraty danych w wyniku awarii kolejnego dysku w tym czasie.
Czym różni się transmisja równoległa od szeregowej?
Transmisja równoległa: poszczególne bity jednego słowa danych przesyłane są jednocześnie po kilku równoległych liniach.
Transmisja szeregowa: poszczególne bity jednego słowa danych są przesyłane po kolei po jednej linii.
Jakie są dwa podstawowe mechanizmy zapewniające detekcje błędów transmisji? Opisz ich najważniejsze zasady.
Parzystość:
do ciągu danych dodawany jest bit o takiej wartości, by liczba jedynek w ciągu bitów( wraz z dodanym bitem) była parzysta (Even Parity) lub nieparzysta (Odd Parity), pozwala wykryć pojedyncze błędy na pojedynczych bitach danych zaletą jest prostota realizacji, wadą: nie pozwalają naprawić danych
Suma kontrolna CRC( Cyclic Redundancy Check):
bity traktuje się jako współczynniki wielomianu, który dzieli się modulo 2 przez inny, z góry wybrany wielomian, reszta z dzielenia to suma CRC (dzielimy dane mod 2 przez inną, z góry wybraną liczbę), łatwa realizacja, stosowana najczęściej do detekcji błędów transmisji ponieważ szczególnie wykrywa błędy rozłożone przypadkowo, dwa różne ciągi bitów mogą mieć taką samą sumę kontrolną CRC
Opisz działanie mechanizmu przerwań (IRQ). Jakie są zalety wielopoziomowego systemu priorytetów przerwań?
Urządzenie zgłasza do procesora żądanie dostępu do magistrali. Jeśli procesor zaakceptuje zgłoszenie przerywa aktualny program zapisując stan rejestrów, zezwala na podłączenie urządzenia do magistrali, wykonuje procedurę obsługi przerwania, odtwarza stan rejestrów i kontynuuje program główny. Aby obsłużyć wiele zgłoszeń od wielu urządzeń i dokonać ich arbitrażu potrzebny jest kontroler przerwań. Zaletą wielopoziomowego systemu przerwań jest to że można przerwań obsługę innego przerwania.
Na czym polega i dlaczego się stosuje mechanizm DMA?
Direct Memory Acces stosuje się, ponieważ gdy kopiowanie danych z jednej komórki pamięci do drugiej wykonuje procesor, przy każdym przesłaniu konieczne jest wyznaczenie adresów pamięci i przy dużej ilości danych jest to powolne i obciążające. Rozwiązano to poprzez bezpośredni dostęp do pamięci. Urządzenie przejmuje nadzór nad magistralą, a po transferze zwalnia ją. Metody zarządzania i arbitrażu podobne jak IRQ. Procesor inicjuje transfer ale go nie wykonuje (zajmuje się tym kontroler DMA). Zwykle urządzenie kopiuje blok danych z własnego bufora do pamięci RAM (lub odwrotnie). W czasie trwania transferu procesor może wykonywać inne zadania, niewymagające dostępu do magistrali Mechanizm DMA wykorzystują PC i większość szybkich mikrokontrolerów i DSP.
Opisz procedurę transmisji / sprzężenia z potwierdzeniem
Nadajnik zapisuje dane do bufora i ustawia SR=1
Odbiornik czeka na Q=1
Gdy Q=1 odbiornik odczytuje bufor i ustawia SR=0
Nadajnik czeka z kolejnym zapisem aż Q=0
Gdy Q=0-> pkt.1
Przerzutnik SR na wyjściu Q podtrzymuje: 1-po sygnale Set, 0-po sygnale Reset
Schemat i procedura przedstawiają ogólną ideę, stosowaną w przypadkach uproszczonych, natomiast jej konkretne realizacje zależą od protokołu wymiany danych - mogą to być jawnie połączone linie (jak powyżej), jednak w przypadku bardziej złożonych urządzeń i przy transmisji na odległość potrzebne są układy sterujące, zwykle w formie podukładu procesora, mostka lub układu zewnętrznego (udostępniają funkcje realizujące obsługę urządzeń zewnętrznych/transmisji danych, realizują zadania sprzętowo – nie trzeba pisać własnego programu).
Czego dotyczy i co opisuje standard RS232? Opisz budowę typowej ramki danych stosowanej przy transmisji asynchronicznej z wykorzystaniem RS232.
Standard dotyczy szeregowej transmisji danych - zarówno synchronicznej jak i asynchronicznej z potwierdzeniem (asynchroniczna wykorzystywana znacznie częściej, jedyna obsługiwana w PC). Standard definiuje tylko warstwę fizyczną łącza. Nie definiuje sposobu kodowania danych, sum kontrolnych, kompresji, ramki danych i wyższych warstw.
Na ramkę w transmisji asynchronicznej składa się:
bit startu (stan niski)
bity danych (od 5 do 8 bitów)
opcjonalny bit parzystości
bity stopu (stan 1)- minimalny odstęp od następnej ramki- dla słowa 5-bitowego 1 lub 1.5 bitu, dla dłuższych 1 lub 2
Opisz podstawowe mechanizmy i założenia dotyczące komunikacji z użyciem magistrali USB. Podaj podstawowe elementy protokołu transmisji USB.
Transmisja szeregowa, asynchroniczna i izochroniczna. Prędkość transmisji do 5Gb/s (3.0), obsługa do 127 urządzeń przez jeden kontroler (Host Adapter), drzewiasta struktura sieci połączeń, Host Adapter jest korzeniem; maksymalna dł. kabla łączącego urządzenie i hub to 5m, maksymalnie 6 hubów jeden za drugim (7 poziomów); możliwość zmiany konfiguracji podłączonych urządzeń w trakcie pracy (Hot-Plugging), samokonfiguracja sieci połączeń; możliwość zasilania podłączonym urządzeń (do 0,5A).
Kontroler rozsyła pakiet token (żeton), jeśli urządzenie do którego adresowany jest token żąda transmisji, odsyła odpowiedź pozytywną, jeśli kontrole dysponuje wolnym pasmem, rezerwuje je (przydziela dostęp do magistrali na określony czas), tworzony jest kanał wirtualny, następuje wymiana danych, w przypadku wykrycia błędu, którego nie da się skorygować na podstawie CRC, pakiet wysyłany jest ponownie.
Protokół:
wszelkie akcje, w tym komunikację, inicjuje kontroler USB, przyłączone urządzenia muszą czekać na zapytanie o potrzebę komunikacji – tzw. polling (takie zasady zapobiegają konfliktom, ale pochłaniają dużą część pasma magistrali (nawet do 90%).
podłączone do magistrali urządzenia muszą być jednoznacznie identyfikowane, każdemu przydzielany jest kontroler numer ID, przydział następuje przy pierwszym przeglądzie magistrali przez kontroler lub po podłączeniu urządzenia
przy przeglądzie urządzenia zgłaszają swoją klasę i potrzebną szerokość pasma, kontroler gromadzi te dane by później przydzielać pasma transferu
komunikacja odbywa się na poziomie kanałów wirtualnych - pipelines (fizyczna lokalizacja urządzenia w sieci nie ma znaczenia, ważny jest jego adres ID, na końcach kanału wirtualnego znajdują się końcówki – endpoints – będące albo źródłem, albo odbiornikiem, każde urządzenie może mieć do 16 końcówek)
kontroler tworzy kanały przesyłowe określonego typu, o ustalonej szerokości (częstotliwości zapytań) i kierunku przepływu
ustalanie priorytetów urządzeń i przydział pasma polega na odpowiednio częstym lub rzadkim przesyłaniu do nich przez kontroler pakietów zapytań (token)
prośba o dostęp może zostać zignorowana ale trwająca transmisja nie jest przerywana
Scharakteryzuj tryby transmisji dostępne w magistrali USB.
Tryb masowy- podstawowy tryb transmisji, asynchroniczny, ma najniższy priorytet, nie daje gwarancji przepustowości, jest gwarancja poprawności i spójności danych (powtarzanie uszkodzonych i zagubionych pakietów)
Tryb izochroniczny- tryb używany do transmisji dużych ilości danych w regularnych odstępach czasu, kontroler rezerwuje pasmo i gwarantuje dostęp co określony czas, nie ma korekcji błędów ani powtarzania uszkodzonych pakietów, używany np. do transmisji video i dźwięku
Tryb natychmiastowy- umożliwia szybkie przesłanie kilku bajtów danych, używany np. do obsługi myszy
Tryb sterujący- używany podczas konfiguracji nowopodłączonego urządzenia.
Na czym polega transmisja izochroniczna i co oznacza „rezerwacja pasma transmisji” w magistrali USB.
Transmisja izochroniczna polega na tym że dane muszą docierać w określonym czasie. Transmisja przez USB opiera sie na zapytaniach wysyłanych przez kontroler (czyli tokenach), a rezerwacja pasma polega na tym, że tokeny dla wybranego urządzenia są przesyłane z określoną częstotliwością i im większe ma być pasmo, tym ta częstotliwość jest większa. W danej chwili do medium transmisji może być dołączony tylko jeden nadajnik. Rezerwacja pasma gwarantuje, ze okresów w którym dane urządzenie będzie podłączone, będzie odpowiednio dużo. Czas, przez jaki urządzenie ma dostęp do magistrali przekłada sie na ilość danych, jakie może wysłać, a to z kolei określa sie mianem pasma transmisji.
Co to jest i jak jest zbudowany system operacyjny? Podpowiedź: przedstaw w odpowiedzi model warstwowy wraz z opisem funkcji warstw.
Jądro: najważniejszy komponent każdego systemu operacyjnego wykonuje podstawowe operacje- uruchamianie programów, przyznawanie zasobów aplikacjom, obsługa wielozadaniowości, obsługa urządzeń
Sterownik: program kontrolujące pracę przyłączonego do komputera urządzenia systemy zawierają często wbudowane sterowniki do popularnych typów urządzeń, do innych trzeba zainstalować
Powłoka/ interfejs użytkownika (shell): pozwala na komunikację użytkownika z systemem, „tłumaczy” polecania użytkownika na funkcje kernela, każdy system oferuje swoja powłokę (zwykle jedną tekstową i jedną graficzną) powłokę zwykle można zmienić na inną
Co oznacza skrót HAL w odniesieniu do systemów operacyjnych?
Warstwa Abstrakcji Sprzętu-HAL- Hardware Abstraction Layer, znajduje się pomiędzy systemem a sprzętem i uniezależnia system od sprzętu, wszelkie odwołania do sprzętu wykonywane wyłącznie za pośrednictwem HAL, wybór HAL w momencie instalacji, systemu system ‘nie wie’, na jakim sprzęcie tak naprawdę działa
Co oznacza skrót GUI w odniesieniu do systemów operacyjnych?
Graficzny interfejs użytkownika. W GUI wyposażone są nowoczesne systemy operacyjne, jak Windows, Mac OS czy OS/2. Typowymi elementami GUI są okna, rozwijane menu, przyciski, paski przewijania, ikony i zakładki. Użytkownik korzysta z interfejsu za pomocą myszy i klawiatury, klikając na graficzne reprezentacje poleceń zamiast wpisywać z klawiatury komendy. Programy napisane dla danego systemu operacyjnego zapożyczają i wykorzystują elementy jego graficznego interfejsu użytkownika, na przykład wygląd jego okien, przycisków czy kolorystykę.
Na czym polega mechanizm wielowątkowości? Czy przyspiesza on wykonywanie programu? Czy jest to cecha procesora czy systemu operacyjnego?
Jest to cecha systemu operacyjnego. Mechanizm polega na tym że system wykonuje jednocześnie kilka zadań w ramach jednego procesu przełączając się pomiędzy nimi. Przełączenie na inne zadanie następuje np. w momencie gdy aktualne oczekuje na dane. Wielowątkowość nie przyspiesza wykonywania pojedynczego programu ale daje możliwość wykonania wielu programów jednocześnie i wykorzystania ‘przestojów’.
Wielowątkowość może także odnosić się do samych procesorów. W takim wypadku oznacza możliwość jednoczesnego wykonywania wielu wątków sprzętowych na pojedynczej jednostce wykonawczej – rdzeniu. Wielowątkowość w procesorach możliwa jest dzięki temu, że nie wszystkie części jednostki wykonawczej są w jednakowym stopniu wykorzystywane przez pojedynczy wątek (ciąg instrukcji). Nieaktywne części jednostki wykonawczej mogą w tym czasie wykonywać inny wątek zwiększając efektywność wykorzystania całego procesora.
Na czym polega wielozadaniowość systemu operacyjnego? Czym różni się wielozadaniowość kooperacyjna i z wywłaszczeniem?
Wielozadaniowość:
cecha systemu operacyjnego- możliwość uruchomienia więcej niż jednej aplikacji/ programu/ procesu w tym samym czasie
Wielozadaniowość kooperacyjna:
programy, gdy nie potrzebują zasobów same je zwalniają i przekazują systemowi, który przydziela je następnym procesom
Wielozadaniowość z wywłaszczeniem:
system sam decyduje o wykorzystaniu zasobów (zwłaszcza czasu procesora i pamięci), może ‘wyrzucić’ czyli wywłaszczyć proces
zaleta: zablokowany program nie blokuje systemu
współczesne systemy operacyjne są systemami wielozadaniowymi z wywłaszczeniem
Co to jest i jaki wpływ na system operacyjny ma system plików? Za co odpowiada? Podaj kilka cech współczesnych systemów plików na podstawie NTFS.
System plików to sposób, w jaki komputer organizuje pliki i katalogi na nośniku danych, określa jak informacje są zapisywane i odczytywane, możliwe do użycia atrybuty plików oraz schemat poprawnych nazw plików i katalogów, ma duży wpływ na wydajność i stabilność systemu: szybkość dostępu do danych, odporność na uszkodzenia plików, ma duży wpływ na bezpieczeństwo systemu: powinien uwzględniać prawa dostępu i własności plików, może obsługiwać szyfrowanie plików.
Cechy:
Wolumin NTFS jest logicznie podzielony na klastry składające się z pewnej stałej liczby fizycznych sektorów dysku. Pozwalają na uniezależnienie struktury systemu plików od fizycznych właściwości dysku.
Wszystkie metadane są chronione przed rozspójnieniem
Zwykłe dane nie są chronione.
Wszystkie dane na dysku są trzymane w zwykłych plikach.
Wszystkie informacje o pliku, włącznie z jego zawartością, są zapisane w jednolity sposób (w atrybutach).
Maksymalny rozmiar pliku (w Win) – 16TB, maksymalny rozmiar klastra – 64KB
Jakie znasz mechanizmy sterowania kolejnością wykonania instrukcji w programie? Opisz wybrane 2 na podstawie Matlaba.
Pętle:
For- instrukcje wewnątrz pętli wykonywane tyle razy ile wynika z zadanego zakresu, licznik pętli zmienia się automatycznie, używana gdy z góry znamy liczbę wywołań (np. for i=1:1:10 instrukcja zostanie wykonana 10 razy)
while- instrukcje wewnątrz pętli wykonywane są tak długo jak długo spełniony jest warunek, ewentualny licznik pętli musimy zmieniać sami, używana gdy nie znamy z góry liczby wywołań, gdy licznik jest zmieniany w sposób nietypowy
Instrukcje warunkowe:
if- instrukcja jest wykonywana gdy spełniony jest warunek zadany na początku, wybór możliwości dalszej drogi
switch- funkcja posiadać może wiele warunków, dla których jest wiele instrukcji. Wykonywane są instrukcje zawarte w bloku, dla którego spełnione jest zmienna==warunek.
Czym są procedury i funkcje w programowaniu?
Wyodrębnione części programu( podprogramy) wykonujące określone zadanie/ operację, posiadające jednoznaczną nazwę i ustalony sposób wymiany informacji z pozostałymi częściami programu; mogą (nie muszą) mieć parametry wejściowe
procedura: po wykonaniu zadania nie zwraca wartości wyjściowych
funkcja: po wykonaniu zadania może zwrócić wartości wyjściowe
Pozwalają grupować instrukcje np. w celu wielokrotnego wykorzystania, zwiększają czytelność kodu.
→ 35.
→ 35.
Co to jest algorytm? Co powinien zawierać? Jakie są najważniejsze cechy algorytmów?
Algorytm- precyzyjny opis sposobu rozwiązania problemu/ zadania w skończonej liczbie kroków, kluczowy element programu z punktu widzenia rozwiązania problemu/ zadania
Algorytm powinien zawierać:
specyfikację problemu- opis danych wejściowych i warunków jakie muszą spełniać, opis wyników
specyfikację algorytmu- opis związków zachodzących między danymi a wynikami
listę kroków, jakie należy wykonać by przekształcić dane wejściowe w wyniki z użyciem opisanych związków
Cechy algorytmów:
zbiór danych wejściowych musi być zdefiniowany
algorytm musi działać poprawnie dla wszystkich elementów ze zbioru danych wejściowych
każdy krok algorytmu jest jednoznacznie określony
liczba kroków potrzebna do otrzymania wyniku jest skończona
Przedstaw kaskadowy model cyklu życia programu. Krótko scharakteryzuj jego etapy.
Model kaskadowy:
studium potrzeb i możliwości- ogólne sformułowanie problemu, analiza czy nowy program jest potrzebny, opłacalny i czy da się go zrealizować
specyfikacja- szczegółowe sformułowanie problemu, określenie wymagań stawianych przez użytkownika(funkcjonalne i pozafunkcjonalne), określenie wymagań wynikających ze środowiska pracy systemu, wymagania projektowo wdrożeniowe, dokładnie określa co należy do programu/systemu a co nie, tworzona jest w ścisłej współpracy z użytkownikiem, specyfikacja wymagań systemowych
projektowanie- analiza problemu, znalezienie algorytmu rozwiązania, opis sposobu rozwiązania, projekt struktury programu, projekt struktury danych, projekt komunikacji z użytkownikiem, projekt testowania programu
kodowanie/ programowanie- zapis elementów programu (w szczególności algorytmu) z użyciem języka programowania, należy wybrać odpowiednie narzędzie, należy stosować dobre praktyki pisania kodu zwiększając jego czytelność
uruchamianie, testowanie, walidacja- sprawdzanie poprawności działania programu w praktyce, potwierdzenie w sposób udokumentowany i zgodny z założeniami, że procedury i procesy działania rzeczywiście prowadzą do zaplanowania wyników, prowadzone według specyfikacji
konserwacja- wprowadzenie poprawek w istniejącym i działającym programie, dodawanie nowych elementów i funkcji
Model kaskadowy nie jest współcześnie stosowany, jednak bardzo ważny ze względu na
Krótko opisz zalety spiralnego modelu życia programu w stosunku do modelu kaskadowego.
zalety: możliwość wykorzystania gotowych projektów, faza oceny w każdym cyklu pozwala uniknąć błędów lub wcześniej je wykryć, cały czas istnieje możliwość rozwijania projektu
wady: metodologia nie do końca dopracowana (każdy projekt jest inny i powstaje w innych warunkach, ciężko określić warunki brane pod uwagę), tworzenie w oparciu o model wymaga doświadczenia w prowadzeniu tego typu projektów oraz często wprawy ekonomicznej w zarządzaniu
Czym powinien cechować się program przyjazny dla użytkownika?
pozwala zrealizować zadanie szybko
szybko reaguje na polecenia użytkownika
zapewni użytkownikowi poczucie, że to on steruje komputerem, a nie odwrotnie
zapewnia prostą komunikację pomiędzy użytkownikiem a komputerem
ma czytelne menu i interfejs użytkownika z krótkimi, ale treściwymi komunikatami
zachowuje jednolity styl we wszystkich oknach, paskach, modułach, itp…
ma przejrzystą organizację poszczególnych modułów (łatwo zorientować się, który moduł do czego służy)
ma przyjemną szatę graficzną
Na czym polega testowanie programu? Jakie rodzaje testu się wykonuje? Czym różnią się od siebie testowanie, weryfikacja i walidacja?
Testowanie programu polega na wykrywaniu błędów/ anomalii w zachowaniu programu. Przyjmuje się że program jest poprawny gdy nie jesteśmy w stanie w nim już wykryć błędów.
Rodzaje testów:
w trakcie tworzenia programu: testy modułów, integracji, funkcjonalne, systemowe, integracji systemu, wydajności
testy po zakończeniu budowy programu: testy α (u producenta ale przez osobny zespół) i testy β (testowanie finalnej wersji programu)
Testowanie- sprawdzanie czy program działa poprawnie
Weryfikacja- sprawdzanie, czy wytwarzane oprogramowanie jest zgodne ze specyfikacją
Walidacja- sprawdza czy oprogramowanie jest zgodne z oczekiwaniami użytkownika
W jaki sposób można określić, czy testowany program działa (a zwłaszcza wykonuje obliczenia) poprawnie? Dla jakich zbiorów danych powinny być przeprowadzone testy?
Należy określić, jakie muszą być wyniki dla konkretnego zestawu danych testowych. Wartości oczekiwane można uzyskać z obliczeń analitycznych, z książek, norm itp., z obliczeń wykonywanych innymi programami. Rozbieżności między wynikami z programu testowanego a oczekiwanymi wskazują że w programie jest błąd lub błędne są wartości oczekiwane.
Testy powinny być przeprowadzane dla danych przykładowych mających sens w konkretnym programie, czasami dla danych losowych (raczej w mniej skomplikowanych programach) i dla danych znajdujących się na krańcach przedziału danych wykorzystywanych przez program (w takich przypadkach często mogą pojawić się łatwo przeoczalne błędy). Należy testować dane poprawne (program powinien zwracać poprawne wyniki) i dane niepoprawne (zwracanie komunikatów o błędach).
Na czym polega konserwacja oprogramowania?
usuwaniu błędów
wprowadzaniu modyfikacji z powodu zmiany założeń co do działania programu, np. zmiana przepisów lub norm
wprowadzanie modyfikacji wynikających ze zmiany wymagań użytkownika
Przedstaw typowe topologie sieci komputerowych, podaj ich wady i zalety.
Co to jest hub, switch i bridge w sieci komputerowej- czym się różnią?
Hub-koncentrator- urządzenie łączące wiele urządzeń sieciowych w sieci komputerowej o topologii gwiazdy, przesyła sygnał z jednego portu na wszystkie pozostałe, bit po bicie (a nie ramka po ramce jak switch), nie analizuje ramki pod kątem adresu MAC ani adresu IP, pracuje w warstwie fizycznej łącza modelu OSI
Mostek-bridge- urządzenie decydujące o przesłaniu ramek danych na podstawie stworzonej przez siebie tablicy forwardingu zawierającej numery portów, do których przyłączone są urządzenia (każdy port to inny segment sieci), oraz adresy sprzętowe MAC urządzeń w segmencie sieci. Filtruje pakiety, odciąża sieć, ale może ja spowolnić, pracuje w warstwie łącza danych modelu OSI
Switch- przełącznik- urządzenie łączące segmenty sieci, jego zadaniem jest przekazywanie ramek między segmentami, pracuje w warstwie łącza danych modelu ISO, przekazuje ramki wyłącznie do docelowego segmentu sieci (podobnie jak bridge, inaczej niż hub), umożliwia połączenie wielu segmentów sieci w gwiazdę (podobnie jak hub, inaczej jak bridge)
Co to jest i jaką funkcję w sieci komputerowej pełni router?
urządzenie zajmujące się określaniem/ znajdowaniem ścieżek przepływu pakietów i ich przekazywaniem
routerem może być komputer, ale obecnie stosuje się wyspecjalizowane urządzenia wyposażone m. in. w procesor, pamięć i system operacyjny
zaawansowane routery mają wiele procesorów i przetwarzają pakiety równolegle
pracuje w warstwie sieciowej modelu OSI
Za co odpowiada i co określa protokół Ethernet?
Ethernet: grupa standardów dotycząca łączności przewodowej, opisująca warstwę fizyczną łącza i warstwę łącza danych. Odpowiada za fizyczne połączenie między urządzeniami, konieczny jest protokół sieciowy. W skład Ethernetu wchodzi także protokół CSMA/CD, odpowiedzialny za cały proces transmisji danych. Mechanizm wykrywania kolizji, zakłada, że wszystkie urządzenia sieciowe zostaną poinformowane o wystąpieniu kolizji. Konieczne jest wysyłanie ramek o długości minimum 64 bajty.
Za co odpowiada i co określa protokół IP? Jakie są najważniejsze jego cechy?
Podstawowa funkcja to wybór optymalnej drogi i przesyłanie nią pakietów. W przypadku awarii protokół próbuje dostarczyć pakiety drogami alternatywnymi, nie zawsze optymalnymi. Protokół IP:
jest protokołem warstwy sieciowej
protokół bezpołączeniowy
w celu przesłania pakietów nie jest nawiązywane połączenie z hostem docelowym
pakiety mogą być przesyłane różnymi trasami
odbiorca składa dane z pakietów w całość
jest protokołem zawodnym
sam protokół IP nie sprawdza poprawności danych
Jakie rozwiązania pozwalają lepiej wykorzystać pule adresów IP?
podział na mniejsze bloki adresów lub łączenie bloków
budowa podsieci widocznej z zewnątrz pod jednym adresem
dynamiczny przydział adresów
Rozwiązania:
mechanizm masek
automatyczne przydzielanie adresów
Jak można podzielić protokoły warstwy transportowej modelu TCP/IP?
Możliwe podziały:
połączeniowy- przed rozpoczęciem wymiany danych następuje faza łączenia nadawcy i odbiorcy;
bezpołączeniowy- nadawca wysyła dane bez sprawdzania czy odbiorca je odbierze i potwierdzenia czy odebrał
niezawodny/ wiarygodny-kontrola procesu transmisji danych i jej ponowienie w przypadku błędów
zawodny- brak kontroli utraconych pakietów, ewentualne powtórzenie wymuszane przez protokół wyższej warstwy
stanowy-serwer monitoruje/ pamięta stan połączenia i przesyła tylko nowe dane
bezstanowy- brak monitorowania, przy każdej transmisji przesyłane są wszystkie dane potrzebne do nawiązania transmisji
Za co odpowiada i co określa protokół TCP? Jakie są jego najważniejsze cechy?
Transmission Control Protocol (TCP) – połączeniowy, niezawodny, strumieniowy protokół komunikacyjny wykorzystywany do przesyłania danych pomiędzy procesami uruchomionymi na różnych maszynach, będący częścią szeroko wykorzystywanego obecnie stosu TCP/IP - korzysta z usług protokołu IP do wysyłania i odbierania danych oraz ich fragmentacji wtedy, gdy jest to konieczne. Protokół TCP operuje w warstwie transportowej modelu OSI
TCP jest protokołem działającym w trybie klient-serwer. Serwer oczekuje na nawiązanie połączenia na określonym porcie. Klient inicjuje połączenie do serwera.
W przeciwieństwie do UDP, TCP gwarantuje wyższym warstwom komunikacyjnym dostarczenie wszystkich pakietów w całości, z zachowaniem kolejności i bez duplikatów. Zapewnia to wiarygodne połączenie kosztem większego narzutu w postaci nagłówka i większej liczby przesyłanych pakietów. Chociaż protokół definiuje pakiet TCP, to z punktu widzenia wyższej warstwy oprogramowania, dane płynące połączeniem TCP należy traktować jako ciąg oktetów. Dane z jednego wywołania mogą zostać podzielone na kilka pakietów lub odwrotnie – dane z kilku wywołań mogą zostać połączone i wysłane jako jeden pakiet.
Na czym polega enkapsulacja pakietów przy przesyłaniu pakietów przez sieć komputerową? Dlaczego jest ona konieczna?
Polega na upakowaniu danych z wyższej warstwy w warstwie niższej danego protokołu po stronie nadawczej, a więc przed wysłaniem pakietu telekomunikacyjnego (datagramu, ramki) w sieciach pakietowych. Po stronie odbiorczej wykonywane jest działanie odwrotne prowadzące do wyodrębnienia danych z warstwy najwyższej przenoszącej dane użytkowe.
Enkapsulacja jest konieczna po to, żeby dane wysłane przez protokół wyższej warstwy (np. IP) mogły być przesłane do odbiorcy przez protokoły niższych warstw (np. Ethernet), które nie interpretują tych danych, które trzeba przesłać. Żeby je przesłać, trzeba je "zapakować" w ramkę. Po drugiej stronie odbiorca "rozpakowuje" taką ramkę i to co z niej "wyciągnie" podaje warstwie wyżej. I dopiero funkcje realizujące obsługę tego wyższego protokołu analizują dane, które dostały. Ponadto, enkapsulacja jest konieczna ponieważ rozmiary ramek poszczególnych protokołów mają różne długości i np. wspominanego już pakietu IP nie da sie wysłać w jednym pakiecie Ethernet - trzeba go podzielić na kilka ramek.
Do czego służy protokół SMTP? Jakie ma wady i jak je rozwiązano? Co to jest i do czego służy MIME?
Prosty protokół przesyłania poczty:
służy tylko do przesyłania (wysyłania) poczty pomiędzy komputerami, nie pozwala na pobranie wiadomości z odległego komputera/serwera
definiuje format komunikatów wymienianych przez komputer nadający przesyłkę i odbierający ją
nie definiuje systemu pocztowego odbiorcy i nadawcy, nazw użytkowników, sposobu przechowywania poczty w skrzynce odbiorcy itp.
komunikacja opiera się na komunikatorach tekstowych w standardzie ASCII( co uniezależnia protokół od systemów na poszczególnych komputerach)
Wady: dane przesyłane tekstowo, brak weryfikacji nadawcy, łatwość podszycia się pod innego nadawcę,
Zalety: pozwala przesyłać dane binarne, pozwala przesyłać załączniki, pozwala zawrzeć w jednej wiadomości kilka jej wersji
Mechanizmy rozwiązujące: MIME, ESMTP
MIME- uniwersalne rozszerzenia poczty internetowej:
standard przesyłania poczty elektronicznej
definiuje budowę komunikatu poczty
kodowanie MIME może zwiększyć objętość danych
Do czego służy protokół POP3? Jakie ma ograniczenia?
Protokół skrzynki pocztowej:
protokół internetowy pozwalający na odbiór poczty elektronicznej ze zdalnego serwera do lokalnego komputera poprzez połączenie TCP/IP
stworzony dla użytkowników, którzy nie są cały czas obecni w Internecie (nie można dostarczyć im poczty bezpośrednio, z użyciem SMTP)
komendy przesyłane są w trybie tekstowym i mają 3 lub 4 znaki
Ograniczenia:
do jednej skrzynki może podłączyć się tylko jeden klient równocześnie
każdy list musi być pobierany razem z załącznikami i żadnej jego części nie można w łatwy sposób pominąć
wszystkie odbierane listy trafiają do jednej skrzynki
serwer POP3 nie potrafi sam przeszukiwać czekających w kolejce listów (klient musi sam wybrać z listy interesujące go wiadomości)
nie daje możliwości zarządzania wiadomościami na serwerze bez ich pobierania
Do czego służy protokół HTTP? Krótko opisz proces pobierania strony html.
Protokół przesyłania dokumentów hipertekstowych:
umożliwia przesyłanie od klienta do serwera i od serwera do klienta
protokół bezstanowy (serwer WWW rozpatruje każde żądanie niezależnie od innych, nie szukając żadnych powiązań w stylu wysyłania ich przez tego samego internautę. Utrudnia to teoretycznie tworzenie wszelkich systemów autoryzacji, które wymagają śledzenia poczynań użytkownika na stronie i przenoszenia jego danych autoryzacyjnych między kolejnymi żądaniami), stosunkowo prosty, działa na zasadzie zapytanie-odpowiedź
zwykle usługa HTTP uruchomiona jest na porcie 80
nawiązanie połączenia TCP
wysyłanie żądania: GET, nagłówki, pusta linia, opcjonalne dane wysyłane do serwera
odebranie pliku: status, nagłówki, pusta linia, treść dokumentu
Czym jest malware? Co to jest i jak działa wirus/robak/ koń trojański/exlpoit/dialer?
Malware- złośliwe oprogramowanie- wszelkie aplikacje, skrypty i ingerencje mające szkodliwe, przestępcze lub złośliwe działanie w stosunku do użytkownika komputera, sprzętu komputerowego lub danych zawartych na komputerze.
Wirus komputerowy- prosty program, który potrafi powielać się na komputerze bez jego wiedzy. Może wykonywać dodatkowe zadania, wymaga nosiciela w postaci innego programu, poczty elektronicznej itp. Zwykle pisane w asemblerze. Najczęstsze skutki działania: kasowanie i niszczenie danych, kradzież danych, rozsyłanie spamu, atakowanie serwerów internetowych, wyświetlanie komunikatorów lub grafiki, uniemożliwienie przejęcia kontroli nad komputerem osobie nieupoważnionej.
Robak: samodzielny program, którego działanie polega na tworzeniu własnych duplikatów. Nie atakuje innych obiektów, mogą przeprowadzać także inne działania, rozprzestrzeniają się w sieciach. Często po infekcji pobiera z sieci dalsze moduły, umieszcza odpowiednie instrukcje wywołujące go po uruchomieniu systemu lub otwarciu innych plików, ukrywa się pod nazwą użytecznego programu.
Exploit- program mający na celu wykorzystanie błędów w oprogramowaniu. Wykorzystuje występujący w oprogramowaniu błąd programistyczny umożliwiający przejęcie kontroli nad działaniem procesu. Najczęstsze procesy to przepełnienie bufora lub odpowiednie formatowanie ciągu znaków.
Dialer- programy służące do wykonywania połączenia modemowego bez wiedzy użytkownika lub/i na numer inny niż standardowy. Połączenie z wysokopłatnym numerem, zwykle nie pokazuje się na ten temat żadna informacja w trakcie połączenia, połączenie jest wykonywanie niezależnie od woli użytkownika, instaluje się bez wiedzy użytkownika i nie da się łatwo odinstalować, obecnie zanikają.
Koń trojański- program, który pozornie wykonuje normalną pracę, ale oprócz niej, wykonuje działania szkodliwe. Działania szkodliwe nie zawsze wykonywane jest od razu. Niekiedy trojan czeka na polecenia z zewnątrz umożliwiając przejęcie kontroli nad komputerem.
Jakie znasz sposoby ukrywania obecności malware i utrudniania ich usuwania?
Ukrywanie obecności wirusa- fałszowanie rozmiaru pliku nosiciela, oznaczanie bloku pamięci jako zajętego przez system
Polimorfizm i metamorfizm- możliwość zmiany kodu wykonywalnego podczas powielania się wirusa/robaka
Anty-heurystyka- uniemożliwienie wykrycia przez algorytmy heurystyczne
Utrudnianie ‘złapania’ i analizy kodu wirusa przez specjalistów
Zabezpieczenia przed usunięciem: ukrywanie działania swojego procesu, po infekcji umieszczają w odpowiednich wpisach konfiguracyjnych systemu operacyjnego instrukcje wywołujące je, monitorują miejsca infekcji
Jakie znasz sposoby wykrywania malware?
Badanie sygnatury, algorytmy heurystyczne, wykrywanie wpisów w plikach konfiguracyjnych systemu i rejestrze, porównywanie z listą znanych aplikacji adware, spyware, rootkit itp.
W jaki sposób chronić komputer przed działalnością malware?
Powstrzymanie ciekawości, nie być łatwowiernym, pobierać pliki z zaufanych serwerów, nie instalować podejrzanych programów, odinstalowywać podejrzane programy, używać programów antywirusowych.
Do czego służą i jakie znasz rodzaje zapór ogniowych?
Firewall chroni przed niepowołanym dostępem do sieci z zewnątrz, przed wypływem danych z sieci lokalnej.
Rodzaje firewalli:
programowe- działają jako oprogramowanie komputerów stacjonarnych
pośredniczące- wykonują połączenia w imieniu użytkownika, pozwalają na zarządzanie i kontrolę kto kiedy i w jaki sposób korzysta z określonych usług
filtrujące- monitorują przepływające przez nie pakiety sieciowe, mogą stosować bardzo zaawansowane algorytmy analizy pakietów