magistrale i sygnały, Studia, Informatyka, Informatyka, Informatyka


W celu umożliwienia bezpośredniego łączenia układów wymagających szybkiej wymiany danych, na przykład kontrolerów dysków czy kart graficznych z mikroprocesorem, w komputerze została utworzona tzw. magistrala.

Magistrala (bus) - elektryczne łącze (szyna) pomiędzy układami (podzespołami) w komputerze. Szerokość magistrali, tzn. liczba jej równoległych ścieżek, określa, ile bitów może ona przesłać za jednym razem.

W komputerze istnieje kilka rodzajów magistrali, np. magistrala adresowa lub magistrala danych. Pierwsza z nich realizuje połączenie pomiędzy procesorem i pamięcią operacyjną w komputerze. Połączeniem tym jest przekazywany adres komórki, z której w danej chwili korzysta mikroprocesor. Z kolei druga realizuje połączenie w celu przekazywania danych pomiędzy mikroprocesorem a układami (urządzeniami) w komputerze, np. pamięcią operacyjną, kartą grafiki, itd.

Obecnie na płytach głównych najpopularniejszym typem magistrali danych jest PCI oraz AGP (coraz rzadziej wykorzystywana jest magistrala ISA). Szybkość przesyłania danych za pomocą magistrali podaje się jednostkach zwanych bps.

