Processer og koordinering

Relaterede dokumenter
Koordinering. dopsys

Processer og tråde. dopsys 1

Processer og koordinering. dopsys 1

Implementation af Koordinering. dopsys 1

Schedulering. dopsys 1

Schedulering. dopsys 1

Operativsystemer - dopsys

Sider og segmenter. dopsys 1

Sider og segmenter. dopsys 1

Input/Output: Brugergrænseflader. dopsys

Deadlocks dopsys 1 onsdag den 8. december 2010

Systemkald i Unix/Linux

Operativsystemer - dopsys. Erik Ernst

Design Systemkald. User-mode Linux, The Linux kernel/

Lageradministration Intel Pentium og Unix/Linux

Input/Output: Disk & Clock. dopsys

Principper for Samtidighed og Styresystemer

ESP30076 임베디드시스템프로그래밍 (Embedded System Programming)

Styresystemer og tjenester

Operativsystemer - dopsys. Erik Ernst

Programmering i C. Lektion september 2009

Real-time programming safety in Java and Ada

DM14-1. Obligatorisk opgave F.06. System Call. Jacob Aae Mikkelsen Ingen andre gruppe medlemmer. 6. marts 2005

Planen for idag. Synkroniseringsmekanismer. Krav til løsning. Kritiske regioner. Bagerens algoritme. Kritisk region via delt lager.

Systemkald DM Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/ Afleveret af: Jacob Christiansen,

Pentium IA-32 Maskinarkitekturen

1 Operativsystemer oversigt

INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen. I3PRG3 + I3DTM3 + I3ISY1-3. semester

Scheduling. Niels Olof Bouvin. Institut for Datalogi Aarhus Universitet

Principper for Samtidighed og Styresystemer

Lageradministration Paging og segmentering

Analyse og design af Indlejrede Systemer. v/ Jens Dalsgaard Nielsen Henrik Schiøler alle Afdeling for Proceskontrol

Principper for Samtidighed og Styresystemer

Interconnect. Front end interface

Introduktion til Operativsystemer

Filsystemer: Anvendelse. dopsys

Operativsystemer of C Efterår 2013 Virtuel hukommelse (kap. 9)

Specifikation Abstrakt OO OS-API Rev Specifikation. Abstrakt, objektorienteret operativsystem-api

Schedulering. dopsys

Programmering i C. Lektion november 2008

Vidar Jon Bauge. Notater til Teknik. Datamatikeruddannelsen efterår 2005 Side 1 af 54

Processer. DS kursusgang nr. 2: Procestræer. ps: Vis processer

Programmering i C. Lektion september 2009

Styresystemer og tjenester

Planen for idag. Datalogi 1F Forår Hvad er en proces? Livscyklus for en proces. Hvad består en proces af?

Styresystemer og tjenester

Programmering i C Videre med C (2 af 4) 19. marts 2007

Filsystemer: Implementation. dopsys

Programmering i C. Lektion december 2008

Analyse og design af Indlejrede Systemer. v/ Jens Dalsgaard Nielsen Henrik Schiøler Mads Dore alle Afdeling for Proceskontrol

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

Planen for idag. Opdatering af delt lager

Styresystemer og tjenester

Dag 10 Flertrådet programmering

Operativsystemer. Tobias Brixen Q2-2012

Filsystemer. dopsys. fredag den 26. november 2010

Lageret er hierarkisk fokus nu: disk

Introduktion til C programmering

VMware og dopsys-linux

Common Language Runtime. Multithreading

Routing tables Processer Tråde Hukommelse. Operativsystemer og netværk Lektion 5. I/O Linux Debian Webserver

// Definition af porte og funktioner

Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007

Karaktergivende rapportopgave i Styresystemer og multiprogrammering

Eksamen dcomnet Q2/2010. Navn

Synkronisering af sekventielle processer

Programmering i C. Kursusintroduktion. Lektion september Målgruppe 2 Indhold 3 Form 4 Materiale. Målgruppe Indhold Form Materiale

Programmering i C. Lektion oktober 2008

onsdag den 1. december 2010 Input/Output

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med

dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet)

Ydre enheder & De Tre Synsvinkler

