Muistihierarkia Kiintolevyt I/O:n toteutus. Käännös, Linkitys Lataus

Samankaltaiset tiedostot
Muistihierarkia Kiintolevyt I/O:n toteutus

Tietokoneen toiminta Teemu Kerola, Copyright Muistihierarkia

Muistihierarkia. Virtuaalimuisti. Tiedostojärjestelmä. Levymuistin saantiaika. Tietokoneen toiminta Luento 9, Ulkoinen muisti ja I/O 1

Käännös, linkitys ja lataus

Järjestelmän ulkoinen muisti I/O

Muistihierarkia Kiintolevyt I/O:n toteutus

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Jakso 10 Ohjelman suoritus järjestelmässä

Luento 10 Käännös, linkitys ja lataus

Luento 10 Käännös, linkitys ja lataus. Käännös Linkitys Dynaaminen linkitys Lataus

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti

Luento 10 Käännös, linkitys ja lataus

Lausekielestä suoritukseen (3) Luento 10 Käännös, linkitys ja lataus. Assembler-kielinen käännösyksikkö (2) Käännösyksikkö (4) Objektimoduuli (8)

Jakso 10 Ohjelman suoritus järjestelmässä. Käännös Linkitys Dynaaminen linkitys Lataus

Luento 9 Järjestelmän ulkoinen muisti. Muistihierarkia Kiintolevyt Muut pyörivät levyt I/O:n toteutus

Jakso 10 Ohjelman suoritus järjestelmässä

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti

Lausekielestä suoritukseen (3) Luento 10 Käännös, linkitys ja lataus. Assembler-kielinen käännösyksikkö (2) Objektimoduuli (2) Symbolitaulu

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti

Luentokerta 5 Ohjelman toteutus järjestelmässä (prosessi, käyttöjärjestelmä) Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti. Muistihierarkia Kiintolevyt Muut pyörivät levyt I/O:n toteutus

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti

Prosessi (4) Luento 8 Ohjelman toteutus järjestelmässä. Prosessin elinkaari (10) Prosessin vaihto (4) Prosessin esitysmuoto järjestelmässä (4)

Tietokoneen toiminta, K Tavoitteet (4)

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Jakso 8 Ohjelman suoritus järjestelmässä

Jakso 8 Ohjelman suoritus järjestelmässä

Prosessi (4) Suorituksessa olevan ohjelman esitysmuoto järjestelmässä. Jakso 8 Ohjelman suoritus järjestelmässä. Prosessin elinkaari (9)

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti. Ohjelman muistiosoitteet (3) Virtuaalimuisti (3) Virtuaalimuistin toteutus.

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti. Ohjelman muistiosoitteet (3) Virtuaalimuisti (3) Virtuaalimuistin toteutus (2)

Luento 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä

Jakso 4 Aliohjelmien toteutus

Tietokoneen toiminta, K Tavoitteet (4)

Luento 12 Yhteenveto. Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, K2000

Luento 4 Aliohjelmien toteutus

Luento 12 Yhteenveto. Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? 29/01/2001 Teemu Kerola, Copyright 2001

Luento 4 Aliohjelmien toteutus

Luento 1 Tietokonejärjestelmän rakenne

Jakso 4 Aliohjelmien toteutus

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 12 Yhteenveto

Luento 12 Yhteenveto

Luento 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Jakso 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä

Tietokoneen toiminta Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, Copyright 2010

Luento 12 Yhteenveto. Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat?

Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, Copyright Tavoitteet (4)

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.

Luento 12 Yhteenveto. Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, Copyright 2010

Luento 12 Yhteenveto

Tavoitteet (4) Luento 12 Yhteenveto. Keskeisiä asioita. Mitä hyötyä tästä on? (2) Esimerkkikone: TTK-91 laitteisto suoritin - CPU

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Tietokoneen toiminta, Kevät Copyright Teemu Kerola Järjestelmän eri tasot Laitteiston nopeus

Kertausluento 1 (lu01, lu02, lu03) Tietokonejärjestelmän rakenne ttk-91 ja sillä ohjelmointi

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä

Kertausluento luennoista 1-3 1

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Luento 3 (verkkoluento 3) Ttk-91 konekielinen ohjelmointi. Ohjelman esitysmuoto Konekielinen ohjelmointi ttk-91:llä (Titokone, TitoTrainer)

Jakso 2 TTK-91 -tietokone ja sen KOKSI -simulaattori

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Teemun juustokakku Rekisterien, välimuistin, muistin, levymuistin ja magneettinauhan nopeudet suhteutettuna juuston hakuaikaan juustokakkua tehdessä?

Tietokoneen toiminta Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, Copyright 2003

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Jakso 8 Ohjelman toteutus järjestelmässä

Jakso 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit

Jakso 2 TTK-91 -tietokone ja sen KOKSI -simulaattori

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

1. Keskusyksikön rakenne

Jakso 5 Suoritin ja väylä

Jakso 8 Ohjelman toteutus järjestelmässä

Luento 12 Yhteenveto. Tavoitteet. Keskeisiä asioita. Mitä hyötyä tästä on? Esimerkkikone: TTK-91 laitteisto. Tietokoneen toiminta 27.4.

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 5 (verkkoluento 5) Suoritin ja väylä

Jakso 5 Suoritin ja väylä

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Ulkoinen muisti ja IIO:n toteutus

Oppimistavoitteet kurssilla Tietokoneen toiminta

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Transkriptio:

Kertausluento 4 (lu9, lu10) Järjestelmän ulkoinen muisti Käännös, linkitys ja lataus Muistihierarkia Kiintolevyt I/O:n toteutus Käännös, Linkitys Lataus 1

Muistihierarkia ks. Fig 4.1 [Stal10] (ks. Fig 4.1 [Stal03]) Ulkoinen muisti on halvempaa toteuttaa per tavu Ulkoinen muisti on hyvin paljon hitaampaa kuin sisäinen muisti Aika/tila optimointi suuret tietomäärät täytyy (kannattaa) kustannussyistä pitää ulkoisessa muistissa pienet tietomäärät täytyy (kannattaa) tehokkuussyistä pitää sisäisessä muistissa Kaiken viitatun tiedot tulee suoritusaikana olla sisäisessä muistissa! 2

Virtuaalimuisti Osa muistihierarkiaa Vastaus ongelmaan miten tehdä suoritusaikaisesta muistista yhtä suuri kuin levymuisti ja yhtä nopea kuin keskusmuisti? Kaksitasoinen: keskusmuistissa kulloinkin käytössä olevat alueet levyllä kaikki tiedot kopiointi tarvittaessa Muisti väylä levy 3

Virtuaalimuistin toteutus Toteutustavat kanta- ja rajarekisterit sivutus (segmentointi ja sivuttava segmentointi) Pääosa toteutuksesta ohjelmistotasolla Laitteistotuki MMU muistinhallintayksikkö nopeuttaa viitatun muistipaikan todellisen osoitteen laskentaa osoitetta ei tarvitse laskea usealla konekäskyllä, kun MMU tekee sen laitteistotasolla rakenne ja toiminta vaihtelee virtuaalimuistin toteutustavan mukaan Lisää tietoa? Käyttö- järj. Tietokoneen rakenne 4

Tiedostojärjestelmä KJ:n osa, hallitsee kaikkia tiedostoja Valvoo oikeuksia tiedostoa avattaessa Muuntaa tiedostonimet fyysisiksi osoitteiksi Ylläpitää taulukoita, joista näkee mitä kohtaa mistäkin tiedostosta kukin prosessi on käsittelemässä Tiedostojärjestelmä lukee ja kirjoittaa tiedostoja suurina kerralla käsiteltävinä lohkoina (0.5-8 KB?) käyttäjätason prosessit käsittelevät tiedostoja tavuittain eikä niiden tarvitse tietää tiedoston todellista fyysistä rakennetta (KJ:n laiteajuri huolehtii siitä) 5