bps (bit per second - jednostka określająca liczbę bitów przesyłanych w kanałach cyfrowym w czasie jednej sekundy. Jest to podstawowa jednostka miary szybkości transmisji danych w technice komputerowej.

Korzystanie z magistrali danych przez określone urządzenie w postaci tzw. karty rozszerzeń jest możliwe przez umieszczenie jego karty w gnieździe rozszerzającym. Gniazda rozszerzające współpracujące z odpowiednią magistralą to gniazda typu PCI lub AGP (a w przypadku magistrali ISA-gniazdo typu ISA).

Gniazdo rozszerzające (expantion slot) - gniazdo w postaci wąskiego i podłużnego złącza na płycie głównej, w którym umieszczona jest odpowiednia karta rozszerzająca.

Magistrala ISA

ISA (Industry Standard Archttecture) - zwykła 16-bitowa magistrala danych. ISA pracuje z częstotliwością 8 MHz, co daje maksymalną prędkość przesyłania danych 5 Mbps. Obecnie coraz rzadziej jest wykorzystywana przez karty rozszerzające.

Magistrala PCI

PCI (Peripheral Component Interconnect) - standard magistrali opracowany przez firmę Intel. Magistrala PCI jest szybką 32-bitową magistralą danych. Może ona pracować z częstotliwością 33 lub 66 MHz, a jej prędkość przesyłania danych nie może być mniejsza niż 132 Mbps. Aktualnie za pomocą gniazd rozszerzających typu PCI montowane są wszystkie nowoczesne (z wyjątkiem kart graficznych) karty rozszerzeń.

Magistrala AGP

AGP (Accelerated Graphics Port) - nowy rodzaj magistrali opracowany przez firmę Intel. Powstała ona na bazie magistrali PCI z myślą o szybkim przesyłaniu danych w grafice 3D. Magistrala AGP umożliwia karcie graficznej bezpośredni dostęp do pamięci. operacyjnej i jest obecnie wykorzystywana wyłącznie do obsługi nowoczesnych kart graficznych. Standard AGP umożliwia przesyłanie danych z dwu (AGP x 2), a nawet czterokrotnie większą prędkością (AGP x 4) niż w przypadku klasycznej magistrali PCI.

Sygnał jest informacja dla procesu, ze wystąpiło jakieś zdarzenie. Czasem sygnały nazywamy przerwaniami programowymi (czyli generowanymi przez oprogramowanie). Sygnały zazwyczaj wysyłane są asynchronicznie, czyli proces nie wie z góry, w którym momencie pojawi się jakiś sygnał.
Oto, czym różnią się od komunikatów:

1. Sygnały nie przenoszą żadnych informacji, w szczególności odbiorca sygnału nie zna tożsamości nadawcy
2. Sygnał może być wysłany w dowolnym czasie, sporadycznie przez inny proces (sygnały może tez wysyłać proces sam do siebie), a najczęściej przez jądro systemu w wyniku pewnego wyjątkowego zdarzenia (np. zerwania łączności z terminalem)
3. Ogólnie, nie ma bezwzględnej konieczności odbierania sygnałów ani tez reagowania na nie. Domyślnie, większość sygnałów powoduje zakończenie wykonywania procesu odbierającego sygnał. Proces może jednak zażądać ignorowania określonego rodzaju sygnałów.
4.Sygnaly mogą być wysyłane wyłącznie do procesów, a nie do kolejki komunikatów

Ogólnie, sygnały słabo sprawdzają się jako mechanizm komunikacji miedzy procesami (w sytuacjach wyjątkowych są natomiast niezastąpione)

Tabela sygnałów

Każdy sygnał ma nazwę opisana w pliku nagłówkowym <signal.h>.Oto zestawienie nazw wszystkich sygnałów wraz z określeniem ich znaczenia i czynności domyślnych. W kolumnie ¨Uwagi¨ zawarta jest informacja o tym, dla której wersji Unixa - systemu 4.3BSD czy Systemu V - jest charakterystyczny dany sygnał. Brak uwag oznacza, ze dany sygnał występuje w obu systemach. W kolumnie oznaczonej ¨L¨ umieszczony jest numer danego sygnału w Linuxie 2.0.20; brak numeru oznacza, ze dany sygnał nie występuje w tym systemie.¨*¨ w kolumnie ¨Znaczenie¨ oznacza, ze w tej wersji Linuxa sygnał nie został jeszcze zaimplementowany.

Nazwa

L

Uwagi

Znaczenie

Czynność domyślna

SIGABRT

6

Tylko Linux

Samobójstwo

Zakończ. z obrazem pamięci

SIGALRM

14

-

Budzik

Zakończenie

SIGBUS

7

-

Błąd szyny

Zakończ. z obrazem pamięci

SIGCHLD
(SIGCLD)

17

-

Zakończenie procesu potomnego

Ignorowany

SIGCONT

18

4.3BSD

Wznowienie wstrzymanego procesu

Ignorowany

SIGEMT

-

-

Błąd sprzętowy (rozkaz EMT)

Zakończenie z obrazem pamięci

SIGFPE

8

-

Błąd sprzętowy (rozkaz FPE)

Zakończ. z obrazem pamięci

SIGHUP

1

-

Zawieszenie

Zakończenie

SIGILL

4

-

Niedozwolony rozkaz

Zakończ. z obrazem pamięci

SIGINT

2

-

Znak przerwania

Zakończenie

SIGIO

29

4.3BSD

We.-wy. dozwolone dla deskryptora pliku

Ignorowany

SIGIOT

6

-

Błąd sprzętowy (rozkaz IOT)

Zakończ. z obrazem pamięci

SIGKILL

9

-

Zakończenie procesu

Zakończenie

SIGPIPE

13

-

Dane nie są odbierane z łącza kom.

Zakończenie

SIGPOLL

29

System V

Zdarzenie dotyczące urządzenia strum.

Zakończenie

SIGPROF

27

4.3BSD

Budzik profilometra

Zakończenie

SIGPWR

30

System V

Brak zasilania

Zakończenie

SIGQUIT

3

-

Znak zakończenia

Zakończ. z obrazem pamięci

SIGSEGV

11

-

Naruszenie segmentacji

Zakończ. z obrazem pamięci

SIGSTKFLT

16

Tylko Linux

*

Zakończenie

SIGSTOP

19

4.3BSD

Zatrzymanie

Zatrzymanie procesu

SIGSYS

-

-

Niedozwolony argument funkcji sys.

Zakończ. z obrazem pamięci

SIGTERM

15

-

Programowe zakończenie procesu

Zakończenie

SIGTRAP

5

-

Pułapka śledzenia

Zakończ. z obrazem pamięci

SIGTSTP

20

4.3BSD

Wprowadzenie znaku zatrzymania

Zatrzymanie procesu

SIGTTIN

21

4.3BSD

Czytanie w tle z terminala sterującego

Zatrzymanie procesu

SIGTTOU

22

4.3BSD

Pisanie w tle na terminalu sterującym

Zatrzymanie procesu

SIGUNUSED

31

Tylko Linux

*

Zakończenie

SIGURG

23

4.3BSD

Dane wysokopriorytetowe w gnieździe

Ignorowany

SIGUSR1

10

-

Zdefiniowany przez użytkownika

Zakończenie

SIGUSR2

12

-

Zdefiniowany przez użytkownika

Zakończenie

SIGVTALRM

26

4.3BSD

Budzik zegara wirtualnego

Zakończenie

SIGWINCH

28

4.3BSD

Zmiana rozmiaru okna

Ignorowany

SIGXCPU

24

4.3BSD

Przekroczenie czasu procesora

Zakończenie

SIGXFSZ

25

4.3BSD

Przekroczenie rozmiaru pliku

Zakończenie

0x01 graphic

Co proces może zrobić z sygnałem?

Co proces może zrobić z otrzymanym sygnałem?

Krótkie omówienie sygnałów

Wprowadzenie

Omówimy teraz wszystkie sygnały i ich niektóre własności. Kilka sygnałów przeznaczono do obsługi sytuacji wyjątkowych zależnych od sprzętu. Sygnały te wywodzą się z pierwotnej wersji Unixa dla maszyny PDP-11. W maszynie tej wektory przerwań przechowywane w dolnym obszarze pamięci odpowiadają następującym sytuacjom: błąd szyny, rozkaz niedozwolony, pułapka śledzenia, brak zasilania, pułapka IOT i pułapka EMT. Nazwy: IOT oraz EMT są kodami symbolicznymi rozkazów maszyny PDP-11, które przekazują sterowanie z procesu użytkownika do jądra systemu. Nadal istnieją sygnały odpowiadające tym rozkazom, chociaż maja już inne znaczenie w systemach dla innych maszyn niż. PDP-11.

- SIGALRM (14)

Sygnał pobudki. Sygnał ten generowany jest po upływie wskazanego przez proces czasu. Czas pobudki określa się za pomocą funkcji systemowej alarm; jej argument sec określa czas rzeczywisty, nie zaś czas jednostki centralnej.

- SIGBUS (7)

Błąd szyny. Sygnał ten jest generowany po wystąpieniu błędu sprzętowego spowodowanego przez niepoprawna implementacje systemu.

- SIGCLD , SIGCHLD (17)

Śmierć potomka. Sygnał ten wysyłany jest do procesu macierzystego wtedy, gdy zakończy się jego proces potomny. W przeciwieństwie do większości sygnałów, sygnał ten ginie, jeżeli proces go nie przechwyci. W systemach: 4.3BSD i Linux sygnał ten wskazuje również, iż zmienił się stan procesu potomnego. Jest to ogólniejsze niż tylko wskazywanie śmierci potomka. Zmiana stanu może oznaczać jego śmierć, ale może także wynikać z zatrzymania tego procesu przez sygnały SIGSTOP, SIGTTIN, SIGTTOU lub tez SIGTSTP.

- SIGCONT (18) (4.3BSD)

Wznowienie wstrzymanego procesu. Sygnał ten wysyłany jest, kiedy w systemie 4.3BSD podejmuje się dalszy ciąg działania procesu, który został wstrzymany (zob. opisy sygnałów SIGSTOP i SIGTSTP). Jeśli np. zatrzymano prace edytora pełnoekranowego, to przed jej wznowieniem może on odtworzyć obraz wyświetlany uprzednio na ekranie.

- SIGEMT

Błąd sprzętowy (instrukcja emulatora EMT). Sygnał ten jest wysyłany po wystąpieniu błędu sprzętowego spowodowanego przez niewłaściwą implementacje systemu.

- SIGFPE (8)

Błąd sprzętowy (rozkaz FPE). Sygnał wysyłany po wystąpieniu wykrywanej sprzętowo sytuacji wyjątkowej, spowodowanej niewłaściwą implementacja systemu. Na przykład system 4.3BSD dla maszyny VAX używa tego sygnału do wskazywania sytuacji wyjątkowych podczas wykonywania operacji zmiennopozycyjnych (np. niedomiar zmiennopoz.) oraz sytuacji wyjątkowych podczas wykonywania operacji na liczbach całkowitych (np. dzielenie przez zero).

- SIGHUP (1)

Zerwanie łączności - sygnał zawieszenia (ang. hangup ). Po zerwaniu łączności z terminalem sygnał ten wysyłany jest do wszystkich procesów, dla których dany terminal jest terminalem sterującym. Wysyłany jest także do wszystkich procesów należących do danej grupy procesów w chwili zakończenia, z dowolnego powodu, procesu będącego przywódcą tej grupy. W ten sposób jest symulowane zerwanie łączności z terminalami, których nie można odłączyć fizycznie, jak np. komputerów osobistych.

- SIGILL (4)

Niedozwolona instrukcja. Sygnał ten jest wysyłany po wystąpieniu wykrywanej sprzętowo sytuacji wyjątkowej, spowodowanej przez niewłaściwą implementacje systemu.

- SIGINT (2)

Sygnał przerwania (ang.interrupt ). Jest zazwyczaj wysyłany do wszystkich procesów związanych z danym terminalem, gdy użytkownik naciśnie klawisz przerwania. Można znieść takie działanie klawisza przerwania, a także można zmienić sam klawisz, wywołując funkcje systemowa ioctl.

- SIGIO (29) (4.3BSD)

We.-wy. dozwolone dla deskryptora pliku. Sygnał ten wskazuje, ze można wykonywać operacje wejscia-wyjscia w odniesieniu do deskryptora pliku. Sygnału tego używa się do stworzenia pewnej postaci asynchronicznego wejscia-wyjscia dla procesu.

- SIGIOT (6)

Błąd sprzętowy (rozkaz IOT). Sygnał ten jest generowany po wystąpieniu błędu sprzętowego spowodowanego przez niewłaściwą implementacje systemu. Ponadto wersja funkcji abort w Systemie V wysyła ten sygnał do bieżącego procesu (jest to przypadek wysyłania sygnału przez proces do samego siebie). Proces wywołuje funkcje abort celu utworzenia obrazu pamięci i zakończenia działania po wystąpieniu nietypowego błędu. Wersja funkcji abort systemie 4.3BSD wysyła sygnał SIGIOT do siebie, aby utworzyć obraz pamięci i zakończyć działanie (w Linuxie funkcja ta wysyła sygnał SIGABRT o tym samym numerze co sygnał SIGIOT).

- SIGKILL (9)

Unicestwienie. Jest to jedyny całkowicie pewny sposób zakończenia wykonywania procesu, ponieważ proces odbierający ten sygnał nie może go ani zignorować, ani przechwycić. Sygnału tego powinno się używać tylko w sytuacjach wyjątkowych, w pozostałych natomiast zalecany jest sygnał SIGTERM.

- SIGPIPE (13)

Dane nie są odbierane z łącza komunikacyjnego. Sygnał ten wskazuje, ze nie możemy już dłużej wysyłać danych do gniazda, łącza komunikacyjnego lub kolejki FIFO. Dopóki proces nie przechwyci tego sygnału, dopóty czynnością domyślną jest zakończenie procesu. Sygnał jest wysyłany tylko do procesu związanego z danym gniazdem, nie dotyczy zaś grupy procesów.

- SIGPOLL (29)(System V)

Zdarzenie dotyczące urządzenia strumieniowego. Sygnał ten oznacza, ze w urządzeniu zewnętrznym przyporządkowanym strumieniowi wystąpiło jedno z określonych zdarzeń. W Systemie V sygnał ten umożliwia procesowi wykonywanie asynchronicznych operacji wejscia-wyjscia na jednym lub większej liczbie urządzeń strumieniowych. W Linuxie utożsamiono ten sygnał z sygnałem SIGIO wywodzącym się z systemu 4.3BSD (patrz sygnał SIGIO)

- SIGPROF (27) (4.3BSD)

Budzik profilometra. W systemie 4.3BSD i w Linuxie istnieją trzy rodzaje mechanizmów zegarowych służących do sterowania budzikami: zegar związany z sygnałem SIGALRM odmierza czas rzeczywisty dla procesu; zegar wirtualny związany z sygnałem SIGVTALRM odmierza czas wirtualny procesu (czas wykonywania procesu); wreszcie zegar profilometra związany z sygnałem SIGPROF odmierza zarówno czas wirtualny procesu, jak i czas, w którym jądro pracuje na rzecz procesu. Sygnału SIGPROF używa się w interpretatorach do profilowania wykonania interpretowanego programu.

- SIGPWR (30) (System V)

Niedobór mocy. Dokładne znaczenie tego sygnału zależy od konkretnej implementacji. Jedna z możliwości polega na wysyłaniu go po wykryciu znacznego spadku napięcia w sieci elektrycznej (napięcie spadło np. o 100V i nadal spada). Proces ma wówczas bardzo mało czasu na kontynuacje pracy - powinien wiec na ogol zrobić porządek i zakończyć się (podobnie, jak po otrzymaniu sygnału SIGTERM).

- SIGQUIT (3)

Zakończenie. Sygnał ten jest podobny do sygnału SIGINT, ale jest on generowany, gdy użytkownik naciśnie na terminalu klawisz zakończenia, ponadto uzyskujemy zrzut zawartości pamięci.

- SIGSEGV (11)

Naruszenie segmentacji. Sygnał wysyłany po wystąpieniu błędu sprzętowego spowodowanego niewłaściwą implementacja systemu. Na ogol pojawia się, kiedy proces odwoła się do takiego adresu w pamięci, do którego nie ma dostępu.

- SIGSTOP (19) (4.3BSD)

Zatrzymanie. Sygnał ten zatrzymuje proces. Podobnie jak sygnału SIGKILL, nie można sygnału SIGSTOP  zignorować, ani przechwycić. Umożliwia on administratorowi systemu zatrzymanie procesu. Sygnałem SIGCONT można wznowić działanie zatrzymanego procesu.

- SIGSYS

Niedozwolony argument funkcji systemowej. Sygnał ten wskazuje, ze funkcje systemowa wywołano w niepoprawny sposób. Ponadto - z powodów historycznych - sygnał ten jest generowany kiedy argument whence (skąd) funkcji systemowej lseek jest rożny od 0,1 lub 2.

- SIGTERM (15)

Zakończenie programowe. Jest to standardowy sygnał zakończenia wywoływania procesu, generowany przez oprogramowanie, wysyłany domyślnie do procesu wtedy, kiedy użyje się polecenia kill (Nie mylić polecenia kill z funkcja systemowa o tej samej nazwie). Sygnału tego używa się także podczas wyłączania całego systemu w celu zakończenia wszystkich aktywnych procesów. Programy powinny przyjmować domyślną obsługę tego sygnału bądź tez błyskawicznie robić porządek (np. usunąć pliki tymczasowe) i wywoływać funkcje exit.

- SIGTRAP (5)

Śledzenie. Sygnał ten jest wysyłany po wykonaniu każdej instrukcji, jeśli proces wykonywany jest z opcja śledzenia włączona za pomocą funkcji ptrace. Z opcji śledzenia korzystają programy diagnostyczne, wspomagające testowanie programów.

- SIGTSTP (20) (4.3BSD)

Wprowadzenie znaku zatrzymania. Sygnał ten jest wysyłany do procesu po naciśnięciu klawisza zawieszenia (na ogol Control-Z) lub klawisza zawieszenia z opóźnieniem (na ogol Control-Y). Proces, który był zawieszony (zatrzymany), można wznowić sygnałem SIGCONT.

- SIGTTIN (21) (4.3BSD)

Czytanie w tle z terminala sterującego. Sygnał ten jest wysyłany wtedy, gdy proces drugoplanowy przystępuje do czytania ze swego terminala sterującego. System generuje ten sygnał, aby uniknąć zamieszania spowodowanego tym, ze więcej niż. jeden proces czyta z tego samego urządzenia. Jeśli proces zignoruje ten sygnał, to będzie domyślnie zatrzymany.

- SIGTTOU (22) (4.3BSD)

Pisanie w tle na terminalu sterującym. Sygnał zbliżony do sygnału SIGTTIN, wysyłany wtedy, gdy proces drugoplanowy przystępuje do pisania na swoim terminalu sterującym. Domyślnie jest dozwolone, aby proces drugoplanowy pisał na swoim terminalu sterującym, ale użytkownik może określić, ze operacja pisania w tle wygeneruje ten sygnał.

- SIGURG (23) (4.3BSD)

Dane wysokopriorytetowe w gnieździe. Sygnał wysyłany po powstaniu sytuacji wyjątkowej związanej z nadejściem danych wysokopriorytetowych do gniazda albo z obecności informacji o stanie sterowania, którą trzeba odebrać od części nadrzędnej pseudoterminala pracującego w trybie pakietowym. Sygnał jest wysyłany do grupy procesów dla tego gniazda.

- SIGUSR1 (10)

Sygnał 1 zdefiniowany przez użytkownika. Z sygnału tego można korzystać w programach użytkowych w celu komunikacji miedzy procesami. Sygnał ten nie jest często używany - nie może bowiem przenieść żadnej informacji poza ta, ze właśnie się pojawił. Nie jest wiec zbyt użyteczny, jeżeli ma służyć do komunikacji miedzy większą liczba procesów: odbiorca nie wie, kto jest nadawca sygnału.

- SIGUSR2 (12)

Sygnał 2 zdefiniowany przez użytkownika. Analogiczny do sygnału SIGUSR1.

- SIGVTALRM (26) (4.3BSD)

Budzik zegara wirtualnego. Zobacz opis sygnału SIGPROF.

- SIGWINCH (28) (4.3BSD)

Zmiana rozmiaru okna. Sygnał oznacza, ze rozmiar okna na terminalu zmienił się.

- SIGXCPU (24) (4.3BSD)

Przekroczenie czasu procesora. W systemie 4.3BSD oraz w Linuxie można w procesie ustalić ograniczenia zasobów, z których będzie korzystał dany proces i każdy utworzony przez niego proces. Sygnał SIGXCPU wskazuje, ze proces przekroczył przydzielony mu czas procesora.

- SIGXFSZ (25) (4.3BSD)

Przekroczenie rozmiaru pliku. Sygnał ten wskazuje, ze proces przekroczył ograniczenie rozmiaru jego plików. Zob. opis sygnału SIGXCPU.



Wyszukiwarka