Moderne numerische Methoden der Festkörperphysik Lanczos-ED für die AF Heisenberg-Kette

Erklæring af variabler. Void indstil (Indstiller starttidspunkt og måleinterval).

DATALOGI 1F. Skriftlig eksamen tirsdag den 10. juni % 2 10 % 3 25 % 4 10 % 5 30 %

Kerner med afbrydelser. Planen for i dag. Kerne med afbrydelser. Tætkoblede drivprogrammer. Uheldig rækkefølge. Synkronisering med ydre enheder

Maskinarkitektur. Lars Kristensen Christian Storm dmasark 1

Lærebog. Datalogi 1F Forår Hvad sker hvornår? Kursusbøger. Planen for idag. Hvad er et operativsystem

et enkelt kontrol flow sætningerne i programmet afvikles en ad gangen flowet følger dels den tekstlige rækkefølge

Exceptions i Delphi. Try except

Kernealphaerne Indhold af G1

Schedulering af SAS job i MS Task Scheduler, som sender med log og statuskode ved fejl

OOP e uge kursusgang: Samtidighed (II) Safety = sikkerhed. Safety

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

PUT og INPUT funktionerne

3 Algebraisk Specifikation af Abstrakte Datatyper.

Abstrakte datatyper C#-version

Computere og Netværk (dcomnet)

Nintex Workflow UK/DK

Algorithms & Architectures II

Arkitekturdokument for Cruise Control

uprocessorens hardware

Alternative Scheduling in Linux Alina Beygelzimer November 30, 1999

Typisk modul-opbygget PLC system (Allan Bradley)

System Arkitektur og Integration

Datamaters arkitektur og programmering

Niveauer af abstrakte maskiner

QUICK START Updated:

PMDK PC-Side Basic Function Reference (Version 1.0)

Transkript:

Processer og koordinering.. fortsat dopsys 1

Betingelsesvariabler (Condition variables).. hukommelsesløs variant af semaphorer: Atomare operationer: Signal bruges til at sende et signal. Wait bruges til at vente på et signal. signal(c): if anyblocked(c) then unblockone(c) wait(c): block(c).. designet til synkronisering af processer ifm. monitors. condition variable c; cobegin p1:... wait(c);... // p2:... signal(c);...... coend; dopsys 4

Betingelsesvariabler (Condition variables).. hukommelsesløs variant af semaphorer: Atomare operationer: Signal bruges til at sende et signal. Wait bruges til at vente på et signal. signal(c): if anyblocked(c) then unblockone(c) wait(c): block(c).. designet til synkronisering af processer ifm. monitors. condition variable c; cobegin p1:... wait(c);... // p2:... signal(c);...... coend; Farligt hvorfor? dopsys 5

Monitors (Hoare, 1974).. abstraktionsmekanisme, beskytter tilgang til delte resurser: Monitor komponenter: Data - resursens tilstand Procedurer - tilgang til resursens data. Egenskaber: Tilgang til data kan kun ske via monitor-procedurer. Monitor-procedurer udføres med gensidig udelukkelse. Bagvedliggende begreb: Abstrakte datatyper. Central intuition: at være inde i monitoren eller ej. dopsys 6

Brug af monitor Forløb: Monitor bruges af p 1 og p 2, hvor p 1 kræver betingelse som p 2 skaber dopsys 7

Brug af monitor x_is_positive Forløb: Monitor bruges af p 1, som udfører et eller andet arbejde og på et tidspunkt kræver at x er ikkenegativ. Men kun g kan sikre dette: wait dopsys 8

Brug af monitor Forløb: p 1 er i waittilstand, dvs. p 1 er blokeret på betingelsesvariablen x_is_positive dopsys 9

Brug af monitor x_is_positive Forløb: på et eller andet tidspunkt agerer p 2, og kalder g som sender det ønskede signal dopsys 10

Brug af monitor Forløb: p 1 modtager signalet og kan fortsætte dopsys 11

[Click] A. Kun p 1 kan køre B. Kun p 2 kan køre C. Både p 1 og p 2 kan køre, og det er et problem D. Både p 1 og p 2 kan køre, og det er OK E. Det er en fejl at vi overhovedet er kommet i denne situation (hvad har vi glemt?) Forløb: men hvad er situationen nu? dopsys 12

