page header photo
share Twitter share LinkedIn

cursus Linux system programming

Deze opleiding is specifiek voor het Linux-systeem.

De cursus Linux system programming laat C-programmeurs kennismaken met de geavanceerde mechanismen die het Linux-besturingssysteem te bieden heeft. Met deze cursus bieden we geen droge opsomming van de beschikbare system calls en bibliotheek-functies, maar behandelen we juist de achterliggende concepten.
We gaan in de cursus gedetailleerd in op onderwerpen als procesbeheer (creatie en transformatie van processen), toegang tot bestanden (conventioneel, maar ook de gevorderde manier via memory mapping) en directories, en alle vormen van inter-proces communicatie (pipes, signals, TCP/UDP-sockets, POSIX IPC message queues/shared memory/semaphores).
Verder bespreken we uitgebreid hoe u multithreaded applicaties kunt ontwikkelen met behulp van de pthread bibliotheek. Hierbij horen de levenscyclus van een thread (creatie en beëindiging), de verschillende synchronisatie-aspecten en het herkennen van valkuilen.

Na afloop van deze cursus kunt u de meest geavanceerde mogelijkheden van de Linux-kernel voor u aan het werk zetten. Lees verder >>>

Voor wie?

  • Ervaren programmeurs en software-ontwikkelaars met ruime kennis van de programmeertaal C en Linux die specialistische systeem-programma's (gaan) ontwikkelen, zoals daemons of programmatuur voor embedded toepassingen.

De volledige cursus duurt vijf dagen en kan als geheel worden gevolgd tegen een voordeliger tarief. Specifieke cursusdagen zijn ook als losse modules te volgen. Kennis van de stof van de eerste twee dagen (procesbeheer, diverse vormen van file- en directory-I/O, en pipes) is wel essentieel om de resterende drie eendaagse modules los te kunnen volgen.
Een prijsoverzicht:

Module Duur Welke dagen Prijs  Direct aanmelden
 
Contact
 
In-company cursus op maat
 
Prijzen excl. BTW
(dagen) v.d. cursus
Fundamentals 2 1 en 2   € 1030,-
Signals & POSIX IPC 1 3   € 675,-
Socket programmeren 1 4   € 675,-
Multi-threaded programmeren 1 5   € 675,-
       
Volledige cursus 5 1, 2, 3, 4 en 5   € 2230,-
Fundamentals en één vervolgdag 3 1, 2 en ?   € 1550,-

Op het aanmeldformulier voor deze cursus is ruimte om de keus voor specifieke modules aan te geven.

Wanneer

Wij hebben deze cursus momenteel niet van een vaste datum voorzien. Als u belangstelling hebt, neem dan contact met ons op, zodat we in overleg kunnen bepalen wanneer en op welke manier (klassikaal, coaching on the job, privé-cursus, expert session) wij de benodigde kennis overdragen.
Voor contact: telefoon 024-352 72 72 of info@ATComputing.nl.

Meer informatie over deze cursus

System calls

Het Linux-besturingssysteem biedt een groot arsenaal aan mogelijkheden op het gebied van file I/O, procesbeheer en interproces-communicatie. Als een C-programmeur deze functionaliteit optimaal wil benutten, is gedegen kennis van de Linux system calls en de achterliggende mechanismen onontbeerlijk.

Deze system calls maken het mogelijk om file-karakteristieken te wijzigen en om op efficiënte wijze toegang te verkrijgen tot file-data. Bovendien kan de C-programmeur nieuwe processen creëren en manipuleren met de identiteit waaronder een proces draait.

Verder biedt Linux een grote verscheidenheid aan mechanismen om data uit te wisselen tussen processen, hetzij lokaal, hetzij via een netwerk. Interprocesscommunicatie (IPC) kan verlopen via het klassieke pipe-mechanisme, maar ook via shared memory, semaforen, message queues, signals of sockets.

Multi-threaded programmering

Multi-threaded programmering is een techniek waarbij er binnen een lopend proces meerdere executielijnen actief zijn. Iedere executielijn gaat min of meer onafhankelijk zijn eigen weg binnen de context van het omhullende proces. Op deze manier kunnen er verschillende handelingen door een proces (schijnbaar) parallel worden uitgevoerd. Deze programmeertechniek wint steeds meer terrein, met name doordat multiprocessor-systemen gemeengoed zijn geworden.
Multi-threaded programma's bouw je niet door hier en daar een extra system call of functie-aanroep in de bestaande code tussen te voegen. Het vereist echt een andere denktrant, waarbij je je continu moet afvragen welke uitwerking een stuk code heeft op het moment dat het door meerdere threads parallel wordt doorlopen.

Voorkennis

Kennis van de programmeertaal C is een must. Deze voorkennis verwerft u via de cursus "De programmeertaal C".
Minimaal een half jaar praktijkervaring met Linux (of een andere UNIX-variant) is een pre.

Inhoud van de cursus

