Narzędzia do oceny wydajności kodu. Narzędzia do oceny wydajności kodu 1/32

Wielkość: px
Rozpocząć pokaz od strony:

Download "Narzędzia do oceny wydajności kodu. Narzędzia do oceny wydajności kodu 1/32"

Transkrypt

1 Narzędzia do oceny wydajności kodu Narzędzia do oceny wydajności kodu 1/32

2 Narzędzia do oceny wydajności kodu 2/32 Błędy zarządzania pamięcią Typowe błędy wycieki pamięci niewłaściwe zarządzanie pamięcią przepełnienie bufora niezainicjalizowana pamięć

3 Narzędzia do oceny wydajności kodu 3/32 Debugery pamięci ang. memory debuggers Odnajdują: wycieki pamięci dostęp do uprzednio zwolnionej pamięci wielokrotne zwalnianie tego samego obszaru pamięci użycie delete zamiast delete[] dla tablic wyjście poza zakres tablicy dostęp do niezainicjalizowanej pamięci zapis lub odczyt wskaźnika NULL

4 Narzędzia do oceny wydajności kodu 4/32 Przykład programu z błędami (1) Kod źródłowy 1 #i n c l u de <s t d i o. h> 2 i n t main ( i n t argc, char argv ) { 3 const i n t s i z e =100; 4 i n t n, sum=0; 5 i n t A = ( i n t ) m a l l o c ( s i z e o f ( i n t ) s i z e ) ; 6 7 f o r ( n=s i z e ; n>0; n ) 8 A[ n ] = n ; 9 f o r ( n=0; n<s i z e ; n++) 10 sum += A[ n ] ; 11 p r i n t f ( "sum=%d\n", sum ) ; 12 return 0 ; 13 }

5 Narzędzia do oceny wydajności kodu 5/32 Przykład programu z błędami (2) Narzędzie do sprawdzania pamięci $ valgrind --tool=memcheck --leak-check=full./a.out Komunikaty Valgrinda ==6731== Memcheck, a memory error detector.... ==6731== Invalid write of size 4 ==6731== at 0x40056A: main (main1.c:8) ==6731== Address 0x51791c0 is 0 bytes after a block of size 400 ==6731== at 0x4C2260E: malloc (vg_replace_malloc.c:207) ==6731== by 0x40054A: main (main1.c:5) ==6731==

6 Narzędzia do oceny wydajności kodu 6/32 Przykład programu z błędami (3) ==6731== Conditional jump or move depends on uninitialised value ==6731== Conditional jump or move depends on uninitialised value ==6731== Use of uninitialised value of size 8 ==6731== at 0x4E69963: (within /lib/libc-2.7.so) ==6731== by 0x4E6C7CB: vfprintf (in /lib/libc-2.7.so) ==6731== by 0x4E73C69: printf (in /lib/libc-2.7.so) ==6731== by 0x4005AE: main (main1.c:11) ==6731== ==6731== at 0x4E6996D: (within /lib/libc-2.7.so) ==6731== by 0x4E6C7CB: vfprintf (in /lib/libc-2.7.so) ==6731== by 0x4E73C69: printf (in /lib/libc-2.7.so) ==6731== by 0x4005AE: main (main1.c:11) ==6731==... ==6731== at 0x4E6BDB1: vfprintf (in /lib/libc-2.7.so) ==6731== by 0x4E73C69: printf (in /lib/libc-2.7.so) ==6731== by 0x4005AE: main (main1.c:11) sum=4950

7 Narzędzia do oceny wydajności kodu 7/32 Przykład programu z błędami (4) ==6731== ERROR SUMMARY: 12 errors from 6 contexts (suppressed: 8 from 1) ==6731== malloc/free: in use at exit: 400 bytes in 1 blocks. ==6731== malloc/free: 1 allocs, 0 frees, 400 bytes allocated. ==6731== For counts of detected errors, rerun with: -v ==6731== searching for pointers to 1 not-freed blocks. ==6731== checked 76,816 bytes. ==6731== ==6731== ==6731== 400 bytes in 1 blocks are definitely lost in loss record 1 of 1 ==6731== at 0x4C2260E: malloc (vg_replace_malloc.c:207) ==6731== by 0x40054A: main (main1.c:5) ==6731== ==6731== LEAK SUMMARY: ==6731== definitely lost: 400 bytes in 1 blocks. ==6731== possibly lost: 0 bytes in 0 blocks. ==6731== still reachable: 0 bytes in 0 blocks. ==6731== suppressed: 0 bytes in 0 blocks.

8 Narzędzia do oceny wydajności kodu 8/32 Błędy przydziału/zwolnienia pamięci (1) Kod źródłowy 1 #i n c l u de <s t d i o. h> 2 #i n c l u de < s t d l i b. h> 3 #i n c l u de <s t r i n g. h> 4 i n t main ( i n t argc, char argv [ ] ) { 5 char mystr1=s t r d u p ( "test" ) ; 6 char mystr2=s t r d u p ( "TEST" ) ; 7 mystr1=mystr2 ; 8 9 p r i n t f ( "mystr1=%s\n", mystr1 ) ; 10 f r e e ( mystr1 ) ; p r i n t f ( "mystr2=%s\n", mystr2 ) ; 13 f r e e ( mystr2 ) ; 14 return 0 ; 15 }

9 Narzędzia do oceny wydajności kodu 9/32 Błędy przydziału/zwolnienia pamięci (2) ==6802== Invalid read of size 1 ==6802== at 0x4C22D82: strlen (mc_replace_strmem.c:242) ==6802== by 0x4E6DB88: vfprintf (in /lib/libc-2.7.so) ==6802== by 0x4E73C69: printf (in /lib/libc-2.7.so) ==6802== by 0x4005CD: main (main2.c:12) ==6802== Address 0x is 0 bytes inside a block of size 5 ==6802== at 0x4C2130F: free (vg_replace_malloc.c:323) ==6802== by 0x4005BA: main (main2.c:10)... mystr2=test ==6802== ==6802== Invalid free() / delete / delete[] ==6802== at 0x4C2130F: free (vg_replace_malloc.c:323) ==6802== by 0x4005D6: main (main2.c:14) ==6802== Address 0x is 0 bytes inside a block of size 5 ==6802== at 0x4C2130F: free (vg_replace_malloc.c:323) ==6802== by 0x4005BA: main (main2.c:10)

