Wprowadzenie do systemu operacyjnego Linux zarzdzanie procesami, cz. 2



Podobne dokumenty
POZNA SUPERCOMPUTING AND NETWORKING CENTER. Wprowadzenie do systemu operacyjnego Linux zarzdzanie procesami

Sygnały. 7. Sygnały (2005/2006)

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Programowanie Współbieżne. W Linuxie/Unixie

Obsługa sygnałów. Tomasz Borzyszkowski

przerwany proces móg l zareagować na określone zdarzenie. Można je traktować jako software owe wersje przerwań sprz etowych.

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

Systemy Operacyjne 1 Laboratorium 2 Procesy i sygnały w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot

Linux: Procesy. Systemy Operacyjne. Mateusz Hołenko. 26 marca 2013

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

POZNA SUPERCOMPUTING AND NETWORKING. Wprowadzenie do systemu operacyjnego Linux uytkowanie cz. 1

Zadania do wykonaj przed przyst!pieniem do pracy:

Zarządzanie procesami

Procesy, pliki, potoki, sygnały - uzupełnienie

obsług dowolnego typu formularzy (np. formularzy ankietowych), pobieranie wzorców formularzy z serwera centralnego,

Instrukcja obsługi programu Pilot PS 5rc

Sygnał mechanizm asynchronicznego powiadamiania procesów o zdarzeniach zwykle awaryjnych.

Proces tworzenia programu:

Instrukcja obsługi dodatku InsERT GT Smart Documents

Temat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation).

EC4P Pierwszy program w 6 krokach

Działanie systemu operacyjnego

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

Sposoby przekazywania parametrów w metodach.

SUPLEMENT SM-BOSS WERSJA 6.15

4.2 Sposób korzystania z l acza

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

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

... Ireneusz Mrozek. Wydział Informatyki

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

FAKTURA PRZEDPŁATA PODRCZNIK UYTKOWNIKA

UNIX. mgr inż. Marcin Borkowski

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Twoja instrukcja użytkownika HP PAVILION DV6-1215SA

Działanie systemu operacyjnego

Działanie systemu operacyjnego

Mechanizmy pracy równoległej. Jarosław Kuchta

procesy odrębne dzielone

Komputerowa Ksiga Podatkowa Wersja 11.4 ZAKOCZENIE ROKU

Systemy operacyjne laboratorium 3 Paweł Gmys strona 1

Wskaźniki w C. Anna Gogolińska

zdefiniowanie kilku grup dyskusyjnych, z których chcemy odbiera informacje, dodawanie, usuwanie lub edycj wczeniej zdefiniowanych grup dyskusyjnych,

Wykład 5 Przerwania i wywołania systemowe. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB

Wstęp do programowania

FUNKCJE UYTKOWNIKA. Rozbrajanie systemu pod przymusem [Kod przymusu] Blokowanie linii

1. Wprowadzenie do C/C++

Programowanie komputerowe. Zajęcia 1

Unix: programowanie procesów

Poradnik korzystania z serwisu UNET: Dostp do poczty elektronicznej ze strony WWW

Kolejki FIFO (łącza nazwane)

Działanie systemu operacyjnego

LABORATORIUM INFORMATYKI 0

Tworzenie bazy danych Biblioteka tworzenie tabel i powiza, manipulowanie danymi. Zadania do wykonani przed przystpieniem do pracy:

POZNA SUPERCOMPUTING AND NETWORKING. Wprowadzenie do systemu operacyjnego Linux programowanie powłoki

Sygnały i ich obsługa

Systemy Operacyjne I: Procesy

1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!!

SUPLEMENT SM-BOSS WERSJA 6.15

1. Wprowadzenie do C/C++

Delphi Laboratorium 3

Program SMS4 Monitor

Klonowanie MAC adresu oraz TTL

Program Sprzeda wersja 2011 Korekty rabatowe

Wprowadzanie i zmiany faktur z zakupu, wydruk rejestru zakupu

Co nie powinno być umieszczane w plikach nagłówkowych:

MODUŁ PAMICI VIDEO. Nr Ref. 1082/88

POSIX: IEEE Std (Issue 6, 2004 edition)

PROGRAMOWANIE STEROWNIKA FANUK (A 17)

Podstawy administracji systemu Linux

Laboratorium systemów operacyjnych ćwiczenie nr 3. [ilość modułów: 1] Temat zajęć: Procesy w systemie operacyjnym

