Tentamen PC-teknik 5 p

Relevanta dokument
Tentamen PC-teknik 5 p

Tentamen PC-teknik 5 p

Tentamen PC-teknik 5 p Lösningar och kommentarer

Tentamen PC-teknik 5 p

Tentamen PC-teknik 5 p Lösningar och kommentarer

Tentamen PC-teknik 5 p Lösningar och kommentarer

Tentamen PC-teknik 5 p

PC-teknik, 5 p LABORATION FILHANTERING

Tentamen PC-teknik 5 p Lösningar och kommentarer

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

Lösningar till tentamen i EIT070 Datorteknik

Grundläggande datavetenskap, 4p

Lösningar till tentamen i EIT070 Datorteknik

Tentamen den 17 mars 2016 Datorteknik, EIT070

OBS!! Detta är DEL 2 av tentan. För att få ut denna måste du ha lämnat in del 1. Om du inte fått ut del 1 bör du meddela skrivningsvakten. OBS!!

Tentamen Grundläggande programmering

MESI i Intel Core 2 Duo

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Lösningar till tentamen i EIT070 Datorteknik

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Tentamen Systemkonstruktion

Tentamen Enchipsdatorer med tillämpningar. Lösningar och kommentarer

Övning från förra gången: readword

Lösningsförslag till Tenta i Mikrodator

*Pekarvärden *Pekarvariabler & *

Lösningsförslag till Tenta i Mikrodator

Digitalteknik och Datorarkitektur 5hp

F6: I/O hantering. Typer av I/O i ett datorsystem. Protokoll för synkronisering. Drivrutiner. Memory mapped Port mapped. Polling Timed Interrupt DMA

Enkla datatyper minne

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Tentamen ges för: Tentamensdatum: Tid:

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

Programmeringsteknik med C och Matlab

Föreläsningsanteckningar 3. Mikroprogrammering II

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

Digitala System: Datorteknik ERIK LARSSON

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

Tentamen den 18 mars svar Datorteknik, EIT070

Tentamen i EIT070 Datorteknik

Datorsystemteknik DAVA14 Föreläsning 10

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

TENTAMEN OOP

Hantering av textsträngar och talsträngar. William Sandqvist

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

PROGRAMMERING-Java TENTAMINA

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

Exempeltentamen Datorteknik, EIT070,

Hantering av hazards i pipelines

Repetition C-programmering

Tentamen i Grundläggande Programvaruutveckling, TDA548

Föreläsning 10. Pekare (Pointers)

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok

Systemutvecklare SU13, Malmö

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00

Tentamen Systemkonstruktion Lösningar och kommentarer

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

OOP Tenta

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

PROGRAMMERING-Java Omtentamina

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Omtentamen i Programmering C, Fri, Kväll,

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Föreläsning 7: Filer

Övning 7. Timer, serieport

Datorsystem Laboration 2: Minnesmappade bussar

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Att använda pekare i. C-kod

Stack och subrutiner Programmeringskonventionen

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

HF0010. Introduktionskurs i datateknik 1,5 hp

'HOWHQWDPHQ 6\VWHPNRQVWUXNWLRQ

Tentamen i Grundläggande Programvaruutveckling, TDA548

En kort text om programmering i C.

Tentamen FYTA11 Javaprogrammering

Introduktion till programmering och Python Grundkurs i programmering med Python

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12

Datorsystem. Tentamen

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Pipelining i Intel Pentium II

Beijer Electronics AB 2000, MA00336A,

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

A-del motsvarande KS1

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

Cacheminne Intel Core i7

Introduktion C-programmering

F5: Högnivåprogrammering

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Transkript:

Tentamen PC-teknik 5 p Lösningar och kommentarer Program: Di2, Em3, Et3 Datum: 04-01-12 Tid: 13:30-18:30 Lokal E171 Hjälpmedel: Linjal, miniräknare, Instruktionsrepertoar för 8086 (utdelas), Lathund, Pacific C för MSDOS (utdelas). Bilagor: Interrupt Examinator: Anders Arvidsson Telefon: 036-15 61 12, 0707-76 28 86 Examinatorn besöker tentamen. Uppgifterna redovisas direkt i frågebladet, eller på separat ark, vilka då ska numreras och hänvisas till från uppgiftsbladet. Max poäng: 25 Betyg Poäng 3 10 4 15 5 20 1 (10)

Tentamensfrågor 1. Studera C-koden nedan. int var1, var3, var3; var1 = -3; var2 = 19; var3 = var2 ^ 25; printf("var1 = %u var3 = %u ", var1, var3); Vad kommer skrivas ut på skärmen? Svara exakt som utskriften kommer att se ut. (Tips: %u gör att variabeln skrivs ut som om den vore av typen (se Lathund). ) Utskrift: var1 = 65533 var3 = 10 (2 p) 2. Vad kommer registren innehålla för värde efter att nedanstående kod exekverats? Svara decimalt! (3 p) mov ax,#10 mov cx,#4 mov dx,#100 mul cx 1: inc ax dec dx loop 1b inc cx mov bx,ax and bx,#0f0h shr bx,cl ax: 44 bx: 16 cx: 1 dx: 4 2 (10)

