Opracowanie pytań na obronę MGR INF ISK 2019

S1. Modelowanie sieci komputerowych z wykorzystaniem przepływów wieloskładnikowych

Rozwiązywanie problemu optymalizacji sieci polega na: sformułowaniu problemu, jego zmodelowaniu (stworzeniu opisu matematycznego) oraz jego optymalizacji.

Topologia sieci komputerowej zazwyczaj modelowana jest w postaci grafu, którego wierzchołkami są urządzenia sieciowe (routery, przełączniki, komputery, etc.), a krawędziami media transmisyjne. Grafy te posiadają ograniczenia zarówno na węzłach, jak i na krawędziach – np. przepustowość.

Topologię sieci optymalizuje się zgodnie z funkcją celu, którą może być np.: minimalizacja kosztów budowy sieci albo zwiększenie niezawodności sieci.

Czytaj dalej Opracowanie pytań na obronę MGR INF ISK 2019

Inżynieria Oprogramowania – opracowanie zagadnień na egzamin

Definicja Inżynierii Oprogramowania
Wiedza techniczna dotycząca faz cyklu życia projektu, mająca na celu uzyskanie wysokiej jakości oprogramowania.

Przyczyny Kryzysu Oprogramowania

  • Duża złożoność systemów informatycznych
  • Niepowtarzalność przedsięwzięć
  • Nieprzejrzystość procesu budowy oprogramowania
  • Pozorna łatwość wytwarzania i dokonywania poprawek

Definicja projektu
Zarządzany zbiór zadań zmierzających do jednego celu, wykonywany przy określonych ograniczeniach.

Cykl życia projektu (SDLC – System Development Life Cycle) – sekwencja następujących po sobie faz projektowych, zmierzających do wytworzenia oprogramowania

Czytaj dalej Inżynieria Oprogramowania – opracowanie zagadnień na egzamin

Architektura Komputerów 2 – Laboratorium nr 6 – Jednostka zmiennoprzecinkowa (FPU)

Rejestry jednostki zmiennoprzecinkowej

Koprocesor dysponuje ośmioma 80-bitowymi rejestrami zmiennoprzecinkowymi i trzema 16-bitowymi rejestrami kontrolnymi (control word, status word i tag word). Rejestry zmiennoprzecinkowe połączone są w stos. Możemy wczytywać do nich wartości rozkazami fld (Fpu LoaD) oraz pobierać z nich wartości – fstp (FPU STore and Pop). Mamy do nich dostęp poprzez nazwę ST i numer rejestru – ST(n). Wartości zawsze wstawiane są do rejestru ST(0), a wszystkie pozostałe rejestry zmieniają wtedy swoją numerację – 0 przechodzi na 1, 1 na 2 itd. Analogicznie podczas pobierania wartości z tego “stosu”, pobierana jest wartość z rejestru ST(0), a pozostałe zmieniają numerację w przeciwnym kierunku.

Czytaj dalej Architektura Komputerów 2 – Laboratorium nr 6 – Jednostka zmiennoprzecinkowa (FPU)

Architektura Komputerów 2 – Laboratorium nr 5 – Łączenie kodu C i Asemblera

1. Dostęp do funkcji języka C z poziomu Asemblera

Aby wywołać funkcję napisaną w C z kodu Asemblerowego należy umieścić jej argumenty całkowite (liczby lub wskaźniki na adresy w pamięci) kolejno w rejestrach RDI, RSI, RDX, RCX, R8, R9, argumenty zmiennoprzecinkowe w rejestrach XMM0-XMM7 i wywołać tą funkcję korzystając z rozkazu call. Jeśli przekazujemy argumenty zmiennoprzecinkowe, wtedy do rejestru RAX musimy również wpisać ich ilość.

Przykład wywołania funkcji:

Czytaj dalej Architektura Komputerów 2 – Laboratorium nr 5 – Łączenie kodu C i Asemblera

Architektura Komputerów 2 – Laboratorium nr 4 – Stos i funkcje

Stos procesora

Stos jest strukturą danych, w której dane dokładane są na wierzch stosu i z wierzchołka stosu są pobierane. W procesorach z rodziny x86 stos znajduje się w górnej części pamięci operacyjnej, a dane umieszczane są na nim w kierunku odwrotnym – tj. od większego adresu do mniejszego.

Aby odłożyć zawartość rejestru na stos, korzystamy z rozkazu push REJESTR. Aby ściągnąć zawartość ostatniego elementu ze stosu do rejestru, używamy rozkazu pop REJESTR.

Rejestr przechowujący wskaźnik na ostatni element stosu to RSP. Zwiększenie zawartości tego rejestru o 8 powoduje “usunięcie” ze stosu ostatniej wartości. Dokładniej mówiąc wartość ta nie jest usuwana, ale podczas następnego odłożenia wartości na stos zostanie ona nadpisana.

Czytaj dalej Architektura Komputerów 2 – Laboratorium nr 4 – Stos i funkcje