Eksempel: Producer-Consumer.. behov for synkronisering omkring fyldt og tom buffer. monitor BoundedBuffer char buffer[n]; int nextin=0, nextout=0, count=0; condition notempty, notfull;.. // insert,remove,.. Hvilken proces fortsætter lige efter signal? Kunne man vælge anderledes? insert(char data) if (count==n) notfull.wait; buffer[nextin] = data; nextin = (nextin+1) % n; count = count + 1; notempty.signal; remove(char data) if (count==0) notempty.wait; data = buffer[nextout]; nextout = (nextout+1) % n; count = count - 1; notfull.signal; dopsys 13

[Q/A] Er et Javaobjekt en monitor? = dopsys 14

spørgsmål om synkronisering? dopsys 15

Implementation af Processer dopsys 16

Re: Processer Software der afvikles på maskinen = samling af samtidige sekventielle processer Proces = et program under afvikling data data proces-struktur SP A PC A stack program SP B PC B stack program Billedet af processer skal nu udbygges Proces A Proces B dopsys 17

Processer.. implementeres af operativsystemskernen: OS-kernens funktioner: Proces- og tråd-håndtering. Interrupt- og trap-håndtering. Resurse-håndtering. Input/output. dopsys 18

Process Control Block (Descriptor).. anvendes til repræsentation af processer i OS kernen: State vector: Tilstrækkelig information til at genoptage afvikling af processen. Proces status: Running: afvikles på CPU. Ready: venter på CPU. Blocked: venter på anden resurse... Process control block (PCB) typisk forbundet via et antal lister og køer. dopsys 19

Proces-tilstand.. skelnen mellem active eller suspended:.. understøtter håndtering af processen (fx opstart og debugging). dopsys 20

Eksempel: Linux /* sched.h */ struct task_struct long state; /* -1 unrunnable, 0 runnable, >0 stopped */... pid_t pid;... struct task_struct *p_opptr, *p_pptr,... /* tss for this task */ struct thread_struct tss; ; /* filesystem information */ struct fs_struct *fs; /* open file information */ struct files_struct *files; /* memory management info */ struct mm_struct *mm; /* processor.h */ struct thread_struct unsigned short back_link, blh; unsigned long esp0; unsigned short ss0, ss0h; unsigned long esp1; unsigned short ss1, ss1h; unsigned long esp2; unsigned short ss2, ss2h; unsigned long cr3; unsigned long eip; unsigned long eflags; unsigned long eax,ecx,edx,ebx; unsigned long esp; unsigned long ebp; unsigned long esi; ; unsigned long edi; dopsys 21

Proces-operationer.. ændrer på processers status. Typiske operationer: Create etablerer en ny proces. Destroy fjerner processer. Suspend ændrer status til suspenderet. Activate ændrer status til aktiv. Operationer modificerer også proceslister / køer: Ready List processer med ready status. Status Lister lister af processer som er blokerede på resurser. dopsys 22

Create Create(s0, m0, pi) p = Get_New_PCB(); pid = Get_New_PID(); p->id = pid; p->cpu_state = s0; p->memory = m0; p->priority = pi; p->status.type = ready_s; p->status.list = RL; p->creation_tree.parent = self; p->creation_tree.child = NULL; insert(self->creation_tree.child, p); insert(rl, p); Schedule dopsys 23

Suspend Suspend(pid) p = Get_PCB(pid); s = p->status.type; if ((s==blocked_a) (s==blocked_s)) p->status.type = blocked_s; else p->status.type = ready_s; if (s==running) cpu = p->processor_id; p->cpu_state = Interrupt(cpu); Scheduler(); dopsys 24

Activate Activate(pid) p = Get_PCB(pid); if (p->status.type == ready_s) else p->status.type = ready_a; Scheduler(); p->status.type = blocked_a; dopsys 25

Destroy(pid) Destroy p = Get_PCB(pid); Kill_Tree(p); Scheduler(); Kill_Tree(p) for (each q in p->creation_tree.child) Kill_Tree(q); if (p->status.type == running) cpu = p->processor_id; Interrupt(cpu); Remove(p->Status.List, p); Release_all(p->Memory); Release_all(p->Other_Resources); Close_all(p->Open_Files); Delete_PCB(p); dopsys 26

