02/04/2015 10:54
Transcription
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