Oversikt over IN147(A):

Like dokumenter
IN 147 Program og maskinvare

Oppsummering av IN147 siste del Operativsystemer Parallellisering Veien videre

Den siste dagen. Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Veien videre... Eksamen

Dagens tema. Mer MIPS maskinkode. Maske-operasjoner Skift-operasjoner Lesing og skriving Pseudo-instruksjoner Mer om funksjonskall Registeroversikt

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

Dagens tema: Enda mer MIPS maskinkode

Kort notat om parallellstyring IN147

IN 147 Program og maskinvare. Vanlige feil ved bruk av pekere Feilsøking Debuggere

IN 147 Program og maskinvare

Dagens tema. Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere

Løsningsforslag til eksamen i IN 147(A)

En oppsummering (og litt som står igjen)

Dagens program. Operativsystemer Prosesser og systemkall i UNIX Hente prosessens nummer Starte prosesser Vente på prosesser Utføre programmer

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3

Oppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Programmeringsspråket C Del 3

Mer om C programmering og cuncurrency

Innhold. Oppgave 1 Oversettelse (vekt 15%)

Dagens tema: Datastrukturer

Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Dagens tema. Nyttige programmer Programmet make. Hvis én fil endres, hvilke filer må da kompileres på nytt?

Oppgave 1 Oversettelse (vekt 16%)

IN 147 Program og maskinvare

Programmeringsspråket C Del 2

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

Programmeringsspråket C

Del 4 Noen spesielle C-elementer

Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Å løse eksamensoppgaver

IN 147 Program og maskinvare

Dagens tema. Nyttige programmer Programmet make. Flyt-tall Representasjon av flyt-tall. Standarden IEEE 754. Systemkall i Unix

Del 1 En oversikt over C-programmering

Overordnet maskinarkitektur. Maskinarkitektur zoomet inn. I CPU: Kontrollenheten (CU) IT1101 Informatikk basisfag, dobbeltime 11/9

Programmeringsspråket C Del 2

Programmeringsspråket C Del 2

Dagens tema INF1070. Signaturer. Typekonvertering. Pekere og vektorer. struct-er. Definisjon av nye typenavn. Lister

IN 147 Program og maskinvare

Løsningsforslag til eksamen i IN 147(A)

Hva er datamaskinarkitektur?

IN 147 Program og maskinvare

Dagens tema. LC-2 LC-2 er en «ekstrem-risc»; den har 16 instruksjoner og 3 adresseringsmåter.

Løsningsforslag til eksamen i IN 147 og IN 147A

Signaturer. Dagens tema. En vanlig feil int-funksjon. Dette kan noen ganger gi rare feilmeldinger: INF1070 INF1070 INF1070 INF1070

Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Datamaskinen LC-2. Dagens tema. Tall i datamaskiner Hvorfor kan LC-2 lagre tall i intervallet ? Hvorfor er det akkurat celler i lageret?

Dagens tema. Datamaskinen LC-2 En kort repetisjon. Binære tall Litt om tallsystemer generelt. Binære tall. Heksadesimale og oktale tall

Dagens tema C, adresser og pekere

Ark 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.

Oppgave 1 JK-flip-flop (Total vekt 20%)

Løsningsforslag til eksamen i IN147(A)

Programmeringsspråket C Del 2. Michael Welzl

Løsningsforslag til eksamen i IN147(A)

AVSLUTTENDE EKSAMEN I. TDT4160 Datamaskiner Grunnkurs. Torsdag 29. November 2007 Kl

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

Tema for denne forelesningen: tilpassing til pipeline. forwarding. eliminere NOP. faktisk MIPS. in 147, våren 1999 pipelining 1 9

IN 147 Program og maskinvare. Vranglås De spisende filosofer Lettvektsprosesser Moderne synkroniseringsmetoder Meldinger Monitorer Linda

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Forelesning Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B

UNIVERSITETET I OSLO

Ark 1 av 18. programmeringsspråkenes. Velkommen til IN 211. verden. IN 211 Programmeringsspråk

Dark load-store-maskin

