Tietokoneen toiminta Teemu Kerola, Copyright Muistihierarkia

Samankaltaiset tiedostot
Muistihierarkia Kiintolevyt I/O:n toteutus

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

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 1 Tietokonejärjestelmän rakenne

Luento 4 Aliohjelmien toteutus

Luento 1 Tietokonejärjestelmän rakenne

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

Jakso 4 Aliohjelmien toteutus

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)

Kertausluento luennoista 1-3 1

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

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

Jakso 5 Suoritin ja väylä

1. Keskusyksikön rakenne

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 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 5 Suoritin ja väylä

Oppimistavoitteet kurssilla Tietokoneen toiminta

Ulkoinen muisti ja IIO:n toteutus

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 Luento 9, Ulkoinen muisti ja I/O 1

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 Luento 9, Ulkoinen muisti ja I/O 2

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 Esim: aver 6.3 ms, min-max 2-15 ms? odota kunnes sektori kohdalla Esim: pyörähdysviive kun 3600 rpm: 8.33 ms (keskim. puolen kierroksen aika) siirrä sektorin verran tietoa Esim: pyör.aika / sekt. lkm = 0.42 ms ks. Fig 6.2 [Stal10] (ks. Fig 6.2 [Stal03]) (seek time) (rotational delay) (data transfer time) 6 Luento 9, Ulkoinen muisti ja I/O 3

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 sivu page sivu (tdsto) (tav.) Väylä Levy VM tukimuisti sivu sivu sivu sivu sivu sivu sivu sivu Tiedostot lohko lohko lohko lohko 8 Luento 9, Ulkoinen muisti ja I/O 4

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 Luento 9, Ulkoinen muisti ja I/O 5

Laiteohjaimen rekistereihin viittaaminen Ongelma: miten suorittimella suorittavan laiteajuri viittaa ks. laiteohjainkuva 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 x86: IN, OUT INS, OUTS KOKSI: IN, OUT 11 Ratkaisu 2: muistiinkuvattu I/O ks. laiteohjainkuva 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 load R1,=DiskRd store R2, DiskCtr 12 Luento 9, Ulkoinen muisti ja I/O 6

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 (indirect I/O jotain muuta ohjelmaa interrupt driven I/O) 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) 13 I/O tyypit (jatkoa) DMA - Direct Memory Access ks. laiteohjainkuva Älykkäämpi laiteohjain 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 Luento 9, Ulkoinen muisti ja I/O 7

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 Luento 9, Ulkoinen muisti ja I/O 8

Esim: laiteajurin toteutus (12) ptrctr DC 1048576 ; control register address ptrstat DC 1048577 ; status register address ptrdata DC 1048578 ; data register address retval EQU -3 pardata EQU -2 Oleta: SVC:n ja IRET:n toteutus samalla tavalla kuin CALL ja EXIT Print PUSHR SP ;save regs LOAD R1, pardata(fp) STORE R1, @ptrdata ; data to print (kesk.) ks. laiteohjainkuva Solution with no timeout 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 Luento 9, Ulkoinen muisti ja I/O 9

Käännös lausekielestä Linkitys muiden ja kirjastomoduulien kanssa Lataus muistiin prosessia varten Lausekielestä suoritukseen 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 Luento 9, Ulkoinen muisti ja I/O 10

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 Konekielinen koodi Objektimoduuli 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 Luento 9, Ulkoinen muisti ja I/O 11

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 Luento 9, Ulkoinen muisti ja I/O 12

Makrot 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ä (kesk.) 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 vrt. One EQU 1 talletettuna OneMeg DC 1024576 Niitä ei saisi muuttaa LOAD R1, =2 STORE R1, One ; ask for trouble 26 Luento 9, Ulkoinen muisti ja I/O 13

Literaalit Korkean tason kielissä kaikki isot vakiot ovat literaaleja N := 35000; var mystr = literal" kääntäjän pitäisi estää literaalien muuttamisen LOAD R1, six FortranX: 5 = 6;??? STORE R1, five literaalia ei saisi välittää viiteparametrina aliohjelma voisi muuttaa sen arvoa? 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 Luento 9, Ulkoinen muisti ja I/O 14

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 Luento 9, Ulkoinen muisti ja I/O 15

Korkean tason kielen käännös Enemmän vaiheita BEGIN 123.45 IF ( Syntaktisten alkioiden etsintä (front end) Syntaksipuun generointi ja jäsennys Lauseiden tunnistaminen syntaksipuun avulla Välikielen (välikoodin) generointi (ei aina) Välikieliesitys ja symbolitaulut Koodin generointi (back end) ei (yleensä) Java-ohjelmille 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) ks. Fig. 7-14 [Tane10] (relocation constant) Lisää k.o. vakio kunkin moduulin sisäisiin viitteisiin ks. Fig. 7-15 [Tane10] Etsi kaikki moduulien väliset viitteet, ja aseta kyseisten viitteiden osoitteet oikein 32 Luento 9, Ulkoinen muisti ja I/O 16

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 Luento 9, Ulkoinen muisti ja I/O 17

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 Luento 9, Ulkoinen muisti ja I/O 18

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 Luento 9, Ulkoinen muisti ja I/O 19

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