paper

Course: CS 03, Fall 2008
School: Minnesota
Rating:
 
 
 
 
 

Document Preview

Control A System for Teams of Off-the-Shelf Scouts and MegaScouts Bennett Jackson Ian Burt Bradley Kratochvil Nikolaos Papanikolopoulos* Center for Distributed Robotics, University of Minnesota communications link was made more convenient and more standard by means of a wrapper API designed to work with libUMNRobot, a novel software model for abstracting access to robotic components that was initially developed...

Register Now

Unformatted Document Excerpt

Coursehero >> Minnesota >> Minnesota >> CS 03

Course Hero has millions of student submitted documents similar to the one
below including study guides, practice problems, reference materials, practice exams, textbook help and tutor support.

Course Hero has millions of student submitted documents similar to the one below including study guides, practice problems, reference materials, practice exams, textbook help and tutor support.
Control A System for Teams of Off-the-Shelf Scouts and MegaScouts Bennett Jackson Ian Burt Bradley Kratochvil Nikolaos Papanikolopoulos* Center for Distributed Robotics, University of Minnesota communications link was made more convenient and more standard by means of a wrapper API designed to work with libUMNRobot, a novel software model for abstracting access to robotic components that was initially developed to Abstract-- Two new robotic platforms, the MegaScout and the Commercial Off-the-Shelf Scout (COTS Scout), have been developed recently at the University of Minnesota's Center for Distributed Robotics. The two systems were initially unable to communicate with each other. This paper discusses the development of a communications system and a novel software architecture designed to allow the two systems to work in autonomous cooperation. Index termsrobotic teams, mobile robotics, miniature robots I. INTRODUCTION The new additions to the family of Scout [2,3,7] robots were designed with different goals. The low cost, low weight and small size of new COTS Scout (Figure 1) make it an appealing platform for many kinds of exploration and surveillance. However, its lack of onboard processing power and its analog-only communications have limited its domain of applications to those where it is operated by a human. The new MegaScout platform has a convenient programming environment for onboard processing, high ground speed and reliable digital communications, but its relatively high cost, weight, and size make it less flexible than the COTS Scout for many purposes. By providing a mechanism for digital, computer-based control of the COTS Scout, cooperative groups can be composed from several COTS Scouts and one MegaScout. Once this is possible, many of the advantages of both systems can be combined into a single exploration team. Previous work with heterogeneous teams of robots [1,4,6] has shown encouraging results. The effort to develop such cooperative units proceeded in two distinct phases. First, at the lowest level, it was necessary to establish a computer-controllable communications link between the two types of robots, allowing the MegaScout to transmit commands to the COTS Scout. This communications link was built in such a way as to make future development with similar components as easy as possible. Next, access to this *Author to whom correspondence should be addressed. Figure 1: A COTS Scout with a commercially available RC controller. support the MegaScouts. This paper will first address each development phase and then present the results of testing and some possible future work, and conclusions. II. PHASE ONE: ESTABLISHING A COMMUNICATIONS LINK The COTS Scouts are equipped with two onboard communications systems. First, a video transmission system broadcasts an analog video stream from the robot's single camera over a fixed FM band. A receiver attached to a teleoperation unit, a mobile or desktop control computer, or another more sophisticated robot can make the video available for viewing or vision processing. In the case where a MegaScout receives the video transmission, existing code makes the individual image frames available to software developers writing vision algorithms. The second communications system on the COTS Scout is a RC receiver of the type found in many hobby cars and airplanes. This system receives commands from a commercially available, hand-held joystick containing a corresponding transmitter like those shown in Figure 2. This joystick can be used by a human, in cooperation with a video display, to operate the robot remotely. The transmitter relays the two-dimensional position of two different joysticks to the robot by merging four data channels into a single signal. As summarized in Table 1, Channel 1 2 3 4 Purpose Speed of servo 1 Speed of servo 2 (reversed) Video transmission on/off Not used. simultaneous communication with multiple robots would be preferred. Above all, it must be able to produce a highresolution version of the signal described above. A PIC16F877 microcontroller, shown in Figure 4, with a 20MHz oscillator was determined to be sufficient for the demands of the requirements [5]. The first step was a proof of concept task: to generate an input signal to a transmitter using hard-coded values and verify that a robot responded with correct corresponding action. The task was accomplished by programming the PIC in assembly language. Six one byte file registers store the desired output values. A continuous loop uses the PIC's timers to set a digital output pin high or low according to the signal specification. A resolution of approximately one microsecond was achieved, which is more than sufficient. A visually correct signal was observed on an oscilloscope. Attaching a transmitter input to the PIC's digital output showed that a robot responded correctly. By assembling the program with different channel values, the robot could be made to move at different speeds. Table 1: Use of each RC data channel by the COTS Scout. only three of the channels are currently in use on the COTS Scout. A. RC Signal Specifications The signal is a continuously repeating binary waveform, one cycle of which is shown in Figure 3. The input signal consists of some number of low periods whose widths indicate the values of each of the data channels and which are separated by brief high periods of a small, constant length, as described in [3]. The data portion of the signal is followed by a relatively long low period used to help the receiver identify the beginning and end of each data frame and to stay synchronized with the transmitter. The length of each high period is 500s. The length of each low periods plus the preceding high period varies between 800s and 2200s. The framing gap is 15ms. Although Figure 1 shows three data channels, any number from one to six may be used. The receiver increments a counter each time a data channel is received and resets that counter when a framing gap is received. In this way, it can track an arbitrary number of channels. B. A Signal Generation Application Development of a digitally controlled device for commanding the COTS Scouts was based on several requirements. The system should be reliable and provide the fastest possible response time. It should be as easy to use as possible both for COTS Scout communications as well as for any future development based on similar components. Support for multiple transmitters in Figure 2: Two RC transmitters. On the left there is a transmitter in its original casing while on the right there is the circuit board inside. Once the potential effectiveness of the solution had been demonstrated, it was necessary to establish a secondary communication link between the PIC and a PC so that updated values could be sent to change the behavior of the robot in real time. In a final application, the PC might be either a desktop machine or the primary processor of a MegaScout. Because it was desirable to select a common Figure 3a: Transmitter input signal. Figure 3b: Transmitter output. communications standard and because of an existing IIC network in the MegaScouts (based on the BrainStem board, made by Acroname), it was decided that a simple implementation of the IIC protocol would be appropriate. bytes. First, according to the IIC protocol is the device's address. Next is the ID of a particular transmitter. Though not yet implemented, this will allow two or more Figure 4: A PIC16F877 prototyping chip with in-circuit debugging hardware. Versions used in the final products are much smaller. IIC (often written i2c) stands for Inter-Integrated Circuit. It is a very simple, two-line, serial communications protocol. Networks consist of a single bus supporting up to 126 devices (more in some versions) at clock speeds of 100KHz, 400KHz, and 1MHz. Each network has a single master device and any number of slave devices. The master is responsible for establishing the regular pulse on the clock line and mitigating collisions on the data line. Many devices, including many commonly available robotic sensors, come equipped for IIC communication. The protocol provides a simple, byte-oriented packet structure. First, a start signal is sent by a transmitting device, indicating that bytes are about to be sent. The first byte of every packet is the seven-bit address of the target device and a bit indicating whether this is a request to initiate a read operation from the target or whether more bytes will follow that should be written to the target. The target machine must send an ACK pulse after each byte. In the case of a write operation (the only portion of the standard implemented for this project), one or more data bytes follow the address. Finally, the transmitter sends an end pulse to mark the conclusion of the packet. The PIC provides a convenient, interrupt-driven implementation of IIC. After configuring all appropriate settings, a PIC assembly program that is part of a slave receiver need only have a single interrupt handling routine that will be called each time a byte has been fully received. The packet structure chosen for this project is illustrated in Figure 6. All correctly formed packets consist of four Figure 5: Final prototyping circuit showing the transmitter, PIC, and BrainStem fully connected for IIC communications. transmitters to be controlled simultaneously by the same PIC, making larger robotic teams more practical. The third byte is the number (between 0 and 5) of the data channel being changed. Finally, the last byte gives the new value to be transmitted on that channel. A value of 0 will cause the shortest possible signal (about 0.8ms) and a value of 255 will cause the longest possible signal (about 2.2ms). After completion, the IIC communications system was tested by connecting it to the IIC pins of a BrainStem, and manually sending packets from the BrainStem's console application, successfully, though awkwardly, controlling a robot. The result of the PIC development is a fully functional communication link from a PC to a COTS Scout. The system is fast, built on industry standards, cheap to assemble, and easy to use. It can be easily expanded to support simultaneous control of multiple robots. III. PHASE TWO: WRAPPER API A. The libUMNRobot Framework The libUMNRobot framework is a novel suite of objectoriented programming tools written in C++ and designed to provide a convenient, uniform interface to a wide variety of robotic components. The library was originally written to support the MegaScout platform, but with the additional goal that it should support multiple, heterogeneous robotic platforms with little or no modification. Use of the framework to support the COTS Scout is the first test of this heterogeneous use. The framework provides a mechanism for enumerating all the components of a robot and all the configuration and calibration properties of each component in a single, hierarchical XML document. This makes it very easy to express the subtle differences between large numbers of similar robots without having to make any modifications to the control code for those robots. A greatly simplified UML diagram of the object model for [ADDR] [XMIT ID] [CHAN ID] [DATA] Figure 6: Packet structure expected by PIC consists of four bytes: The IIC address of the PIC, the ID of a transmitter, the ID of the data channel being modified, and the new data value for that channel. the framework can be seen in Figure 7. The framework is a set of loosely coupled libraries, each with a specific goal. At the core is the UMNRobot library itself. This library defines a generic interface called Capability that is the root interface of all robotic components. Capabilities can have a set of child Capabilities. Robots are composed of such hierarchies of Capability objects. Sensor and Actuator are sub-interfaces of Capability written as templates. The UMNRobot core library also defines a standard for instantiating arbitrary robots by means of a RobotFactory. An affiliated library, "UMNRobot Components" Xerces provides a concrete implementation of RobotFactory that instantiates Robots from XML descriptor files. Another library, "UMNRobot Common Components", provides a richer set of generic interfaces that model a wide variety of frequently used robotic sensory and actuation components. This library contains interfaces such as Motor, Servo, RangeFinder, DigitalSwitch, AxelEncoder, PhotoelectricSensor, and VideoSource. These interfaces impose a data type and a set of units on the inputs and outputs to their corresponding devices, but they contain no specific code for communicating with actual devices. Such communication is accomplished by a lower level suite of libraries that provide models for specific hardware. For example, the library "UMNRobot BrainStem Components" contains implementations for controlling many sensors and actuators through the BrainStem board. Similarly, "UMNRobot V4L Components" contains implementations for video inputs that use the Linux video standards. These libraries are not all intended for use in every robotic application. Instead, each application developer picks the set of libraries appropriate to the hardware in use and only Figure 7: Simplified UML diagram of the libUMNRobot object model. compile against the relevant implementations. In this way, many robots can use the same generic interfaces for different underlying implementations while maintaining installation footprints that are as small as possible. B Incorporating the COTS Scout into the UMNRobot framework Because this framework is the basis for the ongoing development of the MegaScout platform and because there was interest in validating the idea that the same framework could be applied to distinct robotic platforms, it was decided that the new computer control system for the COTS Scout would be written against libUMNRobot. These modifications first required expansion the core libraries and then the addition of a new package dedicated to the COTS Scout. Each step is discussed below. The UMNRobot core packages were expanded first to contain a generic interface for RC communication, and then a specific implementation based on proxying the IIC packets discussed earlier through a BrainStem. Another implementation could easily be added that communicated with an IIC bus through some other conduit. BrainStemComponents::RCMotor derives from Motor and RCDevice. Similarly, RCDigitalSwitch extends DigitalSwitch and RCDevice. These components can be <capability type="COTSScout::Robot" name="Robot"> <capability type="UMNRobot::CommonComponents::Wheel" name="PORT_WHEEL"> <parameter name="diameter" type="float" value="8.25" /> <capability type="UMNRobot::BrainStemComponents::RCMotor" name="MOTOR"> <parameter name="range-min" type="int" value="-100" /> <parameter name="range-max" type="int" value="100" /> <parameter name="pic-i2c-address" type="unsigned int" value="100" /> <parameter name="transmitter-id" type="unsigned int" value="0" /> <parameter name="channel-id" type="unsigned int" value="1" /> <parameter name="invert" type="bool" value="t" /> <parameter name="offset" type="int" value="140" /> <parameter name="brainstem-id" type="unsigned int" value="2" /> </capability> </capability> <capability type="UMNRobot::CommonComponents::Wheel" name="STARBOARD_WHEEL"> <parameter name="diameter" type="float" value="8.25" /> <capability type="UMNRobot::BrainStemComponents::RCMotor" name="MOTOR"> <parameter name="range-min" type="int" value="-100" /> <parameter name="range-max" type="int" value="100" /> <parameter name="pic-i2c-address" type="unsigned int" value="100" /> <parameter name="transmitter-id" type="unsigned int" value="0" /> <parameter name="channel-id" type="unsigned int" value="0" /> <parameter name="invert" type="bool" value="f" /> <parameter name="offset" type="int" value="120" /> <parameter name="brainstem-id" type="unsigned int" value="2" /> </capability> </capability> instantiated from XML descriptors jut like the previously existing components. The new COTS Scout package relies on the additions to the UMNRobot core and provides an API for instantiating a COTS Scout::Robot object through a derivative of RobotFactory. An example of an XML descriptor file for a COTS Scout can be seen in Figure 8, which illustrates all the configurable parameters of each component. IV. TESTING As a test for the whole structure that was built in phases one and two, a simple interface was built to allow a human to drive the robot. The application was a text-based application for a Linux console, and it was run on the machine used for prototyping MegaScout software. The program accepts directional input from the user by means of keyboard arrow keys. The space bar provided an immediate stop function. This application made it possible to drive the robot effectively. It was necessary to calibrate the zero point of the servos for the robot so that a command packet of zero actually caused the corresponding wheel to stop. This calibration was done empirically and the results were <capability type="UMNRobot::CommonComponents::VideoSource" name="CAMERA"> <description>Camera</description> <parameter name="port" type="unsigned int" value="0" /> <parameter name="video-set-name" type="string" value="FRAMEGRABBER" /> <capability type="UMNRobot::BrainStemComponents::RCDigtialSwitch" name="CAMERA_POWER_SWITCH"> <description>Switch that turns the video transmission on and off.</description> <parameter name="pic-i2c-address" type="unsigned int" value="100" /> <parameter name="transmitter-id" type="unsigned int" value="0" /> <parameter name="channel-id" type="unsigned int" value="2" /> <parameter name="invert" type="bool" value="f" /> <parameter name="brainstem-id" type="unsigned int" value="2" /> </capability> </capability> <capability type="UMNRobot::V4LComponents::VideoSet" name="FRAMEGRABBER"> <description>Picasso PC104-2SQ Framegrabber</description> <parameter name="video-device-number" type="unsigned int" value="0" /> ...