Dagens tema. Representasjon av mantissen En desimalbrøk: 1 1, INF1070 INF1070 INF1070 INF1070

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

UNIVERSITETET I OSLO

Litt om Javas class-filer og byte-kode

Oppgave 2 Maskinkode (vekt 12%)

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

GetMutex(lock) { while(testandset(lock)) {} } En context switch kan ikke ødelegge siden testen og endringen av lock skjer i samme instruksjon.

UNIVERSITETET I OSLO

Forhistorien Menneskene har alltid prøvd å lage maskiner for å løse sine problemer. Dagens tema

Datamaskinenes historie Når, hvor og hvorfor ble de første datamaskiner laget? Hvordan har utviklingen gått? Hva inneholder en datamaskin?

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon

Kodegenerering del 3: Tilleggsnotat fra AHU Samt litt om class-filer og byte-kode INF5110 V2007. Stein Krogdahl, Ifi UiO

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

Generell informasjon

Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode)

INF-103. Velkommen til. Første time. Fra brukergrensesnitt til maskinvare. eller Datamaskinen på tvers. Andre time

AVSLUTTENDE EKSAMEN I. TDT4160 Datamaskiner Grunnkurs Løsningsforslag. Torsdag 29. November 2007 Kl

2 Om statiske variable/konstanter og statiske metoder.

INF-103 Fra brukergrensesnitt til maskinvare

Dagens tema: Synkronisering

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

UNIVERSITETET I OSLO

INF1040 løsningsforslag oppgavesett 7: Tall og geometrier

hvor mye hurtigminne (RAM) CPU en kan nyttiggjøre seg av. mens bit ene betraktet under ett kalles vanligvis et ord.

UNIVERSITETET I OSLO

Dagens tema INF1070. Vektorer (array er) Tekster (string er) Adresser og pekere. Dynamisk allokering

Tråder Repetisjon. 9. og 13. mai Tråder

Datamaskinenes historie Når, hvor og hvorfor ble de første datamaskiner laget? Hvordan har utviklingen gått? Hva inneholder en datamaskin?

Forhistorien Menneskene har alltid prøvd å lage maskiner for å løse sine problemer. Dagens tema INF1070 INF1070 INF1070

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

Nybegynnerkurs i C. Øyvind Grønnesby. 14. oktober Introduksjon Typer Operatorer Kontrollstrukturer Pekere Makroer Lenker

IN 147 Program og maskinvare

Transkript:

Oversikt over IN147(A): Programmerings- og operativsystem-delen Oppsummering for IN147(A) Bit-mønstre Tallsystemer MIPS assemblerspråk C Datatyper Tillegg for de som tar hele IN147 Operativsystemer Parallellisering Pensum Eksamen Ark 1 av 18 Forelesning 9.5.2001

Bit-mønstre Det grunnleggende for all programmering på maskin-nært nivå: Alt er bare bit-mønstre! Programmereren velger hva et ord med fire byte skal tolkes som: Fire tegn (ISO 8859-1 hos oss). Ett, to, fire eller åtte heltall med eller uten fortegns-bit. Et 32-bits flyt-tall (eller halvparten av et 64-bits flyt-tall). En MIPS-instruksjon. Valget foretas ved å velge hvilke operasjoner som skal foretas på bit-mønsteret. Forelesning 9.5.2001 Ark 2 av 18

Representasjon av heltall Alle heltall kan angis med vilkålig grunntall. Vi er interessert i binære tall, oktale tall (notasjon 0177), desimal tall (notasjon 127), og heksadesimale tall (notasjon 0x7f). Overgangen mellom binære, oktale og hex-tall er triviell; omforming mellom desimale og binære krever multiplikasjon/divisjon med 10. Flyt-tall: 32 eller 64 bits Standarden IEEE 754 for 32-bits flyt-tall: 31 30 23 22 0 S Eksponent Mantisse S er fortegnet; 0 for positivt, 1 for negativt. Grunntallet er 2. Eksponenten er på 8 bit og lagres med fast tillegg 127. Mantissen er normalisert og på 24 bit, men kun de 23 etter binærkommaet lagres. Forelesning 9.5.2001 Ark 3 av 18