10 Narzędzia do oceny wydajności kodu 10/32 Błędy przydziału/zwolnienia pamięci (3) ==6802== ERROR SUMMARY: 14 errors from 7 contexts (suppressed: 8 ==6802== malloc/free: in use at exit: 5 bytes in 1 blocks. ==6802== malloc/free: 2 allocs, 2 frees, 10 bytes allocated. ==6802== For counts of detected errors, rerun with: -v ==6802== searching for pointers to 1 not-freed blocks. ==6802== checked 76,816 bytes. ==6802== ==6802== ==6802== 5 bytes in 1 blocks are definitely lost in loss record ==6802== at 0x4C2260E: malloc (vg_replace_malloc.c:207) ==6802== by 0x4EA0D71: strdup (in /lib/libc-2.7.so) ==6802== by 0x400584: main (main2.c:5) ==6802== ==6802== LEAK SUMMARY: ==6802== definitely lost: 5 bytes in 1 blocks. ==6802== possibly lost: 0 bytes in 0 blocks. ==6802== still reachable: 0 bytes in 0 blocks. ==6802== suppressed: 0 bytes in 0 blocks.

11 Narzędzia do oceny wydajności kodu 11/32 Przesłanki do użycia debugera pamięci Kiedy używać Valgrind Przenoszenie aplikacji na inny system operacyjny Program się zawiesza Pojawiają się tajemnicze błędy Jako element testów regresyjnych Gdy ciężko znaleźć przyczynę błędu: $ valgrind --db-attach=yes./a.out

12 Narzędzia do oceny wydajności kodu 12/32 Kłopoty z wykorzystaniem programu Valgrind Najczęstsze problemy: Dobry przypadek testowy pokrywający kod Zwiększone wymagania programu Wielowątkowość nie zawsze wspierana Wsparcie dla niestandardowych funkcji obsługi pamięci

13 Narzędzia do oceny wydajności kodu 13/32 Proste podejście Wykorzystanie top top - 09:57:47 up 20:38, 4 users, load average: 0.00, 0.00, 0.00 Tasks: 122 total, 2 running, 120 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.4%sy, 0.0%ni, 99.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: k total, k used, k free, 87208k buffers Swap: k total, 0k used, k free, k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6913 rdyja m 324 S :00.06 a.out 5043 root m 37m 17m S :38.24 Xorg...

14 Narzędzia do oceny wydajności kodu 14/32 Profiler wykorzystania pamięci (1) Uruchomienie $ valgrind --tool=massif./a.out n Wyniki $ ms_print massif.out.6952

15 Narzędzia do oceny wydajności kodu 15/32 Profiler wykorzystania pamięci (2) Command:./a.out n Massif arguments: (none) ms_print arguments: massif.out MB 39.22^ #..#.: : :#. :::@ :@::. ::#:.:::@: :@::..::#:: ::::@: ::@::: :::#:: : :@::::@::: :::#:: : :::#:: ::.::@::::@:::: :::::@:::::: :::#:: :: :::@::::@::::, ::::::@::::::@ :::#:: ::: :::@::::@::::@ ::::::@::::::@ :::#:: :::..:::@::::@::::@:.::::::@::::::@. :::#:: :::: ::::@::::@::::@: :::::::@::::::@: :::#:: ::::. ::::@::::@::::@:: ::::::::@::::::@:: :::#:: ::::: :::#:: :::::: : ::::@::::@::::@::: :::#:: :::::: : ::::@::::@::::@:::. :::#:: ::::::: : ::::@::::@::::@::::.::::::::::@::::::@:::: >Mi

16 Narzędzia do oceny wydajności kodu 16/32 Profiler wykorzystania pamięci (3) Number of snapshots: 76 Detailed snapshots: [3, 8, 12 (peak), 29, 34, 39, 58, 68] n time(i) total(b) useful-heap(b) extra-heap(b) stacks(b) ,978 80,008 80, ,929 3,814,648 3,807,360 7, ,889 6,638,200 6,625,408 12, % (6,625,408B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. ->98.60% (6,545,408B) 0x4008AE: main (testmalloc.c:53) ->01.21% (80,000B) 0x400887: main (testmalloc.c:47) n time(i) total(b) useful-heap(b) extra-heap(b) stacks(b) ,969 10,840,696 10,819,712 20, ,049 15,043,192 15,014,016 29, ,129 19,245,688 19,208,320 37, ,209 23,448,184 23,402,624 45, ,889 26,337,400 26,286,208 51, % (26,286,208B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. ->99.50% (26,206,208B) 0x4008AE: main (testmalloc.c:53) ->00.30% (80,000B) in 1+ places, all below ms_print s threshold (01.00%)

17 Narzędzia do oceny wydajności kodu 17/32 Nadmierne zużycie pamięci Kroki przeciwdziałania nadmiernemu wykorzystaniu pamięci sprawdzić, czy nie ma wycieków pamięci oszacować (zgrubnie) zapotrzebowanie na pamięć sprawdzić użycie pamięci menedżerem procesów wykorzystać program Massif do odnalezienia obiektów zajmujących najwięcej pamięci

18 Narzędzia do oceny wydajności kodu 18/32 Analiza wydajności Kroki: przygotować zestaw testów upewnić się, że program działa prawidłowo dla testów użyć prostego narzędzia do mierzenia czasu wykonania odnaleźć przypadek ukazujący wąskie gardło programu użyć ten przypadek testowy w narzędziu profilującym

19 Narzędzia do oceny wydajności kodu 19/32 Proste metody analizy wydajności Polecenie wbudowane: $ time./mojprogram [arg1...] real 0m16.179s user 0m0.016s sys 0m0.164s Instrukcja time: $ /usr/bin/time./a.out n user 0.14system 0:16.17elapsed 1%CPU (0avgtext+ 0avgdata 0maxresident)k 0inputs+0outputs (0major+80071minor)pagefaults 0swaps

20 Narzędzia do oceny wydajności kodu 20/32 Problemy przy mierzeniu czasu wykonania Pułapki: zbyt krótki czas wykonania programu operacje wejścia/wyjścia wywołania systemowe brak pamięci skalowanie zegara CPU obciążenie generowane przez inne procesy

21 Wybór przypadku testowego dla programu Narzędzia do oceny wydajności kodu 21/32

22 Narzędzia do oceny wydajności kodu 22/32 Działanie profilerów Sposoby zbierania danych próbkowanie sampling pośrednicząco, oprzyrządowaniem instrumentation

23 Narzędzia do oceny wydajności kodu 23/32 gprof Wykorzystanie kompilacja programu z opcją -pg uruchomienie programu powstaje plik o nazwie gmon.out tworzenie raportu komendą gprof nazwa programu gmon.out

24 Narzędzia do oceny wydajności kodu 24/32 gprof profil płaski (ang. flat profile) $ gprof a.out gmon.out... Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls us/call us/call name insert_value swap less isort print_array main...

25 Narzędzia do oceny wydajności kodu 25/32 gprof graf wywołań (ang. call graph) Call graph (explanation follows) granularity: each sample hit covers 2 byte(s) for 0.18% of 5.47 index % time self children called name <spontaneous> [1] main [1] / isort [2] isort [2] / main [1] [2] isort [2] / insert_value [3] isort [2]

26 Narzędzia do oceny wydajności kodu 26/32 gprof graf wywołań (ang. call graph) / isort [2] [3] insert_value [3] / swap [4] / less [5] / insert_value [3] [4] swap [4] / insert_value [3] [5] less [5] <spontaneous> [6] print_array [6]

27 Narzędzia do oceny wydajności kodu 27/32 Callgrind Użycie uruchomienie programu w środowisku Valgrind $ valgrind --tool=callgrind./program arg1 arg2 powstaje plik o nazwie: callgrind.out.<id> utworzenie raportu komendą: $ callgrind annotate callgrind.out.<id>

28 Narzędzia do oceny wydajności kodu 28/32 Efekty działania callgrind Profile data file callgrind.out.7312 (creator: callgrind debian) I1 cache: D1 cache: L2 cache: Timerange: Basic block Trigger: Program termination Profiled target:./a.out i (PID 7312, part 1) Events recorded: Ir Events shown: Ir Event sort order: Ir Thresholds: 99 Include dirs: User annotated: Auto-annotation: off

29 Narzędzia do oceny wydajności kodu 29/32 Efekty działania callgrind Ir ,862,208 PROGRAM TOTALS Ir file:function 121,053,000 /home/../isort.c:insert_value [/home/../a.out] 67,983,000 /home/../isort.c:swap [/home/../a.out] 54,450,000 /home/../isort.c:less [/home/../a.out] 1,675,000 /home/../isort.c:isort 2 [/home/../a.out]

30 Narzędzia do oceny wydajności kodu 30/32 Narzędzie gcov Komendy: $ gcc -g -ftest-coverage -fprofile-arcs -pg prog.c $./program $ gcov program.gcda Komunikaty: File isort.c Lines executed:61.19% of 67 isort.c:creating isort.c.gcov

31 Narzędzia do oceny wydajności kodu 31/32 Wyniki działania gcov $ cat program.c.gcov -: 0:Source:isort.c -: 0:Graph:isort.gcno -: 0:Data:isort.gcda -: 0:Runs:2 -: 0:Programs: : 16:void swap(stype *a, int i, int j) { -: 17: Stype tmp; : 18: tmp = a[i]; : 19: a[i] = a[j]; : 20: a[j] = tmp; : 21:} -: 22: : 23:int less(stype a, Stype b) { : 24: return (a < b)? 1 : 0; -: 25:}

32 Narzędzia do oceny wydajności kodu 32/32 W wykładzie wykorzystano materiały Thorsten Grötker, Ulrich Holtmann, Holger Keding, Markus Wloka, The Developer s Guide to Debugging, Springer, 2008 John Fusco, Linux. Niezbędnik programisty, Helion, 2009

Wprowadzenie do Valgrinda

Wprowadzenie do Valgrinda Wprowadzenie do Valgrinda Jan Karwowski Wydział Matematyki i Nauk Informacyjnych PW 10 lutego 2015 Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego 2015 1 / 33 Valgrind Valgrind jest narzędziem

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Wykład 2

Wykład 2 Wstęp do programowania 1 Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 2 Pisanie programów w C Plan Wprowadzenie do C Pisanie programów w C Nasz pierwszy program - podstawy

Bardziej szczegółowo

MS Visual Studio 2005 Team Suite - Performance Tool

MS Visual Studio 2005 Team Suite - Performance Tool MS Visual Studio 2005 Team Suite - Performance Tool przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A 15-351 Białystok Streszczenie: Dokument

Bardziej szczegółowo

Pobieranie argumentów wiersza polecenia

Pobieranie argumentów wiersza polecenia Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:

Bardziej szczegółowo

Zarządzanie Procesami

Zarządzanie Procesami Rozumienie pojęcia proces w informatyce jest, w istocie rzeczy, bliskie jego zwyczajowemu pojmowaniu, czyli jako pewnej sekwencji zmian lub czy zdarzeń zachodzących wg ustalonego schematu (choć niekoniecznie

Bardziej szczegółowo

dynamiczny przydział pamięci calloc() memset() memcpy( ) (wskaźniki!! )

dynamiczny przydział pamięci calloc() memset() memcpy( ) (wskaźniki!! ) dynamiczny przydział pamięci malloc() free() realloc() calloc() memset() memcpy( ) mempcpy( ) memmove() (wskaźniki!! ) 1 dynamiczny przydział pamięci void * memccpy (void * to, void * from, int c, int

Bardziej szczegółowo

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom). Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154

Bardziej szczegółowo

Narzędzia debugowania kodu. Narzędzia debugowania kodu 1/33

Narzędzia debugowania kodu. Narzędzia debugowania kodu 1/33 Narzędzia debugowania kodu Narzędzia debugowania kodu 1/33 Narzędzia debugowania kodu 2/33 Oprogramowanie zawiera błędy Oprogramowanie zawsze zawiera błędy Odpluskwianie programów jest zajęciem programistów

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Przemysław Gawroński D-10, p. 234 Wykład 1 8 października 2018 (Wykład 1) Wstęp do programowania 8 października 2018 1 / 12 Outline 1 Literatura 2 Programowanie? 3 Hello World (Wykład

Bardziej szczegółowo

TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ

TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ Testowanie i naprawa Loxima You cannot control what you cannot measure. Tom DeMarco Grzegorz Timoszuk gt219709@students.mimuw.edu.pl Plan

Bardziej szczegółowo

Laboratorium Procesy w systemach UNIX 3.2 Polecenia związane z procesami

Laboratorium Procesy w systemach UNIX 3.2 Polecenia związane z procesami Laboratorium 3 3.1 Procesy w systemach UNIX 3.2 Polecenia związane z procesami 1 3.1 Procesy w systemach UNIX Z systemami unixowymi związane jest pojęcie procesu. W takim ujęciu, proces, rozumiany jest

Bardziej szczegółowo

1. Ustanawianie ograniczeń na użycie zasobów

1. Ustanawianie ograniczeń na użycie zasobów 1. Ustanawianie ograniczeń na użycie zasobów W każdym systemie komputerowym zasoby potrzebne do tworzenia i wykonywania procesów są ograniczone. W przypadku gdy w systemie działa wiele procesów ważną rzeczą

Bardziej szczegółowo

Programowanie w języku C++

Programowanie w języku C++ Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi

Bardziej szczegółowo

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011 Procesy Systemy Operacyjne 2 laboratorium Mateusz Hołenko 9 października 2011 Plan zajęć 1 Procesy w systemie Linux proces procesy macierzyste i potomne procesy zombie i sieroty 2 Funkcje systemowe pobieranie

Bardziej szczegółowo

!"#!"$%! %$"#%!!$! www.falownikilg.pl !"!#$ )&! &

!#!$%! %$#%!!$! www.falownikilg.pl !!#$ )&! & !"#!"$%! %$"#%!!$! &#'#%$ ()*%$"#% %& %& &&& )&! * )&! &!"!#$ &'( & &# +,,- www.falownikilg.pl 0)1$!"$$&2&$$! 34&$!"$+$"5 / #'( =( &#( & #& ( "( ('!! (& "!('( # #'( + #-1 / &* # '( #&'( #"! "!(!#= ( (

Bardziej szczegółowo

Wskaźniki. Pamięć dynamiczna

Wskaźniki. Pamięć dynamiczna Wskaźniki. Pamięć dynamiczna wer. 8 z drobnymi modyfikacjami Wojciech Myszka 2015-04-13 11:39:01 +0200 Wskaźniki Wskaźniki to podstawa C. Kto nie umie się nimi posługiwać ten nie potrafi wykorzystać siły

Bardziej szczegółowo

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

// Liczy srednie w wierszach i kolumnach tablicy dwuwymiarowej // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib. Wykład 10 Przykłady różnych funkcji (cd) - przetwarzanie tablicy tablic (tablicy "dwuwymiarowej") - sortowanie przez "selekcję" Dynamiczna alokacja pamięci 1 // Liczy srednie w wierszach i kolumnach tablicy

Bardziej szczegółowo

Informatyka. Wy-03 Dynamiczna alokacja pamięci, wyjątki. mgr inż. Krzysztof Kołodziejczyk

Informatyka. Wy-03 Dynamiczna alokacja pamięci, wyjątki. mgr inż. Krzysztof Kołodziejczyk Informatyka Wy-03 Dynamiczna alokacja pamięci, wyjątki mgr inż. Krzysztof Kołodziejczyk krzysztof.m.kolodziejczyk@pwr.edu.pl 13.03.2019 Strona kursu http://w12.pwr.wroc.pl/inf/ Konsultacje Piątek 13:00

Bardziej szczegółowo

Tablice, funkcje - wprowadzenie

Tablice, funkcje - wprowadzenie Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12 Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład

Bardziej szczegółowo

Graficzna wizualizacja pamięci

Graficzna wizualizacja pamięci Graficzna wizualizacja pamięci 1 Będziemy używać diagramów przedstawiających pamięć komputera lub konkretnego programu w postaci układu prostokątów Zachowamy konwencję, w której niskie adresy znajdują

Bardziej szczegółowo

Środowisko programisty. Środowisko programisty 1/35

Środowisko programisty. Środowisko programisty 1/35 Środowisko programisty Środowisko programisty 1/35 Środowisko programisty 2/35 Literatura 1. Butcher P., Debugowanie. Jak wyszukiwać i naprawiać błędy w kodzie oraz im zapobiegać, Helion, Gliwice 2010

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Block Change Tracking

Block Change Tracking Czym jest i czy warto stosować? OPITZ CONSULTING Kraków Przybliżenie technologii i analiza testów Jakub Szepietowski (Młodszy konsultant SE) OPITZ CONSULTING Kraków 2011 Strona 1 Agenda 1. Plik BCT 2.

Bardziej szczegółowo

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17 Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca 2019 1 / 17 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8

Bardziej szczegółowo

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VI Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Operacje na plikach Operacje na plikach Aby móc korzystać z pliku należy go otworzyć w odpowiednim

Bardziej szczegółowo

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Przykład: $ ls more Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Tworzenie łącza #include int pipe(int filedes[2]); Przykład: int

Bardziej szczegółowo

Języki i metodyka programowania. Wskaźniki i tablice.

Języki i metodyka programowania. Wskaźniki i tablice. Wskaźniki i tablice. Zmienna1 Zmienna2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Zmienna to fragment pamięci o określonym rozmiarze identyfikowany za pomocą nazwy, w którym może być przechowywana

Bardziej szczegółowo

NETBEANS PROFILER TOMASZ ŁUKASZUK

NETBEANS PROFILER TOMASZ ŁUKASZUK NETBEANS PROFILER TOMASZ ŁUKASZUK STRESZCZENIE: Dokument zawiera podstawowe informacje dotyczące programu NetBeans Profiler. Stanowi uproszczoną instrukcję jego używania. Dotyczy NetBeans Profiler w wersji

Bardziej szczegółowo

CODE::BLOCKS & VALGRIND OPRACOWAŁ MICHAŁ BETHKE

CODE::BLOCKS & VALGRIND OPRACOWAŁ MICHAŁ BETHKE CODE::BLOCKS & VALGRIND OPRACOWAŁ MICHAŁ BETHKE O CZYM PREZENTACJA? Code::Blocks Informacje wstępne Skąd ściągnąć? Jak zainstalować? (wersja linuksowa) Rzut okiem na panel główny Tworzenie naszego pierwszego

Bardziej szczegółowo

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: QNX Neutrino Interrupts Mariusz Rudnicki 2016 Wstęp W QNX Neutrino wszystkie przerwania sprzętowe przechwytywane są przez jądro systemu. Obsługę

Bardziej szczegółowo

Tablice w argumentach funkcji. Tablicy nie są przekazywane po wartości Tablicy są przekazywane przez referencje lub po wskaźniku

Tablice w argumentach funkcji. Tablicy nie są przekazywane po wartości Tablicy są przekazywane przez referencje lub po wskaźniku Tablice w argumentach funkcji Tablicy nie są przekazywane po wartości Tablicy są przekazywane przez referencje lub po wskaźniku Przykład: char str[] = abcdef ;... fun(str); // argument faktyczny to id

Bardziej szczegółowo

Informatyka. Wy-08 Klasy. mgr inż. Krzysztof Kołodziejczyk

Informatyka. Wy-08 Klasy. mgr inż. Krzysztof Kołodziejczyk Informatyka Wy-08 Klasy mgr inż. Krzysztof Kołodziejczyk krzysztof.m.kolodziejczyk@pwr.edu.pl 17.04.2019 Strona kursu http://w12.pwr.wroc.pl/inf/ Konsultacje Piątek 13:00 C2/111a Konspekt 1 Struktura a

Bardziej szczegółowo

Narzędzia wspomagające programowanie w językach C/C++ dla systemu Linux. Autor: Adam Stolcenburg

Narzędzia wspomagające programowanie w językach C/C++ dla systemu Linux. Autor: Adam Stolcenburg Narzędzia wspomagające programowanie w językach C/C++ dla systemu Linux Autor: Adam Stolcenburg Kompilatory gcc GNU Compiler Collection (dawniej GNU C Compiler) https://gcc.gnu.org/ Projekt GNU GNU GPL

Bardziej szczegółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: I KARTA PRZEDMIOTU CEL PRZEDMIOTU PRZEWODNIK PO PRZEDMIOCIE C1. Zapoznanie studentów z środowiskiem pracy wykorzystywanych w nim programach C2. Nabycie przez studentów praktycznych umiejętności

Bardziej szczegółowo

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Wprowadzenie Cel wykładów z programowania proceduralnego Wykład jest poświęcony językowi C i

Bardziej szczegółowo

Tworzenie oprogramowania

Tworzenie oprogramowania Tworzenie oprogramowania Język C Budowa programu napisanego w języku C podział na pliki z definicjami funkcji, korzystanie z bibliotek systemowych i własnych automatyzacja kompilacji za pomocą make dzielenie

Bardziej szczegółowo

Biblioteka standardowa - operacje wejścia/wyjścia

Biblioteka standardowa - operacje wejścia/wyjścia Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline

Bardziej szczegółowo

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami: Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie

Bardziej szczegółowo

RATIONAL PURIFY przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A Białystok

RATIONAL PURIFY przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A Białystok RATIONAL PURIFY przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A 15-351 Białystok STRESZCZENIE: Dokument przestawia podstawową funkcjonalność

Bardziej szczegółowo

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą

Bardziej szczegółowo

Powyższe wyrażenie alokuje 200 lub 400 w zależności od rozmiaru int w danym systemie. Wskaźnik wskazuje na adres pierwszego bajtu pamięci.

Powyższe wyrażenie alokuje 200 lub 400 w zależności od rozmiaru int w danym systemie. Wskaźnik wskazuje na adres pierwszego bajtu pamięci. 1. Tablice dynamiczne Początkowa zadeklarowana wielkość tablicy czasami może okazać niewystarczająca, lub nadmierna. Dynamiczna alokacja pamięci wykorzystywana jest w celu otrzymania bądź zwolnienia pamięci

Bardziej szczegółowo

Uzupełnienie dot. przekazywania argumentów

Uzupełnienie dot. przekazywania argumentów Uzupełnienie dot. przekazywania argumentów #include #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct nowa x); reprezentant.k=17;

Bardziej szczegółowo

Sposoby wykrywania i usuwania błędów. Tomasz Borzyszkowski

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

Bardziej szczegółowo

Sieciowa komunikacja procesów - XDR i RPC

Sieciowa komunikacja procesów - XDR i RPC *** abc.x Przyklad pliku RPCGEN Obliczanie sumy, roznicy i iloczynu dwoch liczb calkowitych *** ************************************ Wywolanie procedury odleglej dopuszcza tylko jeden argument wywolania

Bardziej szczegółowo

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: THREADS Mariusz Rudnicki 2016 1. Przygotowanie platformy i środowiska IDE. Przed uruchomieniem własnego kodu zwiększ priorytet procesu qconn

Bardziej szczegółowo

1. Tworzenie nowego projektu.

1. Tworzenie nowego projektu. Załącznik do Instrukcji 1. Tworzenie nowego projektu. Wybieramy opcję z menu głównego New->QNX C Project. Wprowadzamy nazwę przechodzimy do następnego kroku NEXT. Wybieramy platformę docelową oraz warianty

Bardziej szczegółowo

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej. Procesy Proces (zwany też zadaniem) jest jednostką aktywną, kontrolowaną przez system operacyjny i związaną z wykonywanym programem. Proces ma przydzielone zasoby typu pamięć (segment kodu, segment danych,

Bardziej szczegółowo

Optymalizacja programów Open Source. Profilery wysokiego poziomu część 2. Krzysztof Lichota

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

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

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++ 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

Bardziej szczegółowo

Język ANSI C. część 11. Jarosław Gramacki Instytut Informatyki i Elektroniki

Język ANSI C. część 11. Jarosław Gramacki Instytut Informatyki i Elektroniki Wpisy zaliczeń: 18.02.2011, godz. 12:00, sala 503 Język ANSI C część 11 tablice 2D, alokacja pamięci Jarosław Gramacki Instytut Informatyki i Elektroniki Było: Alokacja pamięci, stos i sterta Stałe, zmienne

Bardziej szczegółowo

Programowanie w asemblerze Aspekty bezpieczeństwa

Programowanie w asemblerze Aspekty bezpieczeństwa Programowanie w asemblerze Aspekty bezpieczeństwa 20 grudnia 2016 Ochrona stron pamięci Najstarsze(?) ataki: modyfikacja kodu programu. Lekarstwo: W XOR X (Write XOR execute) Oznacza to, że w atrybutach

Bardziej szczegółowo

Plan. krótkie opisy modułów. 1 Uwagi na temat wydajności CPython a. 2 Podstawowe techniki poprawiające wydajność obliczeniową

Plan. krótkie opisy modułów. 1 Uwagi na temat wydajności CPython a. 2 Podstawowe techniki poprawiające wydajność obliczeniową Plan 1 Uwagi na temat wydajności CPython a 2 Podstawowe techniki poprawiające wydajność obliczeniową 3 Podstawowe techniki poprawiające zużycie pamięci krótkie opisy modułów 1 array - jak oszczędzić na

Bardziej szczegółowo

Laboratorium 6: Dynamiczny przydział pamięci. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Laboratorium 6: Dynamiczny przydział pamięci. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski Laboratorium 6: Dynamiczny przydział pamięci dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 15 maja 2015 1. Wprowadzenie Instrukcja poświęcona jest dynamicznemu przydziałowi i zwalnianiu pamięci w

Bardziej szczegółowo

SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)

SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq) Program my_ping: wysłanie komunikatu ICMP z żądaniem echa Struktura icmp (plik netinet/ip_icmp.h) 0 7 8 15 16 31 TYP (icmp_type) KOD (icmp_code) IDENTYFIKATOR (icmp_id) SUMA KONTROLNA (icmp_cksum) NUMER

Bardziej szczegółowo

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2) Podstawy programowania (język C) Globalne / Lokalne Wykład 15. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Zmienne globalne / lokalne (1) int A, *Q; // definicja zmiennych globalnych

Bardziej szczegółowo

Arrays -II. Arrays. Outline ECE Cal Poly Pomona Electrical & Computer Engineering. Introduction

Arrays -II. Arrays. Outline ECE Cal Poly Pomona Electrical & Computer Engineering. Introduction ECE 114-9 Arrays -II Dr. Z. Aliyazicioglu Electrical & Computer Engineering Electrical & Computer Engineering 1 Outline Introduction Arrays Declaring and Allocation Arrays Examples Using Arrays Passing

Bardziej szczegółowo

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

Bardziej szczegółowo

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.

Bardziej szczegółowo

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces Procesy pojęcia podstawowe 1 1.1 Jak kod źródłowy przekształca się w proces W języku wysokiego poziomu tworzy się tak zwany kod źródłowy który po zapisaniu będzie plikiem z programem źródłowym. Plik źródłowy

Bardziej szczegółowo

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1 Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1 Wprowadzenie Procesory graficzne GPU (Graphics Processing Units) stosowane są w kartach graficznych do przetwarzania grafiki komputerowej

Bardziej szczegółowo

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego 1 /24 Pisanie pojedynczych znaków z klawiatury do pliku #include void main(void) { FILE *fptr; // wkaznik do pliku, tzw. uchwyt

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++ Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

Bardziej szczegółowo

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach Laboratorium Systemów Operacyjnych Ćwiczenie 4. Operacje na plikach Wykonanie operacji wymaga wskazania pliku, na którym operacja ma zostać wykonana. Plik w systemie LINUX identyfikowany jest przez nazwę,

Bardziej szczegółowo

Laboratorium telekomunikacji Zadanie 2

Laboratorium telekomunikacji Zadanie 2 150875 Grzegorz Graczyk numer indeksu imi i nazwisko 151021 Paweł Tarasiuk numer indeksu imi i nazwisko Data 2010-03-03 Kierunek Informatyka Rok akademicki 2009/10 Semestr 4 Grupa dziekańska 2 Laboratorium

Bardziej szczegółowo

Oracle Automatic Workload Repository (AWR) 12c

Oracle Automatic Workload Repository (AWR) 12c XVIII KONFERENCJA STOWARZYSZENIA POLSKIEJ GRUPY UŻYTKOWNIKÓW SYSTEMU ORACLE Oracle Automatic Workload Repository (AWR) 12c Marcin Przepiórowski Principal Oracle DBA Geek Blogger RAC Attack Ninja AWR -

Bardziej szczegółowo

1. Procesy i współbieżność

1. Procesy i współbieżność 1. Procesy i współbieżność Opracował: Sławomir Samolej Politechnika Rzeszowska, Katedra Informatyki i Automatyki, Rzeszów, 2013. 1.1. Wprowadzenie Proces to przestrzeń adresowa i pojedynczy wątek sterujący,

Bardziej szczegółowo

Wskaźniki. Pamięć dynamiczna

Wskaźniki. Pamięć dynamiczna Wskaźniki. Pamięć dynamiczna wer. 10 Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2019-03-27 08:28:44 +0100 Literatura I Ted Jensen. A tutorial on pointers and arrays in C, Feb. 2000. Dostępne

Bardziej szczegółowo

4.2 Sposób korzystania z l acza

4.2 Sposób korzystania z l acza 4.2 Sposób korzystania z l acza 31 Opis programu: Program procesu potomnego (linie 16 19) jest taki sam, jak w przyk ladzie na listingu 3. W procesie macierzystym nastepuje z kolei przekierowanie standardowego

Bardziej szczegółowo

Automatyczne generowanie testów z modeli. Bogdan Bereza Automatyczne generowanie testów z modeli

Automatyczne generowanie testów z modeli. Bogdan Bereza Automatyczne generowanie testów z modeli Automatyczne generowanie testów z modeli Numer: 1 (33) Rozkmina: Projektowanie testów na podstawie modeli (potem można je wykonywać ręcznie, lub automatycznie zwykle chce się automatycznie) A ja mówię

Bardziej szczegółowo

Kurs języka Python. Wykład 11. Marcin Młotkowski. 4 stycznia Kontrola poprawności podczas biegu programu. 2 Testowanie oprogramowania

Kurs języka Python. Wykład 11. Marcin Młotkowski. 4 stycznia Kontrola poprawności podczas biegu programu. 2 Testowanie oprogramowania Wykład 11. 4 stycznia 2010 1 Kontrola poprawności podczas biegu programu 2 3 4 Asercje Asercja to formuła logiczna; Asercji używa się do kontrolowania czy np. wartość zmiennej ma odpowiedni typ lub mieści

Bardziej szczegółowo

część 16 struktury rekurencyjne i ich zastosowania drzewa binarne, algorytmy rekurencyjne dla drzew binarnych

część 16 struktury rekurencyjne i ich zastosowania drzewa binarne, algorytmy rekurencyjne dla drzew binarnych Język ANSI C część 16 struktury rekurencyjne i ich zastosowania drzewa binarne, algorytmy rekurencyjne dla drzew binarnych Jarosław Gramacki Instytut Informatyki i Elektroniki rekurencja wiele czynności

Bardziej szczegółowo

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011 Obsługa plików Systemy Operacyjne 2 laboratorium Mateusz Hołenko 25 września 2011 Plan zajęć 1 Pliki w systemie Linux i-węzły deskryptory plików 2 Operacje na plikach otwieranie i zamykanie zapis i odczyt

Bardziej szczegółowo

Programowanie. Sylwester Arabas. prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny. Wydział Fizyki Uniwersytetu Warszawskiego

Programowanie. Sylwester Arabas. prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny. Wydział Fizyki Uniwersytetu Warszawskiego Programowanie Sylwester Arabas prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny Wydział Fizyki Uniwersytetu Warszawskiego wykład VIII 15. kwietnia 2015 r. na ostatnim wykładzie...

Bardziej szczegółowo

DYNAMICZNE PRZYDZIELANIE PAMIECI

DYNAMICZNE PRZYDZIELANIE PAMIECI DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne

Bardziej szczegółowo

UŻYCIE I ZARZĄDZANIE WĄTKAMI

UŻYCIE I ZARZĄDZANIE WĄTKAMI Proces jako pewna instancja programu, w trakcie wykonania, ze swej natury w każdym systemie operacyjnym wyróżniają: prawa własności zasobu a jednym z fundamentalnych zadań systemu jest ochrona przed jednoczesnym

Bardziej szczegółowo

Bardzo szybkie podsumowanie: wykład 3

Bardzo szybkie podsumowanie: wykład 3 Bardzo szybkie podsumowanie: wykład 3 wer. 7 z drobnymi modyfikacjami! Wojciech Myszka 2019-04-02 09:08:04 +0200 Uwagi 1. Obowiązuje cały materiał! 2. Tu tylko podsumowanie. Wskaźniki. Pamięć dynamiczna

Bardziej szczegółowo

Serwer ISP Monitorowanie ruchu i parametrów systemu (załącznik) Serwer ISP Monitorowanie ruchu. 1. Statystyki graficzne

Serwer ISP Monitorowanie ruchu i parametrów systemu (załącznik) Serwer ISP Monitorowanie ruchu. 1. Statystyki graficzne Serwer ISP Monitorowanie ruchu Serwer ISP Monitorowanie ruchu i parametrów systemu (załącznik) 1. Statystyki graficzne Rys.1. - Statystyki interfejsów sieciowych Rys.2 - Statystyki użytkowników transfer

Bardziej szczegółowo

Systemy Operacyjne - Operacje na plikach

Systemy Operacyjne - Operacje na plikach Systemy Operacyjne - Operacje na plikach Andrzej Stroiński Institute of Computer Science Poznań University of Technology 1 październik, 2012 Wprowadzenie do ANSI-C Pomoc systemowa man gcc man 2 write man

Bardziej szczegółowo

DIGA Object Dictionary opis

DIGA Object Dictionary opis MANUAL DIGA Object Dictionary opis UWAGA! Dokument: DIGA_Object_Dictionery_Manual_v1_01.odt Publikowany jako: DIGA_Object_Dictionery_Manual_v1_01.pdf Data utworzenia: 27/09/2013 Napisany prze: Jacek Barcik

Bardziej szczegółowo

UŻYCIE I ZARZĄDZANIE WĄTKAMI

UŻYCIE I ZARZĄDZANIE WĄTKAMI Proces jako pewna instancja programu, w trakcie wykonania, ze swej natury w każdym systemie operacyjnym wyróżniają: prawa własności zasobu a jednym z fundamentalnych zadań systemu jest ochrona przed jednoczesnym

Bardziej szczegółowo

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 11

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 11 Wykład 11 p. 1/5 Oprogramowanie i wykorzystanie stacji roboczych Wykład 11 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Wykład 11 p. 2/5

Bardziej szczegółowo

Wykład 3: Implementacja programów wbudowanych

Wykład 3: Implementacja programów wbudowanych Systemy wbudowane Wykład 3: Implementacja programów wbudowanych Problemy implementacji oprogramowania wbudowanego Szeregowanie zadań System operacyjny Obsługa przerwań 10/16/2010 S.Deniziak:Systemy wbudowane

Bardziej szczegółowo

Wskaźniki. Informatyka

Wskaźniki. Informatyka Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą

Bardziej szczegółowo

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania

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

Bardziej szczegółowo

Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ

Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ Jeszcze o funkcjach i strukturze projektu Zak lad Chemii Teoretycznej UJ 3 grudnia 2008 1 2 3 4 5 typedef Plan typedef specyfikator typu nazwa S luży do stworzenia nowej nazwy dla jakiegoś typu. Nazwa

Bardziej szczegółowo

Kto mówi? Inżynier systemów wbudowanych Linux, ARMv7, ARMv8

Kto mówi? Inżynier systemów wbudowanych Linux, ARMv7, ARMv8 Kto mówi? Inżynier systemów wbudowanych Linux, ARMv7, ARMv8 Kto mówi? Inżynier systemów wbudowanych Linux, ARMv7, ARMv8...które mają 16GB RAM Kto mówi? Inżynier systemów wbudowanych Linux, ARMv7, ARMv8...które

Bardziej szczegółowo

Shared memory and messages. Functions. process 0. process 1. program 0. program 0. data 0. data 1. program 1. data 0. data 1.

Shared memory and messages. Functions. process 0. process 1. program 0. program 0. data 0. data 1. program 1. data 0. data 1. Shared memory and messages Shared memory vs message passing Shared memory - C functions Shared memory - example program Message queues - C functions Message queues - example program process 0 process 1

Bardziej szczegółowo

Programowanie Procedurale

Programowanie Procedurale Programowanie Procedurale Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Bożena Woźna-Szcześniak (AJD) Programowanie Procedurale Wykład 6 1 / 27 Zbiór ctime zawiera deklarcję

Bardziej szczegółowo

Tablice, funkcje, wskaźniki - wprowadzenie

Tablice, funkcje, wskaźniki - wprowadzenie Tablice, funkcje, wskaźniki - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 4 19 listopada 2018 (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada 2018 1 / 37 Outline 1 Tablice

Bardziej szczegółowo

Laboratorium Programowania Kart Elektronicznych

Laboratorium Programowania Kart Elektronicznych Laboratorium Programowania Kart Elektronicznych Programowanie BasicCard Marek Gosławski Przygotowanie do zajęć dokumentacja ZeitControl BasicCard środowisko programistyczne karta BasicCard Potrzebne wiadomości

Bardziej szczegółowo

C++ język nie dla ludzi o słabych nerwach. Małgorzata Bieńkowska

C++ język nie dla ludzi o słabych nerwach. Małgorzata Bieńkowska C++ język nie dla ludzi o słabych nerwach Małgorzata Bieńkowska malgorzata.bienkowska@gmail.com 9LivesData HYDRAStor Dla NEC Japan od ponad 10 lat 1,5 miliona linii kodu większość rozwijana w Warszawie

Bardziej szczegółowo

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4 Wykład 4 p. 1/1 Oprogramowanie i wykorzystanie stacji roboczych Wykład 4 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Obsługa sieci Wykład

Bardziej szczegółowo

Obsługa błędów w SQL i transakcje. Obsługa błędów w SQL

Obsługa błędów w SQL i transakcje. Obsługa błędów w SQL Obsługa błędów w SQL i transakcje Zacznijmy od najprostszego przykładu: CREATE PROCEDURE podziel1 Obsługa błędów w SQL Powyższa procedura w większości przypadków zadziała prawidłowo, lecz na przykład poniższe

Bardziej szczegółowo

Systemy Operacyjne. Ćwiczenia

Systemy Operacyjne. Ćwiczenia Systemy Operacyjne Ćwiczenia Sprawy organizacyjne Kontakt: Artur.Basiura@agh.edu.pl Konsultacje po uzgodnieniu mailowym terminu Prośba o kontakt mailowy do jednej osoby z grupy (zmiany w terminach zajęć)

Bardziej szczegółowo

Automatyczne testowanie 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

Bardziej szczegółowo

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) III RPC Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) 1. Koncepcja Aplikacja wywołanie procedury parametry wyniki wykonanie procedury wynik komputer klienta komputer serwera Zaletą takiego

Bardziej szczegółowo

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2 ( $%%) )'20 )*0) 1 / ) Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,

Bardziej szczegółowo

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Przemysłowe układy sterowania PID Układy regulacji PID w strukturze sprzętowej Pytania i zadania do zajęć

Bardziej szczegółowo