Inför tenta Flashcards

1
Q

Computational models:

Turing machines

A

o En matematisk modell som definierar en abstrakt maskin. Denna manipulerar en finit mängd symboler på en oändlig rad minne enligt en uppsättning regler. Alla algoritmer kan (om än med viss möda) simuleras med en turingmaskin. Den:

  1. Ställer sig över en minnescell och läser in (skannar)
  2. Lokaliserar inskannad symbol på en Symbol table över egendefinierade instruktioner och:
    a. Skriver en symbol, siffra eller bokstav från finit mängd (om detta tillåts)
    b. Flyttar läsarhuvudet till intilliggande cell höger eller vänster
    c. Enligt inläst symbol och läsarhuvudets position i programmet flyttas huvudet till följande minesscell, eller avbryter.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Computational models:

RAM machines

A

o Hyfsat lik en Turin-maskin, men med några viktiga skillnader:
♣ Har ett minne med ”intermediate output”, behöver alltså inte gå igenom allt närliggande minne för att komma till önskad minnescell
• Varje ”memory access” tar 1 ”time step”
♣ Varje simpel operation (+,-,*,/, etc) tar 1 ”time step”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Computational architecture:

Components of a simple von Neumann computer

A

o CPU: Ansvarar för att utföra instruktionerna i ett program. CPU:n innehåller ALU (Arithmetic and Logic Unit), CU (Control Unit) och ett antal register.
o ALU: Aritmetiska beräkningar genomförs här (add, sub) och (and, or, not), etc.
o CU: Kontrollerar operationen av datorns ALU, minne, input/output, och berättar hur de ska svara på programinstruktioner som just lästs in. Tillhandahåller också ”klocka” och ”control signals” som andra datorkomponenter behöver.
o Buses: Sättet att flytta data från en intern komponent till en annan.
o Memory Unit: Består av RAM. Olikt en hårddisk så är detta minne även åtkomligt direkt för CPU: n.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Computational architecture:

Registers, on-chip memory, cache, memory, disk: advantages and disadvantages

A

o Registers: Hög-hastighetsminne. All data måste lagras här innan den kan processeras.
o On-chip memory: Lagring i processorchipet för att undvika ”latency” för viktiga data.
o Cache: Snabbare än RAM, man tar lite saker som skrivits/sparats till RAM.
o Memory/disk:
♣ Ofta en kompromiss mellan hastighet och kapacitet. Register – snabb åtkomst, liten kapacitet. Hårddisk är motsatsen. RAM är i sammanhanget någonstans mitt emellan.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Computational architecture:

Structure of machine instruction and relation to assembler instruction

A

o Machine instruction: Något som datorn kan förstå och översätta till konkreta handlingar, ofta unikt för varje “klass” av processorer. Ser ut som en lång sträng av tecken, där för ex. NIC varje stycke av 4 tecken representerade en instruktion. Ger konkreta instruktioner, som ”ladda register 3 med konstanten 0x2”. Rent utseendemässigt kan det se ut som “2013f002701300000010”, där varje “instruktion” är 4 tecken.
o Assembler instruction: En hyfsat gemensam syntax som kan förstås av människor (med syntax som t.ex. ”loadc r3 0x1”). Olika språk kompilerar efter sin egen grammatik till assembler. Denna översätts sedan till machine instruction.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Computational architecture:

Program alignment (ej inlagd) vs word alignment

A

o Word alignment: Hur instruktioner ska brytas ned i block, och hur instruktioner som är kortare eller längre ska hanteras. T.ex. i NIC att alla ”word” är 2 block och ”instruction” 4 block

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Computational architecture:

Program counter, status register, and how they work in an execution

A

o Program counter: Pekar på nästa instruktion. Generellt så ökar den inkrementellt efter varje bearbetad instruktion, men kan modiferas på andra sätt, t.ex. genom en for-loop.
o Status register: Ställer processorn i en viss ”status” och låter en instruktion ta handling utifrån utfallet av en tidigare instruktion.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Assembler:

Assembler directives vs instructions

A

o Directive: Styr assemblern under ”assembly phase”, bidrar inte till storlek på programmet. Indikerar hur en operand ska behandlas t.ex.
o Instruction: Genererar maskinkod, bidrar till storleken på programmet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Program compiled with C:

Use of stack pointers: purpose, stackframes, content of a stackframe

A

o Stack pointer: Litet register som sparar adressen till senast anropat program i en stack.
o Stack frame: Samling av all data i stacken som associeras med ett subprogram call. Innehåller följande:
♣ ”Return address”
♣ ”Argument variables” som skickats till stacken
♣ Lokala variabler
♣ Sparade kopior av register som ändrats av subprogrammet som behöver återställas efteråt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Program compiled with C:

Program counter vs stack pointer

A

o Program counter: Berättar för CPU: n var den är. Ett register som innehåller adressen till nästa instruktion.
o Stack pointer: Berättar (ungefär) var CPU: n har varit, och vad den gjort. Ett litet register som innehåller adressen till det senast använda programmet i stacken.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Representation of data:

Typed and untyped data

A

o Typed:
♣ Finns egenskaper och metoder som gör det lättare att använda. En viktig skillnad är att ”error checking” görs vid design/kompilering snarare än vid exekvering, genom en medföljande .xsd fil.
o Untyped:
”error checking” görs under ”run time”, men ger snabbare prestanda och kan vara lättare att administrera.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Representation of data:

Purposes of typing data

A

o Det ger användarvänlighet, ger förhandsinformation om tänkt funktionalitet etc.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Representation of data:

Unsigned vs signed integer datatypes. Representations of integer data types in bits and how arithmetic works and can be implemented on a bit level

A

o ”Signed integer” innebär att t.ex. biten längst till vänster i ett tre bit tal, 101, representerar om talet är positivt eller negativt. Alltså får man endast hälften så stora tal men de kan istället vara negativa/positiva
♣ Unsigned integer: Kan endast innehålla positiva tal (men stora)
♣ Signed integer: Innehåller såväl positiva som negativa (men mindre)
o Arithmetic on bit level: Tänk i binära tal

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Representation of data:

Other common data types in programming languages, e.g., characters/ASCII or strings

A

o ASCII: Alla tecken konverterats till ett nummer, som enkelt kan hanteras i kod.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Adresses and pointers in assembler and C:

Pass by value vs pass by reference

A

o PBV: Det skickas in en kopia av parametrarna i funktionen. Ursprungsvariablen påverkas INTE av vad funktionen utför med parametrarna.
o PBR: Ett ”nickname”, eller en referens, till ursprungsvariablerna (deras lagringsplats i minnet) skickas som paramterar. Alltså påverkar funktionens lokala arbete den ursprungsliga variablen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Adresses and pointers in assembler and C:

Pointers vs addresses: types, arithmetic, notion in C

A

o * visar på en pointer, exempel: int *a
o address = & a här ger & adressen för var a ligger
o value = *a här används * framför variabelns namn för att extrahera värdet

17
Q

Adresses and pointers in assembler and C:

Heap vs stack allocation

A

o Stack: ”Last in first out”. Varje gång en funktion körs så lagras lokala variabler här. När funktionen sedan avslutas så poppas alla tillhörande variabler från stacken, och går därmed förlorade. När en stack är tom så kan andra stackar använda detta utrymme i minnet.
o Heap: Regleras inte automatiskt, utan behöver manuellt allokeras med funktioner som malloc( ). Variabler som deklareras här är globala.

18
Q

Adresses and pointers in assembler and C:

Simple datastructures in C using heap allocation and how they could be represented in execution of compiled program

A

o Lab 3: Då datatypen är ”bi_t” och variabeln i fråga heter ”bi” så allokerar vi minne med bi->value = malloc(sizeof(*(bi->value) * DEFAULT_LIMBS)

19
Q

Development tool chain, e.g., GNU tool chain:

Pre-processor: difference from compiler. Macros vs variables, include directive in C. Writing simple macros

A

o Tar bort kommentarer
o Expanderar alla macro
o Expanderar inkluderade filer

20
Q

Development tool chain, e.g., GNU tool chain:

Compiler: functionality and overview of how it proceeds in different phases

A

o Översättning sker till assembly-instruktioner genom lexikal analys (syntax). Detta går i olika faser, där olika tecken och tolkningar görs i varje steg.

21
Q

Development tool chain, e.g., GNU tool chain:

Assembler: purpose and relation to compiler and linker

A

o Används för att översätta assembly-kod till objektkod. En objekt-fil skapas, som nästan är exekverbar, men vissa etiketter har inte översatts till minnesadresser likväl har inte funktionsanrop utretts.

22
Q

Development tool chain, e.g., GNU tool chain:

Linker: difference from compiler. Difference between executable and object file that must be linked

A

o Tar en object-file som input, utreder olika beroenden och ger som output en exekverbar binary. Binaryn kan antingen innehålla alla beroenden, eller så kan de vara delade med andra binaryn.

23
Q

Development tool chain, e.g., GNU tool chain:

Makefile: purpose and writing simple makefile of the type covered in examples. Targets and dependencies.

A

o Används för att underlätta byggprocessen av program. Varje fil som ska produceras identifieras av ett ”target” med ett antal beroenden. Kommandot ”make” går igenom filen, utreder beroenden, och sätter igång separata verktyg som kompileraren, assembler, och linker. Med ”make” så kan man undvika onödigt arbete genom att hålla koll på beroenden och vilka filer som ska ändras eller har ändrats.

24
Q

Development tool chain, e.g., GNU tool chain:

Debugger: purpose, typical commands, and workflow

A

o ”backtrace”, ”break”, ”run –v”, ”gdb program”. Används för att utreda buggar och/eller kraschar i programkoden. Kan användas för att skriva ut lokala variabler, lägga in nya, eller till och med göra funktionsanrop inom ”pågående” kod.