Programmering i assemblerspråk Når programmerer man i assemblerspråk? Når hastighet er det viktigste. Når koden må ta ekstremt liten plass. Når man trenger full kontroll over den genererte koden. Når man trenger tilgang til spesielle maskinressurser. Spesielle operasjoner Følgende operasjoner finnes sjelden i høynivåspråk: Maske-operasjoner Skift-operasjoner (logisk og aritmetisk skift; rotasjoner). Forelesning 9.5.2001 Ark 4 av 18

Hvilke operasjoner finnes? (De fete operasjonene er pseudoinstruksjoner.) Heltallsaritmetikk add, addu, addi, addiu, sub, subu +, mult, multu, div, divu, Flyttallsaritmetikk abs.x, neg.x v, v add.x, sub.x, mul.x, div.x +,,, cvt.x.y Omforming Maske-operasjoner and, andi, or, ori, xor, xori,, Skifting og rotasjoner sll, sllv, srl, srlv sra, srav rol, ror Logisk skift Aritmetisk skift Rotasjon Sammenligninger slt, sltu, slti, sltiu c.eq.x, c.lt.x, c.le.x < (heltall) =,<, (flyt-tall) Forelesning 9.5.2001 Ark 5 av 18

Flytting mellom registre move Kopiér register mflo, mfhi Kopiér fra lo/hi mfc1, mtc1 Kopiér fra/til C 1 Lesing og skriving la, li, lui lw, lh, lhu, lb, lbu sw, sh, sb Legg inn konstant Les data fra RAM Skriv data til RAM Hopp b, j, jr Hopp beq, bne, ble, bleu,... Hopp om =,,<,... bc1f, bc1t Hopp om C 1 T/F jal, jalr Funksjonskall Diverse andre nop Gjør ingenting Forelesning 9.5.2001 Ark 6 av 18

Programmering i C Når programmerer man i C? Når man liker språket. Når man utfører systemarbeid i UNIX (og noen andre operativsystemer). Når hastighet er viktig. Når man vil være sikker på at programmet kan gå på alle mulige maskiner. Viktig Separatkompilering. Koblingen mot assemblerspråk. Pekere og vektorer. Operasjoner på pekere, pekere kontra vektorer; referanseparametre. Hvordan opprettes objekter? Husk å fjerne dem! Forelesning 9.5.2001 Ark 7 av 18

Pekere Grunnlaget for å forstå pekere: En peker er en adresse i RAM! Det viktigste når det gjelder pekere, er å huske på hva som er en peker og hva som blir pekt på. int a = 5, *p; p = &a; /* Kopiering av pekerverdi */ *p = 4; /* Kopiering av heltallsverdi */ p = 3; /* Typefeil! */ Operatoren = kopierer alltid en verdi; operandenes type angir om dette er en pekerverdi eller en annen type verdi. Pekere og vektorer Det er en fast sammenheng mellom pekere og vektorer: a[i] *(a+i) Forelesning 9.5.2001 Ark 8 av 18

Datatyper Hva avgjør valget av datatype? Hvor lett er det å programmerer den? Bidrar den til å forenkle problemet? Hvor rask er den å bruke? Hvor stor plass tar den? Hvor dynamisk er den? Viktigste alternativer Pekere. Matriser. Tekster. Lister. Ringbuffere. Forelesning 9.5.2001 Ark 9 av 18

Operativsystemer I kurset har vi fokusert på UNIX, men prinsippene gjelder i større eller mindre grad for alle operativsystemer. Hva er en prosess? En prosess er et program under kjøring. Stakk Data Kode Hvordan oppstår prosesser Prosesser lages med fork. De kan endre innhold med execve. Forelesning 9.5.2001 Ark 10 av 18

