Løsningsforslag til eksamen i INF103

Like dokumenter
UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Løsningsforslag til eksamen i INF2270

Løsningsforslag til eksamen i INF103

UNIVERSITETET I OSLO

Løsningsforslag til eksamen i INF2270

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

UNIVERSITETET I OSLO

Dagens temaer. Architecture INF ! Dagens temaer hentes fra kapittel 3 i Computer Organisation and. ! Kort repetisjon fra forrige gang

Løsningsforslag til eksamen i IN 147(A)

UNIVERSITETET I OSLO

Løsningsforslag til eksamen i INF103

Dagens temaer. Dagens temaer er hentet fra P&P kapittel 3. Motivet for å bruke binær representasjon. Boolsk algebra: Definisjoner og regler

Del 1 En oversikt over C-programmering

Løsningsforslag til eksamen i IN 147(A)

Programmeringsspråket C Del 2. Hans Petter Taugbøl Kragset

Repetisjon digital-teknikk. teknikk,, INF2270

Dagens temaer. Dagens temaer hentes fra kapittel 3 i Computer Organisation and Architecture. Kort repetisjon fra forrige gang. Kombinatorisk logikk

Oppgave 2 Maskinkode (vekt 12%)

Kombinatorisk og synkron logikk. Kapittel 4

INF1400. Karnaughdiagram

Oppsummering av digitalteknikkdelen

Dagens tema: Datastrukturer

En oppsummering (og litt som står igjen)

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

Innhold. Oppgave 1 Oversettelse (vekt 15%)

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

Minneområder Det er vanlig å dele opp minnet til en prosess i disse ulike områdene: Fast minne Store og små indianere «align» ing struct er

Programmeringsspråket C Del 3. Hans Petter Taugbøl Kragset

Programmeringsspråket C Del 3

IN 147 Program og maskinvare

Dagens temaer. Kort repetisjon. Mer om cache (1) Mer om cache (2) Read hit. Read miss. Write hit. Hurtig minne. Cache

UNIVERSITETET I OSLO

Generell informasjon

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

Programmeringsspråket C Del 3

Tildeling av minne til prosesser

Løsningsforslag INF1400 H04

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Kapittel 1 En oversikt over C-språket

Løsningsforslag til eksamen i IN147(A)

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

Introduksjon til DARK assembly

Dagens tema. Dagens temaer hentes fra kapittel 3 i læreboken. Repetisjon, design av digitale kretser. Kort om 2-komplements form

TDT4110 IT Grunnkurs Høst 2016

MAX MIN RESET. 7 Data Inn Data Ut. Load

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

UNIVERSITETET I OSLO

Tildeling av minne til prosesser

Bokmål / Nynorsk / English NORGES TEKNISK- NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR FYSIKK. Eksamen TFY4185 Måleteknikk

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Repetisjon fra sist - 1: Plan for dagen. Repetisjon fra sist 2: Hva jeg glemte sist: Nyttige Kommandoer

UNIVERSITETET I OSLO

Hvordan en prosessor arbeider, del 1

Algoritmer og datastrukturer Løsningsforslag

Løsningsforslag i digitalteknikkoppgaver INF2270 uke 5 (29/1-4/2 2006)

EKSAMEN (Del 1, høsten 2015)

1. del av Del - EKSAMEN

ITPE/DATS 2400: Datamaskinarkitektur og Nettverk

! Ytelsen til I/O- systemer avhenger av flere faktorer: ! De to viktigste parametrene for ytelse til I/O er:

Dagens temaer. Architecture INF ! Dagens temaer hentes fra kapittel 3 i Computer Organisation and

Emnenavn: Datateknikk. Eksamenstid: 3 timer. Faglærer: Robert Roppestad. består av 5 sider inklusiv denne forsiden, samt 1 vedleggside.

Dagens tema: Enda mer MIPS maskinkode

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.

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

Programmeringsspråket C Del 3

Løsningsforslag til eksamen i INF2270

Digital representasjon

TDT4110 IT Grunnkurs Høst 2016

Programmeringsspråket C Del 3

