Seminar on the standard problems when programming parallel processing units - processes and threads.
In modern software development on desktop and server systems, as well as in embedded systems, exploiting the possibility of programming parallel-running threads has long been widespread. For the developer, the knowledge of the techniques necessary for this has become an obligation, since there are often architectural pre-decisions that imply the use of concurrent processing threads and force the developer to deal with the technique and the problems that go with it.
The course provides a solid initiation to the techniques that you have to master for the successful use of parallel threads. For this purpose, hands-on exercises on operating systems such as UNIX, Linux, MacOSX or Windows are performed. Doing so, the participants get to know the standard problems in multi-threading programming and their solutions. For the execution of the course, emphasis is placed on clarity. Problems are discussed and typical error situations are illustrated. All error situations are simulated by the participants in examples, solution strategies are practically developed and tested.
In addition to the given material, the course makes enough room for discussing personal project examples and problem situations.
The Course Contents in Keywords:
- Reasons for Parallelization of Processes
- Some History about Processes and Threads
- Hardware
- Operating Systems
- Processes and Threads
- POSIX, Pthreads
- Threads under MS Windows®
- Hardware Parallelism
- Architectures of Concurrency
- Thread States
- Real-time Aspects
- Particularities in Real-time Systems
- Scheduling Mechanisms
- Priority Scheduling
- FIFO or Queue Scheduling
- Scheduling
- Round Robin Scheduling
- Runtime Credit Scheduling
- Data Access from Several Threads
- Synchronizing Data Accesses
- Condvars
- Events
- Critical Sections - Spinlock Technique
- Mutexes
- Semaphores
- Typical Situations of Data Exchange Between Threads
- Typical Errors
- Starvation
- Deadlocks
- Race Conditions
- Priority Inversion
- Possible Solutions for Typical Errors
- Back Lock Strategy
- Monitor Concept
- Priority Boost
- Finite State Machine
- Thread Local Storage
- Run Once Initialization
- Discussion on Concurrency Models
- Pipeline
- Workgroup Model
- Manager/Worker (Client/Server)
- Fork on Idle
- Threading and Object Orientation
- Discussion of new libraries and techniques
- Open MP
- Boost
- The new C++ Standard C+11
- The Windows Architecture versus Unix and Linux
- Architectural Principles of Embedded Operating Systems
- Architectural Principles of Real Time Systems
Any C or C++ compiler can be adopted for this purpose.
The recommended platforms are Windows,
MacOSX,
UNIX or Linux systems.
The important thing is that the course participants know the system they use.
The ideal is to work with many different Systems in order to be able to demonstrate similarities and differences.
Fur this purpose it is also possible to refer to examples in Java to complete the range of technologies.
The seminar can also be adapted to specific subject matter requests and arranged for a specific aspect that is important to you.
Last modified 16.01.2023