Przycisk pracy. Przycisk stopu/kasowanie

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Twoja instrukcja użytkownika HP PAVILION DV3520EA

Przed instalacj naley sprawdzi wersj posiadanych sterowników urzdzenia. Powinna by nie starsza ni:

Argumenty wywołania programu, operacje na plikach

Łącza nienazwane(potoki)

scanf( %s,tekst); //znaki podane z klawiatury (do pierwszego białego znaku ) //s kopiowane do zmiennej tekst i dostawiany jest znak \0

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Instrukcja obsługi elektronicznego modułu reklamacyjnego aplikacji KAMSOFT wdrożenie rozwiązań w hurtowniach farmaceutycznych Grupy Neuca

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

Pobieranie argumentów wiersza polecenia

Język C zajęcia nr 11. Funkcje

Systemy operacyjne i sieci komputerowe. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Etapy uruchamiania systemu

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Operacje wejścia/wyjścia odsłona pierwsza

Temat zajęć: Obsługa procesów w systemie.

Programowanie w języku Python. Grażyna Koba

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Zastosowanie programu Microsoft Excel do analizy wyników nauczania

Podstawy Programowania C++

Diagnostyka pamięci RAM

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

Procesy. w systemach operacyjnych (quasi)równoleg le wykonywanie wielu być wykonywane naprzemiennie i/lub jednocześnie.

Laboratorium z systemów operacyjnych. System plików - funkcje systemowe. Anna Wojak

Pliki. Informacje ogólne. Obsługa plików w języku C

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

Poradnik korzystania z serwisu UNET: Konfiguracja programu pocztowego

Wstęp do Programowania, laboratorium 02

System operacyjny Linux

Instrukcja do ćwiczeń

Transkrypt:

Wprowadzenie do systemu operacyjnego Linux zarzdzanie procesami, cz. 2 PCSS

plan funkcje i struktura jdra funkcje systemowe, pułapki i przerwania zarzdzanie procesami: charakterystyka ogólna tworzenie, usuwanie i zawieszanie procesu polecenia dotyczce procesów sygnały i ich wykorzystywanie 2

plan zarzdzanie pamici operacyjn zarzdzanie urzdzeniami wejcia/wyjcia zarzdzanie plikami uwagi kocowe bibliografia 3

sygnały sygnał jest odpowiedzi jdra systemu na wyjtkowy stan, jaki wystpił podczas wykonywania programu przez uytkownika stanem tym moe by nacinicie klawisza Del, albo wykrycie przez system nielegalnej operacji 4

sygnały sygnał przerywa normalne wykonywanie programu i rozpoczyna akcj jego zakoczenia albo wywietla komunikat o błdzie 5

akcje domylne dopuszczalne s nastpujce akcje domylne, po wystpieniu sygnału: zakocz proces (Term) ignoruj sygnał (Ign) utwórz obraz pamici (Core) zawie proces (Stop) kontynuuj proces (Cont) 6

stany procesu [KS1993] IDLE przydziel zasoby RUN wyjd ZOMBIE upij zawie SLEEP obud odwie STOP 7

struktura jdra [KS1993] proces uytkownika funkcja systemowa pułapka czobsł. zastosowania czobsł. przerwania sprzt przerwania 8

funkcje systemowe w czasie wykonywania funkcji systemowej mog wystpi dwa zdarzenia: do procesu moe by przesłany sygnał, albo inny proces moe osign wyszy priorytet 9

funkcje systemowe jeeli do procesu zostanie przesłany sygnał, to moe on spowodowa zaniechanie wykonywania funkcji systemowej inna moliwo, to zawieszenie sygnału do czasu zakoczenia funkcji 10

pułapki pułapki mog wystpi z powodu błdu w programach (dzielenie przez zero), albo błdów systemowych proces jest informowany o problemie albo za pomoc sygnału, albo przez sam fakt zakoczenia 11

sygnały w systemie Linux przedstawimy obecnie sygnały, wystpujce w systemie Linux naley pamita, e w poprzednich systemach uniksowych (POSIX, ANSI, 4.2 BSD, System V, Sun) zestawy sygnałów si róniły 12

sygnały w systemie Linux nazwa warto opis akcja domylna SIGHUP 1 linia terminalu zawieszona SIGINT 2 przerwanie programu SIGQUIT 3 wyjcie z programu SIGILL 4 nielegalna instrukcja SIGTRAP 5 nakaz ledzenia procesu zakocz proces zakocz proces utwórz obraz pamici utwórz obraz pamici utwórz obraz pamici 13