3. Skriv ett program i C och assembler som söker igenom en textfil tenta.txt efter bokstavskombinationen bmp. Om bmp hittas ska texten Filen kan handla om bildhantering skrivas ut på skärmen. I annat fall ska Ämne okänt skrivas ut. Ingen felhantering krävs då vi förutsätter att tenta.txt existerar och ligger i samma mapp som programmet du skriver. Du får deklarera variabler för t ex mellanlagring av text och signaler mellan C och assembler vid behov. Filen ska stängas innan programmet avslutas. Kodningen ska ske i tydligt blockkommenterade avsnitt och eventuellt delas in i subrutiner, men poängen är att tanken ska vara lätt att förstå. (Fungerande rutiner kan ge tröstpoäng även om programmet havererar.) Koden ska också kommenteras rad för rad. Program med uppenbart onödigt många instruktioner ger poängavdrag. All filhantering ska skrivas i assembler och ske med hjälp av bifogade interrupt. Uppgiften löses på separat ark. (Tips: Lös övriga uppgifter först.) (3 p) Många alternativ finns för sökrutinen. Lösningsförslag baserat på mestadels C-kod: #include <stdio.h> char filename_tenta[]="tenta.txt"; int filehandle; char filbuff; int bmp_exist; int eoftest; //filnamn (ligger i samma katalog) //Variabel som lagrar aktuellt filhandtag //Sparar senast lästa tecken från tenta i cirkulär buffert //Ej = 0 => bmp finns i filen //0 om filslut nåddes void openfile_tenta(void) #asm mov dx,#_filename_tenta ;dx pekar på filnamn mov ah,#03dh ;open file mov al,#0 ;read access int #21H ;DOS-interrupt mov _filehandle,ax ;spara filhandtag #endasm int read_tenta(void) #asm mov ah,#3fh ;Read file mov bx,_filehandle ;Fil som ska läsas mov cx,#1 ;Antal tecken som ska läsas mov dx,#_filbuff ;Adress där tecknet ska sparas int #21H ;DOS-int, funktion Read file mov _eoftest,ax ;Antal tecken som lästes av sista sista int #endasm return eoftest; 3 (10)

void search_tenta(void) char circbuff[3]; //Sparar tre senaste byte från tenta.txt int i=0; //index i cirkulär buffert int j; //Roterar i bakåt buffert från i (t ex i = 1 => j = 1, 0, 2) circbuff[2] = 0; //Rensar för säkerhets skull en byte (från föreg körning) bmp_exist = 0; while (read_tenta()) circbuff[i] = filbuff; if ('p' == circbuff[i]) // Om p på nuvarande pos... if ('b' == circbuff[j]) bmp_exist = 1; else if ((i - 1) < 0) // i = 0 => föreg = 2 j = 2; j = i - 1; if ('m' == circbuff[j]) // och om m på föregående pos... if ((i - 2) < 0) j = i + 1; // = i - 2 (i talområdet 0...2) else j = 0; // i = 2 => förförgående = 0 // och om b på förförgående pos... // bmp existerar i texten i++; if (i > 2) i = 0; void closefile(void) #asm mov ah,#3eh ;Closefile mov bx,_filehandle ;Nummer på fil som ska stängas int #21H #endasm void main(void) openfile_tenta(); search_tenta(); closefile(); if(bmp_exist) printf("filen kan handla om bildhantering \n"); else printf("ämne okänt \n"); getchar(); 4. I en ledare transporteras en klocksignal med frekvensen 2 GHz. Hur lång stäcka hinner signalen röra sig under en period? Redovisa beräkning! (2 p) 2 GHz => 0,5 ns periodtid Signalen rör sig med hastigheten ca (2/3)*c i en ledare (beroende på isolator, även ljushastigheten utan kompensation för isolator ger poäng). 0,5 * 10-9 * 0,66 * 3 * 10 8 = 0,099 m Svar: 1 dm 4 (10)

5. Vad är skillnaden mellan datorarkitekturerna Harvard och von Neumann? Vad är fördelen med Harvard? (2 p) Harvard innebär att instruktioner och data ligger i olika minnen, medan de i von Neumann ligger i samma minne. Fördelen med Harvard är att minnesåtkomsten blir snabbare då data och instruktioner kan hämtas parallellt. 6. Vad menas med Out of Order Execution? När är detta möjligt? I vilka situationer ökar det exekveringshastigheten? (2 p) Out of Order Execution innebär att processorn kan välja att exekvera instruktioner i en annan ordningsföljd än de ligger i minnet. Detta är endast möjligt om efterföljande instruktion inte är beroende av föregående. Exekveringshastigheten kan t ex ökas om processorn kan stoppa in en oberoende instruktion mellan två som beror av varandra, eftersom pipelinen då inte behöver stalla lika länge. 7. Pentium II hade både Back-Side Bus och Front-Side Bus. Vad användes dessa bussar till, och varför ser vi bara Front-Side Bus på t ex Pentium 4? (2 p) Back-Side Bus ansluter cacheminnet som ligger i samma kapsel som processorn, medan Front-Side Bus (= systembussen) ansluter till moderkortet. P3 och P4 har allt cacheminne på chipet och behöver därför ingen anslutning till externt cache. 5 (10)

