Odchyceni signalu

Ing. Pavel PaJaSoft Janousek janousek na fonet.cz
Úterý Říjen 3 09:40:46 CEST 2000


> > To je prilis zjednoduseny pohled. Semantika rozhrani signal()
> > se menila dokonce i v ramci jednotlivych vetvi.
> 
> Neadresoval jste puvodni pripominku k prenositelnosti sigaction(2).
> Toto volani na pre-POSIX unixech fakticky neni (na rozdil od
> signal(2), ktere je v unixu od usvitu veku).

1. Je fakt, ze pouziti signalu muze ze zacatku znamenat trochu vice
uceni...
2. Je fakt, ze _implementace_ signalu od puvodniho 'objevu' byla
nekolikrat predelana (ostatne, odtud termin 'stare - nebezpecne' a 'nove
- bezpecne' signaly), ze puvodni signaly spise prinesly radu problemu
nez by neco kloudneho resili (resp. jejich robustnost byla na absolutni
nule)
3. Neni pravda, ze soucasne pouziti signalu v programech musi znamenat
pouziti POSIXovych volani sigaction atd. 
4. Neni pravda, ze pouziti signalu je alchymie!
5. Lze pomerne jednoduse pouze pomoci handleru a volani signal() napsat
robustni aplikaci, ktera nepada na zapomenutych signalech, nekvalitni
implementace v jadre atd. - pokud mam byt presny, 100% zkusenosti mam s
SCO Unixem (verzi si jiz z hlavy nepamatuji, je jeste z doby nez ho
koupil Novell a vclenil do UnixWare) a Linuxem. Obdobne dobre zkusenosti
mam s IRIXem a FreeBSD, naopak horsi (nerikam, ze diky signalum) mam se
SunOS 4 a 5, kde mi cast volani mych funkcni chybela, take zejmena tomu,
ze libc5 ani glibc (libc6) na nem v te dobe nebyla (reps. nemel jsem ji
k dispozici pro programovani).
6. Tvrdim a jsem presvedcen o tom, ze si se signal () a handlerem na nej
vystacim i v soucasne dobe. Prikladem muze byt uspesne provozovany
system pro kontinualni mereni v JETu a JEDu nebo bbs.inway.cz (drive
bbs.vslib.cz) - prave u druhe jmenovane jsme s Mgr. Jirim Randusem
jednou dostali (pri cca 140 aktualnich uzivatelich) BBSku do takoveho
stavu, ze load extremne splhal az zhruba na 12, pote jsme museli stroj
odstavit a periodu volani (alarm) z 1s prenest na 15s s patricnymi
implementacnimi upravami. Ale ani pri alarm (1) jsme nemeli problem s
padem, nedefinovanym chovanim atd... - a moje testy probihali jednak na
Linuxu verze 1.3. (tusim, ze 1.3.96), jednak na UnixWare 1.X, pozdeji na
UnixWare 2.01, 2.1.
7. Pokud si clovek da pozor na EINTR u volani funkcni, ktere toto mohou
(dle dokumentace) vracet, muze napsat velmi robustni aplikaci.

	Toliko tedy k signalum, nerikam, ze je to trivialita, ale vice jak 5
let zkusenosti a uspesnych praktickych implementaci napric spektrem
UNIXovych OS mne rozhodne nepresvedcuje o tom, co tu kolegove Cejka a
Novotny psali - ac s nekterymi vecmi souhlasim.

	Zaver: signal (pripadne alarm), handler a osetrovani EINTR navratove
funkce vedlo vzdy k zadanemu vysledku i u pomerne velke (cca stovky
konexi simulovane na 4MB DRAM (pozdeji 12MB) a 150MB swap;-) - bohuzel
moje konfigurace nebylo delo, ale AMD 386DX40) zateze, jak simulovane,
tak realne (kazdy klient cca 800kB).

BTW Rudo, mluvis o skole... - ja jsem se o signalech na skole dozvedel
__velmi__ velke kulove (vyucujiciho kolegu nebudu radeji jmenovat) -
ostatne, to o programovani v UNIXu ci UNIXovych vecech platilo temer ve
vsem. Pri _jedinych_ cvicenich, na kterych se probiraly signaly jsem mel
'neprijemne' dotazy, ktere vyplyvaly z me praxe (tehdy jiz 4 lete,
vcetne bbs.vslib.cz a systemu pro JED a JET) a moje dotazy byly naprosto
korektni, podlozene a spravne formulovane (chtel jsem po nem vysvetlit
chovani v urcitych pripadech a co se vlastne deje v systemu), presto na
ne nedokazal ani co by se za nehet veslo odpovedet a naopak si mne pak
podal (dobre mi to jesitne vratil) pri jedne me obhajobe... - to je take
soucast koloritu a urovne ceskeho vysokeho skolstvi...

-----------------------------------------------------------------------
Ing. Pavel Janousek (PaJaSoft)                 FoNet, spol. s r. o.
Vyvoj software, Intranet / Internet          Anenska 11, 602 00  Brno
E-mail: mailto:Janousek na FoNet.Cz             Tel.: +420  5  4324 4749
SMS:    mailto:P.Janousek na SMS.Paegas.Cz      Fax.: +420  5  4324 4751
WWW:    http://WWW.FoNet.Cz/               E-mail: mailto:Info na FoNet.Cz
-----------------------------------------------------------------------


Další informace o konferenci Linux