Course Outline
Introduction
- A brief history of GNU/Linux for government use
- Licensing considerations for government applications
- Kernel versioning and its implications for government systems
- The release cycle and its impact on government deployments
- Kernel trees and their role in government IT infrastructure
- Mainline kernel support for government operations
- Differentiating between kernel and user space for government applications
- Understanding mechanism versus policy in government systems
- Alternatives to kernel drivers for government use
- Comparing Real-Time Operating Systems (RTOS) with Linux for government needs
Memory Management
- Virtual memory versus physical memory in government systems
- Memory allocation within the kernel for government applications
- Pages and their management in government IT environments
- Zones and their role in memory allocation for government use
- API considerations for memory management in government systems
- The slab allocator and its relevance to government operations
Kernel Patch Management
- Lifecycle of a kernel patch for government systems
- Using git for version control in government kernel development
- Managing kernel source code for government projects
- Creating patches for government applications
- Validating patches for government use
- Fixing issues in patches for government systems
- Shipping patches to government deployments
- Ensuring audited code for government compliance
Kernel Modules
- Obtaining kernel sources for government use
- Configuring, building, and installing modules in government systems
- Device drivers (statically linked or loaded at runtime) for government applications
- Initialization and exit procedures for government modules
- Licensing considerations for government kernel modules
- Using EXPORT_SYMBOL_GPL in government modules
- Creating out-of-tree makefiles for government projects
- Utilizing module-init-tools in government systems
- Managing modules within the kernel tree for government use
- Configuring Kconfig for government applications
- Passing parameters to modules in government environments
- Using sparse for static analysis in government code
Char Drivers
- Architecture of char drivers for government use
- User/kernel interface design for government applications
- I/O subsystem in the context of government systems
- VFS and its role in government IT infrastructure
- Sysfs (devices, bus, drivers, classes) for government management
- Kobject, ktype, and kset usage in government systems
- Linux kernel driver model for government applications
- Managing device files in government environments
-
Char driver specifics:
- Initialization procedures for government use
- Registration processes for government modules
- Open and release operations for government applications
- cdev, cdev add, cdev del, and related functions for government systems
- Major/minor numbers in government IT infrastructure
- Udev, udevmonitor, and udevadm for government device management
Advanced Character Driver Operations
- ioctl operations in government systems
- Unlocked ioctl for government applications
- compat ioctl for backward compatibility in government use
- User space API considerations for government drivers
- Kernel space API usage in government modules
- Process lifecycle management for government applications
- Sleeping and blocking operations in government systems
- Waking up processes in government environments
- Wait queue implementation for government use
- Managing the thundering herd problem in government IT
- Poll/select operations for government applications
Kernel Debugging
- General debugging techniques for government systems
-
Debugging the kernel in government environments:
- Binary search with git for government issue resolution
- Utilizing debug support from the kernel in government projects
- Using printk, syslogd, klogd, loglevels, rate limit, debug levels, and selective subsystem debugging in government systems
- Querying debugfs for diagnostics in government applications
- Ooops debugging and asserting oops in government environments
- Utilizing the Magic SysRq Key for government troubleshooting
- Using kgdb/kdb for kernel debugging in government systems
- JTAG support for hardware-level debugging in government IT
Tracing and Performance Analysis
- gcov for code coverage in government applications
- lcov for detailed code coverage reports in government systems
- oprofile for profiling government IT infrastructure
-
ftrace and its tracers for government use:
- nop tracer for minimal overhead in government applications
- function tracer for detailed function calls in government systems
- sched switch tracer for scheduling analysis in government IT
- function graph tracer for call graph visualization in government environments
- dynamic tracer for custom tracing in government projects
- trace-cmd and kernelshark for comprehensive tracing in government systems
- perf tool for performance analysis in government applications
- LTTng for long-term tracing in government IT
Interrupts Management
- Comparing interrupts and polling for government systems
- Understanding interrupts in government applications
- Program sections and their impact on government IT
- Reentrancy considerations for government code
- Event handling in government environments
- Interrupt handlers for government applications
- Shared interrupt handlers in government systems
- Interrupt flow management for government use
- Interrupt control mechanisms for government IT
Deferring Work in Government Systems
- Top/bottom halves for deferred execution in government applications
- Softirqs for high-priority tasks in government systems
- Tasklets for lightweight task management in government IT
- Work queues for background processing in government environments
- Threaded interrupts for complex interrupt handling in government use
Concurrency Management in Government Systems
- Critical regions/sections in government applications
- Atomic operations for concurrency control in government systems
- Race conditions and their prevention in government IT
- Synchronization techniques for government use
- Locking mechanisms for government applications
- Various locking solutions for government systems
- Deadlock avoidance in government environments
- Contention management in government IT
- Determining what to lock in government applications
-
Tools and techniques for locking:
- Atomic operations for simple concurrency control
- Spin locks for short critical sections in government code
- Reader-writer spin locks for read-heavy workloads in government systems
- Semaphores for resource management in government applications
- Binary semaphores for mutual exclusion in government IT
- Mutexes for more complex locking needs in government environments
- Reader-writer semaphores for balanced read/write access in government systems
- Completion variables for task synchronization in government use
- Sequential locks for ordered operations in government applications
- Disabling preemption for critical sections in government code
- Ordering and barriers for memory consistency in government systems
Time Management in Government Systems
- HZ and its significance in government IT
- Jiffies for timekeeping in government applications
- Managing big and small delays in government systems
- Kernel timers for scheduling tasks in government environments
Hardware I/O Management for Government Systems
- I/O Ports for hardware communication in government applications
- I/O Memory management for government IT
- Strategies for dealing with side effects when accessing registers in government systems
User-Kernel Communication for Government Systems
- put(get)_user() functions for data transfer in government applications
- copy to(from)_user() for memory copying in government IT
- Kernel I/O operations for government systems
- Memory mapping techniques for government environments
- procfs for system information in government applications
- sysfs for device management in government IT
- debugfs for debugging support in government systems
- relayfs for high-performance logging in government environments
- netlink for kernel-to-user communication in government applications
- ioctl for device-specific operations in government IT
Portability Considerations for Government Systems
- Word size and its impact on government code portability
- Opaque types for abstract data handling in government applications
- Signed/unsigned char usage in government systems
- Data alignment requirements for government IT
- Integral promotion considerations in government code
- Code reuse strategies for government projects
- Endianness issues in government systems
- System tick management for government applications
- Page size considerations for government IT infrastructure
- Instruction ordering and memory barriers for government use
- SMP, preemption, and high-memory handling in government systems
Except where otherwise noted, content and this course outline are licensed under Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
Requirements
- Basic experience using a GNU/Linux system as an end user for government tasks
- Fundamental familiarity with command line shell operations for government use
- Essential knowledge of user space and application development for government applications
- Intermediate proficiency in C programming for government projects
- Strongly recommended: Completion of the Embedded GNU/Linux Systems Architecture course, or equivalent understanding of the topics covered therein for government contexts
Testimonials (5)
Very usefull additional informations
Grzegorz - Comp S.A.
Course - BLoC Pattern
Miguel's knowledge of the subject was extensive. He made the training easy to understand and the flow was balanced; adding on to each section with new features as needed. He covered everything that was asked and answered each and every question thoroughly. It was a very pleasant experience.
Paul Coaton - SEMPCheck Services
Course - Flutter Development Bootcamp with Dart
That the trainer adapts to our needs
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Course - The Yocto Project - An Overview - hands-on
The trainer was enthusiastic, kind, and loved the topic
Isaac Murphy - Royal New Zealand Airforce
Course - Build Native iOS and Android Apps with Flutter
Learning the steps required to implement the MVVM model.