Levymuistin saantiaika Tiedon osoite: levypinta + ura + sektori laiteajuri etsii KJ-taulukoista loogisen osoitteen perusteella Saantiaika: hakuvarren siirtoaika ks. Fig 6.2 [Stal10] (ks. Fig 6.2 [Stal03]) (seek time) Esim: aver 6.3 ms, min-max 2-15 ms? odota kunnes sektori kohdalla (rotational delay) Esim: pyörähdysviive kun 3600 rpm: 8.33 ms (keskim. puolen kierroksen aika) siirrä sektorin verran tietoa (data transfer time) Esim: pyör.aika / sekt. lkm = 0.42 ms 6

Tiedoston talletus levylle Tiedosto koostuu useista lohkoista lohko per sektori (lohko per usea sektori?) Levyn hakemistossa on tieto kunkin tiedoston käyttämistä lohkoista luetaan lohkot annetussa järjestyksessä hakemisto alkio FileA (unix) indeksi lohko lohko lohko lohko lohko 7

Levyn käyttö Virtuaalimuistin tukimuistina Tiedostojen talletukseen Virtuaalimuistin voi toteuttaa tiedostojärjestelmän päälle (sitä käyttäen), tai päinvastoin! Muisti page page page page page page page page sivu (tdsto) sivu (tav.) Väylä Levy VM tukimuisti sivu sivu sivu sivu sivu sivu sivu sivu Tiedostot lohko lohko lohko lohko 8

Laiteohjain (I/O Moduuli) Muisti väylä suoritin käyttäjäprosessi laiteajuri KJ prosessi (tai aliohjelma?) laite data c/s laiteohjain laiteohjainprosessi (device controller, device controller process) laite Ks. Fig 7.4 [Stal10] (ks. Fig 7.4 [Stal03]) 9

Laitteiden käytön toteutus ks. laiteohjainkuva (ed. kalvo) Käyttäjäohjelma kutsuu käyttöjärjestelmän laiteajuria tekemään I/O:n. Laiteajuri suoritetaan samalla suorittimella kuin käyttäjäohjelmakin. Laiteajuri ohjaa laitteen toimintaa laitteen laiteohjaimella olevien kontrollirekisterien (muistialue c ) avulla Laiteajuri voi lukea laitteen tilatietoa laiteohjaimella olevien statusrekisterien (muistialue s ) avulla Laiteajuri voi lukea (kirjoittaa) laitteen lukemaa (laitteelle kirjoitettavaa) tietoa laiteohjaimella olevien datarekistereiden (muistialue data ) avulla Kontrolli-, status- ja datarekisteri kolmikko muodostaa I/O portin suorittimen näkökulmasta 10

Laiteohjaimen rekistereihin viittaaminen Ongelma: miten suorittimella suorittavan laiteajuri viittaa eri kortilla oleviin rekistereihin (muistiin)? Ratkaisu 1: omat I/O-konekäskyt tätä tarkoitusta varten käskyssä annetaan laiteohjaimen identifikaatio ja laiterekisterin nro (oma I/O osoiteavaruus) vaikea laajentaa käyttöä uusiin laitteisiin, joilla laiterekisterit voivat olla hyvinkin erilaisia suorittimen konekäskyjä ei voi muuttaa ks. laiteohjainkuva x86: IN, OUT INS, OUTS KOKSI: IN, OUT 11

Ratkaisu 2: muistiinkuvattu I/O Laiteajuri lukee/kirjoittaa laiteohjaimella olevia rekistereitä (data, status/kontrolli) tavallisilla muistin luku/kirjoitus käskyillä ei tarvita erillisiä I/O-konekäskyjä! laiteohjaimella olevat laiterekisterit ovat samanlaista viitattavaa muistia kuin normaali muisti muistisoitteen ensimmäiset bitit (ei siis käskykoodi) valitsevat, mille laitteelle (vai tavallisen muistiin) viittaus kohdistuu DiskCtr EQU 0x80000001 voidaan käyttää rinnan I/O käskyjen kanssa (laiterekistereihin voi siis viitata sekä I/O-käskyillä että muistiinkuvatun I/O:n avulla) esim. Intelin arkkitehtuurit ks. laiteohjainkuva load R1,=DiskRd store R2, DiskCtr 12

