RAS operatsioonisüsteemid - reaalajalised tuumad
1
.Millised reaalajalised nõuded määravad RAS
tarkvara koostamise eripära?
RAS nõuded määravad tarkvara valmistamise eripärad (enamasti tekib
sundparalleelsus ):
•
Jõudlus tippkoormusel peab olema ennustatav
•
Töökiiruse juhtimine toimub ümbritsevast keskkonnast
•
Ohutus on sageli
kriitilise tähtsusega
•
Andmemahud on väikesed või keskmised
•
Aktiivne liiasus (
dubleerimine , jne)
•
Andmete
terviklikkus nõutav lühiajaliselt
•
Autonoomne
vigade avastamine
2.Selgitada sundparalleelsuse ja traditsioonilise paralleeltöötluse erinevusi.
Sundparalleelsus on mitme samaaegse
andmevoo töötlus ja
interaktsioon , kus esinevad vahele
segamised. Ühe töö katkestamine ja hiljem lõpetamine (Andmevood tükeldatakse kiiremaks töötluseks).
See on paralleelsus, mis on peale sunnitud ümbritseva keskkonna poolt.
Traditsiooniline paralleeltöötluses ei esine vahelesegamist ühe või mitme andmevoo määramatult
kestvas töötlemises. On põhimõtteliselt vabatahtlik töörezhiim, mille kasutamine sõltub projekteeria
tahtest.
(Sundparalleelsus on paralleelsus, mis on tarkvara insenerile peale surutud ümbritseva keskkonna poolt.
Vajalik reaalajasüsteemide nõuete täitmiseks.)
3.
Tegum (protsess) ja seda iseloomustavad
parameetrid .
Protsess ehk tegum (
Task ) – töötava/täidetava programmi abstraktsioon,
op-süsteemi plaanuri (
Scheduler ) poolt juhitav loogiline ühik. Tüüpiliselt kujutatakse
andmestruktuuriga, mis sisaldab:
1. täitmise
seisundit (state of execution)
2. identiteedi-infot (
identity ) – näiteks
registrite sisu, aadressiruum jne.
3. atribuute (attributes) – näiteks täitmise aeg
4. ressursside nimekirja (resources) – avatud failid,
sisend -väljundseadmed jne
4.Nimetada tegumit puudutavad RAS operatsioonisüsteemi parameetrid.
Scheduling - plaanur/
planeerimine - määrab, milline tegum täidetakse järgmisena ja millal (järjekord,
aeg) (eirinevad
protokollid )
Dispatching - dispetšer - tegumi info "
raamatupidaja " - hoiab parameetreid, mis tegumi käivitamiseks
vaja
Intercommunication and Synronization - kommunikatsioon ja sünkroniseerimine - tegumite
koostöö/vastasmõju juhtimine
OS kernel (tuum) on vähim ühik, mis neid funktsioone täidab.
5.RAS operatsioonisüsteemi
taksonoomia (osad).(?)
•
Nanokernel – lõimede/tegumine juhtimine(
management )
•
Mikrokernel – lisab plaanuri (Scheduling)
•
Kernel – lisab kommunikatsiooni ja sünkroniseerimise(semafor, kirjakast,
kohtumine jne)
•
RT
Executive – mäluplokkide kontroll, IO kontroll jne –enamik
reaalaja kerneleid on
“executive” tasemel
Operatsioonisüsteem – lisab kasutaja interfeisi,turvameetodid, kõrgtasemel failitöö
6. Nimetada pseudokernelite liigid.
1. Polled
loop – pollitav tsükkel
2. Synchronized Polled Loop – sünkroniseeritud pollitav tsükkel
3. Cyclic Executives –tsükliliselt täidetavad
programmid 4. State-Driven
Code – seisunditega/olekutega juhitav kood
5. Coroutines - kaasprogrammid
7. Millal kasutatakse reaalajasüsteemides pseudokernelit?
Reaalajalist paralleeltöötlust on võimalik saavutada ilma katkestusteta ja isegi ilma OS-ta
klassikalises mõistes – kus võimalik peaks seda lähenemist kasutama
•
lihtsam realiseerida,
•
lihtsam siluda,
•
lihtsam analüüsida
8. Mis on pollitav tsükkel (polled loop), millal seda kasutatakse?
Kiire
reaktsioon ühele sündmusele.
Testitakse , kas mingi
lipp on oodatud seisus ja siis täidetakse tegum.
Mitu lippu tegumit – cyclic executive. Ideaalsed näiteks kiirete andmekanalite teenindamisel, kus
andmevahetuse iseloom ei ole
regulaarne .
Olemuselt raiskavad protsessori aega – sisaldub hüpe
iseendale .
9. Selgitada, kuidas saab vältida
programmis mehaanilise lüliti lülitamisel tekkivat häiret. (?)
Lisaks pollitavale sündmusele fikseeritud sagedusega kellakatkestus.Vajalik protsesside kontrollimisel,
kus võib olla häireid või kindla ajavahemikuga määratud tegevusi – lülitamise häire näiteks (bouncing)
10. Mis on tsükliliselt täidetavad programmid (cyclic executives), millal neid kasutatakse?
Ilma katkestusi kasutamata
luuakse samaaegse täitmise
illusioon – lühikesed protsessid kiires
protsessoris lõpmatus tsüklis – pollitava tsükli edasiarendus.
11. Mis on seisunditega juhitav kood (state-driven code), millal seda kasutatakse?
Kasutab hargnevat if-then
laadset käsustikku
juhtimiseks (
case , seisundiautomaat). Mitte kõiki protsesse
ei saa jagada seisunditeks, samuti juhtimistabelid võivad kasvada väga suureks.
12.Mis on kaasprogrammid, millal neid kasutatakse?
(Coroutines) State-Driven Programming
erijuht .
Koostöötav mitmiktöötlus
(cooperative multitasking) – distsiplineeritud
programmeerija ja sobiv kasutus. Protsessid koosnevad:
•
Faasidest ja iga faasi lõpus juhtimine antakse üle dispetšerile, kes annab täitmise üle järgmise
tegumi sobivale faasile jne.
•
Kommunikatsioon ja faasidele vajaliku info säilitamine toimub globaalsete muutujate abil.
13. Kuidas töötavad katkestustega
juhitavad programmid, nende eelised ja puudused?
Interrupt - Driven Systems – katkestustega juhitavad programmid
Katkestustega juhitavates süsteemides põhiprogramm koosneb “hüppest iseendale”. Programmi
kulgu kontrollitakse
riistvara ja/või tarkvara katkestustega. Ainult katkestustega juhitavad süsteemid:
1. kiire kosteaeg,
2. tundlik riistvara riketele,
3. race-
conditions (
ajalised probleemid),
4. iseendale hüppetsükkel (raiskab aega)
5. Interrupt
Service Routines – katkestuste teenindusprogrammid
6.
Context Switching – konteksti lülitamine (vahetamine)
14. Mis on konteksti lülitamine (context switching), kuidas seda realiseeritakse?
Protsess, mis säilitab vajaliku informatsiooni töö jätkamiseks, kui ISR lõpetab töö. Oluline
salvestada ainult vajalik osa. Tavaliselt pinu (
cache ) mudel (salvestatakse pinusse)
1. Registrite sisu
2. Programmiloendi väärtus
3. Kaasprotsessori registrite sisu (kui eksisteerib)
4. Mälulehtede
register 5. Mälulaadselt ühendatud I/O andmed/väärtused
6.
Katkestused sel ajal keelatud
15. Kuidas töötab järjestikplaanur (
round -
robin )?
Round-robin (järjestikku) on üks lihtsamaid plaanuri algoritme (scheduling algorithm)
protsesside/tegumite juhtimiseks OS-s. Round-robin plaanur:
1. eraldab igale protsessile võrdse ajavahemiku
2. käsitledes protsesse järjekorras,
3. ilma prioriteetideta.
4. Round-robin plaanur on lihtne ja
5. kerge programmiliselt realiseerida,
6. ei teki ressursside
nappuse (starvation) olukorda
16. Mis on tõrjuva prioriteediga süsteemid, millal neid kasutatakse?
Preemptive-
Priority Systems – välistava/tõrjuva prioriteediga süsteemid
Kõrgema prioriteediga tegum saab katkestada/välistada madalama prioriteediga tegumi töö. Võimaldab
tähtsamatele tegevustele/protsessidele omistada kõrgema prioriteedi. Tuumaelektrijaam – sissetungijale
reageerimine on oluline, aga ülekuumenemine veel olulisem.
Prioriteedid saavad olla:
1. Fikseeritud – näiteks RM –
Rate monotonic – sagedamini täidetavatel tegumitel on kõrgem
prioriteet 2. Dünaamilised – näiteks EDF – Earliest
Deadline First – lähima piirajaga tegumi prioriteet
kõrgeim
Prioriteetide kasutamine võib põhjustada ressursside nälga ja osa tegumite mittepiisavat täitmist.
17. Mis on hübriidsüsteemid, milliseid
variante teate?
1. Enamik süsteeme on segu mitmest võimalikust vaadeldud variandist
2. Sisaldavad perioodilisi ja sporaadilisi (juhuslikke) katkestusi.
3. Sporaadilised – kriitiline viga, kriitilise ressursi
katkestus , kriitiline oleku muutus keskkonnas.
4. Teine hübriidsüsteemi variant on “Round-robin” ja “Preemptive-
5. Priority” süsteemide segu.
6. Foreground/Background Systems
◦ Background
Processing ◦ Initialization
18. Mis on tegumi juhtimise
blokk -mudel (task-control block model - TCB)?
1. TCB mudel on kõige enam kasutatav mudel kommertsiaalsete OS-de realiseerimisel – tegumite
hulk võib varieeruda – interaktiivsel
kasutamisel tegumite hulk tavaliselt muutub – puudus:
suure hulga tegumite korral plaanuri enda ressursinõudlikkus muutub oluliseks. TCB
mudelis iga tegum seotud andmestruktuuriga (TCB).
2. Kasutatakse plaanuritega
◦ Round-robin
◦ Preeemptive-priority
◦
Kombineeritud variandid
19. Nimetada
enamlevinud tegumi
seisundid (task states), näidata seisunditevahelisi võimalikke
üleminekuid.
OS juhib tegumi olekut:
1.
Executing – täidetav tegum, ühe
protsessoriga süsteemis ainult üks
2.
Ready – täitmiseks valmis – kas uus või katkestatud (aeg lõppes või välistus tekkis)
3. Suspended (or
blocked ) – tegum on seisatud (mõnikord tähendab ka, et tegum on lõpetanud töö)
4. Dormant (or sleeping) – eksisteerib, pole kättesaadav, seda olekut alati ei kasutata
20. Milline on tüüpiline TCB struktuur?
[TCB mudel on kõige enam kasutatav mudel kommertsiaalsete OS-de realiseerimisel – tegumite hulk
võib varieeruda – interaktiivsel kasutamisel tegumite hulk tavaliselt muutub – puudus: suure hulga
tegumite korral plaanuri enda ressursinõudlikkus muutub oluliseks. TCB mudelis iga tegum seotud
andmestruktuuriga (TCB).
TCB administreerimise mudel – tegumid ise hoiavad oma seisundi infot, paindlik, lihtne tegumeid
lisada hiljem. Kui OS välja kutsutud, ta testib TCB-de seisundit – võtab nimekirjast järgmise
valmisoleva tegumi ja seab selle täitmise olekusse (executing), täidetud tegum lingitakse nimekirja
lõppu
seisundiga “ready”. Seisundit hoitakse seisundisõnas (
status word) - executing, ready, suspended,
dormant (magav) - selline mudel ei nõua TCB-de dünaamilist mälu jagamist.]
RAS operatsioonisüsteemid – tegumite kommunikatsioon ja
sünkroniseerimine
21. Miks ja millal on vaja tegumeid sünkroniseerida?
Kui tegumid sõltumatud ja katkestatavad/välistatavad igal ajahetkel, siis lihtne mudel – praktiliselt pole
selline olukord võimalik. Peaaegu alati tegumitel vaja infot vahetada ja tegevust sünkroniseerida.
(Enamasti probleem piiratud hulga ressursside kasutamise sünkroniseerimises.)
[
Teadete saatmine võib olla nii
blokeeruv kui mitteblokeeruv. Blokeerumine annab sünkroonse suhtluse.
Mitteblokeerumine annab asünkroonse suhtluse. Saatmine ja vastuvõtt võivad teineteisest sõltumatult
olla blokeeruvad või mitteblokeeruvad]
22. Millise süsteemi
ressursid vajavad tavaliselt sünkroniseerimise kasutamist? (?)
•
Protsessori aeg/hulk – kõik
protsessorid /
kontrollerid süsteemis
•
Mälu – kõik mälud süsteemis
•
Sisend/väljundseadmed (IO) – siia alla käivad ka kõik
andurid /täiturid jms
23. Mis on programmi
kriitilised piirkonnad?
•
Ressursside
jagamise korral tihti olukord, kus valel ajal pöördumine võib põhjustada
katastroofilisi
olukordi või muutub kasutamise eesmärk mõttetuks.
•
Ketta samaaegne kasutamine, printeri samaaegne kasutamine “I am I am Task A Task B
•
Kriitiline piirkond on tegumi osa, kus tegum kasutab mingit ühekordselt pöördutavat
ühisressurssi, mille ta kasutamiseks blokeerib
24. Globaalsete muutujate kasutamine, eelised ja puudused,
puhverdamine .
[Kommunikatsioon ja faasidele vajaliku info säilitamine toimub globaalsete muutujate abil.]
Globaalsed muutujad –
kiireim ja lihtsaim
moodus andmete vahetamiseks. Vaatamata
programmeerimistavale (mis ei pea soovitavaks globaalsete muutujate kasutamist) on nad
manusarvutites väga tihti kasutusel.
Probleem – andmete tootja-tarbija kiiruste erinevus – vaja tuua sisse
puhvrid . Puhvrite puhul suuruse
hindamine.
Puhverdamine: Ühendusega on seotud teadete järjekord.
Järjekorra pikkuse jaoks mitu võimalust:
1. Null – mitte ühtegi teadet, käsitsi puhverdamine
2. Piiratud maht – etteantud arv teateid, kui saatmisel on järjekord täis, siis sünkroonne
saatja blokeerub ruumi vabanemiseni
3. Piiramatu maht – saatja ei blokeeru kunagi
25. Mis on ringpuhvrid, kuidas neid kasutatakse?
•
Analoogne topelt puhverdamisega, lihtsam kontrollida, n-lugeja, mkirjutaja probleem lihtsam.
•
Hoitakse päise/alguse (head) - lugemine ja jaluse/lõpu (
tail ) - kirjutamine aadresse
[Ringpuhver on
massiiv , mille esimest elementi loetakse viimasele järgnevaks. Ringpuhver (Circular
Buffer), mis on oma olemuselt fikseeritud suurusega tsükliliselt läbitav andmestruktuur. Puhvri
täitumisel alustatakse uut ringi ning
kirjutatakse kõik eelnevalt vastu võetud sõnumid üle. Ringpuhvrit
kasutatakse reaalajasüsteemide puhul, kus on tähtis andmeedastuskiirus, kuid vanemate andmete
ülekirjutamine ei ole aja progresseerudes enam kriitiline. Taoline lähenemine on otstarbekas näiteks
multimeedias, kus
reaalajas esitatud pilt ei sõltu sellest, kas mõni
pakett minevikus läks kaduma või
mitte. Kuivõrd visualiseerija
seisukohast on tähtis suur andmete läbilaskevõime, on siiski otstarbekas
võimalusel vältida andmete kadu. Ringpuhver võib osutuda kasuliks ainult olukorras, kus enam
sõnumite läbilaskevõimet ei suudeta suurendada ning kadumaläinud sõnumid kuvatakse visualiseerijas
kui määramatuse olukord.]
26. Mis on kirjakastid (mailbox), kuidas neid kasutatakse?
•
Paljudes tööstuslikes OS-des kasutatav tegumite kommunikatsiooni vahend, kus mingi mäluosa
on kokkuleppeliselt käigus andmete vahetamiseks või sünkroniseerimiseks. Kernel kontrollib st
pöördutakse kerneli poole
postkasti kirjutamiseks (post) ja lugemiseks (
pend ).
•
Tihti kasutatakse kriitilise ressursi kontrollimiseks – postkastis võti, mida saab küsida,
postkast jääb tühjaks.
(Rivi – ootejärjekord Sellised kirjakastide massiivid (mailbox array), kus saab kirjutamisi ja
lugemisi järjekorda seada. Mailbox on
Queue alamliik.)
27. Mis on semaforid, kuidas neid kasutatakse?
Semaforid – Semaphores, ka mutex (ainult protsess ise saab vabastada)
Levinuim meetod kriitiliste piirkondade kaitsmiseks on semafor – mälupiirkond, mis toimib kriitiliste
ressursside kaitse lukuna. S – semafor, kaks funktsiooni
wait ehk P(S) – proberen "to test," ja
signal ehk
V(S) - verhogen ("increase"). Kriitilisse regiooni sisenedes funktsioon P(S) ja väljudes V(S).
28. Kirjutada vabalt valitud programmeerimiskeeles näidisprogramm (
fragmendid ) mingi süsteemi
ressursi kaitsmiseks kasutades semafori. Selgitada selle programmi tööd.
???
29. Mis on loenduvad semaforid, milleks neid kasutatakse?
Vabade ressursside üle arvepidamiseks – rohkem kui üks,wait – MP(S) ja signal - MV(S), saab kujutada
funktsioonidega, semafor S tuleb eelnevalt initsialiseerida ressursside
hulgaga :
30. Mis on
ummik (deadlock)?
•
Kaks või enam tegumit võistlevad pöördumises kahe või enama järjestikku
kasutatava ressursi
poole – võib tekkida ummik (Deadlock või deadly embrace). Näites järgmisel slaidil tegum A
nõuab ressursse 1 ja 2, samuti tegum B. Tegum A omab ressurssi 1, ootab ressurssi 2 – tegum B
omab ressurssi 2, ootab ressurssi 1. Semaforid S ja R
kaitsevad ressursse 1 ja 2 vastavalt.
•
Olukord, kus kumbki protsess ootab teise lõppemist.
•
Ummik on analoogne probleemiga, “
kumb oli enne, muna või
kana ”
31. Millised tingimused peavad olema täidetud ummiku tekkimiseks?
•
Mutual exclusion – vastastikune välistamine – ressurss on kas ühe protsessi poolt hõivatud või
vaba
•
Circular wait – tsirkulaarne ootamine – kaks või rohkem protsessi ootavad ringlistis teineteise
(üksteise) ressursse
•
Hold and wait – hoia ja
oota – protsess, mis omab ressurssi, võib neid juurde nõuda ilma
hoitavaid ressursse vabastamata
•
No preemption – mittevälistamine – ainult protsess, mis ressurssi omab, saab selle vabaks lasta
•
Kõik neli peavad olema täidetud, et tekiks ummik, kui mingi neist välistada, siis ummikut ei teki
32. Kuidas vältida ummiku tekkimist?
•
Ummik on tõsine probleem, tihti ei avastata testimisel.
•
Lisaks võib ta ilmneda väga harva, ebasoodsate tingimuste kokkulangemisel.
•
Lahendamine pole selgelt määratud, olulised muudatused
koodis võivad olla vajalikud.
•
Näide lihtne - enamasti on probleemid varjatud
keeruliste koodikombinatsioonide sisse, pole
ilmne, kus võivad tekkida
•
Vältimiseks on vaja teada enne ressursi nõudmist, et võib tekkida ummiku olukord – RAS see
tihti raskesti (või üldse mitte) täidetav, seega pole võimalik alati ummikut vältida
•
[Praktilised soovitused:
Minimiseerida kriitiliste piirkondade hulk ja pikkus
Kõik protsessid peavad vabastama ressursid enne tagasipöördumist väljakutsuvasse funktsiooni
Mitte peatada (välistada) tegumit, kui ta omab kriitilist ressurssi
Kriitilised
regioonid ei tohi
sisaldada vigu
Mitte lukustada seadmeid katkestusprogrammides (protsessides)
Kriitilistes regioonides peab
teostama viitade kontrolli]
33. Mis on prioriteetide inversioon, selgitada selle tekkimist?
Kui madalama prioriteediga tegum blokeerib kõrgema prioriteediga tegumi (t1 pöördumine kriitilise
ressursi poole).
34. Kuidas töötab päritava prioriteediga
protokoll (priority inheritance protocol)?
Kõrgema prioriteediga tegum püüdes kasutada madalama prioriteediga tegumi poolt hõivatud kriitilist
ressurssi, pärandab oma prioriteedi madalama prioriteediga tegumile selleks ajaks, kuni nõutav ressurss
vabaneb.
NB: ei väldi ummikut, võib seda isegi esile kutsuda
35. Iseloomustada prioriteedi laega protokolli (priority
ceiling protocol).
Laiendab prioriteedi pärandamist nii, et ükski tegum ei saa minna kriitilisse regiooni
selliselt , et ta seal
blokeeritakse. Selle saavutamiseks antakse igale ressursile prioriteet, mis võrdne kõige kõrgema seda
ressurssi kasutava tegumi prioriteediga. Sarnane prioriteedi pärandamise käitumisega, lisaks ei saa
tegum minna kriitilisse regiooni, kui seal eksisteerib mõni semafor, mida hoiab tegum, mille “priority
ceiling” on kõrgem või võrdne.
RAS analüüsi teoreetilisi tulemusi
36. Millised eeltingimused peavad olema täidetud tegumi lihtsustatud analüüsiks? Millised on olulised
parameetrid, mida
sealjuures kasutatakse?
RTOS omadused:
1. Enamik RAS-e pärilikult paralleelsed –
suhtlemine keskkonnaga
2. Protsesside seisundit kontrollib operatsioonisüsteem
3.
Seisundite nimetused erinevates RTOS erinevad
4. Protsesside planeerimine (
Process Scheduling) on OS-i fundamentaalne funktsioon. Halvima
juhu strateegia (ettemääratus) määrab planeerimise RAS korral, piirangutest tuleb kinni pidada
◦ Enne täitmist määratud järjekord – fikseeritud prioriteedid
◦ Täitmise käigus määratud järjekord – muutuvad prioriteedid
Tegumi parameetrid:
1. Precedence
Constraints - Eeltingimused - kas mõni tegum vajab, et mingi teine tegum oleks
eelnevalt täidetud
2.
Release Time - Alustamise hetk ri,j – tegumi ti j-nda eksemplari täitmise algushetk
3. Phase - Faas fi – tegumi ti esimese eksemplari täitmise algushetk
4. Response Time - Kosteaeg - aeg tegumi aktiveerimisest kuni tegumi töö lõppemiseni
5. Absolute Deadline - Absoluutne piiraeg di - ajahetk, milleks tegum peab töö lõpetama
6. Relative Deadline – Suhteline piiraeg Di – tegumi maksimaalne lubatud kosteaeg
7. Laxity Type - Lõtku tüüp - võimalikud lõtkud tegumi täitmisel
8.
Period - Periood pi (Ti)- minimaalne ajavahemik tegumi korduvtäitmiste vahel
9. Execution Time - Täitmise aeg ei (Ci)- maksimaalne aeg, mis on vajalik tegumi täitmiseks, kui
talle on kättesaadavad kõik vajalikud ressursid ja tema tööd ei katkestata
37. Tsükliliselt täidetavate programmide (cyclic executives) plaanuri minimaalse ajaühiku (frame)
valiku kriteeriumid.
Kiire reaktsioon ühele sündmusele. Testitakse, kas mingi
lipp on oodatud seisus ja siis täidetakse tegum.
Mitu lippu ja mitu tegumit – cyclic executive.
Ilma katkestusi kasutamata luuakse samaaegse täitmise illusioon – lühikesed protsessid kiires
protsessoris lõpmatus tsüklis – pollitava tsükli edasiarendus.
38. Sagedusmonotoonne (RMA) tegumite planeerimine, eeltingimused RM kasutamiseks, RM puudused
ja eelised.
Eeltingimused:
1. Kõik tegumid on perioodilised
2. Tegumi piiraeg võrdub tegumi järgmise perioodi algusega (piiraeg on võrdne perioodi
kestusega)
3. Tegumid on sõltumatud, puuduvad ühisressursid (I/O, rivid, semaforid, …)
4. Konteksti lülitamise aeg on tühine, seda pole vaja arvestada
5. Tegumite täitmise aeg on
konstantne (ei muutu ajas)
6. Kõik tegumid on võrdse tähtsusega
7. Prioriteedid on staatilised – kõrgema prioriteediga tegum katkestab alati madalama prioriteediga
tegumi täitmise
8. Prioriteedid on määratud vastavalt tegumite perioodile – lühema perioodiga (tihedamini
täidetavate) tegumite prioriteet on kõrgem
9. Ainukesed aperioodilised käsud on seotud süsteemi initsialiseerimisega ja eriolukordade
töötlusega ning ei oma jäiku piiraegu
[RMA ja EDF võrdlus:
•
Määratud situatsioonis EDF annab parema protsessori aja kasutuse
•
Kui olukord kriitiline ja piiraegu enam ei õnnestu rahuldada, siis RMA paremini ettemääratav]
39. Praktiline näide RMA plaanuri kasutamise kohta.
40. EDF (earliest deadline first) plaanuri
algoritm , puudused ja eelised.
Dünaamiline prioriteetide jaotamine, enimlevinud moodus EDF – varaseim piiraeg esimesena st tegum,
mille piiraeg saabub esimesena, saab kõrgeima prioriteedi. Matemaatiline mudel:
41. EDF ja RMA võrdlus.
•
Määratud situatsioonis EDF annab parema protsessori aja kasutuse
•
Kui olukord kriitiline ja piiraegu enam ei õnnestu rahuldada, siis RMA paremini ettemääratav
42. Praktiline näide EDF kasutamise kohta.
43. RAS opsüsteemi valikukriteeriumid.
•
Rahuldab reaalajalisi nõudeid – deterministlik käitumine
•
Tõrgeteta mitme programmi samaaegne töö – multitasking
•
Paindlik ja kindel – flexible, robust
•
[Timeliness – ajalise käitumise
sobivus • Design for
survival under
peak load – käitumine tippkoormusel
• Predictability - ettemääratus
• Fault-
tolerance - tõrkekindlus
• Maintainability – säilitatavus, hooldatavus
• Saadaval erinevad variandid, kogemuse puudumisel raske otsustada. Võimalik
• Uurida sarnaseid süsteeme
• Uurida erinevate RTSO-de käitumist teiste andmete põhjal (näit. Internetist)
• Püüda hinnata objektiivsete kriteeriumite alusel] ??? Kas on õige?
44. Ostetud ja kirjutatud opsüsteemide eelised ja puudused.
Kommertsiaalselt saadaval suur vali RTOS-e
•
PLUSS
1. Standardsete seadmete tugi
2. Võrguprotokollide tugi
3. Arendusvahendid saadaval
4. Multiplatvormsed
5. Kerge kasutada
6. Tootetugi
•
MIINUS 1. Liiga funktsionaalne (palju tarbetut)
2. Hind võib olla liiga suur osa seadme hinnast
3. Halvima juhu (worst case) käitumine pole teada tavaliselt
4. Võimalikud vead kriitilistes osades
45. Milliseid reegleid (kriteeriume) kasutatakse opsüsteemi
valikul erinevate opsüsteemide
võrdlemiseks?
1. Timeliness – ajalise käitumise sobivus
2. Design for survival under peak load – käitumine tippkoormusel
3. Predictability - ettemääratus
4. Fault-tolerance - tõrkekindlus
5. Maintainability – säilitatavus, hooldatavus
6. [1. Minimum interrupt latency - katkestuste latents - aeg
katkestuse tekkimisest kuni
katkestusprogrammi käivitamiseni;
2. Number of tasks supported - paralleelselt käivitatavate tegumite hulk;
3.
Memory requirements - RTOS enda mäluvajadus;
4. Scheduling mechanism - plaanurite hulk ja olemasolu;
5. Intertask synchronization mechanism - protsesside kommunikatsiooni võimalused
(puhvrid,järjekorrad, ühismälu, semaforid jne);
6. Software
support (warranty) - firma tugi (olemas või mitte, tasuta või mitte jne);
7. Software support (compiler) -
rakendustarkvara kättesaadavus ja hulk;
8. Hardware compatibility -
platvormide (protsessorite) hulk;
9. Royalty free/Source
available - opsüsteemi koodi kättesaadavus ja litsentsitasu;
10. Context switch time - konteksti lülitamise (vahetamise) kiirus ja moodused;
11.
Cost - hind, paremad kipuvad kallimad olema;
12. Available alternatives - sobivus teiste opsüsteemidega;
13. Supported
network protocols - võrguprotokollide tugi.] Ei tea kas on õige???
RAS Tarkvarasüsteemi disain
46. Millistest faasidest koosneb manussüsteemide arendustsükkel?
1. esimene faas – iseseisev arvutisüsteem mikroprotsessoril (tavaliselt ilma
operatsioonisüsteemita), mis põhimõtteliselt realiseerib tulevase toote funktsioonid; see faas
realiseeritakse rakendust tundvate spetsialistide poolt, kes ei pruugi olla hiilgavad
arvutispetsialistid; vaadeldav tulevase toote prototüübina;
2. teine faas – lisab süsteemile kasutamise
mugavuse tõstmiseks vajalikud funktsioonid;
tulemuseks on esialgne (s.t. mitte spetsiaalselt
disainitud ) tarkvara
arhitektuur , mis on üsna
juhuslikult modifitseeritud hulgaliselt lisatud täiendavate osadega;
3. kolmas faas – teise faasi täienduste tulemusena on tarkvara struktuur läinud ülikeeruliseks,
tekivad töökindluse probleemid, silumine ja katsetamine muutuvad äärmiselt töömahukaks ja
väheusaldatavaks; projekti kaasatakse professionaalsed
programmeerijad , kogu tarkvara
struktuur projekteeritakse uus, enamasti tuuakse sisse ka operatsioonisüsteem; see faas ei lisa
olulist süsteemi kasutamismugavusele ja funktsionaalsusele, kuid on hädavajalik töökindluse
tagamiseks – selles faasis kulub palju raha näiliselt mitte millegi peale ja tihti jäetakse töö selles
faasis katki;
4. neljas faas –
tulevast toodet vaadatakse kui suurema süsteemi osa, mis peab olema
interaktsioonis end ümbritseva keskkonnaga; lisatakse andmevahetusliides, mis esialgu rahuldab
ettevõttesisest standardit, seejärel viiakse vastavusse mingi rahvusvahelise standardiga; otsitakse
võimalusi realiseerida süsteemi osi ASIC’u abil,
tarkavara ressursimahukus minimiseeritakse,
kood pannakse püsimällu, jne.
47. Millised on RAS
spetsiifilised nõuded
tarkvarale ? (ei tea, kas on õige)
1.
Rakenduse käitumine on oluliselt määratud arvutisüsteemi ja otsustusalgoritmidega
2.
Rakendus koosneb erineva teostusega, omavahel ja väliskeskkonnaga interaktsioonis olevatest
komponentidest
3. Osa komponentidest passiivsed käsutäitjad, osa aktiivsed otsustajad ja käskijad
4. Komponentide koosmõjul tekkiv käitumine ei ole täpselt ette määratud, ega ole ka tuletatav
(mittetäielik info põhjuste kohta,
loenduv hulk alternatiive) – nn. genereeruv käitumine
(emergent behaviour)
5. Määratud on toimimise üldeesmärgid ja füüsikalised,
loogilised ja ajalised kitsendused
6. [Reaalajasüsteemid peavad mõistliku aja jooksul
reageerima väliskeskkonnast tulevatele
mõjutustele.
RAS nouded mää
ravad tarkvara valmistamise eripärad (enamasti tekib sundparalleelsus):
• Joudlus tippkoormusel peab olema ennustatav
• Töökiiruse juhtimine toimub umbritsevast keskkonnast
• Ohutus on sageli kriitilise tä
htsusega • Andmemahud on vä
ikesed voi keskmised
• Aktiivne liiasus (dubleerimine)
• Andmete terviklikkus noutav luhiajaliselt
• Autonoomne vigade avastamine] Ei tea kas on õige ???
48. Nimetada tarkvara elutsükli osad.
1. Nõuete analüüs e. süsteemi analüüs
2.
Spetsifikatsioon – mida toode teeb
3.
Projekteerimine – kuidas teeb
4.
Programmeerimine 5. Koostamine ja
testimine 6.
Hooldus (kasutus)
7. Kasutusest mahavõtmine
49. Mis peab olema ära toodud spetsifikatsioonis? (?)
Spetsifikatsioon tuleb dokumenteerida nii, et see oleks arusaadav potentsiaalsele kasutajale ja samal ajal
saaks seda dokumenti kasutada kliendi ja tarkvara looja vahelise lepingu
koostamiseks .
Spetsifikatsioon peaks lõppema plaaniga:
•
palju
etappe projekt läbib,
•
mis on tähtajad,
•
palju see kõik maksab
•
(Kui spetsifikatsioon näitab, mida tarkvaraprodukt peab tegema)
•
[1. Sissejuhatus
*Süsteemi eesmärk ja vajadus.
*Side organisatsiooni endaga ja teiste
firmadega .
2. Süsteemi mudel
*Vaatepunktide analüüs
*Infotöötluse kohad:
a) Kliendiga suhtlemise kohad
b) Süsteemiga suhtlevad erialagrupid
*Mudeli kirjeldus:
a)Süsteemi komponendid, seosed,
b)sisend, väljund
3.
Funktsionaalsed nõuded
*Kasutajale osutatud teenused
4. Riistvara, tarkvara,
andmeside 5. Andmebaasi nõuded
*Andmete loogiline struktuur
*
Kasutajaliides 6. Kitsendused
*Ajalised kitsendused
*
Standardid *
Mobiilsus ,
reaktsiooniaeg , keel
7. Süsteemi arengu tagamine
*Muutuvate vajaduste rahuldamine]
50. Disaini etapi kirjeldus ja testimine.
•
Kui spetsifikatsioon näitab, mida tarkvaraprodukt peab tegema, siis projekteerimise faas (disaini
faas) määrab kuidas ta seda teeb. Selle faasi ajal:
1. määratakse andmestruktuurid
2. valitakse algoritmid
3. määratakse sisemised andmevood
4. jagatakse
produkt osadeks – riistvara ja tarkvara
5. määratakse mida iga osa teeb ja kuidas teeb
•
Testimine. Kvaliteedi kindlustamise
komisjon kontrollib projekti ja tema elementide vastavust
spetsifikatsioonile.
51. Umbkaudsed
hinnangud tarkvara elutsükli
etappide ajalisele kulukusele kogukulust.
Projekt – hinnang:
•
Valime1 CPU, 100 KLOC – COCOMO hindab 1403 inimkuud
•
Valime 4 CPU, 40 KLOC, 3 x 20 KLOC – COCOMO hinnang 909 inimkuud
•
Valik 5 CPU, 22 KLOC – COCOMO hinnang 1030 inimkuud
Süsteem hinnang – kuidas riistvara lisamine mõjutab olulisi parameetreid – töökindlus,
energiatarve ?
52. Tarkvara loomise meetodid.
1. voomeetod
2. täiustav prog.-e, süsteem kiiresti valmis ja modifitseerida kuni ok
3. prototüüpimine
4.
formaalne transformatsioon , formaalsest spetsifikatsioonist -> transformatsioon korrektse
produktini
5. süsteemi koostamine taaskasutatavatest osadest
6. tarkvara tehased (Toshiba Software Factory)
53. „
Kosk -mudeli” kirjeldus, eelised, puudused,
kasutatavus RAS korral.
Kosk –mudel iseloomustab
klassikalist tarkvara elutsüklit, kus on
seitse etappi :
1. Vajaduste kirjeldus
2. Disain
3. Koodi kirjutamine (
konstrueerimine ,
teostamine )
4. Integreerimine
5. Testimine ja silumine
6. Paigaldus
7. Hooldus
Süsteemianalüüs, Analüüs, Kavandus(projekteerimine), Kood, Test, Hooldus. (ja siis
algusesse tagasi)
•
Eelised
1. Sunnitud
distsipliin 2. Igas faasis määratud
dokumentatsioon 3.
Kvaliteedikontroll igas faasis
•
Puudused
1. Produtseeritakse suur hulk dokumentatsiooni, alati pole see kõik kasulik
2. Valmisprodukt hilinemisega
3. Puhas ‘ülalt-alla’ lähenemine on raske, eriti algajatele
54. Prototüüpmudeli kirjeldus, eelised, puudused.
Kiiskavandus, Prototüüp, Test,
Tellija hinnang. (ja siis algusesse tagasi)
Prototüüpimine on väikeseeriate, väiksemate projektide jaoks.
Prototüüp vähendab tarkvaraprojektide riske, sest:
•
saab katsetada ajapiiranguid,
•
saab veenduda interfeiside sobivuses,
•
tellija näeb väljatöötaja
team ’i potentsiaali,
•
prototüüp veenab tellijat
produkti vajalikkuses .
•
Eelised
1. Varane tagasiside
2. Kiire arendustsükkel
•
Puudused
1. Mitte eriti paindlik
2. Prototüübi loomine “from the
scratch ” võib osutuda raskeks
55. Spiraalmudeli kirjeldus, puudused, eelised, kasutatavus RAS korral.
Boehm’i spiraalmudel e. riskide mudel. RISK on antud mudelis midagi sellist, mis võib
projektis viltu minna e. Ebaõnnestuda. Planeerimine, Riskianalüüs, Produkti loomine, Tellija hinnang.
(ja sedasi käib ringi ja ringi)
•
Eelised
1. Selge riskianalüüs
2. Perioodiline prototüüpimine ja hindamine
3. Hooldus kujuneb samas tsüklis loomisega
•
Puudused
1. Sobib suurtele projektidele (riski hindamine peab olema odavam, kui võimalik “häving”
2. Töötab ainult “sisemiste” projektide korral, alamlepingutega võib mitte toimida
3. Nõuab arvestatavat riskianalüüsi kogemust
[Spiraal-mudel kujutab tarkvaraarendust lõpmatult korduvate tsüklitena.Esimene kordus võib olla
näiteks seotud süsteemi teostatavuse uurimisega, teine nõudmiste kirjeldamisega, järgmine
kavandamisega jne. Mitu kordust on enamasti seotud tarkvara
realiseerimisega , kus tema ehitamine
toimub inkrementaalselt. Kuid kindlasti ei tohiks spiraali korduseid võrdsustada tavapäraste
arendusprotsessi faasidega. Iga kordus on jaotatud 3 kuni 6 sektorisse (erinevad autorid jagavad
erinevalt). Iga kordus algab lähema eesmärgi kavandamise ja riskide hindamisega ning lõppeb nö
kliendiga - ehk eesmärk peab saama täidetud ja kontrollitud. Sektorite töömahukus ei pruugi olla
ühesugune.]
56. Kümme tähtsamat tarkvaraarenduse riskitegurit, vastumeetmed neile.
1. Personali puudused - leida talente, kõigile sobiv töö, parandada team’i korraldust, tõsta
töömoraali, väljaõpe, võtmeisikutega tähtaegade läbiarutamine.
2. Ebareaalsed tähtajad ja
eelarved - teha detailne kulude ja tähtaegade hinnang, koostada eelarve,
tarkvara korduvkasutamine.
3. Valede funktsioonide väljatöötamine - firma tegevuse analüüs, kasutajate
intervjueerimine ,
prototüüpimine,
varased tarbijajuhendid.
4. Vale kasutajaliidese tegemine - tööde analüüs, prototüüpimine, kasutajastsenaariumide
hindamine, kasutajate
iseloomustamine (funktsionaalsus, stiil, töökoormus).
5. nn.
Gold plating (“ülekuldamine”) - nõuete ülevaatus, prototüüpimine, kulude-tulude analüüs,
koostada eelarve.
6. Pidev
muudatuste jada - asetada muudatustele kõrge künnis,kasuta
juurdekasvu mudelit.
7. Altminekud tellitavas riistvaras - hinnangud, inspekteerimised,ühilduvuse kontroll.
8. Altminekud tellitavates töödes - täitjate eelhindamine,võistlustööde või prototüüpide tellimine,
team’i koostamine.
9. Reaalaja jõudluse puudujäägid -
modelleerimine ,eelhindamine, prototüüpimine,
eelhäälestamine.
10. Arvutustehnika võimaluste ülehindamine - tehniline analüüs,kulude-tulude analüüs,
prototüüpimine, kirjanduse viidete ülekontroll.
57. Tarkvara omadused.
1. Väline (kasutajale nähtav) kvaliteet
◦ Kasutatavus - Usability
◦ Usaldusväärsus - Reliability
2. Sisemine kvaliteet
◦ Nõuete kirjeldus
◦ Disaini dokumentatsioon
58. Tarkvara kvaliteedi
faktorid .
1.
Korrektsus - Correctness
2. Usaldusväärsus - Reliability
3. Efektiivsus - Efficiency
4. Terviklikkus - Integrity
5. Kasutatavus - Usability
6. Hooldatavus - Maintainability
7.
Paindlikkus - Flexibility
8. Testitavus - Testability
9.
Portatiivsus - Portability
10. Taaskasutatavus - Reusability
11.
Ristkasutatavus - Interoperability
59. Mis on tarkvara usaldusväärsus? Usaldusväärsuse funktsioon.
•
Usaldusväärse tarkvara
karakteristikud 1. The system “stands the test of time.”
2.
There is an absence of
known catastrophic errors; that is, errors that
render the system
useless.
3. The system recovers “gracefully” from errors.
4. The software is robust.
5. [Tõenäosus, et süsteem töötab mingi aja ilma vigadeta.
rt(t) = 1 -> töötab ‘
igavesti ’ ilma tõrgeteta – ebareaalne olukord
Tuumajaamas vaja tõenäosust 10-9 tõrget tunnis - > r(t) = (0.99999999)]
•
RAS lisa
1. Downtime is
below a certain threshold.
2. The
accuracy of the system is within a certain tolerance.
3.
Real -time
performance requirements are met consistently (järjekindlalt).
60. Miks tarkvaras avastatud vigade hulk ajas alguses kahaneb ja piisavalt pika aja mõõdudes uuesti
kasvama hakkab?
•
Bathtub funktsioon
•
Tõenäosus, et süsteem töötab mingi aja ilma vigadeta
•
rt(t) = 1 -> töötab ‘igavesti’ ilma tõrgeteta – ebareaalneolukord
•
Tuumajaamas vaja tõenäosust 10-9 tõrget tunnis - > r(t) = (0.99999999)t
61. Mis on tarkvara a) jõudlus, b) kasutatavus, c) ristkasutatavus, d) hooldatavus, e) portatiivsus, f)
kontrollitavus (verifiability)?
Jõudlus – Performance. Mingi nõutud ajalise käitumise mõõt. Moodused hindamiseks:
•
Algoritmide keerukuse matemaatiline hindamine
•
Reaalse süsteemi kasutamine (loogikaanalüsaatorid jms)
Kasutatavus – Usability:
•
Tihti ka kasutusmugavus – kui kerge on tarkvaraga ümber käia. Vaja hinnata sihtgruppi –
algajale hoopis teised nõudmised kui kogenud kasutajale. Mõõtmine väga raske, põhiline
meetod: tagasiside
kasutajalt •
RAS korral tihti traditsioonilisest hoopis erinev kasutajaliides
Ristkasutatavus – Interoperability:
•
Süsteemi kooskasutatavus ja sobivus teiste süsteemidega. Siinid, protokollid, kommunikatsioon
Hooldatavus – Maintainability:
•
Mõõt, kui lihtne sisse viia muudatusi (evolvability) ja parandada vigu (repairability).
Objektiivne hindamine raske – osaline hinnang võimalik meeskonna kogemuste järgi ja
eelnevate projektide põhjal
Portatiivsus – Portability:
•
Riistvaraplatvormi vahetamine, opsüsteemi vahetamine. Mõõtmine keeruline, eriti RAS korral
Kontrollitavus – Verifiability:
•
Kõigi eelnevate parameetrite mõõtmise võimalus. Ajakriitilise RAS puhul kõige olulisemad piir-
ajad ja usaldusväärsus
62. Mis on
protseduur -orienteeritud disain, selle puudused ja eelised? (?)
•
Instruktsioone grupeeritakse protseduurideks / funktsioonideks –võimalik luua
mooduleid,struktureerida programmi
•
RAS korral pakub huvi
1. Parameter
Passing Techniques - Erinevad parameetrite
edastamise meetodid
2.
Dynamic Memory
Allocation - Dünaamilise mälujagamise meetodid
3.
Strong typing - Jäik tüpiseerimine
4. Abstraktsed andmetüübid
5. Eriolukordade töötlus
6. Modulaarsus
63. Mis on objekt-orienteeritud disain, selle puudused ja eelised?
Objektorienteeritud disaini puhul jagatakse süsteem arusaadavateks ja hallatavateks osadeks. Need on
suhteliselt iseseisvad ning osade loomisel arvestatakse, et neid peaks saama mitmes olukorras kasutada.
Keerukamatel juhtudel tuleb enne kogu loodavat süsteemi
senikaua kihtideks või osadeks jagada, kuni
osade realiseerimist on võimalik ja mõistlik detailsemalt objektide ja nende omaduste ja toimingute abil
kirja panna.
[Abstraktsed andmed, Pärilikkus, Polümorfism, Sõnumivahetus!
Printsiibid :
Klassid avatud laiendamisele, suletud muutmisele –
Open -Closed Principle
Kõik konstandid, dokumentatsioon, sarnane funktsionaalsus jms ainult ühes kohas – Once and Only
Once Principle
Kõrgema taseme moodulid ei tohi sõltuda madalama taseme moodulitest – Dependency Inversion
Principle]
64. Disaini mustrite (design-patterns) kasutamine.
•
Paar: probleem - lahendus -> disaini muster
•
Muster koosneb:
1. Iseloomustav nimi
2. Lahendatav probleem
3. Lahendus probleemile
4. Järeldused lahendusest
RAS Programmeerimiskeeled, meetrika , testimine, agendid
65. „Cardelli meetrika” – valikukriteeriumid kompilaatori valimiseks?
•
Economy of execution – kui kiiresti programm töötab?
•
Economy of Compilation – kaua võtab aega koodist täidetava programmi saamine?
•
Economy of Small-
Scale Development – kui palju vaeva peab individuaalne programmeerija
nägema?
•
Economy of Large-Scale Development – kui palju vaeva peab programmeerijate
meeskond nägema?
•
Economy of
Language Features – kui palju vaeva on vaja keele õppimiseks?
66. Assembler, selle eelised ja puudused RAS korral.
1. Masinkeel
2. Eelised
◦ Täidab protsessori instruktsioone
◦ Kõige kiirem
◦ Ei kompileerita sisuliselt
◦ Kõik süsteemi võimalused vahetult kättesaadavad
3. Puudused
◦ Sõltub protsessorist, ‘porditavat’ koodi raske luua
◦ Silumine ja vigade leidmine vaevaline
◦ Ülevaadet programmist raske saada
◦ Raske õppida
4. Kasutada ‘kõrgemat’ keelt ‘raami’ valmistamiseks – muutujad, funktsioonid, pöördumised jne
67. Milliseid programmeerimiskeele omadusi on vaja teada ja arvestada RAS korral?
RAS korral pakub huvi:
•
Parameter Passing Techniques - Erinevad parameetrite edastamise meetodid
•
Dynamic Memory Allocation - Dünaamilise mälujagamise meetodid
•
Strong typing - Jäik tüpiseerimine
•
Abstraktsed andmetüübid
•
Eriolukordade töötlus
Modulaarsus
68. Parameetrite edastamise meetodid programmeerimiskeeltes.
•
Call -by-
Value ja Call-by-Reference – Kasutada väärtust või kasutada aadressi
1. Väärtuse kasutamisel edasiantav väärtus kopeeritakse ja originaal on
puutumatu .
2. Aadressi (viida) kasutamisel edastatakse asukoht ja originaali saab protseduuris muuta
•
Globaalsed muutujad – kiire ja mugav, samas võimalikettearvamatud muutmised. Väga hoolikalt
dokumenteerida.Mälu kasutus ebaefektiivne, samal ajal ettemääratud.
69. Dünaamiline mälujaotus, kasutamine RAS korral.
Dynamic Memory Allocation:
•
Tihti vaja andmestruktuuride efektiivseks kasutamiseks, katkestuste teenindamisel, lingitud
listide korral jne.
•
Vaja leida
kompromiss efektiivsuse, arusaadavuse ja dünaamilise mälujagamise ajakulu vahel.
•
(Tüüpiline dünaamilise mälujagamise skeem – internal fragmentation – mäluplokkide suurus ei
ole täisarv korda nõutud mälu suurus)
70. Objektide sünkroniseerimise moodused OOP korral.
•
Synchronized Objects – klassikalised sünkroniseerimisemeetodid (mutex) kui vaja kasutada
erinevates lõimedes
•
Encapsulated Objects – kui teise objekti sisse ‘kapseldatud’, siis sünkroniseerimine objekti
funktsioon
•
Thread -
Local Objects – pole vaja sünkroniseerida, lõime osa
•
Objects Migrating
between Threads – omandusõigus antakse üle lõimelt lõimele
•
Immutable Objects – ei muudeta, väärtused (seisund) fikseeritakse loomisel, ei vaja
sünkroniseerimist
•
Unsynchronized Objects – ühelõimeliste programmide korral pole vaja sünkroniseerimist
•
Sünkroniseerimismehhanismide lisamine objektidele lisab koodi, mida pole vaja, kui
sünkroniseerimist ei kasutata – näit.
class library tegemisel lisab koormust
71. Millal on reaalajasüsteemide programmeerimisel parem kasutada objektorienteeritud keeli, millal
protseduurorienteeritud keeli?
Protseduur vs OO:
•
Sõltub olukorrast
◦ Manussüsteemid - enamasti OO ei sobi
1. Programmi töökiirus
2. Ajaline ettemääratus
3. Programmi suurus
◦ PC (ja analoogilised) süsteemid – OO eelistatud
1. Arendamise mugavus
2. Arendamise kiirus
[Objektorienteeritud keeled:
Võimaldavad suurendada programmeerija
efektiivsust , koodi usaldatavust, koodi korduvkasutatavust
RAS korral Smalltalk, C++,
Java , C#, Ada 95 –
toetavad abstraktseid andmeid, kapseldumist,
pärilikkust, polümorfismi ja läkituste (teadete) vahetust
OO keelte korral
Objektide sünkroniseerimine
Garbage Collection]
72.
Enamkasutatavad programmeerimisekeeled RAS korral.
1. Ada 95 – arendatud spetsiaalselt RAS tarbeks, paljude probleemide tõttu ei leidnud
loodetud laia
kasutust 2. C –
70ndate alguses, ‘low-level’ programmeerimiseks
3. C++ - OO
laiendus 4. C# - MS Javalaadne .NET platvormi jaoks
5.
Fortran – 50ndate keskelt alates RAS kasutusel
6. Java – OO keel, algselt virtuaalmasinale loodud,interpreteeritav
7. RT Java – Ajaliselt ‘paremini’ ettemääratud käitumine
8. PEARL, RT Euclid, RT C, RT C++, MACH jne
73. Iseloomustada reaalajasüsteemide programmeerimisel kasutatavuse seisukohalt C, C++, C#, Java
programmeerimiskeeli.
C:
•
C – ‘masinläheduselt’ järgneb assemblerile. Olemas andmetüübid
character , byte, bit, address
jne, samuti andmete paigutamise/klassifitseerimise tüübid register,volatile, static,
constant •
Olemas ka raskestianalüüsitavad / mitteetteennustatavad
konstruktsioonid printf, scanf jms
•
Olemas minimaalne eriolukordade töötluse
mehhanism •
Enamasti parim valik manussüsteemide jaoks – struktureeritav ja paindlik, samas ilma keeruliste
piiranguteta
C++:
•
Laialt kasutatav, C-le lisatud OO võimalus – class, structure, union
•
Enamik probleeme viitade väärast kasutamisest
•
Programmi struktuur võimalik ajada tarbetult keeruliseks
•
Programmi saab teha seguna
objektidest ja funktsioonidest – raskesti hoomatav
•
Ei ole
string -tüüpi, STL lisab
•
Ei ole sisseehitatud ‘mälukoristust’ (garbage collection)
•
Lubab väga ‘raualähedast’ koodi
C#:
•
C++ ja Java segu (MS Java )
, võimas ja mugav keel,teenimatult vähe kasutatud. .NET
framework (raamistik)
analoog JVM-le, välditud mitmeid JVM vigu. DotNET (.NET) on olemas
ka Linux-le ja
Windows CE-le (RAS kasutusteks)
Java:
•
Interpreteeriv keel, mis töötab manageeritud keskkonnas (virtuaalmasin), platvormist sõltumatu
•
Olemas ‘
native -code’ Java kompilaatorid
•
Olemas Java-käsustikuga protsessorid
•
Ajaline käitumine raskesti määratav
•
RT Java korral defineeritud lisaks RT-thread (reaalajalõim),võimalik vältida automaatset
‘mälukoristust’, ajaline käitumine määratud.
74. Milles seisneb programmeerija efektiivsuse mõõtmismetoodika KLOC, mis on
delta KLOC?
KLOC:
•
Lihtsaim mõõt
1. KLOC – kilokoodiridu
või
2. DSI (
delivered source instructions) või
3. NCSS (noncommented source-code statements) – ei sisalda
kommentaare,päiseid,formaadioperaatoreid, makrosid jms
4.
SLOC (source lines of code) – if-then-else on selles metoodikas üks rida
•
Raske neid parameetreid hinnata enne valmistkirjutamist(sarnasuse põhjal hindamine)
•
Parem KLOC kui üldse mitte mõõta
Delta KLOC:
•
Seotud KLOC-ga
•
Sisseviidud muudatuste mõõt (mitu rida muudetud mingiperioodi jooksul), peaks töö käigus
vähenema, iseloomustab ka efektiivsust
75. Mida mõõdab McCabe meetrika (cyclomatic compexity), kuidas seda rakendatakse?
Võtab arvesse ka keerulisust – lineaarselt sõltumatute ‘teede’ hulk programmimoodulis – numbri
suurenedes keerukus suureneb ja usaldatavus väheneb. Kui e – sõltumatute teede hulk, n – sõlmede
hulk, siis enamkasutatav hinnang keerulisusele
C = e – n + 2
Joonisel keerulisus vastavalt 1, 2, 2, 3
76. Mille poolest erinevad terminid „bug”, „
error ”, „fault” ja „
failure ”?
•
Bug – midagi, mis on sattunud programmi arusaamatul viisil (‘
putukas ’)
•
Error (
defect ) – viga nõudmistes, disainis või koodis
•
Fault – viga (tõrge), mis ilmneb tarkvarasüsteemi töötamisel
•
Failure – tõrge, mis põhjustab süsteemi ‘riknemise’ (töökõlbmatuse), nõuetele mittevastavuse
töö ajal
77. Mis on tarkvara musta kastina testimine (
black -box
testing )?
Black-Box testing –
sisendid ja väljundid vaatluse all, kuidas väljund saadakse ei uurita. Eeltingimuseks
selge (
korrektne ) interfeisi
defineerimine (määratus)
•
Exhaustive testing (põhjalik) – kõigi võimalike sisendkombinatsioonidega testimine (5 sisendit,
16- bitised täisarvud – 280 võimalust
)
•
Boundary-value testing – piirväärtuste testimine (min, max, keskmine)
•
Random test generation – juhuslike väärtustega testimine (statistiline käitumine,sarnane
reaalsete tingimustega)
•
Worse -case testing – halvima(te) juhtudega testimine (sellised kombinatsioonid,mida suure
tõenäosusega ei esine ja mille korral kood käitub
ebaefektiivselt )
•
Musta kasti testid ei ‘näe’ koodi, vaja teisi
meetodeid kasutu koodi jms avastamiseks. Sisuliselt
andmetega juhitav (data driven) testimine
78. Mis on tarkvara valge kastina testimine (white-box testing)?
White-Box testing – loogikaga juhitav testimine. Musta kasti test võimaldab testida olukordi, mis on ette
nähtud juhtuma,mitte neid, mida pole ette nähtud. ‘Valge kasti’ testi korral analüüsitakse koodi kõiki
harusid.
•
Koodi inspekteerimine – esitlus ekspertidele rida realt.
•
Formaalsed tõestusmeetodid – programm on osaliselt korrektne (partially correct), kui ta annab
lõpetamise korral korrektse väljundi iga sisendi
kombinatsiooni korral. Programm on korrektne,
kui ta on osaliselt korrektne, ja lõpetab alati – see matemaatilise tõestamise aluseks.
79. Milliseid sisseehitatud
teste reaalajasüsteemides tavaliselt kasutatakse?
RAS korral enamasti kasutatakse mitmeid sisseehitatud teste:
•
Watchdog (kriitilised osad, moodulid)
•
CPU test (aeganõudev, taustkäsk tavaliselt -background processing)
•
ROM test (mitmesuguse keerulisusega kontrollmeetodid)
•
RAM test
•
Lisaseadmed (ADC, DAC, IO)
80. Nimetada riistvaralisi reaalajasüsteemide testimise võimalusi ja seadmeid.
RAS puhul peaaegu paratamatu kasutada riistvaralisi meetodeid:
•
Loogikaanalüsaator
•
Ostsilloskoop Generaatorid
•
Süntesaatorid
•
Multimeeter
81. Mis on agendid, millised omadused eristavad neid „tavalistest” objektidest?
•
Situatsiooniteadlikud
hajusad tehissüsteemid, nende käitumine, mudelid arendusmeetodid
•
Interaktiivsed autonoomsed objektid – agentide kogum – dünaamiliselt muutuvas keskkonnas
•
Iseseisvad programmid
•
Agente võiks vaadelda objektorienteeritud programmeerimisest tuntud klasside järglastena, mis
lisaks klasside omadustele, milleks on:
1. Pärimine ,
2. Andmete kapseldus,
3. Kätkevad ka autonoomsust ning
4. Reaktiivsust.
5. Intelligentsed agendid on lisaks eelnevale veel proaktiivsed.
6. Multiagentsüsteemides on tähtis roll interaktiivsusel (
sotsiaalsus )- tagab vahendid agentide
omavaheliseks suhtlemiseks
82.
Mis on
agendi (agentprogrammi) a)
autonoomsus , b)
reaktiivsus , c) proaktiivsus?
•
Autonoomsus on agendi omadus iseseisvalt tegutseda. Praktiliselt on iga programm, mis ei oota
juhtimist kasutaja või teiste süsteemi komponentide poolt, autonoomne.
•
Reaktiivsus on programmi omadus tüürida oma käitumist vastavalt keskkonnast tulevatele
stiimulitele. Lihtsamad programmid eeldavad keskkonna staatilisust ning seetõttu ei pea olema
reaktiivsed.
•
Proaktiivsus on programmi omadus ise initsiatiivi üles näidata ning püstitada ja ka täita
eesmärke.
Viimased on tavaliselt antud programmeerija poolt. Proaktiivne programm on
suuteline arvestama ka kaugemaid eesmärke kui neid, mis vaid hetkel saavutatavad on ning
seega ei tegutse vaid väliste impulsside
ajel .
•
Tihtipeale
seostatakse agentidega veel omadusi nagu
1. mobiilsus,
2. õppimisvõime,
3.
ratsionaalsus (nad kulutavad minimaalselt ressursse),
4. heatahtlikkus (nad ei tee kurja) ja
5. tõearmastus (nad ei valeta)
6.
Viirused ???
Lisaks
83. Mis on reaalajasüsteem? Mille poolest ta erineb teistest arvutisüsteemidest?
•
Arvutisüsteem töötab reaalajas (is a
real -time computer system)kui süsteemi töö õigsus on
defineeritud mitte ainult algoritmi täitmisel saadud arvutustulemuste alusel (
logical results ), vaid
oluline on ka ajahetk, millal need tulemused saadi.
•
Sama kehtib ka algoritmi poolt kasutatud lähteandmete õigsuse kohta – oluline on nii
lähteandmete mõistlik väärtus kui ka selle väärtuse tekkimise aeg.
•
Lisaks on reaalajas töötav arvutisüsteem vahetult (s.t.inimesest sõltumatult) ühenduses
lähteinformatsiooni allikaga, sageli ka arvutustulemusi kasutava loodusliku või tehisobjektiga.
84. Mis teeb arvutisüsteemist reaalajas töötava arvutisüsteemi? (?)
Reaalajasüsteemid – tegelikkuse uus
komponent – toimib iseseisvalt reaalses maailmas.
Reaalajasüsteem koosneb
tegelikku maailma sisseehitatud arvutist, andurite ja täiturite võrgust, ja
programmidest
Näiteks, aerodünaamiliselt mittestabiilne lennuk ja mittestabiilne keemiline reaktsioon on
realiseeritavad vaid tänu arvuti aktiivsele sekkumisele. Reaalajasüsteem toimib sageli üsna pika aja
jooksul sõltumatult oma kasutajast (inim-operaatorist) ning teeb tema ette seatud ülesannete täitmiseks
omi otsuseid.
85. Reaalajasüsteemide
klassifikatsioon lähtudes piiraegadest.
Nõuded määravad tarkvara valmistamise eripärad (enamasti tekib sundparalleelsus):
1. Jõudlus tippkoormusel peab olema ennustatav
2. Töökiiruse juhtimine toimub ümbritsevast keskkonnast
3. Ohutus on sageli kriitilise tähtsusega
4. Andmemahud on väikesed või keskmised
5. Aktiivne liiasus (dubleerimine)
6. Andmete terviklikkus nõutav lühiajaliselt
7. Autonoomne vigade avastamine
86. Mille poolest erinevad funktsionaalsed ja mittefunktsionaalsed nõuded tarkvarale?
•
Funktsionaalsed nõuded
kirjeldavad süsteemi käitumist – kasutajaleosutatud teenused
1. Kõigi võimalike süsteemi sisendite ja nendega seotud tegevuste kirjeldus
2. Kõigi süsteemi tegevuste kirjeldus
3. Kõigi süsteemi väljundite kirjeldus ja reaktsioon (koste)
•
Mittefunktsionaalsed nõuded – määravad teenuse osutamise kvaliteedi
1. Interfeisid (
liidesed )
2. Jõudlus
3.
Andmebaasid 4. Piirangud
5. Tarkvara omadused
6. Jne
87. Millest lähtudes määratakse olekumuutuja väärtustele kehtivusintervall? Kas ühel olekumuutuja
väärtusel võib olla rohkem kui üks kehtivusintervall? Miks?
Andmete ja sündmuste kehtivuse intervallid – näiteks, andmete kehtivuse
intervall , sündmuste
ekvivalentsuse intervall, sündmuste samaaegsuse intervall
88.
Iseloomustage lühidalt reaalajasüsteemides kasutatavat inimliidest. Mille poolest see võib/võiks
erineda traditsioonilisest arvutiliidesest?
Inimliides võimaldab arvutiga suhelda inimesele sobilike meetoditega. Inimliides peab tagama
juhitava/jälgitava kobara seisundi kohta info esitamise kooskõlalisuse, võimaldama infot vastavalt
vajadusele
filtreerida , hõlpsat juurdepääsu otsuste tegemise abivahenditele.Inimliidese
koosseisus sisaldub tavaliselt ka andmete ajaloo salvestamise ja aruandluse alamsüsteem.
89. Mida kujutab endast eriolukordade töötlus? Miks eriolukordade töötlusel on eriline tähtsus
reaalajasüsteemides?
1. Eriolukordade töötlus hõlmab endas kõike, mis on seotud vigade automaatse
kompenseerimisega, valesti tehtud arvutuste korrigeerimisega, tarkvara ja riistvara
diagnostikaga, rikete puhul süsteemi funktsionaalsuse muutmine jms.
2. Tarkvaralised katkestused – koodiosad annavad juhtimist ühelt teisele üle – käivitab programmi
kood – näiteks eriolukordade töötlus
90. Loetlege ajakitsenduste liigid.
1. jõudluskitsendused – näiteks: käivitusperiood, töö kestus, piirajad,kitsendused sündmuste
järjekorrale; need kitsendused on kasutusel ka planeerimisteoorias (scheduling theory)
programmide täitmise planeerimiseks arvutis
2. kitsendused protsesside
vahelisele interaktsioonile – näiteks,
interaktsiooni alustamise hetk,
protsesside töö sünkroniseerimise režiim (sünkroonne, poolsünkroonne, asünkroonne),
protsesside,sündmuste, tegevuste, sünkroniseerimise täpsus
3. andmete ja sündmuste kehtivuse intervallid – näiteks, andmete kehtivuse intervall, sündmuste
ekvivalentsuse intervall, sündmuste samaaegsuse intervall
91. Loetlege tüüpilisi mittefunktsionaalseid nõudeid tarkvarale.
Mittefunktsionaalsed nõuded – määravad teenuse osutamise kvaliteedi:
1. Interfeisid (liidesed)
2. Jõudlus
3. Andmebaasid
4. Piirangud
5. Tarkvara omadused
6. Jne
92. Kirjeldada multitegumtöötluse tekkimist kahe katkestuse ja „tühja” põhiprogrammiga süsteemis
(põhiprogramm on hüpe iseendale).
93. Mille poolest erineb aja poolt
juhitud süsteem sündmuste poolt juhitud süsteemist? Kas ja miks saab
ühte eelistada teisele?
Sündmuste poolt juhitud süsteemis saab igasugune interaktsioon algatatud olulise
muudatuse tõttu ümbritseva keskkonna olekus, mis toimuvad juhuslikel ajahetkedel. Aja poolt
juhitud süsteemides on kõik interaktsioonid algatatud aja
kulgemise järgi. Arvutisüsteem
kontrollib vahetult möödunud ajaintervallis toimunud sündmuseid ja valib redigeerimiseks
nende hulgast välja olulised. Lisaraskus tekib kellade sünkroniseerimisega.
Kõik kommentaarid