Lågnivåprogrammering Översikt av I/O-mekanismer i hårdvara Olika språkkrav och modeller för komponent- hantering(device driving) Modeller för komponent-hantering i Real-Time Java och C Minneshantering
Mål: – Att visa hur olika modeller av processer och deras kommunikations- och synkronisering- mekanismer kan utvidgas för att modellera och kontrollera komponenter – Att betrakta effektiv realtids-minneshantering
Hårdvara: Input/Output-mekanismer Två klasser av dator-arkitektur: CPU Memory Devices Data Address Data Address Separate Buses for Devices and Memory
Minnes-”mappad” arkitektur Memory CPU Devices Data Address
Real-Time Java RTJ tillåter access till minnes-mappade kontroll-register via konceptet raw memory En implementering kan tillåtas stödja en rad minnestyper, t.ex. IO_Page – den minnesdel dit I/O-register allokeras
Sammanfattning För att programmera komponent-drivare i hög- nivå-språk krävs: –möjligheten att skicka data- och kontroll-information till och från komponenten –möjligheten att hantera interrupt Kontroll- och data-information skickas via komponent-register Dessa nås antingen via speciella adresser, eller via speciella maskin-instruktioner
Sammanfattning Interrupt-hantering kräver context switching, komponent- och interrupt-identifiering, interrupt- kontroll, och komponent-prioritering Ett viktigt krav på ett högnivå-språk är att det tillhandahåller en abstrakt modell för komponent- hantering Inkapslings-möjligheter krävs också så att icke- portabel kod i ett program kan separeras från den portabla delen
Sammanfattning Det finns flera olika sätt att modellera interrupt I en renodlad shared-variable-modell, kommunicerar drivaren och komponenten genom att använda delade komponent-register (shared device registers), och interrupten tillhandahåller villkors-synkronisering
Sammanfattning Real-Time Java stödjer access till minnes- mappade I/O-register genom RawMemoryClass ; emellertid saknas uttrycksfull förmåga att manipulera komponent-register Interrupt betraktas som asynkrona händelser
Sammanfattning Lågnivåprogrammering innehåller också den mer allmänna uppgiften att hantera processorns minnesresurser Real-Time Java –erkänner att minnes-allokerings-policyn i Java inte är hållbar för realtids-system –tillåter minne att allokeras utanför the heap –stödjer begreppen immortal memory och scoped memory