Architektura Komputerów 2 – Laboratorium nr 3 – Dostęp do plików przez wywołania systemowe

Obsługa plików Linuksowymi wywołaniami systemowymi

Aby odczytać lub zapisać dane do pliku, z poziomu języka Asembler, musimy posłużyć się wywołaniami systemowymi otwierającymi plik do odczytu i/lub zapisu oraz, po skończonej pracy z plikiem, zamykającymi go, a następnie odczytać lub zapisać dane w sposób identyczny jak ma to miejsce w przypadku odczytu danych od użytkownika z klawiatury lub wyświetlania komunikatów na ekran. Zamiast strumieni (wirtualnych plików) STDIN i STDOUT podaje się tutaj identyfikator otwartego pliku. Podczas otwierania pliku należy wyspecyfikować co zamierzamy z nim zrobić – plik możemy otworzyć tylko do odczytu, do zapisy, do zapisu i odczytu, do dopisywania, etc. W przypadku gdy spróbujemy otworzyć nieistniejący plik do zapisu, plik ten może zostać utworzony. Należy wtedy sprecyzować z jakimi prawami dostępu ma on zostać utworzony podając ich wartość liczbową.

Czytaj dalej Architektura Komputerów 2 – Laboratorium nr 3 – Dostęp do plików przez wywołania systemowe

Architektura Komputerów 2 – Laboratorium nr 2 – Pętle, podstawowe operacje logiczne i arytmetyczne

Zadanie nr 1

W ramach zadania domowego mieliśmy rozwinąć kod z pierwszych zajęć zamieniający litery małe na wielkie i odwrotnie. Nowy program dodaje do kodu ASCII każdej małej litery wartość 6 oraz do kodu każdej wielkiej litery wartość 8. Pozostałe znaki nie są zmieniane.

Czytaj dalej Architektura Komputerów 2 – Laboratorium nr 2 – Pętle, podstawowe operacje logiczne i arytmetyczne

Architektura Komputerów 2 – Laboratorium nr 1 – Podstawy pisania programów w języku Asembler

1. Wprowadzenie do Linuksa i pracy w laboratorium

W trakcie zajęć zapoznaliśmy się z podstawami poruszania się w środowisku Linux – poleceniami mkdir, cd, touch, pwd, whoami, cat, ls, mv, rm, cp, adresowaniem względnym i bezwzględnym oraz edytorami vim, mcedit i nano. Omówiliśmy także sposób zdalnego logowania się do laboratoryjnego serwera na którym wykonywać będziemy zadania. Ponieważ w sprawozdaniu opisać mieliśmy jedynie nowe dla nas zagadnienia, a ja na co dzień korzystam z systemu Linux, pozwolę sobie pominąć tą część.

2. Kompilacja w konsoli, linkowanie, program make i plik Makefile

Aby przećwiczyć kompilację programów w konsoli, napisaliśmy prosty program wyświetlający napis “Hello World!” w języku C i skompilowaliśmy go ręcznie wywołując polecenia:

gcc -c plik.c
gcc -o plik plik.o

Czytaj dalej Architektura Komputerów 2 – Laboratorium nr 1 – Podstawy pisania programów w języku Asembler

Teoria obwodów – Ćwiczenia 4 – Źródła o różnych pulsacjach i dwójniki

Źródła o różnych pulsacjach

Przy obliczaniu prądu lub napięcia w obwodach z wieloma źródłami o różnych pulsacjach, należy obliczyć osobne wyniki dla każdej pulsacji i dodać je do siebie już po zamianie na postać funkcji. Obliczając poszczególne przypadki zwieramy wszystkie źródła napięciowe (zamieniamy je na zwykłe połączenie) oraz rozwieramy wszystkie źródła prądowe o innej pulsacji (rozcinamy obwód).

Obliczanie impedancji dwójnika dla max mocy

kartkowka_nr_3

Czytaj dalej Teoria obwodów – Ćwiczenia 4 – Źródła o różnych pulsacjach i dwójniki

Teoria obwodów – Ćwiczenia 2 – Prąd przemienny i metoda symboliczna

Impedancja (Z = R + XC + XL) [Ohm] – wartość zespolona na którą składa się rezystancja oraz reaktancja pojemności (kondensatora) i indukcyjności (cewki).

Admitancja (Y = G + jB) [Simens] – odwrotność impedancji. Jej składowe to rzeczywista konduktancja i urojona susceptancja.

Rezystancja (R) [Ohm] – część rzeczywista impedancji, opór czynny, prąd płynący w fazie z napięciem.

Reaktancja (X = XC + XL) [Ohm] – część urojona impedancji, opór bierny, prąd płynący z przesunięciem w fazie o 90 stopni względem napięcia. Ujemna reaktancja, nazywana jest też kapatancją. Dodatnia reaktancja to z kolei induktancja.

Zawada (|Z|) [Ohm] – moduł/długość impedancji w formie liczby rzeczywistej.

Czytaj dalej Teoria obwodów – Ćwiczenia 2 – Prąd przemienny i metoda symboliczna