EKSAMEN Emnekode: ITD13012

Oppgaver til kodegenerering etc. INF-5110, 16. mai, 2014

Høgskoleni østfold EKSAMEN. Emnekode: Emne: ITD13012 Datateknikk (deleksamen 1, høstsemesteret) Dato: Eksamenstid: kl til kl.

Dark Stakkmaskin. Aritmetiske instruksjoner

Å løse eksamensoppgaver

Forelesning Instruksjonstyper Kap 5.5

Innhold. 2 Kompilatorer. 3 Datamaskiner og tallsystemer. 4 Oppsummering. 1 Skjerm (monitor) 2 Hovedkort (motherboard) 3 Prosessor (CPU)

Inf 1020 Algoritmer og datastrukturer

INF1400 Kap4rest Kombinatorisk Logikk

Kap. 8 del 1 kodegenerering INF5110 Vår2007

INF1000: noen avsluttende ord

Programmeringsspråket C Del 2

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oppgave 1 Oversettelse (vekt 16%)

MAT1030 Diskret matematikk

UNIVERSITETET I OSLO

Seksjon 1. INF2270-V16 Forside. Eksamen INF2270. Dato 1. juni 2016 Tid Alle trykte og skrevne hjelpemidler, og en kalkulator, er tillatt.

Pensumoversikt - kodegenerering. Kap. 8 del 1 kodegenerering INF5110 v2006. Hvordan er instruksjonene i en virkelig CPU? Arne Maus, Ifi UiO

MAT1030 Diskret matematikk

Oppgave 1 - Linux kommandolinje (%)

Transkript:

Løsningsforslag til eksamen i INF03 Kjell Åge Bringsrud (oppgave 4 og 5) Dag Langmyhr (oppgave 2 og 3). desember 2003 Sigbjørn Næss (oppgave og 6) Boolsk algebra Sannhetsverditabellen er vist i tabell på neste side. Ved hjelp av Carnaugh-diagrammene i figur funksjonene forenkles til ge_0 = + a le_8 = a 3 + a 2a a 0 Kretsdiagrammene med logiske porter er vist i figur 2 på neste side. (Det finnes andre varianter som også er OK; man kan for eksempel skrive om uttrykkene ved hjelp av de Morgans teorem og få enklere kretser ved å bruke NAND- ognor-porter.) Signalet eq_9 kan lages ved å koble ge_0 og le_8 tilinngangenpåen 2-inputs NOR-port. a a Figur : Carnaugh-diagram for henholdsvis ge_0 og le_8. 2 Oversettelse ;;; Rutinenavn: neven 2 ;;; Synopsis: Finne antall partall i en vektor. 3 ;;; Signatur i C: short neven(short a[]) 4 ;;; Inn-parametre: R0: adressen til a[0] 5 ;;; Ut-parametre: R0: resultatet 6 ;;; Registre: R0: &a[ix] 7 ;;; R: a[ix] 8 ;;; R2: n 9 ;;; R3: 00-ix 0 neven: st R,saveR ; Gjem unna registre. 2 st R2,saveR2 ; 3 st R3,saveR3 ;

a ge_0 le_8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Tabell : Sannhetsverditabellen det spørres etter i oppgave a ge_0 a a le_8 ge_0 le_8 eq_9 Figur 2: Kretser for henholdsvis ge_0, le_8 og eq_9 2