8. När Pentium körs i Protected mode finns skydd för oavsiktlig överskrivning av data. Redogör för hur detta skydd fungerar, vilka skyddsnivåer det finns och exempel på vad som körs på respektive nivå. (2 p) Plats för eventuell skiss: I Protected mode förhindras program att skriva i otillåtna minnesområden. Detta sker genom att program körs i minnessegment som tilldelats en av fyra privilege level (PL = 0 3). Ett program får bara skriva i minnessegment med högre PL. På så sätt skyddas t ex operativsystemet mot buggar i applikationsprogram. Exempel: PL = 0 Operativsystemets kärna PL = 1 Drivrutiner (för t ex grafik) PL = 2 Operativsystemets grafiska gränssnitt PL = 3 Appliklationsprogram 9. En serieport brukar tilldelas ett IRQ-nummer och en parallellport kan ibland tilldelas en DMA-kanal. Vad används IRQ respektive DMA till? (2 p) IRQ innebär en avbrottsbegäran. I detta fallet innebär det att när det kommer en byte på porten (eller några byte om man använder buffert) avbryter processorn tillfälligt vad det håller på med och hoppar till en rutin för att ta hand om mottagen data. DMA betyder att det finns en direktkanal mellan porten och minnet (som hanteras av en DMA-controller) så processorn slipper ägna tid åt varje byte. 6 (10)

10. Serieporten IEEE-1394 går även under två andra namn (varav ett är väldigt vanligt). Nämn ett annat namn för porten och ange också om portens hastighet närmast kan jämföras med parallellporten, COM-porten, USB 1.1 eller USB 2.0. (2 p) Porten går även under namnen FireWire och i.link. (Ett räcker.) Hastigheten kan närmast jämföras med USB 2.0. 11. En hårddisk beskrivs med många termer. Vissa relaterar till hårddiskens fysiska utförande, medan andra kan vara kopplade till BIOS eller filsystem. Förklara vad som menas med tracks, sectors, cylinders, head och cluster. (Begreppen anges för enkelhetens skull på engelska, men skriv gärna hela förklaringen på svenska.) För poäng krävs entydiga förklaringar som ej kan förväxlas med andra begrepp. Rita gärna skiss på separat ark. (3 p) (Ungefärlig bedömning: 2 begrepp => 1 p, 4 begrepp => 2 p, 5 begrepp => 3 p) Tracks: Cirkelrunda spår på en disk. Sectors: Tårtbitar av spåret som är minsta enhet som adresseras. Cylinders: Alla tracks som ligger lika långt från centrum på alla parallella diskar. Head: Läshuvud. Ett per disk och sida. (Samtliga ligger på samma cylinder.) Cluster: Minsta antal sektorer som adresseras av filsystemet. Genom att gruppera sektorerna krävs inte lika detaljerade filallokeringstabeller. 7 (10)

Bilagor Några interrupt (möjligen fler än vad som behövs) INT 21H Function 3DH Open File This function opens the file specified by the ASCII string at the pointer DS:DX. The string must be terminated with a zero. A 16-bit handle is returned. Register Call Value Return Value AH 3DH AL access mode (bit 0-1) 00=read access 01=write access 10= read/write access DS:DX pointer to the file name AX If function successful: File handle If function failed: Error code Error code 2 = file not found 3= path not valid (there are more error codes available) INT 21H Function 3EH Close File This function closes the file which handle was returned by a successful open (function 3DH) or create (3CH). Register Call Value Return Value AH 3EH BX file handle AX error code 6 if handle invalid or not open Carry flag clear on success set on error 8 (10)

INT 21H Function 3FH Read File or Device This function transfers data from the file specified by the handle in BX to a buffer pointed to by DS:DX. If the carry flag was returned clear, but AX=0 then the file pointer was already at the end of the file. Register Call Value Return Value AH 3FH BX file handle CX number of bytes to be read DS:DX segment:offset address of buffer area AX Number of bytes read (CF clear) Error code: (CF set) 5 access denied 6 handle invalid INT 21H Function 40H Write to File or Device Given a handle from a successful open or create (3DH, 3CH, 5AH, or 5BH) and the pointer to a buffer, this function will transfer data from the buffer to the file. Register Call Value Return Value AH 40H BX file handle CX number of bytes to write DS:DX segment:offset of buffer area AX Number of bytes written (If CF clear) Error code (CF set) 5 access denied 6 handle invalid 9 (10)

INT 21H Function 5BH Create new File Creates a new file with the name specified by the pointer in DS:DX. The function returns a handle which is used by the program for further access to the file. Register Call Value Return Value AH 5BH CX attribute 00H normal 01H read-only 02H hidden 04H system DS:DX segment:offset of ASCII-file specification AX file handle (CF clear on success) Error code (CF set on error) 3 path not found 4 no handle available 5 access denied 50H file already exists 10 (10)