Dagens program. Sanntidsprogrammering med Linux. Embedded Linux: Begrensninger. Hvorfor Linux?

Like dokumenter
Samtidige prosesser. Prosessor modus. Hvordan kan OS effektivt kontrollere brukerprosesser? Hvordan kan OS. kontrollere brukerprosesser?

Scheduling og prosesshåndtering

Eksempler på ikke-blokkerende systemkall:

oppgavesett 4 INF1060 H15 Øystein Dale Hans Petter Taugbøl Kragset September 22, 2015 Institutt for informatikk, UiO

Threads Threads (tråder) threads vs prosesser threads vs prosesser Definisjoner av

Lars Vidar Magnusson. October 11, Lars Vidar Magnusson () Forelesning i Operativsystemer October 11, / 28

Tråder og concurrency i Linux

GetMutex(lock) { while(testandset(lock)) {} } En context switch kan ikke ødelegge siden testen og endringen av lock skjer i samme instruksjon.

Definisjon av prosess

Operativsystemer og grensesnitt

Singletasking OS. Device minne Skjerm minne. Brukerprogram. Brukerdata/heap. Stack. Basis for flerprosess-systemer.

Socket og ServerSocket

Kommersiell Unix Linux og frie Unix kloner

EKSAMEN. Operativsystemer. Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene.

Skisse til løsning for eksamensoppgave i TDT4186 Operativsystemer

TDT4258 Eksamen vår 2013

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Eksamensoppgave i TDT4258 Energieffektive datamaskinsystemer

oppgavesett 4 INF1060 H16 Hans Petter Taugbøl Kragset Øystein Dale Christian Resell 27. september 2016 Institutt for informatikk, UiO

Del 1 En oversikt over C-programmering

Dette er en historie..

1. Introduksjon til operativsystemer

Tildeling av minne til prosesser

CPU-Scheduling. Fag: Operativsystemer

Definisjon av prosess

(MVC - Model, View, Control)

En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen. Ofte vil det være flere prosesser/tråder på datamaskinen samtidig.

Presentasjon av: Erling Ringen Elvsrud Nils Fredrik Gjerull Håkon Torjus Bommen

Fra sekvensielt til parallelt

UNIVERSITETET I OSLO

Generelt om operativsystemer

Det matematisk-naturvitenskapelige fakultet

Operativsystemets ansvar er å koordinere. programmers bruk av I/O

Eksamensoppgave i TDT4258 Energieffektive Datamaskinsystemer

P1 P2 P3 P1 P2 P3 P1 P2. OS gjør Contex Switch fra P1 til P2

Tildeling av minne til prosesser

Faglig kontakt under eksamen: Orestis Gkorgkas

Kapittel 1 En oversikt over C-språket

Fra sekvensielt til parallelt

Plan for dagen. Kræsj-kurs i sanntidsprogrammering. Måter å tenke på. Programmering intro. Tråder & synkronisering

Real-time Operativsystem

STE6221 Sanntidssystemer LØSNINGSFORSLAG TIL EKSAMEN

DAT kandidatnummer: 142

HW for koordinering med omverdenen. OS syr HW og SW sammen. Tema for denne forelesningen: in 147, våren 1999 Input/Output 2 1

Fakultet for informasjonsteknologi, Løsning på kontinuasjon i TDT4186 Operativsystemer August 2005,

Del 4 Noen spesielle C-elementer

Løsningsforslag til eksamen i INF103

Forelesning inf Java 1

Oversikt. Historie Struktur Moderne UNIX systemer Moderne UNIX kernel struktur 1 UNIX. 2 Linux. 3 Process. 4 Process models

Del 3: Evaluere uttrykk

1,r H øgs kolen i Østfol d

EKSAMEN. Operativsystemer. 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater.

Oppgave 2: Gå til roten (/) av systemet. Finn minst tre forskjellige måter å gå tilbake til hjemmekatalogen din på.

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Kapittel 8: Programutvikling

Introduksjon til kurset og dets innhold

alternativer til felles hukommelse store parallelle datamaskiner Tema for denne forelesningen: in 147, våren 1999 parallelle datamaskiner 1 9

Visma Contracting og tilleggsprodukter på en terminalserver. Det anbefales å sette opp egen terminalserver, som kun brukes som terminalserver.

Programmering. Carsten Wulff

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Tilpasning av Windows 2000 server til Skolelinux tynnklienttjener

Debugging. Tore Berg Hansen, TISIP

INF2100. Oppgaver 26. september til 1. oktober 2007

Tildeling av minne til prosesser

Forelesning III Kap 8 & 7; Dagsplan. Gjenbruk. Condition synchronization. Gjennomgående eksempler. Kode: Design: Verktøy

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

