Programm laetakse mällu enne tema käivitamist Protsess võib liikuda põhimälu ja ketta vahet ka töötamise ajal Kasutaja protsess võib asuda erinevates mälu piirkondades Mäluaadress sõnaline aadress programmi tekstis (esimene, counter,...) suhteline aadress objektmoodulis (14 baiti programmi algusest) absoluutne aadress absoluutne aadress tekitatakse: kompileerimise ajal laadimise ajal (kompilaator moodustab suhtelised aadressid) töötamise ajal (protsess töötamise ajal saab nihkuda ühest mälupiirkonnast teise) Kuidas realiseeritakse erinevaid sidumisviise? dünaamiline laadimine (korraldab põhiliselt kasutaja) programm laetakse sisse alles siis kui pöördutakse dünaamiline linkimine linkimise ajal asendusprogramm, mis näitab kuidas vajalik alamprogramm asub (keelte standardfunktsioonide teegid, vajab OS toetust)
mälupiirkonnad. Suurem osa süsteeme lubavad programme laadida enamvähem suvalisse mälupiirkonda. Osa mälupiirkondadest on OS käes (näiteks alumised aadressid alates 000000-st) ja sinna kasutaja- programme laadida ei tohi. Programmi loomisel tuleb moodustada side tema eri osade vahel (funktsioonid, moodulid jne). Kuna programmile antav mälupiirkond ei pruugi kattuda varem valmis genereeritud aadressidega, siis tuleb neid kuidagi modifitseerida ja siduda. Kui koodi kompileerimise ajal on teada tema tulevane asukoht mälus, võib genereerida absoluutse koodi (seda kasutasid MS-DOS .com programmid). Laadimise ajal saab siduda programmi ja reaalse mälu omavahel spetsiaalse tabeli kaudu (relocation table) ja saame nihutatava koodi. Sidumise võib jätta ka koodi täitmise etapile juhul, kui programmi võib töö ajal mälus ümber paigutada (seda moodust kasutavad enamus üldkasutatavaid OS-e). Kui
1. Milles seisneb static typing ja dynamic typing erinevus? Static- Muutuja tüüpi on teada kompileerimise ajal ning seda muuta ei saa. See vähendab vigade hulka programmi töö ajal. Dynamic – Muutuja tüüp selgub programmi töö ajal. 2. Milliseid piiranguid seavad nähtavusele proteced ja package-private (default) nähtavused? Public – nähtav kõigile Package private- nähtav paketi sees Private – nähtav klassi sees Protected – nähtav paketi sees ja alamklassidele 3. Mis on Oracle Java virtuaalmasina (JVM) nimi? Kes ei tea, kukub ainest läbi :)
töö lõpetanud · Juhtida infovahetust põhimälu ja ketta vahel kui mälu ei jätku Loogiline ja füüsiline aadress · Tavaliselt viidatakse protsessori poolt genereeritud aadressile kui loogilisele aadressile (logical address) · Mälu poolt nähtav e. mälu aadressiregistrisse (memory address register) loetud väärtus on aga füüsiline (physical address) · Esimese kahe kompileerimise ja laadimise ajal teostatava sidumise puhul on loogiline ja füüsiline aadress samad; töötamise ajal aga võivad need erineda. · Viimasel juhul nimetatakse loogilist aadressi tihti virtuaalseks (virtual address) MMU · Aadressi teisendamise korraldab mäluhaldur · MMU (Memory Management Unit) riistvaraline seade loogiliste aadresside füüsiliseks teisendamiseks. · Kasutajaprogramm tegeleb oma loogiliste aadressidega (0...max) ega näe otseselt
ja Wezer'i vahel`` (rääkides Ida-Friisiast, mis on Friisimaa ja ida suunas). 5 Friisia tavapärane seadus, mis on Lex Frisionumi kirja pandud, oli arvatavasti eksisteerinud sajandeid. Ainult siis kirjutati see üles, kui Charlemagne oli vastavalt määranud. See arvatavasti toimus vahemikus 785-793 p.Kr. Kogu seadus kodifitseeriti ühe korraga; tänapäeva teadlased ei toeta kompileerimise teooriat (see eeldab, et seadus koosnes segmentidest, mis hiljem kirjutati üles üksteisest iseseivalt, mitme aastaste intervallidega) Igal juhul nõustutakse, et Lex Frisionum on kirja pandud peale 785. aastat : sellel aastal viisid Frangid lõpuni Friisia vallutamise, mässajast juhi Widukindi lüüa saamisega. Alles siis oleks saadud alustada kogu Friisia seaduste üleskirjutamisega. Siems (1980) eeldab, et Lex Frisionum koostati koostöös 802/803 Reichstag'iga Aachenis
käigus kasutatavate andmete leviedastusega, kuid niipea kui selgub, et spekulatiivtöötlus polnud õiguspärane, siis koheselt teavitab ta teisi protsessorüksusi sellest, et levitatud andmed olid kehtetud. 62. Multiskalaarse protsessori mikroarhitektuurne mudel. 63. Programmi ettevalmistamine töötluseks multiskalaarses arvutis. Et tavalist jadaprogrammi saaks multiskalaarses protsessoris töödelda, tuleb see eelnevalt ette valmistada. Lähteprogrammi kompileerimise käigus esitatakse programm juhtvoograafina (JVG), mille tippudes asuvad programmi baas- ehk põhiplokid. Graafi kaared näitavad programmis käsuvoogude kulgu ühest põhiplokist teise. 64. Juhtimis- ja andmesõltuvused multiskalaarse protsessori tegumites. Tuleb eristada juhtimissõltuvusi, mis tekivad tegumi sees ja mis tekivad tegumite vahel. Lähtuvalt JVG-st, töödeldakse tegumeid järgnevuses: R1 -> R2 -> R3. Tegumi käskude töötlemisel saadakse tulemid (andmed), mida kasutatakse nii
mis teostatakse täisarvulistel operandidel. Võimalikud tehnoloogiad käsukonveierite seisakute vältimiseks: Dünaamiline ajastamine (Dynamic Sceduling), mille puhul riistvara korraldab programmi koodi käivitamise ümber, et vähendada seisakuid. See tehnoloogia aitab lahendada juhtumeid, kus käsutäitmise sõltuvused üksteisest on teadmata programmi kompileerimisel ja lihtsustab kompileerimise protsessi ning lubab ühe konveieri jaoks kirjutatud koodi efektiivselt käivitada mitmel konveieril. Spekulatiivne käivitamine (Speculative Execution), mille puhul käivitatakse koodi enne kui on teada, kas selle koodi tulemusi üldse vaja läheb. Seda saab teha juhul kui protsessoril on vabu ressursse. Näiteks täidavad kaasaegsed protsessorid selle meetodiga tingivuslikele hargnevustele järgnevat koodi
tehes neil vahet indeksi järgi 3. objekte (kirjeid), mis võimaldavad ühte "kapslisse" koondada erinevat tüüpi (aga sisuliselt seotud) väärtusi - iga väärtust esindab üks isendimuutuja (instance variable) Massiivi puuduseks on asjaolu, et kui me oleme kord massiivile mälu eraldanud, siis me ei saa enam massiivi suurust muuta (mõnes programmeerimiskeeles eraldatakse mälu massiivile lausa programmi kompileerimise ajal - Javas on vähemasti mälueraldus käitusaegne operatsioon). Et pakkuda programmeerijale vahendeid tööks dünaamiliste (ajas muutuvate) andmekogumitega, on keeles Java terve komplekt liideseid ja klasse, millest mõnedega järgnevalt tutvume (need kuuluvad paketti java.util). Liideste nimed on kaldkirjas, klasside nimed alla joonitud. Collection Set SortedSet TreeSet (korduvate elementideta järjestatud hulk) List
int b; B(int a, int b){ super(a); this.b = b; } protected void meetoda(){ System.out.println("Olen B isend, a = " + a); } void meetodb(){ System.out.println("Olen B isend, b = " + b); } void meetodaAst(){ super.meetoda(); } } Dünaamiline seostamine, hiline seostamine (ingl. k. dynamic method dispatch, late binding) · See, millise meetodi poole täpselt pöördutakse, otsustatakse mitte kompileerimise, vaid programmi täitmise käigus. (Ülekatte puhul just nii tehaksegi) · Olgu klass K1 klassi K2 alamklass, klass K2 klassi K3 alamklass, ..., Kn-1 klassi Kn alamklass. · Kui o on klassi K1 isend, siis on ta ju ka K2 ,..., Kn isend. · Vastavat meetodit hakatakse otsima alates K1 ja kui leitakse, siis rakendatakse. Erinevad klassid koertega, haukumine. public class KoerteTest { public static void main(String[] args){ Koer k1 = new VeneKoer("Sarik");
Directory of C:Projectsomanaited 30.05.2006 10:52
Microsofti raamistiku puhul on selleks MSIL (Microsoft Intermediate Language). 2. Teise sammuga käivitamise hetkel CLRi kooseisus olev kompilaator kompileerib MSILi masinkoodi, mida protsessor hakkab täitma. Kompileeritakse vaid need osad programmist, mida kasutatakse e. kompileerimine on kiire, kuigi esimene käivitamine võib olla aeglasem kui kohe binaarsel kujul oleval programmil. Viimasel hetkel kompileerimise eelis seisneb selles, et protsessorile käivitamiseks mõeldud binaarset koodi on võimalik optimeerida täpselt selle protsessori jaoks, mis hakkab programmi jooksutama. Ei ole vahet, kas protsessor on 32 või 64 bitine jne. Tulles nüüd tagasi Microsofti .NET platvorm juurde siis see pole mitte üksnes CLR, vaid toodete kogumik, mis sisaldab kõiki vajalikke vahendeid jagatud rakenduste ehitamiseks, pakkudes keelest