OpenSolaris Internals Course Outline

Class Summary

  • Format: Lecture 70%, Lab Work 30%
  • Duration: 5 days


This course answers the question, "How does the system work?"
It uses a combination of source code and various tools available on Solaris
to examine the topics that are covered. Tools used will include:
dtrace, kmdb, mdb, and the /proc tools. Topics include: threads
and processes, memory management, file systems, and I/O.  Throughout the course, hands-on labs and demos are used to reinforce the concepts being taught.

Course Objectives

  • Use dtrace, mdb, and kmdb to examine how the system works.
  • Describe implementation of threads and processes on OpenSolaris.
  • Describe what happens during thread switching.
  • Describe what happens during interrupt handling.
  • Explain how memory management is implemented on SPARC, x86, and AMD64.
  • Describe how scheduling works in OpenSolaris.
  • Use the OpenSolaris thread scheduling classes.
  • Explain how signals are handled in OpenSolaris.
  • Describe file system implementation, both in-memory and on-disk.
  • Describe how I/O works for various types of devices.
  • Gain enough knowledge about the system so that sutdents can learn more on their own.

Intended Audience

This course is designed for anyone who needs a deeper understanding of the internals of the operating system. This could be a developer, system administrator, or even an end-user. Understanding internals will allow students to make better use of the system, and will enable students
to enhance overall troubleshooting skills.


Some general knowledge of operating systems and programming languages
is a plus.  To do some of the labs (and for examining source code), knowledge of C is very helpful.

Course Outline

Module 1: Introduction
  • Solaris Architecture
  • Documentation/References
  • Source Code Layout
  • Overview of Kernel Modules
  • Overview of Resource Management
  • Fault Management
  • Kernel Memory Layout and Dynamic Memory Allocation
  • Timers/Clock
  • Lab

Module 2: Threads and Processes
  • Programming Model
  • Data Structures
  • Process Address Space
  • System Calls, Traps, and Interrupts
  • Synchronization
    • Mutexes
    • Condition Variables
    • Reader/Writer Locks
    • Semaphores
    • Other Mechanisms
    • What can go wrong, and how to examine problems
  • Lab

Module 3: Memory Management
  • Data Structures
  • The HAT Layer
    • Page Table Management
  • Page Fault Handling
  • Memory Mapping
  • Segment Drivers
  • User Process Address Space
  • Kernel Address Space
  • Swap space management
  • Page Stealing
  • Shared Memory
  • Fork/Exec
  • Regular File I/O
  • Putting it all together
    • Examination of Data Structures with mdb
    • Tracing a page fault with dtrace
    • Examining a page table with mdb
  • Lab

Module 4: Scheduling
  • Schedulers in Solaris
  • Switching
  • Interrupt Handling
  • Processor Affinity
  • Real-time
  • Priority Inversion Handling
  • Lab

Module 5: Signal Handling

Module 6: File Systems
  • The Virtual File System/Vnode Interface
  • A Brief Description of File Systems on Solaris
  • ufs Overview
  • zfs Details
    • Features
    • Algorithms/Data Structures
    • On-Disk Layout
    • In-Memory Representation
    • Mirrors, Raidz, Snapshots, Clones
  • Lab
Module 7: I/O
  • Device Tree Organization
  • Storage Device Overview
  • Network I/O Overview
  • USB Overview
  • Lab

To add your name to the interest list for this course, click send email to