Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Kursplan
Introduksjon
- Mål
- Hvem du er
- The Linux Foundation
- Linux Foundation Training
- Sertifiseringsprogrammer og Digital Badging
- Linux distribusjoner
- Plattformer
- Forberedelse av systemet
- Bruk og nedlasting av en virtuell maskin
- Ting endrer seg i Linux
Forberedelser
- Prosedyrer
- Standarder og LSB
Hvordan arbeide i OSS-prosjekter **
- Oversikt over hvordan du bidrar riktig
- Hold deg nær hovedlinjen for sikkerhet og kvalitet
- Studér og forstå prosjektets DNA
- Finn ut hva du vil gjøre
- Identifiser vedlikeholdere og deres arbeidsflyt og metoder
- Få tidlig input og arbeid åpent
- Bidra med små biter, ikke store kodedump
- La egoset være utenfor døren: Ikke være sensitiv
- Vær tålmodig, utvikl langvarige forhold, vær hjelpsom
Kompilatorer
- GCC
- Andre kompilatorer
- Hovedalternativer for gcc
- Forhåndskompilerer
- Integrerte utviklingsmiljøer (IDE)
- Laboratorier
Biblioteker
- Statiske biblioteker
- Delte biblioteker
- Linking til biblioteker
- Dynamisk lenkerlastning
- Laboratorier
Make
- Bruk av make og Makefiles
- Bygging av store prosjekter
- Mer kompliserte regler
- Innbygde regler
- Laboratorier
Kildekontroll
- Kildekontroll
- RCS og CVS
- Subversion
- git
- Laboratorier
Feilsøking og Core Dumps
- gdb
- Hva er Core Dump-filer?
- Generering av Core Dumps
- Eksamen av Core Dumps
- Laboratorier
Feilsøkingsverktøy
- Å få tiden
- Profilering og ytelse
- valgrind
- Laboratorier
Systemkall
- Systemkall vs. biblioteksfunksjoner
- Hvordan systemkall utføres
- Returverdier og feilkoder
- Laboratorier
Minnehåndtering og tilordning
- Minnehåndtering
- Dynamisk tilordning
- Tuning av malloc()
- Låsing av sider
- Laboratorier
Filer og filsystemer i Linux **
- Filer, mapper og enheter
- Det virtuelle filsystemet
- Det ext2/ext3-filsystemet
- Journalerende filsystemer
- Det ext4-filsystemet
- Laboratorier
Fil-I/O
- UNIX-fil-I/O
- Åpning og lukking
- Lesing, skriving og søking
- Posisjonell og vektor I/O
- Standard I/O-bibliotek
- Støtte for store filer (LFS)
- Laboratorier
Avanserte filoperasjoner
- Stat-funksjoner
- Mappefunksjoner
- inotify
- Minneavbilding
- flock() og fcntl()
- Oppretting av midlertidige filer
- Andre systemkall
- Laboratorier
Prosesser I
- Hva er en prosess?
- Prosessgrenser
- Prosessgrupper
- Proc-filsystemet
- Muligheter for interprosesskommunikasjon
- Laboratorier
Prosesser II
- Bruk av system() for å opprette en prosess
- Bruk av fork() for å opprette en prosess
- Bruk av exec() for å opprette en prosess
- Bruk av clone()
- Avslutting
- Konstruktører og destruktører
- Venting
- Demonprosesser
- Laboratorier
Rør og FIFO'er
- Rør og interprosesskommunikasjon
- popen() og pclose()
- pipe()
- Navngitte rør (FIFO'er)
- splice(), vmsplice() og tee()
- Laboratorier
Asynkron I/O **
- Hva er asynkron I/O?
- POSIX-asynkron I/O-API
- Linux-implementering
- Laboratorier
Signaler I
- Hva er signaler?
- Tilgjengelige signaler
- Sending av signaler
- Alarmer, pausing og sovning
- Oppsett av signalhåndterer
- Signalgrupper
- sigaction()
- Laboratorier
Signaler II
- Gjengjeldbarhet og signalhåndterere
- Hopp og ikke-lokale returer
- siginfo og sigqueue()
- Ekte tids signaler
- Laboratorier
POSIX-tråder I
- Multithreading under Linux
- Grundleggende programstruktur
- Oppretting og sletting av tråder
- Signaler og tråder
- Forking vs. threading
- Laboratorier
POSIX-tråder II
- Deadlocks og race conditions
- Mutex-operasjoner
- Semaforer
- Futexes
- Betingede operasjoner
- Laboratorier
Nettverks- og sokkelprogrammering
- Nettverkssjikt
- Hva er sokkeler?
- Stream-sokkeler
- Datagramsokkeler
- Rå sokkeler
- Byte-ordering
- Laboratorier
Sokkeler Adresser og verter
- Sokkeladresse-strukturer
- Konvertering av IP-adresser
- Vertsinformasjon
- Laboratorier
Sokkeler Porter og protokoller
- Tjenesteportinformasjon
- Protokollinformasjon
- Laboratorier
Sokkeler Klienter
- Grundleggende klientsekvens
- socket()
- connect()
- close() og shutdown()
- UNIX-klient
- Internettklient
- Laboratorier
Sokkeler Tjenere
- Grundleggende tjenesekvens
- bind()
- listen()
- accept()
- UNIX-tjener
- Internett-tjener
- Laboratorier
Sokkeler Inn-/utdataoperasjoner
- write(), read()
- send(), recv()
- sendto(), recvfrom()
- sendmsg(), recvmsg()
- sendfile()
- socketpair()
- Laboratorier
Sokkeler Alternativer
- Å hente og sette sokkelalternativer
- fcntl()
- ioctl()
- getsockopt() og setsockopt()
- Laboratorier
Netlink-sokkeler **
- Hva er netlink-sokkeler?
- Åpning av en netlink-sokkel
- Netlink-meldinger
- Laboratorier
Sokkeler Multiplexing og konkurranse tjenere
- Multiplexert og asynkron sokkel I/O
- select()
- poll()
- pselect() og ppoll()
- epoll
- Signaldrevet og asynkron I/O
- Konkurranse tjenere
- Laboratorier
Inter prosess kommunikasjon
- Metoder for IPC
- POSIX IPC
- System V IPC **
- Laboratorier
Delt minne
- Hva er delt minne?
- POSIX delt minne
- System V delt minne **
- Laboratorier
Semaforer
- Hva er en semafor?
- POSIX-semaforer
- System V-semaforer **
- Laboratorier
Meldebokser
- Hva er meldingkøer?
- POSIX-meldingkøer
- System V meldingkøer **
- Laboratorier
Krav
Dette kurset er for erfarne utviklere. Studentene bør være dyktige i C-programmering, og være kjent med grunnleggende Linux-verktøy og tekstredigerere.
Publikum
Dette kurset er for erfarne utviklere. Studentene bør være dyktige i C-programmering, og være kjent med grunnleggende Linux-verktøy og tekstredigerere.
Erfaringsnivå: Middels
28 timer