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:
Post a Comment