Kurs i

Linux Systems Programming using C

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 på kursen
  • Hur adressrummet för en process är organiserad och varför detta är intressant
  • Exakt 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
  • Kommuniaktion med pipe & fifo
  • POSIX message queues
  • POSIX shared memory segments
  • POSIX semaphores
  • TCP stream sockets
Innehå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 Systems Programming using C
Längd
3 dagar
Nivå
Advanced
Målgrupp
Tekniska C programmerare
Förkunskaper
Praktiska kunskaper i C programmering
Teknisk miljö
  • Decent C compiler, such as gcc or clang
  • A decent IDE such as Jetbrains CLion
  • Ubuntu Linux or Cygwin
Dela
Relaterade Kurser
Schemalagd Kurs

Pris

19 000 kr + moms

Vi ger 20% rabatt för tillkommande deltagare från samma företag vid samma kurstillfälle. Läs mer om vår samma-företags-rabatt.

Aktuella KursDatum
StartdatumPlats
2017-10-23Stockholm City
2017-11-29Stockholm City
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.

Prisexempel för NN deltagare

PPP + moms

Antal
Område

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