Software/Hardware Integration

Software/Hardware Integration is an optional advanced course on Operating Systems offered within the context of our Computer Science Degree Program. It is a practical course dedicated to study important aspects of the interaction between hardware and operating system, focusing mainly on embedded systems. LINUX and EPOS build the foundations for the course's practical exercises.


The formal requisite for this course are Operating System I and Computer Architecture I. Operating System II and Microprocessors Laboratory are recommended.

Program (72 hours)

Topic Notes Hours
1 - Introduction notes 4
2 - Computer Architecture Revisited
2.1 - Processors
page 6
2.2 - Busses
page 4
2.3 - Devices
page 6
3 - Operating System Revisited
3.1 - System architecture
notes link 2
3.2 - Startup
notes 2
3.3 - LINUX device drivers
notes 8
4 - Software/Hardware Integration Project
4.1 - Design
4.2 - Implementation
4.3 - Presentation
5 - Discussion 2


Students will have their skills to do software/hardware integration by means of a project. Projects are evaluate in three phases: design, implementation, and presentation of results.


  1. PCI mapper module
  2. DMA buffer module
  3. Myrinet sample driver
  4. Embedded PPC program


  1. Maurice J. Bach, The Design of the UNIX Operating System, Prentice-Hall, 1987.
  2. Moshe Bar, Linux Internals, Osborne McGraw-Hill, 2000.
  3. Amit Dhir, The Digital Consumer Technology Handbook, Newnes, 2004.
  4. Antônio Augusto Fröhlich, Application-Oriented Operating Systems, GMD - Forschungszentrum Informationstechnik, 2001.
  5. Samuel J. Leffler, Marshall Kirk McKusick, and Michael J. Karels, The Desing and Implementation of The 4.3 BSD UNIX Operating System, Addison-Wesley, 1989.
  6. Alessandro Rubini and Jonathan Corbet, Linux Device Drivers, 2nd ed., O'Reilly, 2001.
  7. Abraham Silberschatz, Peter Galvin and James Peterson, Operating Systems Concepts, 5th ed., John Wiley and Sons, 1998.
  8. Bjarne Stroustrup, The C++ Programming Language, Addison-Wesley, 1997.
  9. Andrew S. Tanenbaum, Modern Operating Systems, Prentice-Hall, 1992.
  10. Wayne Wolf, Computers as Components: Principles of Embedded Computing System Design, Morgan Kaufman, 2000.