Testowanie jądra Linuxa
|
|
- Kinga Włodarczyk
- 9 lat temu
- Przeglądów:
Transkrypt
1 Testowanie jądra Linuxa... czyli czegoś, co nigdy nie miało być testowane. Given enough eyeballs, all bugs are shallow Linus Law, wg Eric'a S. Raymond'a Marita Nowotka, Marek Marczykowski, Filip Wolski, Warszawa, 2008
2 Był sobie Linux Dawno, dawno temu Pierwsze wersje Linuxa powstawały w czasach, kiedy, co prawda, niektórzy już słyszeli o testowaniu, ale było to zupełnie co innego niż testowanie, o którym się mówi, i które stosuje w naszych czasach. Software stosowało się na mniejszą skalę, zwłaszcza software open-source. Znacznie mniejsze były grona osób również tworzących to oprogramowanie, a w takich grupach jest znacznie łatwiej koordynować współpracę. W końcu, jądro Linuxa (mimo zapewnień p. Tannenbauma o jego monolityczności) było znacznie mniejsze niż jest dzisiaj. Swego czasu również wierzono, że programy open-source nie wymagają żadnego formalnego testowania, a wystarczy fakt dostępności kodu przecież jeśli każdy może ten kod obejrzeć i uruchomić, to szybko znajdą się wszystkie błędy. Po co więc testować jądro? Zwiększa się grono użytkowników Linuxa z każdym dniem używa więcej i więcej prywatnych osób, jak i instytucji. Jedną z największych przewag Linuxa nad główną konkurencją jest to, że jest darmowy. Firmy mogą go używać bez wykupywania licencji na ogromne kwoty, za to za pieniądze mogą, jeśli chcą, wykupywać wsparcie. Powstają coraz to nowsze, przyjaźniejsze użytkownikowi dystrybucje Linuxa, przeznaczone dla osób niezainteresowanych grzebaniem w plikach konfiguracyjnych non-stop (np. piszący te słowa używa kubuntu :) ). Błąd, który przedostałby się do jądra przy niedostatecznym jego przetestowaniu, miałby szansę się wielokrotnie powielać i powtarzać, mocno szkodząc ciężko wypracowanemu zaufaniu społecznemu. Mniejszy margines błędu Środowisko, w którym działa jądro, pozostawia znacznie mniejszy margines błędu. Program pracujący w userspace ma nad sobą jeszcze jądro, które całkowicie (lub prawie całkowicie) zasłania mu dostęp do samego sprzętu jest jego piaskownicą. Programista kernela nie ma tej wygody. A konsekwencje bezlitosne (Oops... ) Konsekwencje czyhające na programistę aplikacji to, w najgorszym wypadku, nie obsłużony błąd, i wywalona aplikacja. W przypadku programisty kernela, tą aplikacją jest cały system... Struś nie może sobie pozwolić na błąd, natomiast firma ACME nie testuje swoich produktów
3 Jądro jest coraz większe Ale to takie trudne! W październiku bieżącego roku stwierdzono, że źródła jądra kernela przekroczyły 10mln linii tekstu, z czego ok 7mln to sam kod. W tej liczbie są całe połacie kodu, które były pisane bez żadnego planu testowania, a więc dopiero trzeba je testami pokryć. Coraz więcej osób jest developerami Liczba developerów piszących kod jądra zwiększa się również przez cały czas, jak również ludzie którzy kiedyś zajmowali się tym kodem nie robią tego więcej, ani nie mogą pomóc kiedy chodzi o ich kod. Przy takiej sieci osób nie sposób jest korzystać z tradycyjnych metod komunikacji i organizacji pracy, takich jak listy dyskusyjne. Coraz więcej śmieci ludzie próbują do jądra wcisnąć W ramach projektów studenckich, z własnej inicjatywy, itd., jest też bardzo dużo kodu, który jest zgłaszany do jądra jako nowe moduły, lub jako poprawki. Takie inicjatywy są bardzo cenne dla społeczności open-source, ale muszą być dobrze weryfikowane nie każda z tych inicjatyw rzeczywiście jest dodatkiem cennym. C, symbole współdzielone Kod i architektura jądra są dość błędogenne - łatwo jest linkować się z innymi fragmentami jądra, do których normalnie nasz kod nie miałby dostępu. Trzeba również korzystać z nie do końca doprecyzowanej, i dość uciążliwej konwencji nazw, żeby nie nadpisywać cudzych symboli.
4 To jak to jest?
5 LTP Linux Test Project Założony przez SGI, utrzymywany przez IBM LTP został założony przez SGI, jako pakiet 100 testów, w celu zwiększenie niezawodności oraz stabilności Linuxa. Dzisiaj testy są pisane przez developerów z SGI, IBM, OSDL, Bull, Wipro Technologies oraz, jako projekt open-source (wydawany na licencji GPL v2), przez indywidualnych developerów. Liczba testów przekroczyła już Kod ANSI-C, Bash, Perl Testy w znakomitej większości są pisane w ANSI-C (94% kodu). Reszta to: Bash 5% kodu, np. skrypty uruchamiające dopiero konkretne testy, czy proste testy niewymagające C takie jak Perl ok, 1% kodu, np. kod testujący linkowanie plików Komplet testów regresyjnych Jako, że Linux ma swoją, określoną, specyfikację, testy zawarte w pakiecie LTP są testami regresyjnymi, czyli mającymi na celu rozpoznanie regresji w kodzie. Innymi słowy, są to testy pisane po fakcie powstania działającego kodu, mające na celu wykrycie naruszeń dotychczasowej specyfikacji przez nowe zmiany w kodzie. Testy funkcjonalności, testy systemowe, stress-testy (wysiłkowe?) Testy zawarte w pakiecie LTP obejmują trzy spośród faz testowania testowanie funkcjonalności poszczególnych elementów systemu, testy systemowe, oraz stress-testy testy stabilności.
6 Testy funkcjonalności Poszczególnych komend ld, ldd, nm, objdump, size, cpio, test cron'a, eject, cp, ln, mkdir, mv, gzip, gunzip, logrotate, mail, tar, unzip. Same testy zazwyczaj w bashu, z ew. programami wspomagającymi. Testy poszczególnych funkcjonalności jądra: test modułu acpi, systemu plików, i/o, pseudoterminali, scheduler'a, IPC, pamięci, ładowania modułów, ogromna kolekcja testów syscalli, testy timerów. Misc czyli m.in. testy matematyki, czy test bugu f00f (invalid operand with locked CMPXCHG8B instruction) Testy sieciowe testy funkcji sieciowych, w tym duży pakiet poświęcony IPv6. Testy systemowe Mimo deklaracji o istnieniu testów systemowych, to nie ma żadnego formalnego. Ew. można traktować cały projekt uruchamiany naraz jako test systemowy. Stress-testy Testy badające zachowanie systemu przy maksymalnym obciążeniu: System plików uruchamia na przemian większość dostępnych operacji dyskowych, takich jak read, create, symlink, chown, itd. z góry zadaną (dużą) liczbę razy, w każdym kroku sprawdzając poprawność sytuacji dyskowej, używając, oczywiście, wielu wątków. I/O wielowątkowo czyta z CD, oraz czyta/pisze/formatuje dyskietkę (dyskietkę???) malloc/mmap/shmat IPC scheduler
7 Stabilizacja W związku z bardzo wolnym tempem przenosin z kernela 2.3 na 2.4 społeczności Linuxa, IBM Linux Technology Center przygotował bardziej formalny proces stabilizacji kernela 2.5. Był to nie tylko plan, ale i deklaracja testowania kernela 2.5 w swoim własnym zakresie, na zadeklarowanym zestawie maszyn IBMa z różnymi dystrybucjami Linuxa zainstalowanymi. LTC nie jest ciałem, które decyduje, kiedy dany kernel staje się stabilny testowanie które przeprowadzali było raczej metodą na wykrycie jak największej ilości bugów jądra. Proces ten składał się z: 1. Przeprowadzenia wszystkich testów dostępnych w ramach LTP (wliczając w to testy nie zaliczające się do runall) 2. Testy integracyjne, podzielone na: Zautomatyzowane: LTP z testowaniem systemu plików dbgrinder dla MySQL pagepoker dla Apache Ręczne: WebSphere z backendem DB2, z dodatkowym DOTS dla generowania ruchu na bazie danych 3. Stress-testy długie, 30-dniowe maratony stress-testów LTP Jak to właściwie jest z tą stabilizacją? Rozwoje kerneli 2.4 i 2.6 były różne między sobą z wielu względów, a zmiany były, w większości, na lepsze. Co takiego ciekawego się stało? Otóż, kilka nowoczesnych metod prowadzenia większych projektów zostało wprowadzonych. Są to, m.in.: Użyto aplikacji BitKeeper jako repozytorium kodu. Wcześniej była ona używana przez wielu developerów jądra dla ich własnej pracy, z kolei przy pracy nad kernelami 2.5 i 2.6, na początku na próbę, potem na stałe, zaczął jej używać sam Linus Torvalds. Nightly regression testing dzięki centralnemu repozytorium zmian, można było wykonywać regularne, co 24 godziny, testy regresyjne. Dzięki temu można było szybko wykrywać wiele błędów a im szybciej wykryty bug, tym mniej kosztuje naprawienie go, choćby dlatego, że zmiana jest wciąż nowa, i wciąż w głowie autora danej zmiany jest ona świeża, jak i dlatego, że na tym błędzie nic dalej nie było budowane. STP (Scalable Testing Platform) OSDL udostępniło społeczności developerów platformę, na której mogli oni testować swoje nowe zmiany. Kolejny wkład OSDL - uruchomiło ono platformę do śledzenia błędów. Wiele innych, pomniejszych projektów, które śledziły mniejsze lub większe błędy, listy plików które wymagają sprzątania, itp. Autor tej części prezentacji był bardzo ciekaw, w którym momencie, właściwie, kernel 2.5 staje się kernelem 2.6 tzn., jak się, właściwie, kończy proces stabilizacji. Wygląda na to, że wtedy, kiedy Linux Torvalds da na to swoje błogosławieństwo.
8 Narzędzia LTP utrzymuje również kilka narzędzi, użytecznych do testowania. Należy do nich gcov (więcej o nim poniżej), jak również lcov zbiór skryptów Perl'a, które z tekstowego wyjścia gcov'a produkują bardziej przyjazne użytkownikowi wyjście w postaci pliku HTML, gdzie dane te ujęte są w tabeli. Device Simulator Framework Device Simulator Framework jest narzędziem, udostępnianym w pakiecie LTP, reklamowanym jako narzędzie umożliwiające, czy usprawniające proces testowania kernela. Dokładniej, służy ono do komunikacji między userspace i kernelspace, uruchamianie z poziomu userspace funkcji w kernelspace, przekazywania parametrów między nimi, itd. Brzmi nieźle? Brzmi super. Device Simulator Framework jest tak naprawdę przykładem (który, oczywiście, można wykorzystywać w swoich testach), jak napisać dość prosty program do komunikacji z jądrem, oraz również dość prosty moduł kernela obsługujący określone urządzenie. Komunikacja odbywa się poprzez to urządzenie, wykorzystując funkcję ioctl.
9 LSB - Linux Standard Base Specyfikacja Projekt Linux Standard Base dostarcza specyfikacje (podzielone ze względu na składowe systemu), opisujące systemowe interfejsy. Celem takiego projektu jest zachowanie portowalności między różnymi implementacjami podstawowych bibliotek, instalacjami systemów, czy między różnymi dystrybucjami. Specyfikacje dzielą się na następujące kategorie: Core Kategoria core opisuje format podstawowych składników systemu. Do takich należą: Format plików ELF (Executable and Linking Format) Bibliotek bazowych: libc, libm, libpthread, libgcc itd. Bibliotek użytkowych np. libncurses Zbiór podstawowych programów, np. ls, sync, czy md5sum, które powinny należeć do każdego systemu Środowisko, hierarchia katalogów, /dev katalog z plikami do obsługi urządzeń, /etc katalog z konfiguracją dla danego hosta, itd. Inicjację systemu kolejne runlevel'e, co powinno być podczas każdego z nich obsłużone, jakie usługi muszą zostać uruchomione i kiedy, itd. Schemat użytkowników superużytkownik, schemat grup, numerację, jak to wszystko jest zapisane Itd. C++ W zakres tej specyfikacji wchodzi reprezentacja danych w plikach obiektowych C++ oraz standard mapowania symboli. Desktop Ta specyfikacja za to obejmuje biblioteki używane przez system X11. Są to m.in. biblioteki libx11 i pokrewne, biblioteka libgl, biblioteki dla Qt, XML, JPEG, GTK+ itd.
10 Certyfikacja Linux Foundation oferuje certyfikacje dla produktów oraz dystrybucji, które spełniają standard LSB. Dla potrzeb testowania zgodności, istnieje zbiór testów, które to potwierdzają. Niewiele produktów tak naprawdę utrzymuje tę ceryfikację należą do nich m.in. niektóre wersje Mandrake, Mandriva, Red Hat, SUSE oraz Ubuntu Linuxa. Application Testkit Application Testkit to zbiór narzędzi do testowania zgodności aplikacji z LSB. Główną jego funkcją jest sprawdzenie, jakie są zależności danej aplikacji, czy są zgodne ze standardem, w jakim stopniu, oraz porównuje z ok. 30 dystrybucjami zgodnymi z LSB. Distribution Testkit Distribution Testkit z kolei jest zbiorem narzędzi i testów do sprawdzania zgodności danej dystrybucji Linuxa z LSB. Na ten proces składa się m.in. sprawdzenie obecności wszystkich wymaganych bibliotek, weryfikacja systemu plików, itp., itd. Użytkownik może sam wybrać, jakie części specyfikacji mają być testowane może np. przetestować tylko zgodność ze specyfikacją core, albo pominąć zgodność z printing. TETware Aplikacje testujące w pakiecie dostarczanym przez Linux Base korzystają z platformy Test Environment Toolkit. Umożliwia ona testowanie rozproszone, zarówno na platformach UNIX, jak i Windows NT, ma rozszerzenia dla wielu języków programowania oraz skryptowych.
11 Biała skrzynka... Filozofia testowania Wiele zdaje się sugerować, że testowanie jądra odbywa się na zasadzie białej skrzynki. Spójrzmy choćby analizę pokrycia kodu jądra testami, dokonywaną przez gcov/lcov. Jednym z celów projektu LTP jest pokrycie jak największej części jądra testami, tak, aby każdy wiersz kodu został wykonany (potencjalnie wielokrotnie) podczas testowania. Ale czy to jest rzeczywiście biała skrzynka? Spójrzmy na definicję białej skrzynki. W tej metodzie zazwyczaj testuje się: potoki kontrolne (control flow) przepływ danych gałęzie wykonania Podczas gdy samo sprawdzenie pokrycia kodu testami sugeruje spełnienie ostatniego z tych punktów, to przetestowanie pierwszego i drugiego wymaga znajomości samego kodu. Kolejną przesłanką może być to, że metodę białej skrzynki wykorzystuje się zazwyczaj w unit testach.... czy czarna skrzynka? Duża część testów jądra powstawała znacznie później, niż sam testowany kod. Już to, samo w sobie, jest dość poważną przesłanką do tego, żeby te testy traktować jak testy metodą czarnej skrzynki przecież, choćby z nazwy, metoda białej skrzynki oznacza dobrą znajomość i zrozumienie testowanego kodu. Kolejnym powodem, dla którego aktualnie istniejące testy jądra należałoby traktować jako testowanie metodą black box jest to, że do kodu testowanego często trzeba się przedostawać przez całe warstwy kodu jądra, który stanowi interfejs dla danych metod schowanych gdzieś głęboko, w niskiej warstwie, blisko sprzętu. Trudno tutaj mówić o testowaniu przepływu danych, czy o testowaniu control flow co prawda wiemy, że dany kod został wykonany określoną liczbę razy, za to nie wiemy, z jakimi danymi wejściowymi, i co powstało na wyjściu. Może te dane za każdym razem były takie same? Unit testing vs. fault injection Popularną techniką stosowaną przy testowaniu jądra jest fault injection. Polega ona na zmienianiu fragmentów kodu z poprawnych na błędne, żeby sprawdzić, jak się zachowuje reszta kodu w obliczu błędnych danych. Na tyle często się ją stosuje, że drugim wynikiem wyszukiwania na Google hasła fault injection jest artykuł dot. stosowania tej techniki w kernelu. Jest to technika jednorazowa, stosowana podczas pisania danego modułu. Jest ona stawiana jako alternatywa przy rozwoju kernela dla unit testów. Nie istnieje żaden mechanizm utrzymywania unit testów dla kernela.
12 Pokrycie kodu testami Czym jest pokrycie kodu testami? Analiza pokrycia kodu testami pozwala nam określić, jaka część kodu aplikacji jest wykonywana podczas testów. Ta forma testowania bezpośrednio dotyka kodu, zatem jest to zastosowanie metody białej skrzynki. Do czego służy? Otrzymane wyniki pozwalają nam ocenić jakość testów i usprawnić proces przeprowadzania testów aplikacji. Kryteria Istnieje wiele kryteriów, pod kątem którym można analizować pokrycie kodu testami: Pokrycie funkcji (function coverage) Pokrycie warunków logicznych (condition coverage) Pokrycie wejść/wyjść (entry/exit coverage) Pokrycie ścieżek (path coverage) Pokrycie instrukcji (statement coverage) Pokrycie gałęzi (branch/decision coverage) Pokrycie funkcji ile razy każda funkcja została wykonana?
13 Pokrycie warunków logicznych czy każde podwyrażenie logiczne wylicza się i do true i do false? nie musi być równoważne z pokryciem gałęzi Pokrycie wejść/wyjść czy każdy rodzaj wywołania funkcji i każdy rodzaj powrotu z niej został wykonany? Pokrycie ścieżek czy każda możliwa ścieżka w kodzie została wykonana? Testowanie pełnego pokrycia ścieżek jest niemożliwe w przypadku prawdziwych aplikacji. Jeśli w kodzie występuje n instrukcji warunkowych, to liczba ścieżek może wynieść nawet 2^n. Dla pętli może istnieć nieskończenie wiele ścieżek. Ponadto istnieją ścieżki, które nigdy nie zostaną wykonane. Udowodniono, że znalezienie algorytmu wykrywającego takie ścieżki jest równoważne z rozwiązaniem problemu stopu. W praktyce stosuje się pokrycie ścieżek bazowych. W tym celu wyznacza się klasy ścieżek, które między sobą różnią się tylko ilością wykonanych obrotów pętli. Wynikiem jest pokrycie klas ścieżek. Pokrycie instrukcji Dzielimy kod na bloki fragmenty kodu pomiędzy instrukcjami warunkowymi. Każda instrukcja z jednego bloku będzie wykonana tyle samo razy. Niestety, nawet jeśli otrzymamy w wyniku 100% pokrycia nie możemy być pewni, że nasz program nie zawiera błędów. Ilustruje to poniższy przykład: int *iptr = N U LL; if (warunek) iptr = &i; *iptr = j*10; W przypadku, gdy warunek będzie nieprawdziwy iptr będzie wskazywać na NULL,
14 a program zgłosi wyjątek. Nawet 100% pokrycia instrukcji nie daje gwarancji, że nasza aplikacja będzie wolna od błędów. Pokrycie gałęzi Analizujemy rozgałęzienia w kodzie, wyznaczamy możliwe ścieżki. Sprawdzamy, czy każdy warunek logiczny podczas wykonania programu wylicza się do true i do false. W wyniku otrzymujemy ile razy każda gałąź została wykonana. Ta metoda także może zawodzić, jeśli w testowanych programie w instrukcjach warunkowych występują złożone wyrażenia. Żeby mieć pewność, że nasz program nie zawiera błędów, powinniśmy przetestować wszystkie kombinacje. struct s o me structure *p = N U L L; if(i == 0 (j == 1 & & p->j == 10)) printf(" got here\n"); Zauważmy, że w powyższym przykładzie istnieją ścieżki wyliczające się i do true i false, które nie uwidocznią potencjalnego błędu. Wynik 100% pokrycia gałęzi kodu nie daje gwarancji braku błędów w kodzie. Martwy kod Kod, który nigdy się nie wykona (np. umieszczony po return); nie wszystkie kompilatory go wykrywają. Jeśli pojawi się gdziekolwiek w programie, nie uzyskamy przy testowaniu 100% pokrycia kodu.
15 Gcov Gcov to narzędzie, które dostarcza statystyk na temat pokrycia kodu, a dokładniej pokrycia instrukcji i gałęzi. Użycie gcov wymaga skompilowania programu z dwoma opcjami gcc: -fprofile-arcs -ftest-cover-age. Zapisuje on wtedy dodatkowe informacje w budowanych plikach oraz tworzy dodatkowe pliki wymagane przez gcov. Uruchomienie programu powoduje zapisanie informacji diagnostycznych. Dla każdego pliku źródłowego skompilowanego z opcją -fpro-file-arcs powstaje towarzyszący plik.da. Uruchomienie gcov z nazwą pliku źródłowego jako parametrem tworzy opis kodu źródłowego z podaniem częstotliwości wykonania każdej jego linii. Np. jeśli program nazywa się tmp.c to użycie gcov, oraz plik tmp.c.gcov mogą wyglądać tak: $ g c c -fprofile-arc s -fte st-covera ge tmp.c $ a.out $ g cov tmp.c % of 10 s ource line s executed in file tmp.c Creating tmp.c.gcov. -: 0: S our ce:tmp.c -: 0:Obje ct:tmp.bb -: 1:#in clude < stdio.h> -: 2: -: 3:int m ain (void) 1: 4:{ 1: 5: int i, total; -: 6: 1: 7: total = 0; -: 8: 11: 9: for (i = 0; i < 10; i++) 10: 10: total += i; -: 11: 1: 12: if (total!= 45) #####: 13: printf ("Failure\n"); -: 14: else 1: 15: printf (" Su c ce s s\n"); 1: 16: return 0; -: 17:} Oczywiście, gcov może być uruchamiany z różnymi flagami. Po szczegóły odsyłam do manuala.
16 Gcov kernel Aby móc przetestować jądro linuxa należy zainstalować gcov-kernel patch, a także przekompilować i zainstalować jądro. Stworzony zostanie moduł, który będzie zbierał statystyki i umieszczał je w /proc/gcov. Zmniejsza to, niestety, szybkość kernela o ok. 10%. Po zainstalowaniu patcha należy ustawić opcje Gcova: C O NFI G_G CO V_PROFIL E=y C O NFI G_G CO V_ALL=y C O NFI G_G CO V_PRO C=y/m : include ba si c kernel s upport for G C O V : profile all of the kernel s ource : provide proc fs entry to a c ce s s G CO V data Jeśli CONFIG_GCOV_PROC jest ustawione na 'm', to moduł gcov-proc musimy sami załadować po uruchomieniu systemu, poleceniem modprobe gcov-proc Utworzony zostanie /proc/gcov. Statystyki będą tam gromadzone. Jeśli chcemy wyzerować statystyki, musimy zapisać 0 do odpowiedniego pliku, np.: echo 0 > /proc/gcov/kernel/signal.da Wszystkie niezbędne źródła i informacje można znaleźć na stronie:
17 Lcov Lcov to narzędzie do wyświetlania danych z gcov w sposób bardziej przyjazny użytkownikowi. Może generować strony html z wynikami. Jak tego używać? Zwykła aplikacja // uruchamia my aplika cję s kompilowaną z odpowiednimi fla ga mi; kończymy jej działanie lcov --directory [dirna me] -c -o application.info g enhtml -o [outputdir] application.info Kernel cd lcov-kernel lcov -c -o kernel.info // to polecenie wy generuje plik kernel.info g enhtml kernel.info -o kernel-lcov
18 Przykłady
19 Linux Kernel Performance Projekt mający na celu ulepszanie działania Linuxa. Na ich stronie ( zamieszczono wyniki testów kolejnych wersji jądra Linuxa, począwszy od , dla różnych architektur. Zestaw testów pokrywa najważniejsze komponenty kernela zarządzanie pamięcią wirtualną, szeregowanie procesów, mechanizm dostępów do dysku, system plików, sieć, sterowniki urządzeń. Lista narzędzi: volanomark - mierzy efektywność działania serwera i sieci. W wyniku zwraca średnią liczbę wiadomości przesłanych przez serwer na sekundę. lmbench - suite of portable micro-benchmarks for UNIX, measures key system performance aiostress - mierzy wydajność asynchronicznego I/O z użyciem filesystemu i bez. ftp://ftp.suse.com/pub/people/mason/utils/aio-stress.c netperf narzędzie do testowania sieci. aim - zestaw testów mierzący wydajność sieci, pamięci i operacji dyskowych fileio - jeden z komponentów sysbench. Testy wydajnościowe operacji I/O. iozone - narzędzie do testowania systemów plików. W tym celu testowane są następujące funkcje: read, write, re-read, re-write, read backwards, read strided, fread, fwrite, random read, pread, mmap, aio_read, aio_write. vmregress - moduł, który sprawdza wirtualny system plików.
20 JAVA* - narzędzie biznesowe do testów o standardzie przemysłowym. cpu-int - testowanie obciążenia procesorów o standardzie przemysłowym. cpu-fp - testowanie obciążenia procesorów o standardzie przemysłowym. mmbench - testowanie zarządzania pamięcią. tiobench - testuje operacje I/O z wykorzystaniem wątków.
21 Przykładowy wynik testów przy użyciu mmbench. Hardware: CPU type: Intel Itanium 2 processor CPU frequency: 1600Mhz Description: 1.6 Ghz: 4 Sockets Memory: 4096Mb Disk type: SCSI Number of disks: 1 Disk size: 18GB
22 Bootchart Ciekawe narzędzie pozwalające dogłębnie przyjrzeć się procesowi uruchamiania systemu. W wygenerowanym przez program raporcie poza standardowymi informacjami w postaci chronologicznego spisu wszystkich modułów czy kompletnego czasu startu systemu znaleźć można także informacje dotyczące używanej dystrybucji, stopniu wykorzystania zasobów procesora i dysku oraz dokładne informacje na temat jądra wraz z opcjami, z którymi zostało uruchomione. Utworzony raport przekształcany jest potem przez aplikację Javy albo za pośrednictwem strony internetowej na plik graficzny w formacie PNG, SVG bądź EPS. Jak to działa? Boot logger (/sbin/bootchartd) jest uruchamiany przez jądro zamiast /sbin/init. Aby to osiągnąć należy zmodyfikować listę poleceń dla kernela w GRUB albo LILO, np.: /boot/grub/menu.lst [...] title Fedora Core (2.6.10) - bootchart root (hd0,1) kernel /vmlinuz ro root=/dev/hda1 init=/sbin/bootchartd initrd /initrd img Skrypt instalujący i pakiet RPM będą próbowały automatycznie dodać boot loader. Boot logger uruchomi się w tle i bezzwłocznie odpali /sbin/init, który zacznie wykonywać się jak podczas zwykłego bootowania. Zbieranie danych
23 Podczas bootowania systemu partycja root jest załadowana w trybie tylko do odczytu, więc bootchartd musi przechowywać dane w pamięci, korzystając z wirtualnego systemu plików (tmpfs). Jak tylko zostanie zamontowany system plików /proc, bootchartd zacznie zbierać dane z różnych plików. /proc/stat /proc/diskstats /proc/[pid]/stat system-wide CPU statistics: user, system, IO and idle times system-wide disk statistics: disk utilization and throughput (only available in 2.6 kernels) information about the running processes: start time, parent PID, process state, CPU usage, etc. Zawartość tych plików jest dołączana do odpowiednich plików log, domyślnie co 0.2 sekundy. Logger orientuje się, że proces bootowania zakończył się, obserwując pewne procesy. Np. jeśli uruchamiamy system w trybie 5 (multi-user graphical mode), bootchartd będzie szukał gdmgreeter, kdm_greet, itp. Jak tylko zauważone zostanie, że któryś z tych procesów jest uruchomiony logger przestanie zbierać dane. Uzyskane statystyki zapisze w /var/log/bootchart.tgz. Uwaga co do dokładności zebranych danych: Dane o istnieniu procesów, które bardzo szybko skończyły swoje działanie mogą zostać zgubione. Jeśli taki proces wykonał fork, to może się okazać, że odtworzenie drzewa procesów na podstawie logów jest niemożliwe. Wtedy te osierocone procesy mogą zostać niewłaściwie przydzielone do grupy podczas tworzenia wykresu. Jeśli zależy nam na dużej dokładności w zbieraniu informacji o procesach, możemy temu zaradzić. Wystarczy zainstalować pakiet psacct albo acct i odpowiednio skonfigurować jądro. Więcej informacji pod adresem:
24 Uruchomić bootchart Aby ta metoda zadziałała trzeba mieć zainstalowany JPackage. Jeśli nie mamy JPackage, ale mamy zainstalowany Java Development Kit: Jak uzyskać wykres? java -jar bootchart.jar Wykorzystać stronę internetową - Można otrzymać wykres uruchamiając: curl --form format=svg --form log=@/var/log/bootchart.tgz \ > bootchart.svgz Można zamienić svg/bootchart.svgz na png/bootchart.png albo eps/bootchart.eps.gz, w zależności od tego, w jakim formacie chcemy otrzymać wynik. Więcej informacji na
25 Poprawnościowe: inode01 Przykładowe testy jądra Poprawność tworzenia plików i katalogów. Tworzy rozbudowane drzewo i sprawdza, czy faktycznie jest takie, jakie utworzył. Pozwala wykryć błędy w zapisach do inode-ów. fs_full Sprawdza poprawność zachowania się systemu plików przy całkowitym zapełnieniu (funkcje zapisujące nowe dane powinny zwracać ENOSPC). Test składa się z trzech elementów, opisanych dalej. Test własny. Wydajnościowe: inode02 Podobny do inode01, ale uruchamia wiele procesów jednocześnie, żeby sprawdzić, czy przy dużym obciążeniu również działa poprawnie. gf14, gf15 Testy sprawdzające równoległe dopisywanie do plików w wielu procesach naraz.
26 Przykładowe testy systemu plików Zapełnianie urządzenia samymi katalogami for i in `seq 100`; do myfuncall mkdir mount/$i RC=$? if [ $RC -eq 2 ]; then RC=0; break else if [ $RC -ne 0 ]; then tst_brkm TFAIL NULL "Test #1: Error other than ENOSPC" return $RC fi fi for j in `seq 100`; do myfuncall mkdir mount/$i/$j RC=$? if [ $RC -eq 2 ]; then RC=0; break else if [ $RC -ne 0 ]; then tst_brkm TFAIL NULL "Test #1: Error creating directory other than ENOSPC" return $RC fi fi for k in `seq 100`; do myfuncall mkdir mount/$i/$j/$k RC=$? if [ $RC -eq 2 ]; then RC=0; break else if [ $RC -ne 0 ]; then tst_brkm TFAIL NULL "Test #1: Error creating directory other than ENOSPC" return $RC fi fi done done done
27 Zapełnianie urządzenia samymi pustymi plikami for i in `seq `; do myfuncall touch mount/$i RC=$? if [ $RC -eq 2 ]; then RC=0 break else if [ $RC -ne 0 ]; then tst_brkm TFAIL NULL "Test #3: Error other than ENOSPC" return $RC fi fi done Zapełnianie urządzenia strukturą katalogów i pustych plików for i in `seq 100`; do myfuncall mkdir mount/$i RC=$? if [ $RC -eq 2 ]; then RC=0; break else if [ $RC -ne 0 ]; then tst_brkm TFAIL NULL "Test #3: Error other than ENOSPC"; return $RC fi fi for j in `seq 100`; do myfuncall mkdir mount/$i/$j RC=$? if [ $RC -eq 2 ]; then RC=0; break else if [ $RC -ne 0 ]; then tst_brkm TFAIL NULL "Test #3: Error other than ENOSPC"; return $RC fi fi for k in `seq 100`; do myfuncall touch mount/$i/$j/$k RC=$? if [ $RC -eq 2 ]; then RC=0; break else if [ $RC -ne 0 ]; then tst_brkm TFAIL NULL "Test #3: Error other than ENOSPC"; return $RC fi fi done done done
28 Running tests... <<<test_start>>> tag=fs_full stime= cmdline="fs_full.sh" contacts="" analysis=exit initiation_status="ok" <<<test_output>>> incrementing stop (...) test01 0 INFO : Test #1: create lots of directories No space left on device, all correct No space left on device, all correct No space left on device, all correct test01 1 PASS : Test #1: filled the filesystem. test02 0 INFO : Test #2: create lots of files No space left on device, all correct test02 2 PASS : Test #2: filled the filesystem. test03 0 INFO : Test #3: create lots of directories and files No space left on device, all correct No space left on device, all correct No space left on device, all correct test03 3 PASS : Test #3: filled the filesystem. <<<execution_status>>> duration=443 termination_type=exited termination_id=0 corefile=no cutime=1477 cstime=35653 <<<test_end>>> INFO: pan reported all tests PASS LTP Version: LTP
29
30
Automatyczne testowanie jądra Linuksa
Szymon Giżecki Chu Hong Hai Mateusz Kopeć Automatyczne testowanie jądra Linuksa Systemy Operacyjne Projekt studencki Plan prezentacji...czyli o czym będziemy mówili: Metodologie testowania jądra Linuksa
Automatyczne testowanie jądra Linuksa
Automatyczne testowanie jądra Linuksa Krzysztof Skrzypczyński Marcin Mieteń Automatyzacja testów W kontekście testowania jądra linuxa tworzy się skrypty i programy sprawdzające działanie odpowiednich części
znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
IdyllaOS. Prosty, alternatywny system operacyjny. www.idyllaos.org. Autor: Grzegorz Gliński. Kontakt: milyges@gmail.com
IdyllaOS www.idyllaos.org Prosty, alternatywny system operacyjny Autor: Grzegorz Gliński Kontakt: milyges@gmail.com Co to jest IdyllaOS? IdyllaOS jest to mały, prosty, uniksopodobny, wielozadaniowy oraz
I. Informacje ogólne. Jednym z takich systemów jest Mambo.
MAMBO (CMS) I. Informacje ogólne CMS, Content Management System ("system zarządzania treścią") jest to jedna lub zestaw aplikacji internetowych pozwalających na łatwe utworzenie oraz późniejszą aktualizację
Piotr Dwieczkowski. Code coverage. Mierzenie pokrycia kodu, teoria oraz praktyka w C/C++
Piotr Dwieczkowski Code coverage Mierzenie pokrycia kodu, teoria oraz praktyka w C/C++ Plan Co to jest pokrycie kodu? Możliwe sposoby wykorzystania Rodzaje statystyk Wady i zalety mierzenia porycia kodu
GNU GProf i GCov. przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A Białystok
GNU GProf i GCov przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A 15-351 Białystok Streszczenie: Dokument zawiera podstawowe informacje
Ćwiczenie Nr 7 Instalacja oraz konfiguracja wskazanego systemu operacyjnego
Ćwiczenie Nr 7 Instalacja oraz konfiguracja wskazanego systemu operacyjnego Cel ćwiczenia: Celem zajęć jest zdobycie doświadczenia i umiejętności instalacji systemu operacyjnego z rodziny Unix bez wykorzystania
Tworzenie oprogramowania
Tworzenie oprogramowania dr inż. Krzysztof Konopko e-mail: k.konopko@pb.edu.pl 1 Tworzenie oprogramowania dla systemów wbudowanych Program wykładu: Tworzenie aplikacji na systemie wbudowanym. Konfiguracja
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 007 Tryb rzeczywisty i chroniony procesora 2 SO i SK/WIN Wszystkie 32-bitowe procesory (386 i nowsze) mogą pracować w kilku trybach. Tryby pracy
XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery
http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod
Optymalizacja programów Open Source. Profilery wysokiego poziomu część 2. Krzysztof Lichota
Optymalizacja programów Open Source Profilery wysokiego poziomu część 2 Krzysztof Lichota lichota@mimuw.edu.pl gprof gprof Pomiar działa na zasadzie instrumentacji kompilowanego kodu (wejścia i wyjścia
Testowanie oprogramowania. Testowanie oprogramowania 1/34
Testowanie oprogramowania Testowanie oprogramowania 1/34 Testowanie oprogramowania 2/34 Cele testowania testowanie polega na uruchamianiu oprogramowania w celu wykrycia błędów, dobry test to taki, który
GRUB (GRand Unified Bootloader) - jest bootloaderem instalowanym standardowo w Ubuntu, potrafiącym obsłużyć kilka systemów jednocześnie (Multiboot).
GRUB (GRand Unified Bootloader) - jest bootloaderem instalowanym standardowo w Ubuntu, potrafiącym obsłużyć kilka systemów jednocześnie (Multiboot). GRUB ładuje system operacyjny do pamięci przekazuje
Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe
Architektury Usług Internetowych Laboratorium 2. Usługi sieciowe Wstęp Celem laboratorium jest zapoznanie się z modelem usług sieciowych na przykładzie prostego serwera Apache Axis2. Apache Axis2 Apache
Testowanie I. Celem zajęć jest zapoznanie studentów z podstawami testowania ze szczególnym uwzględnieniem testowania jednostkowego.
Testowanie I Cel zajęć Celem zajęć jest zapoznanie studentów z podstawami testowania ze szczególnym uwzględnieniem testowania jednostkowego. Testowanie oprogramowania Testowanie to proces słyżący do oceny
Struktury systemów operacyjnych
Struktury systemów operacyjnych Jan Tuziemski Część slajdów to zmodyfiowane slajdy ze strony os-booi.com copyright Silberschatz, Galvin and Gagne, 2013 Cele wykładu 1. Opis usług dostarczanych przez OS
Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy wykład 1, część 2 1 Język JAVA podstawy Plan wykładu: 1. Krótka historia Javy 2. Jak przygotować sobie środowisko programistyczne 3. Opis środowiska JDK 4. Tworzenie programu krok po
Kernel Kompilacja jądra
Kernel Kompilacja jądra systemu Co to jest jądro systemu operacyjnego Jądro systemu operacyjnego jest rozpowszechniane na licencji GNU General Public License (GPL) określonej przez konsorcjum Free Software
U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)
http://user-mode-linux.sourceforge.net/ System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux) Autor: Jeff Dike Koncepcja powstała w 1999 r. Początkowo jako patch do jądra 2.0
Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:
Skrypty powłoki Skrypty są zwykłymi plikami tekstowymi, w których są zapisane polecenia zrozumiałe dla powłoki. Zadaniem powłoki jest przetłumaczenie ich na polecenia systemu. Aby przygotować skrypt, należy:
System komputerowy. System komputerowy
System komputerowy System komputerowy System komputerowy układ współdziałających ze sobą (według pewnych zasad) dwóch składowych: sprzętu komputerowego (hardware) oraz oprogramowania (software) po to,
Warstwy systemu Windows 2000
Warstwy systemu Windows 2000 Tryb użytkownika (User Mode) Tryb jądra (Kernel Mode) Tryb użytkownika (User Mode) Zarządzanie pamięcią wirtualną Cechy charakterystyczne systemu Windows XP: system bardzo
Ministerstwo Finansów Departament Informatyzacji Usług Publicznych
Ministerstwo Finansów Instrukcja programu epit WALIDATOR Grudzień Historia modyfikacji Data Wersja Opis Autor 2003 1 Utworzenie dokumentu DI/NWK 2007 Aktualizacja RI/GST/JNM 2008 Aktualizacja RI/GST/JNM
Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania
Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania Przemysław Kobylański Wprowadzenie Każdy program w C musi zawierać przynajmniej funkcję o nazwie main(): Aby możliwe
Q E M U. http://www.qemu.com/
http://www.qemu.com/ Emulator procesora Autor: Fabrice Bellard Obsługiwane platformy: Windows, Solaris, Linux, FreeBSD, Mac OS X Aktualna wersja: 0.9.0 Większość programu oparta na licencji LGPL, a sama
Testowanie II. Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage).
Testowanie II Cel zajęć Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage). Pokrycie kodu testami Jak już była mowa na poprzednich
Testowanie jądra Linuksa. Michał Pilipczuk Michał Świtakowski Piotr Wojnarowski
Testowanie jądra Linuksa Michał Pilipczuk Michał Świtakowski Piotr Wojnarowski Agenda Metodyka testów jądra Środowiska i narzędzia używane w praktyce Pokrycie kodu Prezentacja testów na żywo Kiedy Tux
SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)
(opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) W informatyce występują ściśle obok siebie dwa pojęcia: sprzęt (ang. hardware) i oprogramowanie
MentorGraphics ModelSim
MentorGraphics ModelSim 1. Konfiguracja programu Wszelkie zmiany parametrów systemu symulacji dokonywane są w menu Tools -> Edit Preferences... Wyniki ustawień należy zapisać w skrypcie startowym systemu
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma
1.Wstęp. 2.Generowanie systemu w EDK
1.Wstęp Celem niniejszego ćwiczenia jest zapoznanie z możliwościami debuggowania kodu na platformie MicroBlaze oraz zapoznanie ze środowiskiem wspomagającym prace programisty Xilinx Platform SDK (Eclipse).
Strojenie systemu Linux pod k¹tem serwera bazy danych Oracle 9i
VI Seminarium PLOUG Warszawa Styczeñ 2003 Strojenie systemu Linux pod k¹tem serwera bazy danych Oracle 9i Marcin Przepiórowski Strojenie systemu Linux pod kątem serwera bazy danych Oracle 9i 7 1. Wstęp
Podstawy Informatyki Wprowadzenie do języka C dr inż. Jarosław Bułat
02 Podstawy Informatyki Wprowadzenie do języka C dr inż. Jarosław Bułat 2012.10.07 Program w języku C Program w języku C jest pisany w pliku tekstowym, następnie przetwarzany przez kompilator do pliku
Win Admin Replikator Instrukcja Obsługi
Win Admin Replikator Instrukcja Obsługi Monitoring Kopie danych (backup) E-mail Harmonogram lokalne i zewnętrzne repozytorium Logi Pamięć Procesor HDD Administracja sprzętem i oprogramowaniem (automatyzacja
Tango-RedPitaya. Tango device server for RedPitaya multi-instrument board. Grzegorz Kowalski daneos@daneos.com 31 sierpnia 2015
Tango-RedPitaya Tango device server for RedPitaya multi-instrument board Grzegorz Kowalski daneos@daneos.com 31 sierpnia 2015 Streszczenie Tango-RedPitaya jest serwerem urządzeń Tango sterującym płytką
Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania
Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania Krzysztof Kluza, Janusz Miller 1 Debugowanie Debugowanie, czy też po polsku odpluskiwanie, to proces polegający na kontrolowanym wykonaniu programu
System. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r.
System FOKUS Instalacja bazy danych MySQL Autor : Piotr Zielonka tel. 601 99-73-79 pomoc@zielonka.info.pl Piotrków Tryb., sierpień 2018r. W wersji 2018.7.0 systemu FoKus wprowadzono funkcje umożliwiające
Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Uniwersytet Mikołaja Kopernika. Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej
Uniwersytet Mikołaja Kopernika Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Marcin HENRYKOWSKI Nr albumu: 158069 Praca magisterska na kierunku Informatyka Archiwizacja
Platformy programistyczne:.net i Java L ABORATORIUM 7,8: HACKATHON - JTTT
Platformy programistyczne:.net i Java L ABORATORIUM 7,8: HACKATHON - JTTT O co chodzi? - Przypomnienie Hackathon - http://en.wikipedia.org/wiki/hackathon A hackathon is an event in which computer programmers
Monitorowanie wydajność w bazie Oracle11g
Monitorowanie wydajność w bazie Oracle11g Wstęp Monitorowanie wydajności bazy danych, a także aplikowanie aktualizacji to jedne z ważniejszych zadań administratora bazy danych. Wpływ na wydajność może
Porównanie metod i technik testowania oprogramowania. Damian Ryś Maja Wojnarowska
Porównanie metod i technik testowania oprogramowania Damian Ryś Maja Wojnarowska Testy oprogramowania Testowanie oprogramowania jest to proces związany z wytwarzaniem oprogramowania. Jest on jednym z procesów
Maciej Oleksy Zenon Matuszyk
Maciej Oleksy Zenon Matuszyk Jest to proces związany z wytwarzaniem oprogramowania. Jest on jednym z procesów kontroli jakości oprogramowania. Weryfikacja oprogramowania - testowanie zgodności systemu
Konfiguracja i kompilacja jądra Linux. Based on Free Electrons
Konfiguracja i kompilacja jądra Linux Based on Free Electrons Obsługiwane platformy Rodzaje obsługiwanych architektury katalog arch/ Minimum: 32 bit, opcjonalnie MMU, gcc Architektura 32 bit: arm, avr32,
Laboratorium 1. I. Zainstaluj program Eclipse (wersja C/C++ w odpowiednim systemie operacyjnym
Laboratorium 1 I. Zainstaluj program Eclipse (wersja C/C++ http://www.eclipse.org/downloads/) w odpowiednim systemie operacyjnym II. Zainstaluj narzędzia Windows CDT (w Eclipse jako software site dodajemy
Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;
14.3. Podstawy obsługi X Window 14.3. Podstawy obsługi X Window W przeciwieństwie do systemów Windows system Linux nie jest systemem graficznym. W systemach Windows z rodziny NT powłokę systemową stanowi
Instrukcja instalacji środowiska testowego na TestingCup wersja 1.0
Instrukcja instalacji środowiska testowego na TestingCup 2017 wersja 1.0 Spis treści: 1. Wstęp Błąd! Nie zdefiniowano zakładki. 2. Konfiguracja sprzętowa 2 3. Instalacja bazy danych MySQL 5.7 2 4. Import
Algorytm. a programowanie -
Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik
Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak
Systemy operacyjne System operacyjny Linux - wstęp Anna Wojak 1 1 Wstęp Linux jest systemem z rodziny Unix. Pierwsza wersja systemu została opracowana w 1969 roku przez K.Thompsona i D.Ritchie Jest to
Aplikacje internetowe - laboratorium
Aplikacje internetowe - laboratorium PHP Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej opartej o język PHP. Aplikacja ilustruje takie mechanizmy jak: obsługa formularzy oraz obsługa
Tom 6 Opis oprogramowania
Część 4 Narzędzie do wyliczania wielkości oraz wartości parametrów stanu Diagnostyka stanu nawierzchni - DSN Generalna Dyrekcja Dróg Krajowych i Autostrad Warszawa, 30 maja 2012 Historia dokumentu Nazwa
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
Układy VLSI Bramki 1.0
Spis treści: 1. Wstęp... 2 2. Opis edytora schematów... 2 2.1 Dodawanie bramek do schematu:... 3 2.2 Łączenie bramek... 3 2.3 Usuwanie bramek... 3 2.4 Usuwanie pojedynczych połączeń... 4 2.5 Dodawanie
IBM SPSS Statistics - Essentials for R: Instrukcje instalacji dla Linux
IBM SPSS Statistics - ssentials for R: Instrukcje instalacji dla Linux Przedstawione poniżej instrukcje dotyczą instalowania IBM SPSS Statistics - ssentials for R w systemach operacyjnych Linux. Przegląd
Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w
Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w obrębie skryptu. Wyrażenia include() i require() są niemal
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Win Admin Replikator Instrukcja Obsługi
Win Admin Replikator Instrukcja Obsługi Monitoring Kopie danych (backup) E-mail Harmonogram lokalne i zewnętrzne repozytorium Logi Pamięć Procesor HDD Administracja sprzętem i oprogramowaniem (automatyzacja
Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()
Paweł Gmys PHP strona 1 Lekcja 10 Uprawnienia Aby skrypt PHP mógł odwołać się do pliku, musi mieć odpowiednie uprawnienia. Szczegóły są zależne od serwera. Najczęściej chyba skrypt ma uprawnienia takie,
Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
Egzamin pisemny z przedmiotu: Systemy operacyjne Semestr I
Egzamin pisemny z przedmiotu: Systemy operacyjne Semestr I Uwaga: Test odnosi się do systemu operacyjnego Linux! 1) Linux jest systemem wielodostępnym, co oznacza, że: a) pozwala na logowanie się do systemu
Zapisywanie algorytmów w języku programowania
Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym
<Nazwa firmy> <Nazwa projektu> Specyfikacja dodatkowa. Wersja <1.0>
Wersja [Uwaga: Niniejszy wzór dostarczony jest w celu użytkowania z Unified Process for EDUcation. Tekst zawarty w nawiasach kwadratowych i napisany błękitną kursywą
Ćwiczenie nr 14: System Linux
Ćwiczenie nr 14: System Linux Barbara Łukawska, Adam Krechowicz, Tomasz Michno Czym jest Linux? Słowo Linux może oznaczać zarówno jądro systemowe Linux, jak i całą rodzinę systemów operacyjnych, które
Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.
Zmienne powłoki Zmienne powłoki (shell variables) to tymczasowe zmienne, które mogą przechowywać wartości liczbowe lub ciągi znaków. Związane są z powłoką, Przypisania wartości do zmiennej następuje poprzez
Działanie systemu operacyjnego
Działanie systemu operacyjnego Budowa systemu komputerowego Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej Pamięć
Plan testów do Internetowego Serwisu Oferowania i Wyszukiwania Usług Transportowych
Plan testów do Internetowego Serwisu Oferowania i Wyszukiwania Usług Transportowych Michał Lewowski, Piotr Skowron, Michał Matczuk, Piotr Wygocki 5 czerwca 2006 1 Spis treści 1 Wprowadzenie 3 1.1 Cel..........................................
WPROWADZENIE DO JĘZYKA JAVA
WPROWADZENIE DO JĘZYKA JAVA programowanie obiektowe KRÓTKA HISTORIA JĘZYKA JAVA KRÓTKA HISTORIA JĘZYKA JAVA 1991 - narodziny języka java. Pierwsza nazwa Oak (dąb). KRÓTKA HISTORIA JĘZYKA JAVA 1991 - narodziny
Aplikacja serwerowa Platformy Prezentacyjnej Opis produktu
Aplikacja serwerowa Platformy Prezentacyjnej Opis produktu Polska Organizacja Turystyczna ul. Chałubińskiego 8 00-613 Warszawa Spis treści 1 Założenia wstępne... 1 1.1 Informacje wstępne... 1 1.2 Cel projektu...
Systemy operacyjne. Instrukcja laboratoryjna. Ćwiczenie 1: Polecenia systemu UNIX/LINUX. Opracował: dr inż. Piotr Szpryngier
Systemy operacyjne Instrukcja laboratoryjna Ćwiczenie 1: Polecenia systemu UNIX/LINUX Opracował: dr inż. Piotr Szpryngier Olsztyn 2009 1 Wprowadzenie. Cel zajęć praktycznych. Wymagania stawiane studentom
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
GIT. Rozproszony system kontroli wersji
GIT Rozproszony system kontroli wersji Co to jest system kontroli wersji? System kontroli wersji śledzi wszystkie zmiany dokonywane na pliku (lub plikach) i umożliwia przywołanie dowolnej wcześniejszej
REFERAT PRACY DYPLOMOWEJ
REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja środowiska do automatyzacji przeprowadzania testów aplikacji internetowych w oparciu o metodykę Behavior Driven Development. Autor: Stepowany
Windows Serwer 2008 R2. Moduł 8. Mechanizmy kopii zapasowych
Windows Serwer 2008 R2 Moduł 8. Mechanizmy kopii zapasowych Co nowego w narzędziu Kopia zapasowa? 1. Większa elastyczność w zakresie możliwości wykonywania kopii zapasowych 2. Automatyczne zarządzanie
System Zarządzania Dystrybucją
PRI - Projekt System Zarządzania Dystrybucją Leszek Krupiński 13 czerwca 2003 Spis treści 1 Opis dziedziny problemowej 2 2 Cel 3 3 Zakres 4 4 Kontekst 5 5 Opis wymagań 6 5.1 Wymagania funkcjonalne......................
Bezpieczeństwo systemów komputerowych
Bezpieczeństwo systemów komputerowych Jak pisać poprawne programy? Aleksy Schubert (Marcin Peczarski) Instytut Informatyki Uniwersytetu Warszawskiego 6 listopada 2018 Na podstawie: David A. Wheeler Secure
Trochę o plikach wsadowych (Windows)
Trochę o plikach wsadowych (Windows) Zmienne środowiskowe Zmienną środowiskową można ustawić na stałe w systemie (Panel sterowania->system- >Zaawansowane ustawienia systemu->zmienne środowiskowe) lub też
Instrukcja użytkownika
Instrukcja użytkownika Bydgoszcz 2017 Strona: 1/12 Spis treści 1 Konfiguracja i obsługa funkcjonalności... 3-1.1 Wstęp... 3 1.2 Konfiguracja stacji klienckiej... 3 1.3 Weryfikacja istniejącego dokumentu...
Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie
Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których
Bash - wprowadzenie. Bash - wprowadzenie 1/39
Bash - wprowadzenie Bash - wprowadzenie 1/39 Bash - wprowadzenie 2/39 Czym jest bash? Rysunek : Zadanie powłoki to ukrycie wywołań systemowych Bash - wprowadzenie 3/39 Czym jest bash? Przykład polecenia:
Działanie systemu operacyjnego
Działanie systemu operacyjnego Budowa systemu komputerowego I NIC Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej
Dystrybucje Linuksa c.d.
Dystrybucje Linuksa c.d. Gentoo dla fachowców Gentoo Gentoo dla fachowców brak skompilowanych paczek; system zarządzania Portage Gentoo dla fachowców brak skompilowanych paczek; system zarządzania Portage
1. Aplikacja LOGO! App do LOGO! 8 i LOGO! 7
1. Aplikacja do LOGO! 8 i LOGO! 7 1.1. Przegląd funkcji Darmowa aplikacja umożliwia podgląd wartości parametrów procesowych modułu podstawowego LOGO! 8 i LOGO! 7 za pomocą smartfona lub tabletu przez sieć
Materiały dodatkowe. Simulink Real-Time
Katedra Inżynierii Systemów Sterowania Materiały dodatkowe Simulink Real-Time Opracowali: mgr inż. Tomasz Karla Data: Listopad, 2016 r. Wstęp Simulink Real-Time jest środowiskiem pozwalającym na tworzenie
NS-2. Krzysztof Rusek. 26 kwietnia 2010
NS-2 Krzysztof Rusek 26 kwietnia 2010 1 Opis ćwiczenia Symulator ns-2 jest potężnym narzędziem, szeroko stosowanym w telekomunikacji. Ćwiczenie ma na cele przedstawić podstawy symulatora oraz symulacji
Działanie systemu operacyjnego
Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej I NIC sieci Pamięć operacyjna Przerwania Przerwania
INSTRUKCJA INSTALACJI
INSTRUKCJA INSTALACJI TcpMDT ver. 7 Aplitop, 2014 C/ Sumatra, 9 E-29190 MÁLAGA (SPAIN) web: www.aplitop.com e-mail: support@aplitop.com Spis treści Instalacja MDT ver. 7... 3 Wymagania systemowe... 3 Menu
Pracownia Technik Obliczeniowych
Pracownia Technik Obliczeniowych Instalowanie oprogramowania Paweł Daniluk Wydział Fizyki Wiosna 2016 P. Daniluk(Wydział Fizyki) PTO XI Wiosna 2016 1 / 16 Standardowy układ katalogów Systemy UNIXowe mają
CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu
CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu inż. Daniel Solarz Wydział Fizyki i Informatyki Stosowanej AGH 1. Cel projektu. Celem projektu było napisanie wtyczki
Audyt oprogramowania. Artur Sierszeń asiersz@kis.p.lodz.pl http://bzyczek.kis.p.lodz.pl
Audyt oprogramowania Artur Sierszeń asiersz@kis.p.lodz.pl http://bzyczek.kis.p.lodz.pl Cel audytu Audyt oprogramowania polega na analizie stanu oprogramowania zainstalowanego w firmie uporządkowaniu i
K. Konopko; Toolchain. Jądro Linuksa. dr inż. Krzysztof Konopko
Jądro Linuksa dr inż. Krzysztof Konopko e-mail: k.konopko@pb.edu.pl 1 Jądro Linuksa Program wykładu: Właściwości jądra Linuksa. Pliki źródłowe jądra. Konfiguracja jądra. Kompilacja i kompilacja skrośna
Pracownia Komputerowa wykład III
Pracownia Komputerowa wykład III dr Magdalena Posiadała-Zezula dr Jan Suffczyński 1 Powłoki - rodzaje! W Linux ie mamy kilka powłok do wyboru:! sh : Bourne Shell, oryginalna powłoka systemu unix! csh :
Linux: System Plików
Linux: System Plików Systemy Operacyjne Mateusz Hołenko 3 marca 2013 Plan zajęć Wszystko jest plikiem Obsługa systemu plików Prawa dostępu Wyszukiwanie Mateusz Hołenko Linux: System Plików [2/24] Wszystko
Sposoby wykrywania i usuwania błędów. Tomasz Borzyszkowski
Sposoby wykrywania i usuwania błędów Tomasz Borzyszkowski Mylić się jest rzeczą ludzką Typy błędów: błędy specyfikacji: źle określone wymagania błędy projektowe: nieodpowiednie struktury danych i algorytmy
Topór Światowida Plan testów
Topór Światowida Plan testów Maciej Pawlisz Łukasz Polak Oskar Skibski Jakub Światły 5 czerwca 2007r. 1 Spis treści 1 Wprowadzenie 3 1.1 Cel.......................................... 3 1.2 Zakres........................................
Win Admin Monitor Instrukcja Obsługi
Win Admin Monitor Instrukcja Obsługi czerwiec 2019 wersja dokumentu 1.7 dla wersji aplikacji 2.1.1.0 Spis treści: I. Wstęp 3 II. Wymagania systemowe 4 III. Ograniczenia funkcjonalne wersji demo 5 IV. Instalacja
IO - Plan wdrożenia. M.Jałmużna T.Jurkiewicz P.Kasprzyk M.Robak. 5 czerwca 2006
IO - Plan wdrożenia M.Jałmużna T.Jurkiewicz P.Kasprzyk M.Robak 5 czerwca 2006 1 Spis treści 1 Wprowadzenie 3 1.1 Cel.......................................... 3 1.2 Zakres........................................
Podstawy Programowania.
Podstawy Programowania http://www.saltbox.com/img/under_the_hood.png O mnie... dr inż. Łukasz Graczykowski Zakład Fizyki Jądrowej Wydział Fizyki Politechniki Warszawskiej lgraczyk@if.pw.edu.pl www.if.pw.edu.pl/~lgraczyk/wiki
Kalipso wywiady środowiskowe
Instrukcja instalacji Kalipso wywiady środowiskowe I. Na systemie operacyjnym Ubuntu (TM) II. Na systemie operacyjnym Windows INFO-R Spółka Jawna - 2017 43-430 Pogórze, ul. Baziowa 29, tel. (33) 479 93