Ikke pensum! Plan for dagen. Resource Management Kontekst: Bloom (1979) Kap. 11: Resource control (utvalg)

Bruk av interrupt og Timer i Arduino-program.

Information search for the research protocol in IIC/IID

Eksamensinformasjon. Linux kommandolinje. Linux kommandolinje. Eksamensinformasjon. Fakultet: Teknologi, kunst og design. Tid: 3 t.

ytelsen til hukommelseshierarkier

Innhold. Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer. Prinsipper for synkronisering av felles hukommelse

Brukermanual for Quizbuilder

Slope-Intercept Formula

Løsningsforslag for TDT4186 Operativsystemer

Hypervisor. Hardware. Virtualisering. App 1. App 2. App 2 App 1 App 2 App 1 CPU RAM I/O. Virtualisering av server/desktop hardware

Løsningsforslag til eksamen i IN 147 og IN 147A

Concurrency. Lars Vidar Magnusson. September 20, Lars Vidar Magnusson () Forelesning i Operativsystemer September 20, / 17

Software installasjon og andre ettertanker

Eksamensoppgave i TDT4258 Energieffektive Datamaskinsystemer

Eksamen DAT 103. Oppgave 2. Kandidatnr.: 145 1) B 2) B 3) A 4) A 5) D 6) C 7) B 8) A 9) A 10) D

Oving 2. Oppgave 1. #include <stdio.h> int main(int argc, char **argv) { char *navn = argv[1]; printf ("Navnet ditt er %s\n", navn); } Oppgave 2

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring

UNIVERSITETET I OSLO

GUI («Graphical User Interface») del 2

Reliable RT Spotify

DEL 1 Setup BIOS Stian A. Johansen Terje Bratlie Espen Torås

Eksamen i TTK4145 Sanntidsprogrammering 12. august

Operativsystemet Internt

Generelt om operativsystemer

Operativsystemer og nettverk Løsningsforslag til eksamen Oppgave 1. a) Linux-kommando: java Beregn & b) Shellprogram:

Dagens tema C, adresser og pekere

Ark 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.

dynamiske data dynamiske data statiske data program dynamiske data statiske data reservert program dynamiske data statiske data reservert program

INF våren 2017

Forelesning Instruksjonstyper Kap 5.5

static int ant_steiner; //antall steiner static int teller2 = 0; //teller for printing til Thread^ murer; //murertråden

Læringsmål og pensum. v=nkiu9yen5nc

Sikkerhet: Virus Sikkerhet i operativsystemet Maskinstøtte for sikkerhet Trojanske hester Ormer. IN 147 Program og maskinvare.

INF Algoritmer og datastrukturer

Transkript:

Dagens program Sanntidsprogrammering med Linux TTK4155 Sanntidsprogrammering Gjesteforelesning 28. september 2004 Håvard Skinnemoen Grunner til å velge Linux Linux i dedikerte systemer (sanntid eller ikke) Linux og sanntid: Status Hva kan ødelegge responstiden? RTLinux og RTAI Hvorfor Linux? Mulig å tilpasse kildekoden Support Robust, velprøvd platform Relativt enkelt å bytte platform Ingen royalties Støtte for mange CPU-arkitekturer: alpha arm26 h8300 ia64 m68knommu parisc ppc64 sh sparc64 v850 arm cris i386 m68k mips ppc s390 sparc um x86_64 Embedded Linux: Begrensninger Lite minne og lagringsplass Uvanlige lagringsmedier (f.eks. flash) Pålitelighet Tidskrav Uerfarne sluttbrukere

Embedded Linux: Hvordan lage små systemer? Embedded Linux: Qt/Embedded Tilpasning av Linux-kjernen: Velg kun den funksjonaliteten du trenger Valg av run-time bibliotek: uclibc, dietlibc, etc. vs. GNU libc Statisk vs. dynamisk linking busybox Qt/Embedded har (nesten) samme API som andre Qt-versjoner Mye mindre footprint enn Qt/X11 Samme kildekoden kan kompileres på Windows, Mac OS X og X11 Linux og sanntid: Status POSIX: Tråder, delt minne, message queues Nye synkroniseringsprimitiver i kjernen NPTL: Native Posix Thread Library O(1) scheduler Betydelig bedre responstid i 2.6 enn 2.4 Scheduling av Linuxprosesser Tre scheduling-policies: First In-First Out (SCHED_FIFO) Round Robin (SCHED_RR) Dynamisk prioritet (SCHED_OTHER) Default: SCHED_OTHER Statisk prioritet 1 99 for SCHED_FIFO og SCHED_RR, 0 for SCHED_OTHER

