Sygnały8, [W4] AIR SEMESTR VIII+II (MGR), KOMP. SYSTEMY STEROWANIA
[ Pobierz całość w formacie PDF ]
//-->J. UłasiewiczProgramowanie aplikacji współbieżnych1Sygnały i ich obsługaSygnałyPDF created with pdfFactory trial versionwww.pdffactory.comJ. UłasiewiczProgramowanie aplikacji współbieżnych21 INFORMACJE WSTĘPNESygnał– mechanizm asynchronicznego powiadamiania procesówo zdarzeniach – zwykle awaryjnych.Metoda powiadamiania procesów za pomocą sygnałów wywodzisię z systemu UNIX.Sygnały mogą być generowane przez:1. System operacyjny, zwykle po wykonaniu nieprawidłowejoperacji.2. Z konsoli operatorskiej poprzez polecenia kill i slay.3. Z programu aplikacyjnego poprzez funkcje (np. kill, raise,abort, alarm, i inne) oraz timery.Proces może zareagować na sygnały w sposób następujący:1. Obsłużyć sygnał czyli wykonać funkcję dostarczoną poprzezprogramistę.2. Zignorować sygnał – nie każdy sygnał daje się zignorować.3. Zablokować sygnał to znaczy odłożyć jego obsługę napóźniej.4. Zakończyć się po otrzymaniu sygnału.Reakcja procesu na sygnał w zależności od stanu w jakimznajduje się proces.1. Gdy proces jest wykonywany lub gotowy to następujeprzerwanie sekwencji wykonania i skok do procedury obsługisygnału.2. Gdy proces jest zablokowany to następuje jegoodblokowanie i wykonanie procedury obsługi tego sygnału.SygnałyPDF created with pdfFactory trial versionwww.pdffactory.comJ. UłasiewiczProgramowanie aplikacji współbieżnych3SYGNAŁSYGNAŁGotowyObslugaProces gotowyZablokowanyObslugaGotowyProces zablokowanyRysunek 0-1 Obsługa sygnału dla przypadków gdy proces jestgotowy i zablokowany2 STANDARDY OBSŁUGI SYGNAŁÓWSygnały były już implementowane w pierwszych wersjach UNIX’a.Od tego czasu standard ewoluuje. Omawiane standardy:1. Standardowa system UNIX2. POSIX 1003.13. System QNX6 NeutrinoStandardowa, pochodząca z systemu Unix, specyfikacja sygnałówzakładaże:•Sygnały nie niosą oprócz swego numerużadnejwartości,•Nie są kolejkowane,•Nie uwzględniają istnienia wątków•Mogą być przesyłane tylko w obrębie lokalnego węzła sieci.•Nie posiadają priorytetów•Nie są przenoszone poprzez siećSygnały POSIX 1003.1b posiadają dodatkowe rozszerzenia:•są kolejkowane•oprócz numeru niosą dane: 8 bitowy kod i 32 bitową wartość•uwzględniają istnienie wątków•posiadają priorytetySygnałyPDF created with pdfFactory trial versionwww.pdffactory.comJ. UłasiewiczProgramowanie aplikacji współbieżnych4WysyłaniesygnałuInstalacjahandlerasigprocmask()Maskowaniesigblock(),sygnałusigunblock(),sigsetmask()Oczekiwaniepause(),sigsuspend(),na sygnałsigpause()sigwait(),sigtimedwait()Ustawieniealarm(),alarm(),alarmuualarm()ualarm()Unixkill(),raise()signal()POSIXNeutrinoSignalKill()sigqueue(),pthread_kill()sigaction()SignalAction()SignalProcmask()SignalSuspend(),SignalWaitinfo()TimerAlarm()Tabela 0-1 Ważniejsze funkcje obsługi sygnałówZakresy numerów poszczególnych grup sygnałów:Zakressygnałów1 ... 4041 ... 5657 ... 64OpisSygnały zdefiniowane w specyfikacji POSIX 1003 (takżestandardowe sygnały systemu Unix)16 sygnałów zdefiniowanych w rozszerzeniu specyfikacjiPOSIX dla systemów czasu rzeczywistego8 sygnałów specjalnych systemu QNX6 NeutrinoTabela 0-2 Zakresy sygnałów•Sygnały Neutrino oprócz numeru, niosą dodatkowe dane: 8bitowy kod i 32 bitową wartość. Uwzględniają istnieniewątków.•Dostarczanie sygnałów do procesów odbywa się zgodnie zpriorytetami sygnałów. Sygnał a niższym numerze ma wyższypriorytet.Uwaga!Zaimplementowane w systemie QNX6 Neutrino sygnały mogą byćdodatkowo przesyłane przez sieć.SygnałyPDF created with pdfFactory trial versionwww.pdffactory.comJ. UłasiewiczProgramowanie aplikacji współbieżnych53 OPIS NIEKTÓRYCH SYGNAŁÓWSygnałSIGABRTOpis sygnałuSygnał przerwania procesu (ang.Abort).Sygnał może byćwygenerowany poprzez wykonanie funkcji abort w procesiebieżącym. Powodujeżeproces przed zakończeniem zapisuje nadysku swój obraz (ang.core dumpSygnał alarmu(ang. Alarm)wskazującyżeupłynął zadany czas.Generacja może być spowodowana poprzez wykonanie funkcji alarmlub czasomierze (ang.Timers).Sygnał wysyłany przez system operacyjny gdy ten stwierdzi błądmagistrali (ang.Bus error).Przesyłany do procesu macierzystego gdy proces potomny (ang.Child)kończy się.Powodujeżeproces który otrzymał ten sygnał ulega zablokowaniudo czasu gdy nie otrzyma sygnału SIGCONTPowoduje wznowienie procesu zawieszonego sygnałem SIGCONTGenerowany przez system gdy nastąpił błąd operacjizmiennoprzecinkowej (ang.Floating point exception).Generowany gdy następuje zamknięcie terminala (ang.Hangup).Sygnał otrzymują procesy dla których jest to terminal kontrolny.Generowany gdy proces próbuje wykonać nielegalną instrukcję (ang.Illegal instruction).Przerwanie procesu (ang.Interrupt).Sygnał wysyłany do wszystkichprocesów związanych z danym terminalem gdy tam naciśniętoCtrl+Break lub Ctrl+C.Sygnał wysyłany w celu zakończenia procesu. Nie może byćprzechwycony ani zignorowany.Generowany przy próbie zapisu dołącza(ang.Pipe)lub gniazdkagdy proces odbiorcy zakończył się.Sygnał generowany przez system gdy na otwarty plik stał się gotowydo zapisu lub odczytu.Próba zakończenia procesu (ang.Quit).Sygnał wysyłany dowszystkich procesów związanych z danym terminalem gdy tamnaciśnięto Ctrl+\.Wysyłany przez system gdy proces naruszył mechanizm ochronypamięci (ang.Segment Violation)Sygnał wysyłany w celu zakończenia procesu. Nie może byćprzechwycony ani zignorowany.Generowany przez system operacyjny gdy ten stwierdzi upadekzasilania (ang.Power Failure)sygnalizowany przez układ dozoruzasilania.Sygnał może być wykorzystany przez użytkownika do własnychpotrzeb.Sygnał może być wykorzystany przez użytkownika do własnychpotrzeb.AkcjaABRT,DMPSIGALRMABRTSIGBUSSIGCHLDSIGSTOPSIGCONTSIGFPESIGHUPSIGILLSIGINTABRTIGNABRT,DMPABRTABRTSIGKILLSIGPIPESIGPOLLSIGQUITABRTABRTABRTABRT,DMPABRTABRTABRTSIGSEGVSIGTERMSIGPWRSIGUSR1SIGUSR2ABRTABRTTabela 0-3Zestawienie ważniejszych sygnałówSygnałyPDF created with pdfFactory trial versionwww.pdffactory.com
[ Pobierz całość w formacie PDF ]