sygnały w systemie Linux nazwa warto opis akcja domylna SIGIOT 6 wystpienie pułapki przy wykonaniu operacji we/wy utwórz obraz pamici SIGBUS 7 błd magistrali utwórz obraz pamici SIGFPE 8 błd przy operacji zmiennoprzecinko wej utwórz obraz pamici SIGKILL 9 zabicie procesu zakocz proces SIGUSR1 10 sygnał zdefiniowany przez uytkownika 1 zakocz proces 14

sygnały w systemie Linux nazwa warto opis akcja domylna SIGSEGV 11 naruszenie segmentacji SIGUSR2 12 sygnał zdefiniowany przez uytkownika 2 utwórz obraz pamici zakocz proces SIGPIPE 13 uszkodzony potok zakocz proces SIGALRM 14 upłynł czas zegara czasu rzeczywistego SIGTERM 15 programowy sygnał zakoczenia zakocz proces zakocz proces 15

sygnały w systemie Linux nazwa warto opis akcja domylna SIGSTKFLT 16 błd stosu koprocesora SIGCHLD 17 powiadomienie przodka o zawieszeniu/ usuniciu potomka SIGCONT 18 zatrzymany proces jest kontynuowany SIGSTOP 19 sygnał zatrzymania spoza terminalu SIGTSTP 20 Sygnał zatrzymania z terminalu zakocz proces odrzu sygnał odrzu sygnał/ kontynuuj proces zawie proces zawie proces 16

sygnały w systemie Linux nazwa warto opis akcja domylna SIGTTIN 21 czytanie z terminalu przez proces drugoplanowy SIGTTOU 22 pisanie na terminalu przez proces drugoplanowy SIGURG 23 pilny warunek w kanale we/wy SIGXCPU 24 przekroczony limit czasu procesora SIGXFSZ 25 przekroczony limit rozmiaru pliku zawie proces zawie proces odrzu sygnał utwórz obraz pamici utwórz obraz pamici 17

sygnały w systemie Linux nazwa warto opis akcja domylna SIGVTALRM 26 upłynł czas zegara czasu wirtualnego SIGPROF 27 upłynł czas zegara profilowania SIGWINCH 28 zmiana rozmiaru okna SIGIO 29 we/wy ponownie moliwe zakocz proces zakocz proces ignoruj sygnał zakocz proces SIGPWR 30 błd zasilania zakocz proces 18

sposób obsługi sygnału z kadym sygnałem zwizana jest akcja, podajca sposób jego obsługi program uytkownika moe w róny sposób reagowa na sygnały, wykorzystujc w tym celu funkcj systemowsignal, albo ostatnio funkcj systemow sigaction 19

sposób obsługi sygnału reakcje programu mog by nastpujce: podjcie akcji domylnej ignorowanie sygnału podjcie akcji własnej 20

akcja domylna akcje najczciej wykonywane to utworzenie obrazu pamici i zakoczenie procesu utworzenie obrazu pamici oznacza zakoczenie procesu z zachowaniem jego stanu, w chwili gdy sygnał został dostarczony stan ten mona potem przeanalizowa debugerem 21

akcja własna akcj własn definiuje uytkownik w programie obsługi sygnału program obsługi sygnału wywoływany jest przez system po odbiorze sygnału przez proces mówimy wtedy, e program obsługi przechwycił lub złapał sygnał 22

akcja własna sygnały, które nie mog by ani zignorowane ani złapane, to SIGSTOP i SIGKILL wykorzystujc te sygnały, mona utworzy mechanizm programowy zabijania procesów 23

implementacja sygnału jest podzielona na dwa etapy: zgłoszenie sygnału do procesu wykonanie sygnału 24

zgłoszenie sygnału do procesu obejmuje: okrelenie akcji, jak proces podejmie dołczenie sygnału do kolejki zawieszonych sygnałów zwizanych z procesem sprawdzenie, czy sygnał jest maskowany 25

implementacja sygnału jeeli sygnał nie jest maskowany, a akcja z nim zwizana jest akcj domyln, obejmujc zakoczenie procesu, zawieszenie procesu albo odrzucenie sygnału, to akcja ta bdzie wykonana 26

wykonanie sygnału obejmuje: pobranie pierwszego z zawieszonych sygnałów wywołanie modułu obsługi sygnału w celu wykonania przez proces akcji własnej zwizanej z sygnałem albo wywołanie procedury utworzenia pliku core, gdy z sygnałem jest zwizana akcja domylna 27