Andre mekanismer Native POSIX Thread Library!NPTL" 32 sanntidssignaler (SIGRTMIN.. SIGRTMAX) POSIX Shared Memory (mmap) Låsing av minne (mlock og mlockall) Svært viktig siden page faults kan ta lang tid POSIX Message Queues Raskere og nærmere POSIX-standarden enn LinuxThreads 1:1 modell (1 kerneltråd per applikasjonstråd) Futex: Fast Userspace Mutex Hva påvirker responstiden i Linux-kjernen? Interrupt Latency vs. Scheduling Latency Maskering av avbrudd Linux-kjernen er i utgangspunktet ikke preemptiv Tidkrevende operasjoner i kjernen kan være svært ødeleggende for responstiden Hva skjer under et avbrudd? Avbruddshåndtereren kjøres. NEED_RESCHED blir satt dersom en ny tråd vekkes Evt. softirq kjøres når alle avbrudd er håndtert Ved retur til brukerprogram: Kjør scheduleren dersom NEED_RESCHED er satt Ved retur til kjernen kan ikke alltid scheduleren kjøres umiddelbart

Preemptible Kernel En teller forteller når kjernen kan avbrytes preempt_enable() dekrementerer telleren preempt_disable() inkrementerer telleren Dersom telleren er 0 ved retur fra interrupt kan scheduleren kjøres selv om prosessen er i kjernemodus spinlock-primitiver styrer også preemptivitet Kernel Preemption: Eksempler void thatfunc(struct some_card *card) spin_lock_irq(&card->lock); card->users += 1; spin_unlock_irq(&card->lock); void thisfunc(struct some_card *card) spin_lock(&card->lock); thatfunc(card); spin_unlock(&card->lock); Low-Latency Low-Latency: Eksempel Linux 2.4.22 Linux 2.6.7 Prinsipp: Identifiser kode som kjører lenge uten å tillate scheduling Legg inn kall til cond_resched() på strategiske steder cond_resched() kaller schedule() dersom NEED_RESCHED er satt static int move_page_tables(struct mm_struct * mm, unsigned long new_addr, unsigned long old_addr, unsigned long new_addr, unsigned long old_addr, unsigned long while len) (offset) unsigned long len) offset -= PAGE_SIZE; unsigned long offset = len; unsigned long offset; if (move_one_page(mm, old_addr + offset, new_addr + offset)) flush_cache_range(mm, old_addr, old_addr goto + oops_we_failed; len); flush_cache_range(vma, old_addr, old_addr + len); /* /* * This is not the clever way to do this, but we're taking the * easy way out on the assumption that most remappings will be * only a few pages.. This also makes error recovery easier. */ while (offset) offset -= PAGE_SIZE; if (move_one_page(mm, old_addr + offset, new_addr + offset)) goto oops_we_failed; flush_tlb_range(mm, old_addr, old_addr + len); return 0; oops_we_failed: /*... */ static unsigned long move_page_tables(struct vm_area_struct *vma, * This is not the clever way to do this, but we're taking the * easy way out on the assumption that most remappings will be * only a few pages.. This also makes error recovery easier. */ for (offset = 0; offset < len; offset += PAGE_SIZE) return offset; if (move_one_page(vma, old_addr+offset, new_addr+offset) < 0) break; cond_resched(); for (offset = 0; offset < len; offset += PAGE_SIZE) if (move_one_page(vma, old_addr+offset, new_addr+offset) < 0) break; cond_resched();

RTLinux og RTAI Hvordan RTLinux fungerer Prinsipp: 100% preemptibel kjerne Linux kjøres som en lavprioritets-tråd under en nanokjerne Linux-kjernen kan ikke maskere avbrudd direkte Mekanismer under RTLinux POSIX med noen utvidelser (_np suffiks) RTLinux-spesifikke tidsfunksjoner Real-Time FIFOs for kommunikasjon med Linux-prosesser Minnemappet I/O: /dev/mem eller ioremap() Port I/O: inb(), inw(), inl(), outb(), outw(), outl(), eventuelt med pause Myke og harde avbrudd Fordeler med RTLinux og RTAI Svært lav worst-case latency Vanlige Linux-applikasjoner kjører side om side uten å forstyrre Nesten-standard POSIX API Mulig å kommunisere med lav-prioritets Linuxprosesser: brukergrensesnitt, web-server, etc.

Ulemper med RTLinux og RTAI En RTLinux-applikasjon er ikke en Linuxapplikasjon Trenger eget sett med drivere Applikasjonskode kjøres med mer privilegier enn nødvendig (kjerne-modus) Spørsmål? Mindre brukerbase enn Linux