spørgsmål om implementation af processer? dopsys 27

Tråde.. skelnen mellem udførelsesdelen (control flow) og resursedelen af en proces: Fordele: Tråd-elementer: Registre Programtæller Stack Proces-elementer: Skift mellem tråde kræver ikke fuldt context-switch. Kommunikation er nemt da resurser (lager) deles. Simpel programmeringsmodel. Lager (adresserum) Åbne filer dopsys 28

POSIX Tråde: Unix OS dopsys 29

Eksempel: Enkelt-trådet program int A(void) int i; B(NULL); for (i=0; i<10; i++) printf("a\n"); sleep(1); return 0; int main(int argc,char *argv[]) A(); return 0; #include <stdio.h> void B(void *arg) int i; for (i=0; i<10; i++) printf("b\n"); sleep(2); dopsys 30

Eksempel: Enkelt-trådet program int A(void) int i; B(NULL); for (i=0; i<10; i++) printf("a\n"); sleep(1); return 0; int main(int argc,char *argv[]) A(); return 0; #include <stdio.h> void B(void *arg) int i; for (i=0; i<10; i++) printf("b\n"); sleep(2); Hvad udskriver programmet? dopsys 31

Eksempel: Flertrådet program int threada(void) pthread_t threadb; int i; pthread_create(&threadb,null, threadb,null); for (i=0; i<10; i++) printf("\n"); sleep(1); pthread_join(threadb,null); return 0; int main(int argc,char *argv[]) threada(); return 0; void* threadb (void *arg) int i; for (i=0; i<10; i++) printf("\n"); sleep(2); return NULL; %>./threadab %> dopsys 32

[Click] int threada(void) pthread_t threadb; int i; pthread_create(&threadb,null, threadb,null); for (i=0; i<10; i++) printf("\n"); sleep(1); pthread_join(threadb,null); return 0; int main(int argc,char *argv[]) threada(); return 0; void* threadb (void *arg) int i; for (i=0; i<10; i++) printf("\n"); sleep(2); return NULL; %>./threadab %> dopsys 33

int threada(void) pthread_t threadb; int i; pthread_create(&threadb,null, threadb,null); for (i=0; i<10; i++) printf("\n"); sleep(1); pthread_join(threadb,null); return 0; int main(int argc,char *argv[]) threada(); return 0; [Click] void* threadb (void *arg) int i; for (i=0; i<10; i++) printf("\n"); sleep(2); return NULL; Vil det ikke gå galt, fordi stdout er en delt resurse? %>./threadab %> dopsys 33

int threada(void) pthread_t threadb; int i; pthread_create(&threadb,null, threadb,null); for (i=0; i<10; i++) printf("\n"); sleep(1); pthread_join(threadb,null); return 0; int main(int argc,char *argv[]) threada(); return 0; [Click] void* threadb (void *arg) int i; for (i=0; i<10; i++) printf("\n"); sleep(2); return NULL; Vil det ikke gå galt, fordi stdout er en delt resurse? %>./threadab %> A. Jo, det går galt (tænk over hvordan) B. Nej, det går godt: Operativsystemet beskytter stdout C. Nej, det går godt: Der er ikke tale om samtidighed D. stdout er slet ikke en delt resurse, fordi hver proces har sin egen kopi dopsys 33

Implementation af tråde.. kan implementeres i user space eller kernel space: User space implementation: Implementeres af runtime system i programmet. Transparent for operativsystemet. Blokerende systemkald skal håndteres. Kernel space implementation: Operativsystemet implementerer trådbegreb via systemkald. Schedulering af tråde sker i operativsystemet. Blokerende systemkald ikke noget problem. dopsys 34

spørgsmål om tråde? dopsys 35

Opsummering Koordinering: Monitor Condition variable Proces-implementation: Process Control Block Proces-tilstande Proces-operationer (Create, Suspend, Activate, Destroy) Tråde: Begreb, justering af PCB, implementation, eksempel dopsys 36