CSE 788.07, Autumn 2011 Michael Bond. Dynamic Program Analysis and Runtime Systems for Reliable Concurrent Software: Introduction & Background. Introductions. Name Program & year Where are you coming from? Research interests Or what’s something you find interesting?
01 / 56Dynamic Program Analysis and Runtime Systems for Reliable Concurrent Software: Introduction & Background
1 / 17
Télécharger la présentation
Dynamic Program Analysis and Runtime Systems for Reliable Concurrent Software: Introduction & Background
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
F I N
Plus de contenu associé
Transcription de la présentation
CSE 788.07, Autumn 2011 Michael Bond Dynamic Program Analysis and Runtime Systems forReliable Concurrent Software:Introduction & Background
Introductions • Name • Program & year • Where are you coming from? • Research interests • Or what’s something you find interesting? • Research advisor, if any
Often dynamically sound: Reports all bugs in this execution False positive: reported “bug” isn’t really a bug (declare correct program incorrect) False negative: miss a bug (declare incorrect program correct)
Conservative: Concurrent execution Approximating heap Dynamic class loading & reflection Most realistic executions are on deployed (production) systems!
Survey • Name (& nickname if applicable) • Program (PhD/master’s) & year (1st, 2nd, etc.) • Why taking class? • Research interests & current research advisor (if any) • Background (grad & undergrad): PL, compilers, architecture, parallel programming, runtime systems, SE • Available times on Mondays and Wednesdays • How likely you’ll stay in class (% or explain)? • Paper(s) you’d like to present (if any) • Feedback so far? • Concerns about forwarding critiques to all?
CSE 788.07, Autumn 2011 Michael Bond Dynamic Program Analysis and Runtime Systems forReliable Concurrent Software:Introduction & Background, Day 2
Responding to feedback & clarifying policies Critiques • Critiques sent to everyone, but anonymous • Don’t write critique if leading discussion Discussion leaders • Covering in interactive way: paper’s main points, plus critical analysis & opportunities • Send scheduling e-mail: 4 weekdays before class • Full availability & current status/outline • Send outline: day before our meeting • Volunteer for next time?
Responding to feedback & clarifying policies Meeting • I/we need to talk louder • Coffee Logistics • 16 enrolled, ~16 papers replace presentations? • Discussion leader for next time? • Dropping/auditing? – contact me • Got my e-mail?
For next time • Read papers • Meet with group tomorrow • Send critique by 5 pm • Read critiques before class • Before class: send paper(s) you’d like to present • Also start looking at papers for project topic selection (preliminary proposal due Thursday next week)
For next time • Read papers • Meet with group tomorrow • Send critique by 5 pm • Read critiques before class • Before class: send paper(s) you’d like to present • Also start looking at papers for project topic selection (preliminary proposal due Thursday next week) Questions?
Forming groups • 1–2 or 2–3: SJ • 11–12: MFS • Another time (8:30–10:30, 11:30–1:30): DH Will you have time to write critiques after meeting?
Motivation for course content Critiques & discussions – critically evaluate research & develop new ideas; understand ideas & concepts deeply Project – practice research process; make research contribution Motivation for material – more in 885
Concurrency exceptions?! Java provides memory & type safety • Buffer overflows, dangling pointers, array out-of-bounds, double frees, some memory leaks • How are these handled? With exceptions?
Concurrency exceptions?! Java provides memory & type safety • Buffer overflows, dangling pointers, array out-of-bounds, double frees, some memory leaks • How are these handled? With exceptions? Should languages, runtime, & hardware systems provide concurrency correctness?
Concurrency exceptions & enforcement • Data-race freedom & sequential consistency • Locking discipline • Atomicity • Also: enforcing atomicity • Also: record & replay Advantages of exceptions vs. enforcement? Easier to provide exceptions vs. enforcement?
Concurrency exceptions & enforcement • Data-race freedom & sequential consistency • Locking discipline • Atomicity • Also: enforcing atomicity • Also: record & replay Advantages of exceptions vs. enforcement? Easier to provide exceptions vs. enforcement? Questions or other issues in paper?
Data races & sequential consistency • Two accesses to same variable • At least one is a write Not well-synchronized (not ordered by happens-before relationship) Or: accesses can happen simultaneously
Is there a data race? Initially: intdata = 0; booleanflag = false; T2: if (flag) ... = data; T1: data = ...; flag = true;
Is there a data race? Initially: intdata = 0; booleanflag = false; T2: if (flag) ... = data; T1: data = ...; flag = true;
Is that really so bad? Initially: intdata = 0; booleanflag = false; T2: if (flag) ... = data; T1: data = ...; flag = true;
Is that really so bad? Initially: intdata = 0; booleanflag = false; T2: if (flag) ... = data; T1: flag = true; data = ...;
Is that really so bad? Initially: intdata = 0; booleanflag = false; T2: if (flag) ... = data; Why a sequential consistency violation? T1: flag = true; data = ...;
Is that really so bad? Initially: intdata = 0; booleanflag = false; T2: • tmp = data; if (flag) ... = tmp; T1: data = ...; flag = true;
Is there a data race? Initially: intdata = 0; booleanflag = false; T2: • booleantmp; • synchronized (m) { • tmp = flag; • } if (tmp) ... = data; T1: data = ...; synchronized (m) { flag = true; }
Is there a data race? Initially: intdata = 0; booleanflag = false; T2: • booleantmp; • acquire(m); • tmp = flag; • release(m); if (tmp) ... = data; Happens-before relationship T1: data = ...; acquire(m); flag = true; release(m);
Is there a data race? Initially: intdata = 0; volatilebooleanflag = false; T2: if (flag) ... = data; Happens-before relationship T1: data = ...; flag = true;
Concurrency exceptions & enforcement • Data-race freedom & sequential consistency • Locking discipline • Atomicity • Also: enforcing atomicity • Also: record & replay Advantages of exceptions vs. enforcement? Easier to provide exceptions vs. enforcement?
Another example: double-checked locking class Movie { Set<String> comments; addComment(String s) { if (comments == null) { comments = new HashSet<String>(); } comments.add(s); } }
Another example: double-checked locking class Movie { Set<String> comments; addComment(String s) { synchronized (this) { if (comments == null) { comments = new HashSet<String>(); } } comments.add(s); } }
Connexion au compte
Connectez-vous pour publier votre contenu sur SlideServe.