NCS: Multi-Threaded Control Systems: Difference between revisions

From Murray Wiki
Jump to navigationJump to search
No edit summary
 
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{cds270-2 header}} <!-- Generates the header, including table of contents and link back to main page -->
{{cds270-2 header}} <!-- Generates the header, including table of contents and link back to main page -->


<!-- Enter a 1 paragraph description of the contents of the lectureMake sure to include any key concepts, so that the wiki search feature will pick them up -->
Early control systems used carefully synchronized control loops to insure that control processes ran at a fixed clock cycle and with predictable timingModern multi-threaded control environments use much looser timing models and provide non-deterministic execution, but provide advantages in terms of programming flexibility and processor utilizationIn this lecture we focus on the  [[Pthreads]] programming environment, which provides a standardized API for managing process threads and mutexes (to resolve data access conflicts).
This is the template for CDS 270 lectures.  If you edit this page, you will see comments describing what goes in each section'''Do not edit this template.''' See [[CDS 270: Information for Lecturers]] for more information on how to create a wiki page corresponding to a lecture.


== Lecture Materials ==
== Lecture Materials ==
<!-- Include links to materials that you used in your lecture.  At a minimum, this should include a link to your lecture presentation.  You might also include links to MATLAB scripts or other source code that students would find useful -->
* [[Media:L2-1_pthreads.pdf|Lecture: Multi-Threaded Control Systems]]
<!-- Sample lecture link: * [[Media:L1-1_Intro.pdf|Lecture: Networked Control Systems: Course Overview]] -->


== Reading ==
== Reading ==
<!-- A reading list for the lecture. This will typically be 3-5 articles or book chapters that are particularly relevant to the material being presented. The reading list should be annotated to explain how the articles fit into the topic for the lecture. -->
* <p>[http://www.llnl.gov/computing/tutorials/pthreads/ POSIX Threads Programming], Lawrence Livermore National Laboratory. 2006.  This tutorial provides an introduction to Pthreads, the standard implementation of threads under linux. It's a pretty quick read, with examples of the code and pretty good descriptions of the basic pthreads functionality.</p>
 
* <p>[http://www.acm.org/classics/feb96/ Monitors: An Operating System Structuring Concept], C. A. R. Hoare.  ''Communciations of the ACM'', 17(10):549--557, 1974. This paper describes the concept of a "monitor", which is basically a function that uses mutexes to access a shared resourse.  This is one of the early papers on concurrent computing and is cited as one of the design patterns for using threads and mutexes.</p>
 
* <p>Cooperating Sequential Processes, E. W. Dijkstra. In ''Structured Programming'', Academic Press, 1972.  This is one of the most widely cited papers in concurrent programming and is often labelled as the paper that started the field. I haven't been able to locate an online copy yet (and haven't read it either).</p>


== Additional Resources ==
== Additional Resources ==
<!-- Links to additional information. If there are good sources of additional information for students interested in exploring this topic further, these should go at the bottom of the page. -->
<!-- Links to additional information. If there are good sources of additional information for students interested in exploring this topic further, these should go at the bottom of the page. -->

Latest revision as of 19:27, 2 April 2006

Prev: Spread Course Home Next: Alice Follow

Early control systems used carefully synchronized control loops to insure that control processes ran at a fixed clock cycle and with predictable timing. Modern multi-threaded control environments use much looser timing models and provide non-deterministic execution, but provide advantages in terms of programming flexibility and processor utilization. In this lecture we focus on the Pthreads programming environment, which provides a standardized API for managing process threads and mutexes (to resolve data access conflicts).

Lecture Materials

Reading

  • POSIX Threads Programming, Lawrence Livermore National Laboratory. 2006. This tutorial provides an introduction to Pthreads, the standard implementation of threads under linux. It's a pretty quick read, with examples of the code and pretty good descriptions of the basic pthreads functionality.

  • Monitors: An Operating System Structuring Concept, C. A. R. Hoare. Communciations of the ACM, 17(10):549--557, 1974. This paper describes the concept of a "monitor", which is basically a function that uses mutexes to access a shared resourse. This is one of the early papers on concurrent computing and is cited as one of the design patterns for using threads and mutexes.

  • Cooperating Sequential Processes, E. W. Dijkstra. In Structured Programming, Academic Press, 1972. This is one of the most widely cited papers in concurrent programming and is often labelled as the paper that started the field. I haven't been able to locate an online copy yet (and haven't read it either).

Additional Resources