Operációs rendszerek

6.2 példa. Úszó alsó elfolyó kivételkezeléssel (antiperepolnie amikor lebegőpontos műveletek)

#tinclude
statikus jmp_buf fpe_retry;
void fpe_handler (int sig) <
4> __fpreset (); longjmp (fpe__retry, -1);
int compare_pgms (Image * imgO, fényképek * img1) int xsize = 256, ysize = 256;
int i, j. pO, PI, PD;
kettős avg, avgsq, skála, sima;
skála = (dupla) xsize * (dupla) ysize;
avg = 0,0; avgsq = 0,0;
/ * Elhagyja lehetséges alsó elfolyó * /
jelet (SIGFPE, fpe_handler);
for (i = 0; iképet [i * xsize] -imgl-> képet [i * xsize]); a (j = 0; jképet [j + i * xsize]; PL = imgl-> képet [j + i * xsize]; pd = (PO-PL);
ha (setjmp (fpe_retry) == 0) VQ + = sima; avgsq + = sima * sima;
Eise
sima = 0. 0;
ha (Setjmp (fpe_retry) == 0)
Locsolás = avgsq / skála-avg * avg / (skála * skála);
mást diszperzió = 0,0;
jelet (SIGFPE, SIGJDFL);
>

6.3 példa. Forrás függvény beállítja JMP / longjmp.

Kivételek a Java gyakran elkerüli a strukturális kedvelt programozók goto utasítást. Az objektumorientált (OO) nyelv, ez a mechanizmus játszik még fontosabb szerepet: a bolshininstve nyelv - ez az egyetlen módja annak, hogy jelentést hiba a teljesítmény az objektum kivitelező.
Fontos kiemelni azonban, hogy a kivétel abban az értelemben, HLL és hardver kivételek processzor - két különböző dolog. A multitasking operációs rendszer felhasználói program nem rendelkezik közvetlen hozzáféréssel megszakítására és kivételkezelés. OS szolgáltatást nyújt, amely lehetővé teszi, hogy a programozó regisztrálni rakodók különféle események, mint például a megfelelő hardver kivétel által generált az operációs rendszer, de a hívás egy ilyen felvezető mindig történik két lépésben: először végrehajtott kezelő regisztrálva a kernel (6.4 példa), és azt, amennyiben az szükséges és lehetséges kapcsolókat felhasználói környezetben, és felhívja a regisztrált felhasználó. Beleértve végrehajtása HLL viszont megvalósíthatja rakodók között az operációs rendszer és a szolgáltatás rendelkezésre álló eszközöket a programozó.

6.4 példa:. Processzor aritmetikai kivételek a kernel Linux I

Kapcsolódó cikkek