In module Fundamentals (dag 1 en 2) komt aan de orde:

  • Procesbeheer
    Proces-creatie, -transformatie en -synchronisatie. Beïnvloeding van scheduling-prioriteit. Opvragen en wijzigen van proces-limieten. Relaties tussen processen (sessies, proces-groepen, controlling tty). Opvragen en wijzigen van proces-capabilities. Veilig omgaan met setuid-bit en capabilities op executable file.

    System calls: fork, execl, execv, exit, wait, waitpid, sched_setscheduler, nice, setpriority, getrlimit, setrlimit, getpid, getppid, cap_get_proc, cap_set_proc, cap_free, cap_set_flag, getuid, setuid, seteuid.

  • File I/O
    System calls om bestanden te creëeren, te openen, te lezen, te schrijven en om de huidige positie te beïnvloeden. Invloed van diverse open-opties. Manipuleren met file descriptors. Alternatieve toegang tot bestanden via memory-mapping. Opvragen en wijzigen van bestandskenmerken. Monitoren van wijzigingen op bestanden en directories.

    System calls: open, creat, close, umask, read, write, lseek, fcntl, dup, mmap, munmap, stat, access, truncate, link, unlink, symlink, readlink, chmod, chown, utime, inotify_init, inotify_add_watch.

  • Directory I/O
    Opvragen van bestandsnamen uit directories. Opvragen en wijzigen van de current directory. Creëren en verwijderen van directories.

    System calls en functies: opendir, readdir, rewinddir, mkdir, rmdir, chdir, getcwd.

  • Device I/O
    Opvragen en wijzigen van kenmerken van een apparaat. I/O multiplexing (meerdere file descriptors parallel in de gaten houden).

    System calls: ioctl, select.

  • Pipes
    Opzetten en eigenschappen van pipes. Communicatie via pipes. Pipes met meerdere lezers en/of schrijvers. Eigenschappen en gebruik van named pipes (fifo files)

    System calls en functies: pipe, mknod, mkfifo.

In module Signals & POSIX IPC (dag 3) komt aan de orde:

  • Signals
    Soorten signals. Versturen van conventionele signals en van realtime signals. Gebruik van timers. Afhandelen van signals op de conventionele wijze. Blokkeren en doorlaten van signals door ontvangend proces (reliable).

    System calls: kill, signal, pause, alarm, getitimer, setitimer, sigprocmask, sigaction, sigpending, sigsuspend.

  • POSIX IPC
    Opzetten van en toegang verkrijgen tot shared memory segmenten. Synchroniseren van processen met semaforen. Versturen en ontvangen van berichten tussen processen via message queues.

    System calls: shm_open, shm_unlink, sem_open, sem_close, sem_unlink, sem_post, sem_wait, sem_post, sem_init, sem_destroy, mq_open, mq_close, mq_send, mq_receive, mq_setattr, mq_getattr.

In module Socket programmeren (dag 4) komt aan de orde:

  • Sockets
    De socket API. Streams sockets versus datagram sockets. Client-server model. Opzetten van actief TCP-socket vanuit client-proces. Opzetten van passief TCP-socket vanuit server-proces. Socket-domeinen en adressen. UNIX domain sockets. TCP/IP sockets (TCP and UDP communication). Vertalen van host-/service-naam naar adres-info (voor IPv4 en IPv6). Sturen van broadcasts.

    System calls en functies: socket, connect, bind, listen, accept, getaddrinfo, recvfrom, sendto.

  • Daemonizen
    Relaties tussen processen (sessies, proces-groepen, controlling tty). Werkwijze om te zorgen dat permanent actief proces volledig autonoom kan werken.

    System calls and functions: getsid, setsid, getpgrp, setpgid.

In module Multi-threaded programmeren (dag 5) komt aan de orde:

  • POSIX pthreads
    Linux thread-model (tasks, thread-group). Threads-creatie en -einde (vrijwillig of gedwongen). Synchronisatie van threads met behulp van mutexen en conditie-variabelen. Omgaan met globale variabelen. Gebruik van thread-safe system calls en functies. Attributen van een thread. Per-thread variabelen. Threads en signals. Consequenties voor specifieke Linux system calls.

    System calls en functies: clone, pthread_create, pthread_self, pthread_equal, pthread_exit, pthread_cancel, pthread_setcancelstate, pthread_testcancel, pthread_join, pthread_detach, pthread_mutex_lock, pthread_mutex_unlock, pthread_mutex_trylock, pthread_cond_wait, pthread_cond_timedwait, pthread_cond_signal, pthread_cond_broadcast, pthread_attr_..., pthread_sigmask, pthread_cleanup_push, pthread_cleanup_pop, pthread_key_create, pthread_key_getspecific, pthread_key_setspecific.

Documentatie

U ontvangt een werkboek met de kopieën van de gebruikte presentaties, practicumopgaven en de uitwerkingen daarvan. Deze documentatie is Engelstalig.
De cursus wordt in principe in het Engels gegeven, tenzij alle deelnemers Nederlandstalig zijn.

Afsluiting

Enige tijd na afloop van de cursus ontvangt u een certificaat van deelname.

Valid XHTML 1.0 Strict   Valid CSS2