I/O tyypit Suora I/O: laiteajuri odottaa tiukassa silmukassa, kunnes laiteohjaimen statusrekisteri ilmoittaa I/O-pyynnön valmistuneen laiteajuri siirtää tietoa muistin ja datarekisterin välillä Epäsuora I/O: I/O:n odotusaikana suorittimella suoritetaan jotain muuta ohjelmaa Kun I/O-pyyntö valmistuu, laiteohjain antaa keskeytyksen (laitekeskeytys, I/O interrupt) suorittimelle, joka (jonkin ajan kuluttua) jatkaa kesken jäänyttä I/O-pyynnön esittänyttä ohjelmaa. laiteajuri siirtää tietoa muistin ja datarekisterin välillä ks. laiteohjainkuva (direct I/O, programmed I/O) (indirect I/O interrupt driven I/O) 13

I/O tyypit (jatkoa) DMA - Direct Memory Access Älykkäämpi laiteohjain ks. laiteohjainkuva Laiteohjain voi suoraan kopioida tiedot keskusmuistiin laiteajurin ei tarvitse laiterekistereitä käyttäen siirtää tietoa muistin ja datarekisterin välillä Tieto kulkee väylän kautta vain yhden kerran! Laiteohjain tekee paljon suuremman määrän työtä itsenäisesti (kuin epäsuorassa I/O:ssa) ennen suorittimelle annettavaa laitekeskeytystä 14

Tiedostopalvelin (Lähi)verkossa oleva palvelin Käytettäessä tiedoston (osien) kopio on muistissa (ja ehkä myös paikallisella levyllä) orig. tiedosto tiedoston kopio? Tiedostopalvelin suoritin muisti suoritin muisti väylä väylä levy levy 15

Esimerkki: kirjoittimen laiteajuri ttk-91 koneelle Laitteella voi tulostaa kokonaislukuja yksi kerrallaan Muistiinkuvattu I/O, suora I/O Laiteportti kontrollirekisteri muistipaikka 1048576 = 0x80000 tilarekisteri muistipaikka 1048577 = 0x80001 datarekisteri muistipaikka 1048578 = 0x80002 Laiteajuri Print toimii etuoikeutetussa tilassa Kutsu: PUSH SP, =0 ; space for return value PUSH SP, X ; parameter to print SVC SP, =Print ; returns Success/Failure POP SP, R1 JNZER R1, TakeCareOfTrouble 16

Esim: laiteajurin toteutus (12) ptrctr DC 1048576 ; control register address ptrstat DC 1048577 ; status register address ptrdata DC 1048578 ; data Print register PUSHR address SP ;save regs retval EQU -3 LOAD R1, pardata(fp) pardata EQU -2 Oleta: SVC:n ja IRET:n toteutus samalla tavalla kuin CALL ja EXIT (kesk.) ks. laiteohjainkuva Solution with no timeout STORE R1, @ptrdata ; data to print LOAD R1, =0 STORE R1, @ptrstat ; init (clear) state register LOAD R1, =1 STORE R1, @ptrctr ; give command to print ptrctl ptrstat ptrdata 1 01 200 See: driver.k91 Wait LOAD R1, @PtrStat ; check state register JNZER R1, Done JUMP Wait ; wait until I/O done Done LOAD R1, =0 ; return Success STORE R1, retval(fp) POPR SP ; recover regs IRET SP, =1 17

Luento 10 Käännös, linkitys ja lataus Käännös Linkitys Dynaaminen linkitys Lataus 18

Lausekielestä suoritukseen Käännös lausekielestä Linkitys muiden ja kirjastomoduulien kanssa Lataus muistiin prosessia varten Käännösyksikkö myprog.c Lausekielinen ohjelma tai moduuli osoitteet: symbolit Objektimoduuli myprog.obj Käännetty ohjelma (konekielellä) osoitteet: lineaariset (per moduuli) Ajomoduuli myprog.exe osoitteet: lineaariset, osa puutteellisia (?) Prosessi Suorituskelpoinen ohjelma osoitteet: lineaariset (virt. avar.?) prog.c prog.o math.l prog 19

