Kurs i Linux Systemprogramming med C

Omfattande kurs i fork/exec, pipe/dup2, tcp sockets, memory mapped I/O och mycket annat

Hur skapar man en process och fyller den med ny programkod. Vilka olika sätt att kommunicera mellan processer finns det? Hur fixar man memory-mapped I/O?

Dessa och en lång rad andra frågeställningar besvarar vi i denna mycket uppskattade kurs.

Detta får du lära dig
  • Hur adressrummet för en process är organiserad och varför detta är intressant
  • Hur funktionsanrop går till och hur man kan utnyttja den insikten
  • Hur man spårar biblioteksanrop respektive systemanrop
  • Det speciella filssytemet /proc
  • Asynkron I/O och minnesmapapde ditto
  • Signal hantering
  • Hantering av processer med fork(), exec() och wait()
  • Kommunikation med pipe & fifo
  • POSIX message queues
  • POSIX shared memory segments
  • POSIX semaphores
  • TCP stream sockets
Kursinnehåll

Virtual Address Space Organization

  • Virtual memory pages
  • Address translation
  • What happens during a page fault
  • Memory areas and their functions

Compilation and Linkage

  • Overview of the various compilation steps
  • Understanding the magic number
  • Creating statically linked libraries
  • Creating dynamically linked libraries
  • Useful compiler options
  • Using programs to inspect compiled files such as string, nm, objdump, ldd

Understanding Function Calls

  • Understanding the call stack
  • The content of a stack frame
  • The details of a single function call
  • Implementing variable number of function arguments
  • Using setjmp/longjmp

Library and System Calls

  • What is call to a library
  • What is a system call
  • How is the kernel code invoked during a system call
  • Tracing library and system calls

Memory Management

  • What is dynamic memory anyway
  • Brief about how to implement heap management
  • Estimating the current heap size
  • Allocating memory blocks on the call stack
  • Tracking memory leaks with valgrind

Creating Processes

  • Copying a the adress-space of a process with fork
  • Special process IDs
  • Terminating a process
  • Waiting for processes to terminate
  • What are zombies and daemons
  • Loading a new executable with exec

File Systems

  • What is a file system
  • FS types
  • File types
  • Basic operations on files, from the kernel's perspective
  • I-nodes
  • Directory files
  • File descriptors
  • Devices
  • Mounting devices

The /proc file system

  • What is the /proc FS
  • Top-level info files
  • Process-specific info files

Regular I/O

  • How to use the kernel API of open/close
  • Opening modes
  • Setting file permissions
  • How to use the kernel API of read/write
  • Changing the file read/write position
  • Manipulating files in the file system

Advanced I/O

  • Manipulation of file descriptors
  • Using memory mapped I/O
  • Using non-blocking I/O
  • Using non-deterministic I/O

Signals

  • What are signals
  • Sending signals from the shell and from program code
  • Implementing signal handlers
  • Registering signals and signal masks
  • Implementing timeouts
  • Creating interval timers
  • Invoking longjmp from a signal handler

Channels

  • What is a channel
  • Pipes
  • Fifos

Message Queues

  • What is a message queue and how do it differ from a channel
  • Overview of the API
  • Usages

Shared Memory

  • What is shared memory
  • Overview of the API
  • Usages

Semaphores

  • What is a semaphore
  • Memory vs file-system based semaphores
  • Overview of the API
  • Usages

TCP Sockets

  • What is a TCP socket
  • API overview
  • Network byte order (NBO)
  • Creating client sockets
  • Creating server-side sockets
SnabbFakta
Namn Linux Systemprogramming med C
Längd3 Dagar
NivåAdvanced
Målgrupp Tekniska C programmerare
FörkunskaperPraktiska kunskaper i C programmering
Verktyg
  • GCC compiler
  • Jetbrains CLion IDE
  • Ubuntu Linux @ VirtualBox or WSL @ Windows-10
KursDatum
DatumPlatsPris
2020-02-17Stockholm19 000 kr
2020-03-09Stockholm 19 000 kr
2020-03-30Stockholm 19 000 kr
2020-04-14Stockholm 19 000 kr
2020-05-25Stockholm 19 000 kr
2020-06-15Stockholm 19 000 kr

Samma-Företags Rabatt

Vi ger 20% rabatt för tillkommande deltagare från samma företag vid samma kurs-tillfälle. Läs mer här.

Undervisningsspråk

Vårt tryckta kursmaterial är alltid författat på engelska. Den muntliga presentationen i våra klassrum är som regel på svenska, såvida inte samtliga deltagare samtycker till att vi genomför kursen på engelska.

Företagsintern Kurs

Om du beställer en företagsintern kurs kommer vi till er och håller kursen i era lokaler. Priset bestäms av vår prismodell och baseras på antalet kursdagar, antalet deltagare, samt i förekommande fall resa och logi.

Läs mer om vår prismodell och beställningsvillkor här.

Relaterade Kurser
KursDagarNivå
C Programmering4BeginnerVisa
POSIX Threads med C2AdvancedVisa
Linux Systemprogrammering i C++ 3AdvancedVisa