21: Frábrigði og ferli Flashcards
Frábrigði
(exceptions)
Ferli
(processes)
Fjölvinnsla
(multiprocessing)
Samhengisskipti
(context switch)
Örgjörvar gera aðeins einn hlut:
Frá ræsingu þar til slökkt er á þeim, þá lesa þeir og framkvæma runu skipana, eina í einu
Þessi skipanaruna er stýriflæði (control flow) örgjörvans
Breyting á stýriflæði
Skilyrt og óskilyrt stökk
Kall á stef og endurkoma úr stefi
Afbrigðilegt stýriflæði (ECF)
Lægra lags aðferðir:
– 1. Frábrigði (exceptions)
* Breytingar í stýriflæði til að bregðast við kerfisatburði (t.d. breyting í
stöðu kerfisins)
* Útfært með blöndu af vélbúnaði og stýrikerfishugbúnaði
* Hærra lags aðferðir:
– 2. Samhengisskipti ferla (process context switch)
* Útfært af stýrikerfi og vélbúnaðarklukku
– 3. Merki (signals)
* Útfært af stýrikerfi
– 4. Fjarlæg stökk (nonlocal jumps): setjmp() og longjmp()
* Útfært af keyrslusafni C (C runtime library)
Hvað er Frábrigði (exceptions)?
Frábrigði er afhending stjórnunar yfir til stýrikerfiskjarna sem viðbragð við atburði (event) (þ.e., breyting í örgjörvastöðu)
Frábrigðatöflur (exception tables)
Sérhver atburðategund hefur
einkvæmt frábrigðanúmer k
k = vísir inn í frábrigðatöflu
(líka nefnt ígripsvigur (interrupt
vector))
Kallað á sýslara (handler) k í
hvert sinn sem frábrigði k
gerist
Ósamhæfð (asynchronous) frábrigði?
Ígrip (interrupts)
Samhæfð (synchronous) frábrigði ?
Gildrur (traps), Gallar (faults), Vinnslurof (aborts)
Ósamhæfð frábrigði (ígrip)
Atburðir fyrir utan örgjörvann valda ígripum, Gefið til kynna með ígripspinna á kubbi örgjörvans
Frábrigðssýslari fer svo til baka í “næstu” skipun forrits
Samhæfð frábrigði
Koma til vegna keyrslu á skipun í notandaforriti
Gildrur (traps)
Af ásettu ráði
Dæmi: kerfisköll, rofstaðir (breakpoints), sérstakar skipanir
Fara til baka í “næstu” skipun forrits
Gallar (faults)
Óviljandi, en líklega hægt að leysa úr
Dæmi: síðutöf (page fault)
Annað hvort endurkeyra “núverandi” skipun eða hætta keyrslu
Vinnslurof (aborts)
Óviljandi og ekki hægt að leysa úr
Dæmi: ólögleg skipun, vartöluvilla, skemmd í vélbúnaði
Hættir keyrslu á núverandi forriti
Kerfisköll
Hvert kerfiskall í x86-64 hefur einkvæmt
auðkennisnúmer
Ferli (processes)
Skilgreining: ferli er tilvik af forriti í keyrslu
Ein af mikilvægustu hugmyndunum í tölvunarfræði
Ferli sjá forritum fyrir tveimur lykilhugmyndum:
Röklegt stýriflæði (logical control flow)
Einka vistrými (private address space)
Röklegt stýriflæði (logical control flow)
Sérhvert forrit virðist vera það eina sem notar örgjörvann
Fæst með búnaði í kjarnanum sem kallast samhengisskipti (context switching)
Einka vistrými (private address space)
Sérhvert forrit virðist vera það eina sem er að nota minnið
Fæst með búnaði í kjarnanum sem kallast sýndarminni (virtual memory)
Fjölvinnsla (multiprocessing)
Tölvur keyra mörg ferli samtímis
Ferli eru auðkennd?
Auðkennd með ferlanúmeri (process ID, PID)
Lægstu númerin eru þau sem hófu keyrslu fyrst
Hvað gerist við fjölvinnslu ?
Keyrsla mismunandi ferla er fléttuð saman (fjölbeiting, multitasking)
Vistfangsrými stýrt af einingu fyrir sýndarminni (sjáum síðar)
Gistagildi fyrir ferli sem ekki eru í keyrslu eru geymd í minni
Samskeiða ferli
Tvö ferli keyra samskeiða (concurrently) ef
stýriflæði þeirra skarast í tíma
Annars eru þau runubundin (sequential)
Ferlum er stjórnað af hluta af stýrikerfi tölvunnar sem kallast
kjarni (kernel)
Stýriflæði færist frá einu ferli til annars með?
samhengisskiptum (context switch)