maskowanie sygnałów dostarczanie sygnałów moe by maskowane przez proces stan wykonania kadego procesu zawiera zbiór sygnałów aktualnie maskowanych przy ich dostarczaniu 28

maskowanie sygnałów jeeli sygnał zgłoszony do procesu jest maskowany, to zostaje on zapisany w zbiorze zawieszonych sygnałów procesu i adna akcja nie jest podejmowana, dopóki maskowanie sygnału nie zostanie usunite 29

maskowanie sygnałów zbiór sygnałów maskowanych dla danego procesu jest modyfikowany przez funkcje systemowe sigblock, sigsetmask i sigprocmask system nie pozwala na maskowanie sygnałów SIGKILL, SIGSTOP i SIGCONT 30

maskowanie sygnałów ochrona SIGCONT przed maskowaniem jest konieczna, poniewa od jego dostarczenia uzalenione jest podjcie pracy przez zatrzymane procesy 31

funkcja systemowa signal program uytkownika definiuje akcj, która ma by podjta w przypadku odbioru sygnału za pomoc funkcji systemowej signal aby uy funkcji signal, naley wpierw umieci na pocztku programu w jzyku C nastpujcy wiersz: include <signal.h> 32

funkcja systemowa signal zbiór signal.h definiuje róne literały (stałe literowe), uywane jako argumenty przez funkcj systemow signal wywołanie funkcji signal ma posta: signal(sigtype, ptr) gdzie sigtype okrela sygnał, a ptr jest wskanikiem funkcji definiujcej akcj albo literałem podajcym wczeniej zdefiniowan akcj 33

funkcja systemowa signal wskanik ptr moe by literałem: SIG_IGN brak akcji SIG_DFL akcja domylna podana funkcja zmienia akcj sygnału przerwania na brak akcji: signal(sigint, SIG_IGN) sygnał nie bdzie miał wpływu na program 34

funkcja systemowa signal funkcja signal zawsze zwraca warto wskanika, który definiuje poprzedni akcj sygnału warto ta moe by zastosowana w kolejnych wywołaniach do przywrócenia sygnałowi jego poprzedniej akcji podamy teraz przykłady zastosowania sygnałów 35

przerwanie obu procesów #include <stdio.h> /*dolaczenie opisu funkcji */ /* wejscia/wyjscia z pliku naglowkowego */ main() /* signal1.c, uzycie sygnalu */ { int i,j /* deklaracja licznikow */ if(fork() == 0) /* proces potomny */ for(i = 1; i <= 1000; ++i) /*wyswietla 1000 razy */ printf( proces potomny\n ); /* napis */ else /* proces macierzysty */ for(j = 1; j <= 1000; ++j) /*wyswietla 1000 razy */ printf( proces macierzysty\n ); /* napis */ } 36

przerwanie obu procesów w wyniku uruchomienia programu i nacinicia klawisza Del na ekranie otrzymamy: proces potomny... proces potomny proces macierzysty proces macierzysty proces macie $ nacinicie Del przerywa oba procesy 37

zakaz sygnału zakaz (blokad) sygnału, czyli ochron przed sygnałem, uzyskuje si za pomoc funkcji signal ze stałsig_ign wywołanie funkcji ma posta: signal(sigtype, SIG_IGN) gdzie sigtype jest literałem sygnału, który ma by zakazany 38

zakaz sygnału nastpujca funkcja systemowa blokuje sygnał przerwania: signal(sigint, SIG_IGN) funkcj t mona stosowa aby uchroni program wykonywany w tle, na przykład proces potomny, przed zakoczeniem go przez sygnał 39

blokada sygnału przerwania dla procesu potomnego #include <stdio.h> #include <signal.h> /* plik naglowkowy dla f.signal */ main()/* signal3.c, Del przerywa proces macierzysty*/ { int i,j /* deklaracja licznikow */ if(fork() == 0) { /* proces potomny */ signal(sigint, SIG_IGN); /* blokada sygnalu */ /* przerwania */ for(i = 1; i <= 100; ++i) /*wyswietla 100 razy */ printf( proces potomny %d\n,i); /* napis */ 40

blokada sygnału przerwania dla procesu potomnego } else /* proces macierzysty */ for(j = 1; j <= 200; ++j) /*wyswietla 200 razy */ printf( proces macierzysty %d\n,j); /* napis */ 41

