Thursday, December 18, 2008

Linux Developer

RHD143 Red Hat Linux Programming Essentials

An intensive hands-on course designed to rapidly train key skills for developing applications and programs on Red Hat Linux.

Prerequisites:

  • Experience in C programming
  • RH133 or equivalent UNIX or Linux workstation user skills for developers
  • Shell scripting in a UNIX or Linux environment
  • Experience with editors such as vi, emacs

 

Course Outline

·         Tools and methods for developing C programs for Linux

·         Makefiles

·         Version control

·         Compiling, linking and debugging

·         Linux standards and compliance

·         File access system calls and I/O

·         Programming file and directory system services

·         Processes management and creation

·         Signals, Signal Handlers and Alarms

·         Inter-process communication (shared memory, semaphores, messages)

·         Threads

·         Semaphores

·         Pipes and FIFOs

·         Shared Memory

·         Message Queues

·         Sockets

·         Red Hat Package Manager (RPM)

·         Multiplexed and Asynchronous I/O

 

RHD221 Red Hat Linux Device Drivers

Designed to teach experienced programmers how to develop device drivers for Linux systems

Prerequisites:

·         Experience in C programming

·         RHD143 - Red Hat Linux Programming Essentials or equivalent

 

Course Outline

  • How device drivers work with the Linux Kernel
  • How to configure and install the kernel
  • Compiling and loading a module and exporting symbols
  • Working with character and block device drivers
  • Memory Management
  • IOCTLs
  • Data Transfer Between User and Kernel Space
  • Memory Management
  • Tracing and Debugging
  • Time Management, Wait and Task Queues
  • Dealing with I/O ports and Interrupts
  • Accessing PCI hardware
  • Network drivers
  • SMP issues
  • Virtual File System and the ext2/ext3 filesystems

 

RHD236 Red Hat Linux Kernel Internals

An intensive hands-on course designed to provide a detailed examination of the Linux kernel architecture, including process scheduling, memory management, filesystems, and driving peripheral devices.

Prerequisites:

Completion of RHD221 (Linux Device Drivers) or equivalent experience, including:

·         Familiarity with basic tools such as vi, emacs, and file utilities.

·         Knowledge of systems programming in a Unix or Linux environment is a requirement; register-level hardware programming knowledge is recommended.

·         Understanding of basic Operating System concepts.

·         Some previous experience running Linux, compiling and installing kernels, etc.

·         Experience writing device drivers and kernel modules is not essential, but very helpful.

 

Course Outline

  • Kernel Architecture
  • Kernel Initialization
  • Kernel Configuration and Compilation
  • Kernel Style and General Considerations
  • Kernel Browsing Tools
  • Modules
  • System Calls
  • Transferring Data Between User and Kernel Space
  • Race Conditions and Synchronization Methods
  • Processes and Kernel Threads
  • SMP and Threads
  • Process Scheduling
  • Kernel Profiling and Debugging Techniques
  • The /proc Filesystem
  • Timing Measurements
  • Dynamic Kernel Timers
  • Memory Addressing
  • Memory Allocation and Management
  • NUMA
  • Process Address Space
  • Disk Caches
  • Swapping
  • Signals
  • Notifiers
  • CPU Frequency Scaling
  • Virtualization and the Kernel
  • Networking internals
  • Multiplexed and Asynchronous Socket I/O
  • Netfilter
  • The Virtual File System
  • Filesystems in User Space

·         The following topics are not covered in class, but are included in the course materials for background reference and/or student interest in related topics:

  • Process Limits and Capabilities
  • Introduction to Device Drivers
  • Embedded Linux Overview
  • In Kernel Web Server Acceleration
  • Journaling Filesystems

 

RHD256 Red Hat Linux Application Development and Porting

Provides a succinct introduction to new application development, as well as providing insight into porting existing applications, into the Red Hat Linux environment.

Prerequisites:

Application development skills on any UNIX-like platform, including proprietary offerings and other Linux distributions. Attendees are expected to be familiar with common shells and command line utilities such as the C compiler, a linker utility, and the make(1) program.

Course Outline

  • Open source vs. the proprietary model
  • The common Open Source software licenses: the GPL; the LGPL; and the BSD license; and how they affect your software development strategy.
  • Components of the Red Hat Linux development environment, including compiler toolchains and application libraries
  • Packaging software with RPM and tar
  • The CVS and Subversion version control systems
  • How to compile and debug application programs using the GNU Compiler Collection and DDD
  • How commonly-used enterprise file systems affect the application development effort.
  • How to write, install, and control system services.
  • The functional differences between Linux command-line tools and their proprietary-system counterparts.
  • Using Red Hat Linux system libraries, and creating your own libraries
  • Issues to be concerned with when porting applications to Red Hat Linux, such as little-endian vs. big-endian architectures.
  • How Linux multithreaded applications are built.
  • Linux security features such as PAM and OpenSSH.
  • How to use the "/proc" filesystem to obtain system information.
  • Advanced Linux features, such as asynchronous I/O.
  • Building software with Autoconf
  • How to debug, trace and optimize software for better speed and memory usage
  • The Eclipse integrated development environment

 

 

No comments: