02/04/2015 10:54

02/04/2015 10:54
Praktiska kommentarer, forts.
●
Liten felaktighet i labbanvisningen
–
Kapitel 10, 1:a stycket, sista meningen har fel
länkadress
”Se http://www.isy.liu.se/edu/kurs/TSEA28/laboration/tutor-pm.pdf
för mer information om vissa specialkommandon för
Tutorsystemet.”
TSEA28 Datorteknik Y (och U)
Föreläsning 7
●
Påminnelse ang. Individuell förberedelseuppgift
–
Individuell förberedelseuppgift 1 måste vara klar innan 1:a
labben!
–
Se hemuppgift på hemsida (meny till höger)
–
Lab3 har ingen individuell förberedelseuppgift
–
Går att lösa hemifrån om ni loggar in på
ixtab.edu.isy.liu.se
●
Kent Palmkvist
Datorteknik, ISY
Krävs för att få tillgång till eventuella extratillfällen
3
Vem
är jagkommentarer
Praktiska
●
Labanmälan finns tillgänglig
–
●
●
Långt ned på websidan som beskriver laborationerna
finns en länk
Användandet av tutor för lab
–
●
–
●
Southfork, olympen, egypten, asgård, ixtab, bussen
Alla utom bussen är öppna dygnet runt, men kan vara
bokade för annan undervisning (kolla schemaservern!)
●
När programmet är slut fortsätter datorn tolka
instruktionerna som kommer
Se till att lägga till brytpunkt eller anrop till trap 14
TSEA28 Datorteknik Y 2015
Lektionspasset planerat för U kommer vara
anpassat för avsaknad av förkunskaper i
digitalteknik
Lektionspass för Y och Yi mer anpassat för
studenter som gått Digitalteknikkursen
Lab 1 består av två tillfällen, lab1a (2 h) och
senare lab1b (2 h).
–
Programsnuttar (t ex från individuella
förberedelseuppgiften) innehåller inget avslut
●
2015-01-05
●
Fungerar bara i ISY:s labbsalar/maskiner
●
2
Praktiska kommenterar, forts.
4
Ger möjlighet att korrigera och förbereda bättre till
andra halvan av labben.
02/04/2015 10:54
Agenda
●
Summering så här långt
●
Strukturer för att stödja operativsystem
–
–
●
Supervisorläge
Multitasking
–
Context switching
–
MMU
2015-01-05
Summering så här långt, forts.
●
TSEA28 Datorteknik Y 2015
7
●
6
Maskinkodsinstruktioner tolkas och utförs
–
Består av instruktionstyp och argument
Flaggor (Z,V,N,C)
–
minnesaddresser
–
Omedelbar, #$100
–
Direkt, $1000
–
Indirekt, (A0)
–
Indirekt med postinkrement, (A1)+
–
Indirekt med predecrement, -(A2)
–
Förskjutning, 12(A3)
2015-01-05
●
TSEA28 Datorteknik Y 2015
Flaggorna i statusregistret uppdateras oftast
beroende på resultat från instruktionen
Instruktionerna är enkla operationer
2015-01-05
Register (D0-D7, A0-A7, PC, SR, ...)
–
Summering så här långt, forts.
Datorn läser instruktioner lagrade i minnet
–
–
Olika sätt att ange ett värde (finns fler än
dessa) samt storlek byte, word och long
Specifikt 68000
Summering så här långt
●
Argument till operationer av olika typer
Multianvändarsystem
–
–
5
Agenda
–
Z: resultat = 0
–
C: Carry (minnessiffra från beräkning eller skiftad bit
från t ex lsr)
–
Dataflytt (move)
–
N: Negativt resultat (MSB = 1)
–
Aritmetiska/logiska (add, sub, mult, and, or ,xor, lsr,
lsl, asl)
–
V: overflow vid 2-komplements operation
–
Branchinstruktioner (bra, beq, bne, blt,...)
–
Subrutin och interruptrutin (jsr, rts, rte)
TSEA28 Datorteknik Y 2015
8
2015-01-05
TSEA28 Datorteknik Y 2015
02/04/2015 10:54
Notering om stackar i samband
med subrutiner och avbrott
Summering så här långt, forts.
●
●
9
Stack används till mycket
–
återhoppsadresser vid subrutinanrop och avbrott
–
Statusregister vid avbrott
–
Spara registervärden som måste återställas i slutet
av en rutin
–
SP kan ibland vara ett vanligt register (t ex A7)
Avbrott
●
Avbryter exekvering ungefär som ett subrutinanrop
–
Kan ha flera nivåer av prioritet
–
Sparar statusregister och återhoppsaddress på stack
–
Kan tillåtas eller förbjudas mha speciella kontrollbitar
(t ex I2 I1 I0 i statusregistret i M68000)
TSEA28 Datorteknik Y 2015
Återhoppsadress
●
11
Skriva enkla program
–
Felsöka och testa enkla program
–
I/O (parallellport) koppling mot t ex tangentbord
–
Användning av interrupt (lab 2)
Samma manipulation möjlig vid RTE. Inget
krav att ett ”äkta” avbrott skapat SR och PC
kopior på stack
Dvs RTE respektive RTS hoppas att det är
korrekta återhoppsadresser, men kan inte
garantera det
TSEA28 Datorteknik Y 2015
●
Applikation Applikation
1
2
●
Behöver bygga ut funktion för att bättre stödja
ett operativsystem
Operativsystem hanterar hårdvara och
gömmer detaljer från användaren
–
Windows, Linux, respektive MacOS ser likadana ut
oberoende av hur datorn är byggd i detalj
–
Ger illusionen av att flera saker sker samtidigt
–
Delar på resurser så att alla användare får tillgång till
dom
Operativsystem
Hårdvara
●
Säkerhet
–
10
2015-01-05
TSEA28 Datorteknik Y 2015
Direkt via t ex
move.l #$12345678,(A7) ; ersätt med ny adress
Funktion hos operativsystem
Introduktion M68008 i Tutor-systemet
–
Manipulation av stack möjlig
2015-01-05
Summering så här långt, forts.
●
Finns inget som kräver att återhoppsadressen
som RTS tar från stacken har placerats där av
en JSR instruktion
–
A7
●
–
2015-01-05
●
12
2015-01-05
Användarprogram får inte krascha datorn (stänga av
funtioner, störa andra program)
TSEA28 Datorteknik Y 2015
02/04/2015 10:54
Skillnad mellan supervisor och
användare
●
Vissa funktioner är kritiska för datorns funktion
–
●
SR
●
10 9 8
4 3 2 1 0
T
I2 I1I0
X NZ V C
S
13
●
Avbrottsmask, stackpekare, I/O
Supervisor
mode
Begränsa programmets möjlighet att påverka
dessa funktioner
–
15 13
Att hoppa mellan Supervisor
och user mode i M68000
Användarprogram ska begära hjälp av
operativsystemet för tillgång till hårdvaruspecifika
funktioner
Reset
Avbrott
trap
●
S-bit är satt när processorn startar
●
Avbrottsrutiner körs med S=1
RTE (S=0)
move ...,SR
M68008 har två moder
–
Supervisormode: Inga begränsningar. Lämpligt för
operativsystemsrutiner och startup
–
User mode: Begränsade möjligheter. Kan inte ändra
interrupt, påverka viss I/O register och liknande
2015-01-05
TSEA28 Datorteknik Y 2015
●
User
mode
SR
15 13
10 9 8
4 3 2 1 0
T
I2 I1I0
X NZ V C
S
15
A0
●
●
A6
USP ●
SSP
A7
14
●
●
●
Lösning i M68000: En extra stackpekare för
supervisor mode (SSP)
–
Byter register beroende på mode (värde på S i SR)
–
Liknar hanteringen av DDR och DRA register i PIA
–
RTE om sparat SR har S = 0
–
Direkt skrivning till SR (tillåtet endast från supervisor
mode)
TSEA28 Datorteknik Y 2015
Mål: Få det att verka som flera program körs
samtidigt på datorn
–
Utan att programmen behöver veta om varandra
–
Tidiga system (t ex Mac) använde kolloborativ
multitasking, där varje program aktivt lämnar över till
nästa program (tråkigt om ett program inte vill)
●
Låt varje enskilt program köra på processorn
Efter en viss tid avbryts nuvarande program
och nästa startas
Jämför med en restaurang med 1 anställd
Använd SSP i supervisor mode och vid avbrott
S
2015-01-05
(Se manualsidan för syscalls i linux)
Så länge som inga subrutinanrop görs används inte
stacken av användaren
Operativsystemet behöver fortfarande en
fungerande stack, t ex för avbrott
–
–
Övergång till User mode
En slarvig användare skulle kunna använda a7
till något annat
USP
SSP
A7
Inklusive TRAP instruktionen, lämplig som anrop till
operativsystemet
För den nyfikne: Kontextbyte
De flesta funktioner bygger på att stackpekaren
är korrekt (pekar på tillgängligt RAM-minne)
–
–
2015-01-05
Hur hantera slarvig användare
●
Supervisor mode indikeras av S-bit i
statusregistret
TSEA28 Datorteknik Y 2015
16
2015-01-05
–
Måste vara kock ibland, servitör ibland, städare ibland
–
Fungerar så länge som byten sker tillräckligt ofta
TSEA28 Datorteknik Y 2015
02/04/2015 10:54
För den nyfikne: Kontextbyte,
forts.
Syst.
stack
prog1
●
●
Konfigurera en timer som ger avbrott var 10:e
ms (100 Hz)
Syst.
Stack
prog2
:
:
17
prog1
prog2
●
●
–
Spara d0-d7 och a0-a6 till supervisorstacken
–
Ctrl-F load, G 1000
–
Ctrl-A ger interrupt från PIA port A
–
Spara USP till på supervisorstacken
–
Spara nuvarande SSP (supervisor stack pointer) till
minnet (1 plats per program som körs)
–
Hämta SSP från ett annat program
–
Hämta USP på (nya) supervisorstacken
–
Hämta d0-d7 och a0-a6 från supervisorstacken
–
RTE
●
●
Ladda program, starta program på rad $1000
Startar avbrottsrutinen context_switch
Byter helt tillstånd (stack, register, status)
:
2015-01-05
TSEA28 Datorteknik Y 2015
19
2015-01-05
Enklare exempel på
kontextbyte
TSEA28 Datorteknik Y 2015
Kontextbyte, kod
●
Exempelkod finns på hemsidan
●
Spara alla register på supervisor stack
●
Tre rutiner
●
Byt supervisorstack till nästa program
●
18
Använd tutorsimulatorn
Vid avbrott
:
SSP
SSP
Kontextbyte exempel, forts.
–
Skriv ut ”Task 1 is running”
–
Skriv ut ”Task 2 is running”
–
Skriv ut alla tecken från '0' till 'z'
Varje rutin känner bara till sig själv
2015-01-05
–
Skriver ut sitt meddelande om och om igen
–
Vet inte när nästa rutin ska startas
TSEA28 Datorteknik Y 2015
;;; ---------------------------------------------------------------------context_switch:
last_entry:
tst.b $10080
; Acknowledge interrupt
move.l #supervisor_stackpointers,a0
;; Push all registers onto the supervisor stack, including the
not_last_entry:
;; user stack pointer (USP)
cmp.l #0,(a0)
movem.l a0-a6/d0-d7,-(a7)
beq find_task_loop ; If 0, no task available
move.l usp,a0
move.l a0,-(a7)
;; (No need to push SR as that has been pushed automatically restore_context:
move.l a0,current_task ; Save the current task
;; to the stack)
move.l (a0),a7
; Load stack pointer
;; Find next task to run
move.l (a7)+,a0
; Restore all registers
find_next_task:
move.l a0,usp
move.lcurrent_task,a0
;
movem.l (a7)+,a0-a6/d0-d7
find_task_loop
add.l #4,a0
rte
cmp.l #no_more_stackpointers,a0 ; At the end?
bne not_last_entry
; And we are done!
20
2015-01-05
TSEA28 Datorteknik Y 2015
02/04/2015 10:54
Att dela resurser mellan
program
●
●
När minnet tar slut
Grundläggande resurs: Minne
●
Varje program vill ha tillgång till minne utan att
bry sig om andra programs behov
minne
●
●
●
Programmet begär viss mängd minne från
operativsystemet och får en adress tillbaks
Även om datorn har tillräckligt med minne
jämfört med hur mycket minne varje program
behöver så räcker inte det
Exempel (webbläsare och bildvisare kör
samtidigt)
site 2
Programmet lämnar tillbaks minne till
operativsystemet när uppgiften är klar
bild 2
bild 1
site 1
●
–
Webbläsare allokerar minne för site 1 (20% av totalt)
–
Bildvisare allokerar minne för bild 1 (40% av totalt)
–
Webbläsare allokerar minne för site 2 (20% av totalt)
–
Webbläsare stänger site 1 (totalt 60 % allokerat)
–
Bildvisare allokerar minne för bild 2 (40%) <- går inte
40% finns tillgängligt, men delat på två ställen
–
21
2015-01-05
TSEA28 Datorteknik Y 2015
23
2015-01-05
Multitasking
●
●
●
–
Vanliga program får inte ändra avbrottsnivå
Dålig säkerhet
●
2015-01-05
–
Du kör din internetbank
–
Ett annat program som startats av någon annan
(virus/malware). Detta program tittar i minnet på din
webläsare
–
Stor risk att nycklar och passord hittas, t ex
tangentbordbuffertar, lokala variabler etc.
Måste kunna skydda minnesareor från olika
användare
Många sätt att optimera prestanda och
garantera svarstider
–
22
●
Blir ett svårare problem att lösa om flera
program behöver bearbeta samma data
Låsa tillgång (jämför med buffered_getkey i förra
föreläsningen)
TSEA28 Datorteknik Y 2015
Ett annat minnesproblem
Mer information fås i kurser som Datorteknik
och realtidssystem (för Y) och (antagligen)
motsvarande kurs för U: Processessprogrammering och operativsystem
–
Minnesfragmentering!
–
Varje användares minne ska bara vara tillgängligt för
denna användare och för operativsystemet
Vilket program ska väljas som nästa program att
köra?
TSEA28 Datorteknik Y 2015
24
2015-01-05
TSEA28 Datorteknik Y 2015
02/04/2015 10:54
Minnesskydd
●
●
MMU funktion
Program
1
Lägg till funktion som spärrar tillgång till andra
program
–
Minska risken att ett urspårat program skriver över
någon annans data
–
Ta bort möjlighet för fel program läsa känslig
information
Kan dela kod utan risk för påverkan
–
Vanligt för standardbibliotek i datorer
Se fysiskt minne som byggblock
–
Logisk
adress
●
T ex 4KByte stora områden (12 bitar)
MMU översätter logisk adress till fysisk adress
–
Högsta adressbitarna väljer vilket block (20 bitar)
–
Lägre bitar används direkt till minnet
MMU
Lägg till skrivskydd på vissa minnesytor
–
●
Program
2
Datorns logiska
minneskarta
Fysisk
adress
Fysisk
adressrymd
Logisk adress $12347A63
Fysisk adress $20223A63
Minne
översätts
25
2015-01-05
TSEA28 Datorteknik Y 2015
Lösning på minnesskydd och
fragmenteringsproblemet
Program
1
●
Logisk
adress
●
●
Fysisk
adress
–
Håller ordning på vilket program har tillgång till vilken
minneyta
–
Varje program ser en logiskl beskrivning av
minnesrymden
Skydda vissa minnesytor mot skrivning av
program (operativsystemet får skriva)
Kan döpa om adresser
Minne
26
2015-01-05
2015-01-05
–
Flera program kan se det som att dom skriver på
adress $1000
–
Inga problem samla ihop minnesdelar till stor
sammanhållen adressrymd
TSEA28 Datorteknik Y 2015
●
Fysisk
adressrymd
●
●
Datorns logiska
Minneskarta för
Program 2
●
●
●
28
TSEA28 Datorteknik Y 2015
Fördelar med MMU
Datorns logiska
Minneskarta för
Program 1
Memory Management Unit (MMU)
Program
2
MMU
27
Låter dator med liten logisk adressrymd
använda stort minne
Låter stor logisk minnesrymd matcha liten
fysisk adressrymd
Minnesskydd, tillåt bara en användare komma
åt speciella fysiska minnesområden
Dela minnes mellan användare
(subrutinbibliotek, datastrukturer)
Slå ihop minnesfragment till
sammanhängande minnesytor
Slipper ändra adresser i programmet (alla
program tillåts börja på samma logiska adress)
2015-01-05
TSEA28 Datorteknik Y 2015
02/04/2015 10:54
Ge program mer minne än det
finns
●
●
●
Praktiskt problem med en
översättningstabell
Virtuellt minne
●
MMU detekterar försök att läsa på adresser
som inte allokerats
–
Genererar ett ”page fault” avbrott
–
Avbrottsrutinen allokerar nytt minnesblock bland
befintligt fysiskt minne
20 bitars adress => väldigt stor tabell
–
●
Logisk adress
1 miljon entries, dyr och långsam
Praktiskt system delar upp tabellen i två
hierarkiska nivåer
–
10 bitar topnivå, 10 bitar mindre tabell
Andra funktioner
–
Detekterad skrivningar i delade minnesblock ger två
kopior (en för varje program)
–
Om fysiska minnet tar slut kan fysiskt minnesblock
som inte använts på länge flyttas till hårddisk och
användas på nytt (swap)
●
1:a nivål
29
2015-01-05
TSEA28 Datorteknik Y 2015
31
2:a nivå
Fysiska minnet
2015-01-05
TSEA28 Datorteknik Y 2015
Implementation av virtuellt
minne
●
●
Logisk adress delas upp i logisk sidaddress
(mest signifikanta delarna) och displacement
Logisk sidaddress används för att ta reda på
fysisk sidadress
–
Varje logisk sidadress har också indikerat ett antal
egenskaper förutom fysisk sidadress
●
tillgänglig/allokerad
●
Ändrad
●
Skrivbar
●
Hur länge sedan den användes
www.liu.se
30
2015-01-05
TSEA28 Datorteknik Y 2015