Hvordan overføres parametre? Programparametrene overføres som de to første parametrene til main: int main(int argc, char *argv[]) Hva er omgivelsen? Omgivelsen er en samling definisjoner om den enkelte bruker og hans eller hennes preferanser. Definisjonene er av typen USER=kritisk HOME=/ifi/ganglot/a09/kritisk SHELL=/local/gnu/bin/bash De overføres på én av to måter: 1. via den globale variabelen extern char **environ; 2. som tredje parameter til main: intmain(...,..., char **env) Forelesning 9.5.2001 Ark 11 av 18

Parallellitet Formålet med parallellitetskontrollen er å forhindre kappløp ved å sikre kritiske regioner og hindre vranglås og utsulting. Hvorfor programmerer man parallelt? Noen problemer er naturlig parallelle. For å få opp hastigheten. Teknikker Følgende teknikker er blant de viktigste: UNIX-prosesser med wait samt UNIX-signaler signal og pause. UNIX-rør: pipe, read og write. Felles lager, lettvektsprosesser Semaforer Monitorer Meldinger Forelesning 9.5.2001 Ark 12 av 18

Semaforer En semafor er en datastruktur med en teller og en kø: Verdi Kø Semaforer har to operasjoner: down(&s) Hvis verdien til s er > 0, vildenbli senket med 1. Hvis ikke, vil prosessen bli blokkert og dens nummer lagt til køen til s. up(&s) Hvis køen til s er tom, økes verdien med 1. Hvis ikke, fjernes ett prosessnummer fra køen, og den tilhørende prosessen startes opp igjen. Beskyttelse av kritisk region semaphore mutex = 1; /* Mutual exclusion */. down(&mutex); Kritisk region up(&mutex); Forelesning 9.5.2001 Ark 13 av 18

Meldinger Brukerne kan definere en kø av meldinger: Kø Køer har to operasjoner: send(q, kode, &data) legger data med angitt kode i køen; kallet blokkerer om køen er full. receive(q, kode, &data) henter data med angitt kode i køen; kallet blokkerer inntil ønskede data finnes. Forelesning 9.5.2001 Ark 14 av 18

Monitorer En monitor består av en klasse-lignende struktur: class Eksempel { int i; // Lokal variabel. } void synchronized p(...) { }. wait();. notify();. // Operator: Eksempel e; e :- new Eksempel(); e.p(...); Kun én prosess av gangen får utføre en operator i en monitor. Ytterligere forsøk på kall vil bli blokkert inntil monitoren er ledig. En monitor kan blokkere seg selv ved å benytte wait(). Ved å kalle notify() gir den beskjed om at en annen, tidligere blokkert, prosess kan starte. Forelesning 9.5.2001 Ark 15 av 18

Pensum Følgende er pensum i denne delen av kurset: Alt som er forelest. Kapittel 3.1 3.11, 4.1 4.5 samt de første seks sidene av 4.8. Vedlegg A.1 A.10 I tillegg kommer det som Sigbjørn definerer som pensum. Se forøvrig nettsiden til kurset. Forelesning 9.5.2001 Ark 16 av 18

Eksamen Eksamen er mandag 29. mai klokken 9. Den varer 4 timer (for IN 147A) eller 6 timer. Hjelpemidler Alle trykte og skrevne hjelpemidler er tillatt. Batteridrevet lommekalkulator er lov, hvis den ikke inneholder programmer når eksamen starter. Den vil neppe være til særlig hjelp. Hva slags oppgaver kan forventes fra denne delen? Programmering i C og assembler, for eksempel oversettelse. Et eller annet om datastrukturer. Semaforer og annen parallellstyring (ikke IN147A). Se ellers tidligere års oppgaver. Forelesning 9.5.2001 Ark 17 av 18

Sjekk godkjenningslister Det vil bli lagt ut lister over hvem som har fått godkjent obligatoriske oppgaver. Sjekk disse! Ta kontakt med gruppelærer (eller meg) hvis du mener det er gjort feil. Problemer under eksamen Eksamensdagen vil Sigbjørn og jeg gå runde i eksamenslokalet klokken 10 (og klokken 14 for IN147). Da er det anledning til å stille spørsmål. Lykke til! Forelesning 9.5.2001 Ark 18 av 18