blokada sygnału przerwania dla procesu potomnego wykonanie tego programu i wcinicie Del podczas wywietlania wyników na ekranie powoduje, e otrzymujemy: proces macierzysty 190 proces macierzysty 191 prproces potomny 86 proces potomny 87... proces potomny 99 proces potomny 100 $ 42

blokada sygnału przerwania dla procesu potomnego widoczne jest, e przerwanie programu klawiszem Del ma tylko wpływ na proces macierzysty, proces potomny jest wykonywany bez przeszkód 43

przywrócenie sygnałowi akcji domylnej realizowane jest za pomoc funkcji: signal(sigtype, SIG_DFL) sigtype jest literałem definiujcym sygnał, który chcemy przywróci funkcj t mona stosowa do przywrócenia sygnału po tym, jak został on czasowo zakazany, aby nie przerywał operacji w sekcji krytycznej 44

przywrócenie sygnałowi akcji domylnej w przykładzie tym sygnał przerwania jest ignorowany w czasie wczytywania BUF bajtów z tablicy rekord do pliku podanego w fp po wykonaniu programu w pliku plik pojawi si napis Test, operacja ta nie jest przerywana 45

przywrócenie sygnałowi akcji #include <stdio.h> #include <signal.h> domylnej #define BUF 5 /* BUF liczba przeczytanych znakow */ main() /* signal5.c, przywrocenie sygnalowi */ /* akcji domyslnej */ { FILE *fp; /* deklaracja deskryptora pliku */ char *rekord; /* wskaznik do tekstu */ rekord = Test ; /* przypisanie zmiennej rekord */ /* wskazania na tekst */ /* poczatek sekcji krytycznej */ 46

przywrócenie sygnałowi akcji domylnej signal(sigint, SIG_IGN); /* blokada sygnalu */ /* przerwania */ fp = fopen( /staff/sajkowsk/plik, w ); /* utworzenie pliku z prawem pisania do niego */ fwrite(rekord, 1, BUF, fp); /* zapis BUF bajtow */ /* z tablicy rekord do pliku podanego w fp */ signal(sigint, SIG_DFL); /* przywrocenie sygnalowi */ /* akcji domyslnej */ /* koniec sekcji krytycznej */ fclose(fp); /* zamkniecie otartego pliku */ } 47

przechwycenie sygnału i okrelenie akcji własnej jest wykonywane za pomoc funkcji systemowej: signal(sigtype, newptr) gdzie sigtype jest literałem przechwytywanego sygnału, a newptr wskanikiem funkcji definiujcej now akcj 48

przechwycenie sygnału i okrelenie akcji własnej program moe zredefiniowa akcj sygnału w dowolnym czasie std wiele programów definiuje róne akcje dla rónych warunków akcja sygnału przerwania moe zalee od wartoci zwracanej przez zdefiniowan funkcj pokazuje to kolejny przykład 49

przechwycenie sygnału i okrelenie akcji własnej #include <stdio.h> #include <signal.h> main() /*signal7.c, zlapanie sygnalu */ { int przechwyc(), i = 100; /* deklaracja wartosci */ /* funkcji */ /* deklaracja zmiennej i ustalenie jej */ /* wartosci poczatkowej */ printf( nacisnij klawisz przerwania by zatrzymac\n ); /* wyswietlenie napisu */ signal(sigint, przechwyc); /* wywolanie funkcji */ /* definiujacej nowa akcje */ 50

przechwycenie sygnału i okrelenie akcji własnej while(i > 0) /* dopoki spelniony warunek */ { printf( program si wykonuje %d\n, i); i--; /* wyswietlaj napis */ } /* zmniejsz o jeden */ } przechwyc() /* funkcja definiuje nowa akcje podjeta */ { /* po wystapieniu sygnalu */ printf( program si zakonczyl\n ); /* napis */ exit(1); /* zakonczenie procesu */ } 51

przechwycenie sygnału i okrelenie akcji własnej po wykonaniu prgramu i naciniciu klawisza Del, otrzymujemy: nacisnij klawisz przerwania aby si zatrzymac program si wykonuje 100 program si wykonuje 91 program si wykonprogram si zakonczyl przerwanie programu prowadzi do podjcia akcji własnej, napisu program si zakonczyl, i wtedy proces si koczy 52

przywrócenie sygnałowi poprzedniej akcji warto zwracana przez funkcj signal moe by zachowana, a nastpnie wykorzystana w kolejnym jej wywołaniu, w celu przywrócenia sygnałowi jego poprzedniej akcji 53