Käännösyksikkö Jollain ohjelmointikielellä kuvattu eheä kokonaisuus, joka halutaan aina kääntää yhdessä kaikki yhteen liittyvät aliohjelmat olioperustainen luokka Liian suuri kokonaisuus? turhaa aikaa kääntämiseen joka muutoksen jälkeen Liian pieni kokonaisuus? turhaa aikaa liitoksien suunnitteluun ja toteutukseen muiden moduulien kanssa Käännösyksikön ohjelmointikieli ei ole tärkeä niiden sitominen yhteen tapahtuu objektimoduulien tasolla 20

Assembler-kielinen käännösyksikkö Käännösyksikkö voi olla myös suoraan k.o. koneen symbolisella konekielellä kirjoitettu suoraan käsin kääntäjän generoimana korkean tason kielestä cc -S prog.c Käännöksen tekee assembler-kääntäjä tavallisen kääntäjän asemesta yleensä osa tavallista kääntäjää prog.s prog.o 21

Objektimoduuli Konekielinen koodi moduulin sisäiset viitteet paikallaan (lineaarisessa muistiavaruudessa) moduulin ulkopuoliset viitteet merkitty Linkitystä varten: tiedot niiden osoitteiden RELOCATION TABLE sijainneista, jotka täytyy päivittää, kun moduulin osoiteavaruus yhdistetään jonkin toisen moduulin osoiteavaruuden kanssa linkityksessä tiedot viittauksista moduulin ulkopuolelle IMPORT tiedot kohdista, joista tähän moduuliin saa viitata ulkopuolelta EXPORT symbolitaulu SYMBOL TABLE 22

Kääntäjä generoi Symbolitaulu Ylläpidetään linkityksen aikana Joskus ylläpidetään myös latauksen jälkeen virheilmoitusten tekemistä varten ohjelmien kehitysympäristöt ylläpitävät symbolitaulua koko ajan Jätetään pois valmiista ohjelmasta vie turhaa tilaa 23

(Assembler) kääntäjän ohjauskäskyt Eivät varsinaista koodia niistä ei tule konekäskyjä Ohjaavat käännöstä TTK-91: Pentium 4: DC DS EQU ks. Fig. 7-3 [Tane10] 24

Makrot (kesk.) Helpottavat ohjelmointia Usein toistuville koodisarjoille annetaan nimi makro Makroilla voi olla parametreja useimmiten nimiparametreja (call-by-name) Makrot käsitellään ennen kääntämistä eivät kuulu konekieleen makron kutsu (käyttö) korvataan makron rungolla Esimerkkejä swap aliohjelmien prologi ja epilogi itse tehdyt, kääntäjän käyttämät Erot aliohjelmiin Kutsu ajankohta, call/return, koodien lukumäärä ks. Fig. 7-5 [Tane10] 25

Literaalit Vakioita Niin suuria, että eivät mahdu konekäskyn vakio-osaan... ttk-91: käskyn vakiot 2-tavuisia, arvoalue: -32767 32767... tai muuten vain halutaan pitää datan joukossa eikä käskyjen Pi DC 3.14159265 ; (!!??) yhteyteen One DC 1 talletettuna vrt. One EQU 1 OneMeg DC 1024576 Niitä ei saisi muuttaa LOAD R1, =2 STORE R1, One ; ask for trouble 26

Literaalit Korkean tason kielissä kaikki isot vakiot ovat literaaleja kääntäjän pitäisi estää literaalien muuttamisen FortranX: 5 = 6; N := 35000; LOAD R1, six STORE R1, five literaalia ei saisi välittää viiteparametrina aliohjelma voisi muuttaa sen arvoa? var mystr = literal"??? Java string? Myös joissakin assemblerkielissä literaalien implisiittinen (automaattinen) määrittely helpommin Load R14, =F 234567 luettavaa koodia literaalin 234567 tilanvaraus automaattisesti 27