4 5 and R2,R2,#0 ; n = 0; 6 ld R3,v00 ; r3 = 00; 7 8 loop: ldr R,R0,#0 ; r = a[ix]; 9 add R0,R0,# ; ++ix; 20 and R,R,# ; r = r & 0x000 2 brnp test ; if (r==0) 22 add R2,R2,# ; ++n; 23 test: add R3,R3,#- ; --r3; 24 brp loop ; Gå i løkke inntil r3==0. 25 26 add R0,R2,#0 ; r0 = n; 27 ld R,saveR ; Hent tilbake registre. 28 ld R2,saveR2 ; 29 ld R3,saveR3 ; 30 ret ; Retur. 3 32 v00:.fill 00 ; Konstanten 00 33 saver:.fill 0 ; Gjemmested for registre. 34 saver2:.fill 0 ; 35 saver3:.fill 0 ; 3 C-programmering char *db_get (char *k) 2 { 3 /* Find data for given key k in the structure. */ 4 5 struct db_elem *p = db_first; 6 7 while (p) { 8 if (strcmp(p->key,k) == 0) return p->data; 9 p = p->next; 0 } 2 /* Requested element does not exist; return NULL. */ 3 4 return NULL; 5 } 6 7 void db_remove (char *k) 8 { 9 struct db_elem *p = db_first, *p2 = NULL; 20 2 if (db_first == NULL) { 22 /* There is nothing to do when the structure is empty. */ 23 24 return; 25 } 26 27 while (p) { 28 if (strcmp(p->key,k) == 0) { 29 /* Remove this element. */ 30 3 if (p2 == NULL) { 32 /* The element is first in the list. Let db_first point past p. */ 33 34 db_first = p->next; 35 } else { 36 /* The pointer p2 points to the element _preceding_ p. 3

37 Let p2->next point past p. */ 38 39 p2->next = p->next; 40 } 4 42 /* Remove the element: */ 43 44 free(p->key); free(p->data); free(p); 45 return; 46 } 47 48 p2 = p; p = p->next; 49 } 50 } 4 Tildeling av prosessortid 4a Hensikten er å gjøre tildelingen av prosessortid mer rettferdig ved at de prosessene som har mye igjen av sitt tildelte tidskvant settes inn lenger fram i proessorkøen enn de som nesten har brukt opp hele sitt tidskvant. Prosessene settes inn i køen så noenlunde i henhold til forbrukt tid. 4b Fordelen er at man får en mer rettferdig tildeling av prosessoren. Ulempen er at prosessoren må bruke tid på å regne ut hvor i køen prosessen skal plasseres hver gang prosessen gir fra seg prosessoren eller interuptes. 5 Internminne 5a Det logiske minnet er vanligvis større enn den fysiske, men benyttes fordi prosesser likevel skal kunne allokeres til et kontinuerlig (logisk) minneområde. Siden det logiske området er større enn det fysiske minne, vil vanligvis ikke alle deler av det logiske området ligge inne i minne samtidig (noe må swappes ut på disk). Det logiske minnet adresseres med logiske adresser, og disse må på en eller anen måte mappes over i de virkelige fysiske adressene til minnelokasjonene i maskinen. Denne mappingen vil skje til adresselokasjoner som er ledig når mappingen foretas, og innebærer ikke at de nødvendigvis tilordnes et kontinuerlig område i det fysiske minnet. 5b Vanligvis vil første delen av adressen til minnelokasjon angi hvilken side man skal til mens den andre halvdelen angir offset innenfor en side. Dersom en side er en potens av 2 stor, vil offset passe nøyaktig inn i de minst signifikante bit-ene i adressen. 5c Følgende vil skje: 4

FIFO LRU 072 (Minnet fylles iniyielt opp.) 072 (Minnet fylles iniyielt opp.) 723 (Page fault; 3 skal inn.) 723 (Page fault; 3 skal inn.) 723 (Side 2, 7 og brukes i rekkefølge.) 723 (Side 2, 7 og brukes i rekkefølge.) 7230 (Page fault; 0 skal inn.) 720 (Page fault; 0 skal inn 3 skal ut siden den har ligget lengst.) 7230 (3 brukes.) 703 (Page fault; 3 skal inn 2 går ut siden den har ligget lengst.) Som det går fram av oversikten, vil FIFO føre til 2 page faults og LRU føre til 3. 5d Ved bruk av LRU må systemet hele tiden holde orden på hvilke sider som har ligget lengst i minne. Med et stort antall sider, vil dette innebære mye bokføring, og man vil fortsatt kunne få situasjoner som den i oppgave 5c der en side swappes ut for deretter å skulle brukes igjen umiddelbart. 6 Flervalgsoppgave 6a 6b 6c 6d 6e 6f 6g 6h 6i 6j 3 4 3 3 4 4 3 4 5