A Formal Specification A

Total Page:16

File Type:pdf, Size:1020Kb

A Formal Specification A Synchronization Primitives for a Multiprocessor: A Formal Specification A. D. Birrell, J. V. Guttag,* J. J. Horning, R. Levin Digital Equipment Corporation, Systems Research Center 180 Lytton Avenue, Palo Alto, CA 94801, U.S.A. Abstract descriptions. It can be made more precise and complete, and is more likely to be interpreted consistently by various Formal specifications of operating system interfaces can readers. Our experience in specifying and documenting the be a useful part of their documentation. We illustrate this synchronization facilities of DEC/SRC's Threads package by documenting the Threads synchronization primitives of supports this view. the Taos operating system. We start with an informal description, present a way to formally specify interfaces The Threads package implements concurrent threads in concurrent systems, give a formal specification of the of controlt for the Taos operating system [McJones 87] synchronization primitives, briefly discuss the implemen- and application programs running on our Firefly multi- tation, and conclude with a discussion of what we have processor workstation [Thacker 87]. The package supports learned from using the specification for more than a year. large numbers of concurrent threads, and permits multiple concurrent threads within an address space. The synchro- Introduction nization facilities we describe permit threads to cooperate in the use of shared memory. The careful documentation of interfaces is an important step in the production of software upon which other soft- We begin with an informal description of the Threads ware is to be built. If people are to use software without synchronization primitives. These are similar to those in having to understand its implementation, documentation many other systems, but their use on a multiprocessor must convey semantic as well as syntactic information. raises questions about their precise semantics that are When the software involves concurrency, adequate docu- difficult to answer using informal descriptions. mentation is particularly hard to produce, since the range We briefly describe the formal language we use to of possible behaviors is likely to be large and difficult to specify interfaces involving concurrency, and then present characterize [Jones 83]. the specification itself. We intend to give the reader We believe that operating system documentation con- a complete and precise understanding of the properties taining formal specifications can be significantly better that client programmers may rely on when using the than documentation restricted to informal or semi-formal Threads synchronization primitives. The specification should answer any questions about how our primitives * Permanent address: MIT Laboratory for Computer differ from others with which the reader is familiar. Science, 545 Technology Square, Cambridge, MA 02139. We next discuss the implementation of Threads. It is This research was supported in part by the Advanced chiefly interesting for the way efficiency is obtained despite Research Projects Agency of the Department of Defense, limited hardware support. The need for efficiency led to monitored by the Office of Naval Research under contract an implementation that has a rather different structure N00014-83-K-0125, and by the National Science Founda- than the specification might suggest. This illustrates how tion under grant DCR-8411639. specifications can protect clients from needing to know implementation details. Finally, we discuss how the formal specification has been and is being used by programmers. t ~Lightweight processes"; we avoid the word "process" because of its connotation of "address space" in some operating systems. [Saltzer 66] credits the term "thread" to V. Vyssotsky. Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a fee and/or specfic permission. © 1987 ACM 089791-242-X/87/0011/0094 $1.50 94 Informal Description This syntax encourages the use of correctly bracketed occurrences of Acquire and Release. It also makes it easy The Threads package provides a Modula-2+ [Rovner 86] for the compiler to produce highly optimized code for such interface for creating and controlling a virtually unlimited occurrences, (The TRY... FINALLY construct ensures that number of threads, which may or may not share memory. Release will be called regardless of whether control leaves This paper is concerned only with its synchronization the statement-sequence because it has been completed or facilities. These are rather simple, and are derived from the because an exception has been raised.) Other uses of concepts of monitors and condition variables first outlined Acquire and Release are generally discouraged. by Hoare [Hoare 74]. Their semantics are similar to those provided by Mesa [Lampson 80]. The synchronization Condition Variables: Wait, Signal, Broadcast facilities use three main types: Mutex, Condition, and Condition variables make it possible for a thread to Semaphore. suspend its execution while awaiting an action by some As far as clients of Threads are concerned, all threads other thread. For example, the consumer in a producer- can execute concurrently. The Threads implementation is consumer algorithm might need to wait for the producer. responsible for assigning threads to real processors. The Or the implementation of a higher level locking scheme way in which this assignment is made affects performance, might require that some threads wait until a lock is but does not affect the semantics of the synchronization available. primitives. The programmer can reason as if there were The normal paradigm for using condition variables is as many processors as threads. The Threads package also as follows. A condition variable "c" is always associated includes facilities for affecting the assignment of threads with some shared variables protected by a mutex "m" and to real processors (for example, a simple priority scheme), a predicate based on those shared variables. A thread but our specification is independent of these facilities. acquires m (i.e., enters a critical section) and evaluates Mutual Exclusion: Acquire, Release the predicate to see if it should call Wait(m, c) to suspend its execution. This call atomically releases the mutex (i.e., A mutex [Dijkstra 68] is the basic tool enabling threads ends the critical section) and suspends execution of that to cooperate on access to shared variables. A mutex is thread. normally used to achieve an effect similar to monitors, After any thread changes the shared variables so that ensuring that a set of actions on a group of variables can o's predicate might be satisfied, it calls Signal(c) or be made atomic relative to any other thread's actions on Broadcast(c). (Although the changes may be made only these variables. Atomicity can be achieved by arranging within a critical section, the thread may exit the critical that: section before this call.) Signal and Broadcast allow • All reads and writes of the shared variables occur blocked threads to resume execution and re-acquire the within critical sections associated with these vari- mutex. When a thread returns from Wait it is in a ables. new critical section. It re-evaluates the predicate and • Each critical section is executed from start to finish determines whether to proceed or to call Wait again. without any other thread entering a critical section There are several subtleties in the semantics of these associated with these variables. procedures, and it is difficult to express them correctly in • Each action that is to be atomic is entirely con- an informal description. This is the area where we have tained within a single critical section. found the formal specification most useful. Such mutual exclusion completely serializes the critical • Even if threads take care to call Signal only when sections, and hence the atomic actions they contain. It can the predicate is true, it may become false before be implemented using the procedures Acquire and Release. a waiting thread resumes execution. Some other A mutex "m" is associated with the set of variables, thread may enter a critical section first and in- and each critical section is bracketed by Acquire(m) and validate the predicate. Therefore when a thread Release(m) actions. The semantics of Acquire and Release returns from a Wait it must re-evaluate its predicate ensure that these bracketed sections are indeed critical and be prepared to call Wait again. Return from sections. Wait is only a hint [Lampson 84] that must be Critical sections are so frequently useful that Modula-2+ confirmed. By contrast, with Hoare's condition includes syntactic sugar for them. The statement: variables threads are guaranteed that the predicate LOCK e DO statement-sequence END is true on return from Wait. Our looser specification is equivalent to: reduces the obligations of the signalling thread and LET m=e; leads to a more efficient implementation on our Acquire (m); multiprocessor. TRY statement-sequence The two things that Wait(m, c) must do first--leave FINALLY Release(m) the critical section and suspend execution of the END thread--must be in one atomic action relative to 95 any call of Signal. The following sequence would It allows a thread to request that another thread desist be incorrect: one thread leaves its critical section; from a computation. It is generally used in situations then another thread enters a critical section, mod- where the decision to make this request happens at an ifies the shared variables, and calls Signal (which abstraction level higher than that in which the thread finds nothing to be unblocked); and then the first is blocked, so that the appropriate condition variable or thread suspends execution. This is familiar to most semaphore is not readily accessible. operating system designers as a ~vakeup-waiting Calling Alert(t) is a request that the thread t raise race" [Saltzer 66].
Recommended publications
  • Artificial Intelligence in Health Care: the Hope, the Hype, the Promise, the Peril
    Artificial Intelligence in Health Care: The Hope, the Hype, the Promise, the Peril Michael Matheny, Sonoo Thadaney Israni, Mahnoor Ahmed, and Danielle Whicher, Editors WASHINGTON, DC NAM.EDU PREPUBLICATION COPY - Uncorrected Proofs NATIONAL ACADEMY OF MEDICINE • 500 Fifth Street, NW • WASHINGTON, DC 20001 NOTICE: This publication has undergone peer review according to procedures established by the National Academy of Medicine (NAM). Publication by the NAM worthy of public attention, but does not constitute endorsement of conclusions and recommendationssignifies that it is the by productthe NAM. of The a carefully views presented considered in processthis publication and is a contributionare those of individual contributors and do not represent formal consensus positions of the authors’ organizations; the NAM; or the National Academies of Sciences, Engineering, and Medicine. Library of Congress Cataloging-in-Publication Data to Come Copyright 2019 by the National Academy of Sciences. All rights reserved. Printed in the United States of America. Suggested citation: Matheny, M., S. Thadaney Israni, M. Ahmed, and D. Whicher, Editors. 2019. Artificial Intelligence in Health Care: The Hope, the Hype, the Promise, the Peril. NAM Special Publication. Washington, DC: National Academy of Medicine. PREPUBLICATION COPY - Uncorrected Proofs “Knowing is not enough; we must apply. Willing is not enough; we must do.” --GOETHE PREPUBLICATION COPY - Uncorrected Proofs ABOUT THE NATIONAL ACADEMY OF MEDICINE The National Academy of Medicine is one of three Academies constituting the Nation- al Academies of Sciences, Engineering, and Medicine (the National Academies). The Na- tional Academies provide independent, objective analysis and advice to the nation and conduct other activities to solve complex problems and inform public policy decisions.
    [Show full text]
  • Computational Thinking's Influence on Research and Education For
    Computational thinking’s influence on research and education for all Influenza del pensiero computazionale nella ricerca e nell’educazione per tutti Jeannette M. Wing Columbia University, New York, N.Y., USA, [email protected] HOW TO CITE Wing, J.M. (2017). Computational thinking’s influence on research and education for all. Italian Journal of Educational Technology, 25(2), 7-14. doi: 10.17471/2499-4324/922 ABSTRACT Computer science has produced, at an astonishing and breathtaking pace, amazing technology that has transformed our lives with profound economic and societal impact. In the course of the past ten years, we have come to realize that computer science offers not just useful software and hardware artifacts, but also an intellectual framework for thinking, what I call “computational thinking”. Everyone can benefit from thinking computationally. My grand vision is that computational thinking will be a fundamental skill—just like reading, writing, and arithmetic—used by everyone by the middle of the 21st Century. KEYWORDS Computational Thinking, Education, Curriculum. SOMMARIO L’informatica ha prodotto, a un ritmo sorprendente e mozzafiato, una straordinaria tecnologia che ha profondamente trasformato le nostre vite con importanti conseguenze economiche e sociali. Negli ultimi dieci anni ci si è resi conto che l’informatica non solo offre utili artefatti software e hardware, ma anche un paradigma di ragionamento che chiamo “pensiero computazionale”. Ognuno di noi può trarre vantaggio dal pensare in modo computazionale. Mi aspetto che il pensiero computazionale costituirà un’abilità fondamentale - come leggere, scrivere e far di conto – che verrà utilizzata da tutti entro la prima metà del XXI secolo.
    [Show full text]
  • Thomas Heldt
    Thomas Heldt Institute for Medical Engineering & Science p: (617) 324-5005 Massachusetts Institute of Technology f: (617) 253-7498 Room E25-324 e: [email protected] 77 Massachusetts Avenue Cambridge, MA 02139 Education Massachusetts Institute of Technology, Cambridge, MA, USA 1997 { 2004 Harvard { MIT Division of Health Sciences and Technology Ph.D. Medical Physics, September 2004 Thesis title: Computational Models of Cardiovascular Response to Orthostatic Stress Yale University, New Haven, CT, USA 1995 { 1997 M.S. Physics, June 1997 M.Phil. Physics, December 1998 Johannes Gutenberg-Universit¨at,Mainz, Germany 1994 { 1995 First-year medical studies Johannes Gutenberg-Universit¨at,Mainz, Germany 1992 { 1995 Diplomvorpr¨ufungPhysics, June 1994 Passed Diplomvorpr¨ufungin Physics with honors Experience Associate Professor of Electrical and Biomedical Engineering 07/2017 { present Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science W.M. Keck Career Development Professor in Biomedical Engineering 07/2016 { present Massachusetts Institute of Technology Member of the Affiliate Faculty of Health Sciences & Technology 05/2014 { present Harvard Medical School Core Faculty Member 07/2013 { present Massachusetts Institute of Technology Institute for Medical Engineering and Science Principal Investigator 07/2013 { present Massachusetts Institute of Technology Research Laboratory of Electronics Hermann L.F. von Helmholtz Career Development Professor 07/2013 { 06/2016 Massachusetts Institute of Technology Institute for Medical Engineering and Science Assistant Professor of Electrical and Biomedical Engineering 07/2013 { 06/2017 Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science Principal Research Scientist 07/2012 { 07/2013 Massachusetts Institute of Technology Computational Physiology and Clinical Inference Group Thomas Heldt, Ph.D.
    [Show full text]
  • Private Companiescompanies
    PrivatePrivate CompaniesCompanies Private Company Profiles @Ventures Kepware Technologies Access 360 Media LifeYield Acronis LogiXML Acumentrics Magnolia Solar Advent Solar Mariah Power Agion Technologies MetaCarta Akorri mindSHIFT Technologies alfabet Motionbox Arbor Networks Norbury Financial Asempra Technologies NumeriX Asset Control OpenConnect Atlas Venture Panasas Autonomic Networks Perimeter eSecurity Azaleos Permabit Technology Azimuth Systems PermissionTV Black Duck Software PlumChoice Online PC Services Brainshark Polaris Venture Partners BroadSoft PriceMetrix BzzAgent Reva Systems Cedar Point Communications Revolabs Ceres SafeNet Certeon Sandbridge Technologies Certica Solutions Security Innovation cMarket Silver Peak Systems Code:Red SIMtone ConsumerPowerline SkyeTek CorporateRewards SoloHealth Courion Sonicbids Crossbeam Systems StyleFeeder Cyber-Ark Software TAGSYS DAFCA Tatara Systems Demandware Tradeware Global Desktone Tutor.com Epic Advertising U4EA Technologies ExtendMedia Ubiquisys Fidelis Security Systems UltraCell Flagship Ventures Vanu Fortisphere Versata Enterprises GENBAND Visible Assets General Catalyst Partners VKernel Hearst Interactive Media VPIsystems Highland Capital Partners Ze-gen HSMC ZoomInfo Invention Machine @Ventures Address: 187 Ballardvale Street, Suite A260 800 Menlo Ave, Suite 120 Wilmington, MA 01887 Menlo Park, CA 94025 Phone #: (978) 658-8980 (650) 322-3246 Fax #: ND ND Website: www.ventures.com www.ventures.com Business Overview @Ventures provides venture capital and growth assistance to early stage clean technology companies. Established in 1995, @Ventures has funded more than 75 companies across a broad set of technology sectors. The exclusive focus of the firm's fifth fund, formed in 2004, is on investments in the cleantech sector, including alternative energy, energy storage and efficiency, advanced materials, and water technologies. Speaker Bio: Marc Poirier, Managing Director Marc Poirier has been a General Partner with @Ventures since 1998 and operates out the firm’s Boston-area office.
    [Show full text]
  • Introduction to the Literature on Programming Language Design Gary T
    Computer Science Technical Reports Computer Science 7-1999 Introduction to the Literature On Programming Language Design Gary T. Leavens Iowa State University Follow this and additional works at: http://lib.dr.iastate.edu/cs_techreports Part of the Programming Languages and Compilers Commons Recommended Citation Leavens, Gary T., "Introduction to the Literature On Programming Language Design" (1999). Computer Science Technical Reports. 59. http://lib.dr.iastate.edu/cs_techreports/59 This Article is brought to you for free and open access by the Computer Science at Iowa State University Digital Repository. It has been accepted for inclusion in Computer Science Technical Reports by an authorized administrator of Iowa State University Digital Repository. For more information, please contact [email protected]. Introduction to the Literature On Programming Language Design Abstract This is an introduction to the literature on programming language design and related topics. It is intended to cite the most important work, and to provide a place for students to start a literature search. Keywords programming languages, semantics, type systems, polymorphism, type theory, data abstraction, functional programming, object-oriented programming, logic programming, declarative programming, parallel and distributed programming languages Disciplines Programming Languages and Compilers This article is available at Iowa State University Digital Repository: http://lib.dr.iastate.edu/cs_techreports/59 Intro duction to the Literature On Programming Language Design Gary T. Leavens TR 93-01c Jan. 1993, revised Jan. 1994, Feb. 1996, and July 1999 Keywords: programming languages, semantics, typ e systems, p olymorphism, typ e theory, data abstrac- tion, functional programming, ob ject-oriented programming, logic programming, declarative programming, parallel and distributed programming languages.
    [Show full text]
  • Interview with Barbara Liskov ACM Turing Award Recipient 2008 Done at MIT April 20, 2016 Interviewer Was Tom Van Vleck
    B. Liskov Interview 1 Interview with Barbara Liskov ACM Turing Award Recipient 2008 Done at MIT April 20, 2016 Interviewer was Tom Van Vleck Interviewer is noted as “TVV” Dr. Liskov is noted as “BL” ?? = inaudible (with timestamp) or [ ] for phonetic [some slight changes have been made in this transcript to improve the readability, but no material changes were made to the content] TVV: Hello, I’m Tom Van Vleck, and I have the honor today to interview Professor Barbara Liskov, the 2008 ACM Turing Award winner. Today is April 20th, 2016. TVV: To start with, why don’t you tell us a little bit about your upbringing, where you lived, and how you got into the business? BL: I grew up in San Francisco. I was actually born in Los Angeles, so I’m a native Californian. When I was growing up, it was definitely not considered the thing to do for a young girl to be interested in math and science. In fact, in those days, the message that you got was that you were supposed to get married and have children and not have a job. Nevertheless, I was always encouraged by my parents to take academics seriously. My mother was a college grad as well as my father, so it was expected that I would go to college, which in those times was not that common. Maybe 20% of the high school class would go on to college and the rest would not. I was always very interested in math and science, so I took all the courses that were offered at my high school, which wasn’t a tremendous number compared to what is available today.
    [Show full text]
  • Jeannette M. Wing Data Science Institute Columbia University 550 W
    Jeannette M. Wing Columbia University 313 Low Library, Mail Code 4310 535 West 116th Street New York, NY 10027 [email protected] (212) 854-1696 www.cs.columbia.edu/∼wing/ Research Interests Trustworthy AI, trustworthy computing, privacy, security, software specification and verification, distributed and concurrent systems, programming languages, programming methodology, software engineering. Education June 1983 Massachusetts Institute of Technology Cambridge, MA Ph.D. in Computer Science Thesis: A Two-Tiered Approach to Specifying Programs. Advisor: John Guttag. Minor in logic and number theory. June 1979 Massachusetts Institute of Technology Cambridge, MA S.M. in Electrical Engineering and Computer Science. Thesis: Partial-Match Retrieval Using Tries, Hashing, and Superimposed Codes. Advisors: Ronald Rivest (MIT) and John Reiser (Bell Labs). VI-A co-operative student in Computer Science with AT&T Bell Laboratories. June 1979 Massachusetts Institute of Technology Cambridge, MA S.B. in Computer Science and Engineering. VI-A co-operative student in Computer Science with AT&T Bell Laboratories. Employment History 2017– Columbia University New York, NY Executive Vice President for Research, 2021–. Avanessians Director of the Data Science Institute, 2017–2021. Professor of Computer Science, 2017–. Zuckerman Mind, Brain, and Behavior Institute, Affiliate Member, 2018–. 2013–2017 Microsoft Research Redmond, WA Corporate Vice President, Microsoft Research, July 2013–June 2017; Head of MSR Labs, September 2014– June 2017 Vice President, Head of Microsoft Research International, January–July 2013. 1985– Carnegie Mellon University Pittsburgh, PA Adjunct Professor of Computer Science, 2019–. 1 Consulting Professor of Computer Science, 2015–2018. On leave, 2013–2015. President’s Professor of Computer Science, 2004–2013.
    [Show full text]
  • University of Virginia Teaching Fellowship
    David Evans University Teaching Fellowship Application Statement In humanities fields, it is practically a cliché to say teaching is about inspiring young minds and conveying a love for a subject. In more technical subjects like Computer Science, however, these sentiments are seldom uttered and rarely believed. It is often argued that classes must first and foremost teach our students practical skills and develop the abilities they will need to obtain industrial jobs. Some will argue that introductory courses must be boring and tedious since it is only after enough basic information is learned that the more exciting material can be introduced. I couldn’t disagree more with those positions. I became a Computer Scientist because of a genuine love of the material, and I aspire to convey that to students when I teach. This is by far my most important goal when I design a course, prepare or deliver a lecture, lead or follow a discussion, create an assignment, or interact with a student. Our institution is not a vocational school, and that means our focus should be on inspiring our students to appreciate profound ideas and use them in creative and interesting ways. These are lofty goals that can only rarely be achieved. But we do our students a disservice if we do not strive to achieve them. This has been a guiding principle for me in teaching both undergraduate and graduate courses as well as advising students individually. Although I make plenty of room for discussion and special activities, all my courses so far have been primarily lecture based.
    [Show full text]
  • Adrian Vasile Dalca Curriculum Vitae
    Adrian Vasile Dalca Curriculum Vitae Massachusetts General Hospital, [email protected] Harvard Medical School, and http://adalca.mit.edu Computer Science and Artificial Intelligence Lab, 1 (617) 981-9164 Massachusetts Institute of Technology Education Ph.D. Massachusetts Institute of Technology 2016 Electrical Engineering and Computer Science Thesis: Genetic, Clinical and Population Priors for Brain Images Minor: Healthcare Ventures Advisor: Prof. Polina Golland Thesis Readers: John Guttag (MIT), Mert Sabuncu (HMS/MGH), Natalia Rost (HMS/MGH) GPA: 5.00/5.00 S.M. Massachusetts Institute of Technology 2012 Electrical Engineering and Computer Science Thesis: Segmentation of Nerve Bundles and Ganglia in Spine MRI using Particle Filters Advisor: Prof. Polina Golland GPA: 5.00/5.00 M.Sc. University of Toronto 2010 Department of Computer Science Thesis: VARiD: A Variation Detection Framework for Color-Space and Letter-Space Platforms Advisor: Prof. Michael Brudno GPA: 4.00/4.00 Hon. B.Sc. University of Toronto, with High Distinction 2008 Department of Computer Science Advisor: Prof. Michael Brudno GPA: 3.97/4.00 Research Experience Instructor (Junior Faculty), Radiology, MGH, Harvard Medical School, Charlestown, MA Laboratory for Computational Neuroscience. 2019 { Present Research Affiliate, CSAIL, MIT, Cambridge, MA Data Driven Inference Group. 2019 { Present Postdoctoral Fellow, CSAIL, MIT, and MGH, Harvard Medical School, Charlestown, MA Biomedical Data Analysis Group. Advisor: Prof. Mert Sabuncu 2017 { 2019 Data Driven Inference Group. Advisor: Prof. John Guttag 2017 { 2019 Research Assistant, Massachusetts Institute of Technology, Cambridge, MA Medical Vision Group. Advisor: Prof. Polina Golland 2010 { 2016 Computational Biology Lab. Advisor: Prof. Manolis Kellis Fall 2009 Research Assistant, University of Toronto, Toronto, ON, Canada Computational Biology Lab.
    [Show full text]
  • Abstraction Mechanisms in CLU
    that it enforces the preservation of I~. Step 4 guarantees (a) that the concrete operation is applicable whenever the abstract pre condition holds and (b) that if the operation is performed, the result corresponds properly to the abstract specifications. Language Design for S.L. Graham Acknowledgments. We owe a great deal to our col- Reliable Software Editor leagues at Carnegie-Mellon University and the Univer- sity of Southern California Information Sciences Insti- Abstraction tute, especially Mario Barbacci, Neil Goldman, Donald Good, John Guttag, Paul Hilfinger, David Jefferson, Mechanisms in CLU Anita Jones, David Lamb, David Musser, Karla Per- due, Kamesh Ramakrishna, and David Wile. We Barbara Liskov, Alan Snyder, would also like to thank James Horning and Barbara Russell Atkinson, and Craig Schaffert Liskov and their groups at the University of Toronto Massachusetts Institute of Technology and M.I.T., respectively, for their critical reviews of Alphard. We also appreciate very much the perceptive responses that a number of our colleagues have made on an earlier draft of this paper. Finally, we are grateful to Raymond Bates, David Lamb, Brian Reid, and Martin Yonke for their expert assistance with the docu- ment formatting programs. CLU is a new programming language designed to support the use of abstractions in program References 1. Dahl, O.-J., and Hoare, C.A.R. Hierarchical program struc- construction. Work in programming methodology has tures. In Structured Programming, O.-J. Dahl, E.W. Dijkstra, and led to the realization that three kinds of abstractions- C.A.R. Hoare, Academic Press, New York, 1972, pp. 175-220.
    [Show full text]
  • Bibliography
    Bibliography [Abelson85] Harold Abelson, Gerald Jay Sussman, and Julie Sussman, Structure and Interpretation of Computer Programs, MIT Press, Cambridge, MA, 1985. [Aho86] Alfred Aho, Ravi Sethi, and Jeffrey Ullman, Compilers: Principles, Tech- niques, and Tools, Addison-Wesley, Reading, MA, 1986. [Alagic78] Suad Alagic and Michael Arbib, The Design of Well-Structured and Correct Programs, Springer-Verlag, New York, 1978. [Allison86] Lloyd Allison, A Practical Introduction to Denotational Semantics, Cam- bridge University Press, Cambridge, UK, 1986. [Anderson76] E. R. Anderson, F. C. Belz, and E. K. Blum, “SEMANOL (73) A Metalanguage for Programming the Semantics of Programming Languages”, Acta Informatica, 6, 1976, pp. 109–131. [Astesiano91] Egidio Astesiano, “Inductive and Operational Semantics”, In Formal De- scription of Programming Concepts, edited by Erich Neuhold, et al, Springer- Verlag, Berlin, 1991. [Backhouse79] Roland Backhouse, Syntax of Programming Languages: Theory and Prac- tice, Prentice Hall International, Hemel Hempstead, UK, 1979. [Backhouse86] Roland Backhouse, Program Construction and Verification, Prentice Hall International, Englewood Cliffs, NJ, 1986. [Backus78] John Backus, “Can Programming Be Liberated from the von Neumann Style? A functional Style and Its Algebra of Programs”, Communications of the ACM, 21.8, August 1978, pp. 613–641. [Barendregt84] H. P. Barendregt, The Lambda Calculus, Its Syntax and Semantics, North- Holland, Amsterdam, 1984. [Bennett90] Jeremy Bennett, Introduction to Compiling Techniques, McGraw-Hill, New York, 1990. 611 612 BIBLIOGRAPHY [Bergstra89] J. Bergstra, J. Heering, and Paul Klint, Algebraic Specification, Addison- Wesley, Reading, MA, 1989. [Bird76] Richard Bird, Programs and Machines, Wiley, New York, 1976. [Bochman76] Gregor Bochman, “Semantic Evaluation from Left to Right”, Communica- tions of the ACM, 19.2, February 1976, pp.
    [Show full text]
  • A Micro-Power EEG Acquisition Soc with Integrated Feature Extraction Processor for a Chronic Seizure Detection System
    804 IEEE JOURNAL OF SOLID-STATE CIRCUITS, VOL. 45, NO. 4, APRIL 2010 A Micro-Power EEG Acquisition SoC With Integrated Feature Extraction Processor for a Chronic Seizure Detection System Naveen Verma, Member, IEEE, Ali Shoeb, Jose Bohorquez, Member, IEEE, Joel Dawson, Member, IEEE, John Guttag, and Anantha P. Chandrakasan, Fellow, IEEE Abstract—This paper presents a low-power SoC that performs Brain monitoring thus introduces key challenges for electronic EEG acquisition and feature extraction required for contin- systems in terms of both instrumentation and information uous detection of seizure onset in epilepsy patients. The SoC extraction. corresponds to one EEG channel, and, depending on the pa- tient, up to 18 channels may be worn to detect seizures as part Seizure detection in epilepsy patients is an important appli- of a chronic treatment system. The SoC integrates an instru- cation that is representative of the challenges. This paper de- mentation amplifier, ADC, and digital processor that streams scribes the details of an SoC that performs feature extraction features-vectors to a central device where seizure detection is from an analog EEG channel into the digital domain; the output performed via a machine-learning classifier. The instrumen- is used to detect the onset of seizures by way of a machine- tation-amplifier uses chopper-stabilization in a topology that achieves high input-impedance and rejects large electrode-off- learning classifier that is trained to patient-specific data. EEG sets while operating at 1 V; the ADC employs power-gating for sensing is targeted so that the system is noninvasive. This im- low energy-per-conversion while using static-biasing for com- plies that microvolt signals must be acquired from electrodes parator precision; the EEG feature extraction processor employs having very poor output impedance while in the presence of low-power hardware whose parameters are determined through numerous physiological and environmental interferences (e.g., validation via patient data.
    [Show full text]