1. vaihe: Assembler käännös laske käskyjen tilanvaraukset ttk-91 helppoa, koska kaikki käskyt 4 tavua! generoi symbolitaulu arvot, arvon vaatima tavumäärä uudelleensijoitustiedot (omana tauluna?) generoi tai käytä muita tauluja literaalitaulu (tilanvaraus lopuksi) kääntäjän ohjauskäskytaulu operaatiokooditaulu 28

Assembler käännös 2. vaihe generoi lopullinen objektimoduuli tulosta symbolinen konekielinen listaus generoi taulut linkitystä varten osana objektimoduulia anna virheilmoitukset 3. vaihe koodin optimointi voi olla oikeasti ennen 2. vaihetta tai sen yhteydessä (kesk.) ks. seur. kalvo, Kuva 6.3 [Häkk98] ks. Fig. 7-16 [Tane10] 29

TTK-91 objektimoduuli Moduulin otsake EXPORT-hakemisto ( Kuva 6.3 [Häkk98] ) IMPORT-hakemisto Uudelleensijoitushakemisto Koodi ja alustettu data Moduulin lopuke 30

Korkean tason kielen käännös Enemmän vaiheita Syntaktisten alkioiden etsintä Syntaksipuun generointi ja jäsennys Lauseiden tunnistaminen syntaksipuun avulla Välikielen (välikoodin) generointi (ei aina) Koodin generointi ei (yleensä) Java-ohjelmille BEGIN 123.45 IF ( (front end) Välikieliesitys ja symbolitaulut (back end) Lisää tietoa? Kääntäjien ja ohj. kielten kurssit 31

Linkitys esimerkki Neljä moduulia: A, B, C ja D Laske joka moduulille uudelleensijoitusvakio (moduulin alkuosoite) Lisää k.o. vakio kunkin moduulin sisäisiin viitteisiin Etsi kaikki moduulien väliset viitteet, ja aseta kyseisten viitteiden osoitteet oikein ks. Fig. 7-14 [Tane10] (relocation constant) ks. Fig. 7-15 [Tane10] 32

Fig. 7-14 [Tane10] 33

Tasks Performed by the Linker The object modules of Fig. 7-14 after being positioned in the binary image but before being relocated and linked. 34

Tasks Performed by the Linker The same object modules after linking and after relocation has been performed. Together they form an executable binary program, ready to run 35

Staattinen linkitys Tavallinen (staattinen) linkitys vaatii, että kaikki ohjelmakoodissa viitatut moduulit ja kirjastorutiinit on linkitetty ennen suoritusta Ajomoduulista tulee hyvin iso mukana myös paljon moduuleja, joihin ei yhdellä suorituskerralla tule lainkaan viittauksia esim: kääntäjässä koodin optimointikoodi, vaikka koodin optimointia ei suoriteta joka kerta esim: pelissä tasojen 8-22 moduulit, kun aloittelija ei pääse tasoa 3 ylemmäksi vielä kuukausiin 36

Dynaaminen linkitys Jätetään linkityksessä kutsukohdat muihin moduuleihin auki Pienempi ajomoduuli, mutta hitaampi suorittaa Viittaus ratkaisemattomaan (eli ei-linkitettyyn) moduuliin ratkotaan suoritusaikana suoritus keskeytyy ja puuttuva moduuli linkitetään paikalleen (kaikki viittaukset siihen korjataan kuntoon) 37

Lataus Ajomoduulista luodaan suorituskelpoinen prosessi (rakennetaan PCB ja sen viitteet kuntoon) Prosessin koodialueet (tai ainakin sen pääohjelma) ja tarvittava data-alue ladataan muistiin, prosessi siirretään ready (Ready-to-Run) jonoon Sitten kun prosessi saa suoritusvuoron suorittimella, MMU ja laiterekisterit ladataan PCB:n avulla tämän prosessin tiedoilla virtuaalimuistia käytettäessä joidenkin nimien sidonta tehdään viime hetkellä (konekäskyn suoritusaikana) MMU:n avulla 38

Yhteenveto Muistihierarkia Kiintolevyt ja niiden toiminta Tiedostojärjestelmä I/O:n toteutus Käännös, linkitys ja lataus 39