Find millions of documents on Course Hero - Study Guides, Lecture Notes, Reference Materials, Practice Exams and more. Course Hero has millions of course specific materials providing students with the best way to expand their education.

Below is a small sample set of documents:

Minnesota - BLOG - 0017
Producing a Podcast on the U of M Blog System 1. I record with an Iriver. The cheapest of these are about $80; $160 buys 1 gig of memory on the thing, which doubles as recorder, mp3 player, fm receiver. 2. The Iriver software produces a file with the
Minnesota - BLOG - 0017
Reading Assignment: Book 3 of Platos Republic (386a-417b) This part of the Republic begins with a call for the censorship of literature, as a founding move in the construction of Platos city. This is a strange starting place; one might expect Plato t
Minnesota - IMA - 08
Turbulence Birnir Observations of Turbulence The Mean and the Invariant Measure The Role of Noise Existence Theory Existence of the Invariant Measure Kolomogarovs Theory SummaryTurbulent Solutions of the Stochastic Navier-Stokes EquationBjrn Birni
Minnesota - IMA - 2008
Structure and dynamics of a bead chainArshad Kudrolli Department of Physics, Clark University, Worcester, MA Kevin Safford (Clark), Yacov Kantor (Tel Aviv), Mehran Kardar (MIT) Funding: NSF-DMRGeometrical Singularities and Singular GeometriesBa
Minnesota - IMA - 08
Capillary Pinch-o of a Film on a CylinderJohn ListerITG, DAMTP, University of CambridgeJohn Rallison, Andy King, Linda Cummings &amp; Oliver JensenIMA workshop, Minneapolis, 14 July 2008Introduction Thin lm on/inside cylindere.g. Hammond 1983, G
Minnesota - IMA - 2008
Problems of Ferroelectric Liquid Crystals: Mathematical Modeling and AnalysisJinhae Park Purdue UniversityMolecules of liquid crystal phases Nematic and Cholesteric or Chiral nematicChen-Lubensky energy(1976)cl = a |D D |2 c |D |2 + |D D |2
Minnesota - IMA - 08
Mathematical singularities associated with swelling of hyperelastic solidsTom Pence Mechanical Engineering Michigan State UniversityCollaborators w.r.t. swellable materials at MSU: Hungyu Tsai Neil Wright Hasan Demirkoparan Hua Deng Ryan Monroe Xia
Minnesota - IMA - 2008
An open problem concerning breakup of fluid jetsMichael Renardy Department of Mathematics Virginia Tech Blacksburg, VA 24061-0123, USASupported by National Science FoundationGoverning equationDescribes breakup of a jet of Newtonian fluid in St
Minnesota - IMA - 2008
An open problem concerning breakup of fluid jetsMichael Renardy Department of Mathematics Virginia Tech Blacksburg, VA 24061-0123, USASupported by National Science FoundationGoverning equationDescribes breakup of a jet of Newtonian fluid in St
Minnesota - IMA - 07
On the Symmetry of Singular Minimizers in Nonlinear Elasticity[Joint withJ. Sivaloganathan(Bath)] Assume that the loading at the cavitation point is equal triaxial tension.Is the shape of the hole (asymptotically) spherical?
Minnesota - CSCI - 4061
CSCI4061 Lab1(01/22/07) B Shell Script ProgrammingExercise1:Write a shell script called getinfo that will print the following on the screen: Operating System: type of operating system on this machine Machine Name: name of this machine User Name: n
Minnesota - CSCI - 4061
CSCI4061 Lab201/29/07Make and makefilesA makefile tutorial: http:/www.eng.hawaii.edu/Tutor/Make/1.html Please follow the steps below and the TA will explain some basics of make and makefiles.Step 1: 1. Create a file called helloworld.c and op
Minnesota - CSCI - 4061
Recitation Notes Introduction to gdb To use gdb: 1. compile your program with -g option 2. gdb program name GDB commands help - gives you the list of commands help &quot;command name&quot; displays specific help run - executes the program. you can specify comm
Minnesota - CSCI - 4061
Command line arguments Write a C program that displays all the arguments passed to it on the command line. Fork * int fork(void) # This creates a new process identical to the parent process # Return 0 to the child process # Returns child's pid to the
Minnesota - CSCI - 4061
CSCI4061 Lab5 02/17/07 Strtok and Makeargv1. String Review2. strtok() strtok is a library function from &lt;string.h&gt; that modifies strings, looking for delimiter characters. It replaces delimiters with \0 character. This effectively splits the stri
Minnesota - CSCI - 4061
Lab 6 #include &lt;fcntl.h&gt; int open(const char *path, int oflag, .) Creates a connection between a process and a file, called the file descriptor. To open a file 1. Specify the name of the file 2. type of connection you want O_RDONLY, O_WRONLY, O_RDWR,
Minnesota - CSCI - 4061
CSCI4061Lab7Pipes and Signals1. Pipes Basics A pipe is a uni-directional buffering mechanism that allows processes to communicate by writing data to one end of the pipe, and reading data from the other end of the pipe. The pipe() system call set
Minnesota - CSCI - 4061
CSCI4061 Lab8 Times and Timers1. Displaying date and time #include &lt;time.h&gt; time_t time(time_t *tloc) A program can access the system time (expressed in seconds since epoch) by calling the time function. If successful, time returns the number of se
Minnesota - CSCI - 4061
Most code written is sequential. A little discussion will follow this. Why are programs sequential? Types of threads: ULT and KLT ULT -Advantages: * Thread switching does not involve the kernel - no mode switching * Scheduling can be application spec
Minnesota - CSCI - 4061
Pthread Mutex (Notes from: http:/students.cs.byu.edu/~cs460ta/cs460/labs/pthreads.html) There are a number of situations where threads can greatly simplify writing elegant and efficient programs. The sorts of problems where threads can be very useful
Minnesota - CSCI - 4061
Lab11 Conditional Variables1. Conditional Variables What are condition variables? When should we use them? Describe the following functions in your own words: pthread_cond_wait(cv, mutex) pthread_cond_signal(cv) pthread_cond_broadcast(cv)2. Exerci
Minnesota - CSCI - 4061
Network CommunicationNetwork Layering: Each layer is like one level of packaging of data Application: Program receives exact data sent from the sending client Transport: Reliable data transfer make sure that data isn't lost or corrupted
Minnesota - CSCI - 4061
Socket Types When a socket is created, the program has to specify the address domain and the socket type. Two processes can communicate with each other only if their sockets are of the same type and in the same domain. There are two widely used addre
Minnesota - CSCI - 4061
CS 4061 Introduction to Operating SystemsMax HarperToday Introductions and welcome Why this class is good Boring syllabus stuff and 10 Questions A little about operating systems At end of class: waitlist!Introduce Yourself to Someone(s)As
Minnesota - CSCI - 4061
4061 Session 2 (1/18)Today Administrative More background Deeper look at system calls Some shell scriptingAdmin Reminder: sign up for an ITLabs account http:/www.itlabs.umn.edu/accounts/ Lab on Monday Waiting list Lecture notes and c
Minnesota - CSCI - 4061
4061 Session 3 (1/22)Today Homework 1 Getting Ready for Homework 1 unix commands bash syntaxAdmin Next Tuesday CVS Repositories?1Homework 1 Admin Due: Tuesday, Jan 30 Individuals or Pairs Code policies: found, given, assignmentHome
Minnesota - CSCI - 4061
4061 Session 4 (1/22)Today File permissions in UNIX I/O redirectionAdmin CVS Repositories Mystery textbook: Advanced Programming in the UNIX Environment, Stevens and Rago Questions on the homework?1Bash ExerciseWrite a shell script: fil
Minnesota - CSCI - 4061
4061 Session 5 (1/30)Outline for Todays Lecture C programming A crash course Practice Quiz Discuss sample in detail Homework QuestionsC programming Crash Course* C program structure Functions Command Line arguments Pointers Buffer ove
Minnesota - CSCI - 4061
4061 Session 7 (2/6)Today Programs and Processes Process Management in UNIX Error Handling in CAdmin Quiz Results and Review Homework Status (1 &amp; 2)1To Do Read Robbins Chapter 2.4-2.7 and 2.10-2.11 Chapter 3Program vs. Process Conc
Minnesota - CSCI - 4061
4061 Session 8 (2/8)Today Error Handling in C Fork, Exec, WaitAdmin Homework 21Sys Call Errors (Robbins 2.4) Concepts Sys calls return -1 on error Restarting sys calls C Features perror(const char *s) errno char *strerror(int errnu
Minnesota - CSCI - 4061
4061 Session 9 (2/13)Today Homework Prep: Environment Vars in C Low-level I/OAdmin Adjustments and feedback (again) Too much unix too fast: ok, were slowing down now More details in lecture notes Extra credit opportunities: you propose pro
Minnesota - CSCI - 4061
4061 Session 10 (2/15)Today More with I/O: dup and fork Feedback with ShanaAdmin HW1 Grading HW2 Rubric Coming Quiz Tuesday CVS Repos1I/O and HW2 You need to: Write to stdout, stderr, and (sometimes) a debug file Read from stdin Do
Minnesota - CSCI - 4061
4061 Session 11 (2/20)Today Intro to Files and Directories (Brief) Quiz 2Friday Feedback Thank you! Please continue to tell me whats good/bad Ill do a less formal follow-up in a few weeks1Admin HW due Friday Todo: read Robbins chap 5
Minnesota - CSCI - 4061
4061 Session 12 (2/22)Today Files and DirectoriesTodays Objectives Describe the contents/function of: inode directory file symbolic link file Calculate the available storage of an inode, given storage parameters Trace how an operating sys
Minnesota - CSCI - 4061
4061 Session 12 (2/22)Today Files and DirectoriesTodays Objectives Describe the contents/function of: inode directory file symbolic link file Calculate the available storage of an inode, given storage parameters Trace how an operating sys
Minnesota - CSCI - 4061
4061 Session 13 (2/27)Today Pipes and FIFOsTodays Objectives Understand the concept of IPC Understand the purpose of anonymous and named pipes Describe where file descriptors point after system calls to pipe, fork, and dup Write C code that
Minnesota - CSCI - 4061
4061 Session 13 (2/27)Today Pipes and FIFOsTodays Objectives Understand the concept of IPC Understand the purpose of anonymous and named pipes Describe where file descriptors point after system calls to pipe, fork, and dup Write C code that
Minnesota - CSCI - 4061
4061 Session 14 (3/1)Today Signals Process Groups and SessionsTodays Objectives Define a signal and explain its purpose Explain what happens in the operating system and in a user process when a signal is generated Write and read code to rais
Minnesota - CSCI - 4061
4061 Session 14 (3/1)Today Signals Process Groups and SessionsTodays Objectives Define a signal and explain its purpose Explain what happens in the operating system and in a user process when a signal is generated Write and read code to rais
Minnesota - CSCI - 4061
4061 Session 15 (3/6)Today More about signals A (relevant) aside Quiz reviewTodays Objectives Give an example of how signals might be used in a real-world application Identify reentrant and non-reentrant code Give examples of functions that
Minnesota - CSCI - 4061
4061 Session 15 (3/6)Today More about signals A (relevant) aside Quiz reviewTodays Objectives Give an example of how signals might be used in a real-world application Identify reentrant and non-reentrant code Give examples of functions that
Minnesota - CSCI - 4061
4061 Session 17 (3/19)Today Time in UNIXTodays Objectives Define what is meant when a system is called interrupt-driven Describe some trade-offs in setting the timer interrupt frequency Write programs that format time values, measure time int
Minnesota - CSCI - 4061
4061 Session 17 (3/19)Today Time in UNIXTodays Objectives Define what is meant when a system is called interrupt-driven Describe some trade-offs in setting the timer interrupt frequency Write programs that format time values, measure time int
Minnesota - CSCI - 4061
4061 Session 18 (3/22)Today Finish up time Intro to threadsTodays Objectives Compare a thread to a process Understand when to use threads in your code (and why) Give an example of an application that benefits from multi-threading Explain t
Minnesota - CSCI - 4061
4061 Session 18 (3/22)Today Finish up time Intro to threadsTodays Objectives Compare a thread to a process Understand when to use threads in your code (and why) Give an example of an application that benefits from multi-threading Explain t
Minnesota - CSCI - 4061
4061 Session 19 (3/27)Today Posix Threads HowtoTodays Objectives Write code using the POSIX Thread API, including Create threads Exit threads Join and detach threads Declare cleanup routines Use thread-local variables1Admin HW3 deadli
Minnesota - CSCI - 4061
4061 Session 19 (3/27)Today Posix Threads HowtoTodays Objectives Write code using the POSIX Thread API, including Create threads Exit threads Join and detach threads Declare cleanup routines Use thread-local variablesAdmin HW3 deadline:
Minnesota - CSCI - 4061
4061 Session 20 (3/29)Today Posix Threads Howto Leftovers Intro to Synchronization IssuesTodays Objectives Explain how multiple threads can get into trouble using shared data. Give an example. Define mutual exclusion, critical sections, and
Minnesota - CSCI - 4061
4061 Session 20 (3/29)Today Posix Threads Howto Leftovers Intro to Synchronization IssuesTodays Objectives Explain how multiple threads can get into trouble using shared data. Give an example. Define mutual exclusion, critical sections, and
Minnesota - CSCI - 4061
4061 Session 21 (4/3)Today Thread Synchronization Condition Variables Monitors Read-Write LocksTodays Objectives Explain the difference between mutual exclusion and synchronization Describe the purpose of a condition variable, and the opera
Minnesota - CSCI - 4061
4061 Session 21 (4/3)Today Thread Synchronization Condition Variables Monitors Read-Write LocksTodays Objectives Explain the difference between mutual exclusion and synchronization Describe the purpose of a condition variable, and the opera
Minnesota - CSCI - 4061
4061 Session 23 (4/10)Today Reader/Writer Locks and Semaphores Lock FilesTodays Objectives Describe semaphores and reader/writer locks Pseudo-code a barrier using synchronization primitives Write multi-process code that coordinates file writ
Minnesota - CSCI - 4061
4061 Session 23 (4/10)Today Reader/Writer Locks and Semaphores Lock FilesTodays Objectives Describe semaphores and reader/writer locks Pseudo-code a barrier using synchronization primitives Write multi-process code that coordinates file writ
Minnesota - CSCI - 4061
4061 Session 24 (4/12)Today Finish up File Locking Select and Poll Asynchronous I/OTodays Objectives Write single-threaded code that monitors multiple file descriptors concurrently or asynchronously1Admin Readings: Today were going back
Minnesota - CSCI - 4061
4061 Session 24 (4/12)Today Finish up File Locking Select and Poll Asynchronous I/OTodays Objectives Write single-threaded code that monitors multiple file descriptors concurrently or asynchronouslyAdmin Readings: Today were going backwar
Minnesota - CSCI - 4061
4061 Session 25 (4/17)Today Briefly: Select and Poll Layered Protocols and the Internets Intro to Network ProgrammingTodays Objectives Understand enough networking to get going with sockets programming Compare Berkeley Sockets with other for
Minnesota - CSCI - 4061
4061 Session 25 (4/17)Today Briefly: Select and Poll Layered Protocols and the Internets Intro to Network ProgrammingTodays Objectives Understand enough networking to get going with sockets programming Compare Berkeley Sockets with other for
Minnesota - CSCI - 4061
4061 Session 26 (4/19)Today Network security Sockets: building a serverTodays Objectives Name several risks associated with developing network software Explain buffer overflow attack Write a network server in C that implements a simple proto
Minnesota - CSCI - 4061
4061 Session 26 (4/19)Today Network security Sockets: building a serverTodays Objectives Name several risks associated with developing network software Explain buffer overflow attack Write a network server in C that implements a simple proto
Minnesota - CSCI - 4061
4061 Session 27 (4/23)Today Virtual Machines and EmulationTodays Objectives Understand some of the challenges and applications of virtual machinesAdmin My office hours on Wednesday cancelled HW 5: Due day of final Quiz 5: Last day of class
Minnesota - CSCI - 4061
Operating Systems of The Future ( and Plan 9 )Shilad Sen April 26th, 2007Todays Topics Design our own world-dominating OS. Discuss Plan 9, an OS that many people thought should have dominated the world.2Design a Better OS Hypothetical Ques