przywrócenie sygnałowi poprzedniej akcji wywołanie funkcji ma wtedy posta: signal(sigtype, oldptr) gdzie sigtype jest literałem okrelajcym, który sygnał ma by przywrócony, a oldptr wartoci wskanika, zwracan przez poprzednie wykonanie funkcji signal 54

opónienie akcji sygnału jest realizowane przez przechwycenie sygnału i okrelenie dla niego nowej akcji, polegajcej na ustawieniu globalnie zdefiniowanej flagi program kontynuuje swoje działania a do momentu testowania flagi, test ten polega na sprawdzeniu, czy sygnał został odebrany jeeli tak, to jest on obsługiwany 55

opónienie akcji sygnału przed obsług opónionego sygnału naley zablokowa sygnał przerwania, aby ochroni flag przed zmian w czasie jej testowania bezporednio po wykonaniu nowej akcji dla sygnału system automatycznie ustawia sygnał na jego akcj domyln dlatego naley pamita o ponownym definiowaniu sygnału po kadym przerwaniu 56

opónienie akcji sygnału #include <stdio.h> #include <signal.h> int sigflag /* deklaracja zmiennej calkowitej */ main() /*signal10.c, opoznienie akcji sygnalu */ { int delay(), i; /* deklaracje wartosci funkcji */ int (*savesig)() /* i zmiennych */ extern int sigflag; printf( flaga = %x\n, sigflag); /* napis */ signal(sigint, delay); /* opoznij sygnal */ printf( flaga sygnalu po opoznieniu = %x\n, sigflag); 57

opónienie akcji sygnału for(i = 1; i <= 200; ++i) /* wyswietlenie napisu */ /* 200 razy */ printf( program wykonuje nieprzerywalna akcje\n ); savesig = signal(sigint, SIG_IGN); /* zakaz sygnalu */ printf( flaga sygnalu po zakazie = %x\n, sigflag); /* wyswietlenie napisu */ if (sigflag) /* jeeli warunek spelniony */ /* to wyswietlenie napisu */ printf( flaga sygnalu = %x\n, signal); /* obsluga opoznionego sygnalu */ } 58

opónienie akcji sygnału delay() /* nowa akcja podjeta przez sygnal */ { extern int sigflag; /* zmienna zewnetrzna */ sigflag = 1; /* ustawienie flagi */ } 59

opónienie akcji sygnału gdy nie ingerujemy w działanie programu, mamy wynik: flaga = 0 flaga sygnalu po opoznieniu = 0 program wykonuje nieprzerywalna akcje flaga sygnalu po zakazie = 0 60

opónienie akcji sygnału gdy naciniemy klawisz przerwania Del, mamy wynik: flaga = 0 program wykonuje nieprzerywalna akcje program wykprogram wykonuje nieprzerywalna akcje program wykonuje nieprzerywalna akcje flaga sygnalu po zakazie = 1 flaga sygnalu = 1 61

opónienie akcji sygnału gdy dwukrotnie naciniemy klawisz przerwania Del, mamy wynik: flaga sygnalu = 0 flaga sygnalu po opoznieniu = 0 program wykonuje nieprzerywalna akcje program wykprogram wykonuje nieprzerywalna akcje program wykonuje nieprzerywalna akcje program wykonuje nieprzerywalna akcje 62

opónienie akcji sygnału zauwamy, e: w przypadku jednokrotnego nacinicia klawisza Del program wykonuje z opónieniem obsług sygnału SIGINT, co wskazuje napis flaga sygnalu = 1 przy dwukrotnym naciniciu klawisza Del nastpuje akcja domylna dla sygnału SIGINT i program jest przerywany 63

opónienie akcji sygnału zauwamy dalej, e: gdy nie ingerujemy w wykonanie programu, pojawia si napis flaga sygnalu po zakazie = 0, wiadczca o tym fakcie 64

wnioski przestawiono drug cz zarzdzania procesami, powicon sygnałom i ich wykorzystaniu zagadnienia dotyczce zarzdzania pamici operacyjn, urzdzeniami wejcia/wyjcia i plikami bd przedmiotem kolejnego szkolenia 65

bibliografia [KS1993] Z. Królikowski, M. Sajkowski, System operacyjny UNIX dla pocztkujcych i zaawansowanych, Nakom, Pozna 1993. [Sobaniec2002] C. Sobaniec, System operacyjny Linux przewodnik uytkownika, Nakom, Pozna 2002. 66