Kursplan

Introduksjon

  • Mål
  • Hvem du er
  • Stiftelsen Linux
  • Linux Grunnleggende opplæring
  • Sertifiseringsprogrammer og digital merking
  • Linux Distribusjoner
  • Plattformer
  • Klargjøring av systemet ditt
  • Bruke og laste ned en virtuell maskin
  • Ting endrer seg i Linux

Innledende

  • Prosedyrer
  • Standarder og LSB

Hvordan jobbe i OSS-prosjekter **

  • Oversikt over hvordan du kan bidra på riktig måte
  • Hold deg nær hovedlinjen for sikkerhet og kvalitet
  • Studer og forstå prosjektets DNA
  • Finn ut hva du vil klø Scratch
  • Identifiser vedlikeholdere og deres arbeidsflyter og metoder
  • Få tidlig input og arbeid i det åpne
  • Bidra med inkrementelle biter, ikke store kodedumper
  • La ditt ego stå ved døren: Ikke vær tynnhudet
  • Vær tålmodig, utvikle langsiktige forhold, vær hjelpsom

Kompilatorer

  • GCC
  • Andre kompilatorer
  • Store gcc-alternativer
  • Forbehandler
  • Integrerte utviklingsmiljøer (IDE)
  • Labs

Biblioteker

  • Statiske biblioteker
  • Delte biblioteker
  • Lenke til biblioteker
  • Dynamic Linking Loader
  • Labs

Gjøre

  • Bruker make og Makefiles
  • Bygge store prosjekter
  • Mer kompliserte regler
  • Innebygde regler
  • Labs

Kildekontroll

  • Kildekontroll
  • RCS og CVS
  • Subversion
  • git
  • Labs

Debugging og Core Dumps

  • gdb
  • Hva er Core Dump-filer?
  • Produserer kjernedumper
  • Undersøker kjernedumper
  • Labs

Feilsøkingsverktøy

  • Får tiden
  • Profilering og ytelse
  • valgrind
  • Labs

Systemanrop

  • Systemanrop vs. bibliotekfunksjoner
  • Hvordan systemanrop foretas
  • Returverdier og feiltall
  • Labs

Minne Management og allokering

  • Minne Management
  • Dynamisk tildeling
  • Tuning malloc()
  • Låse sider
  • Labs

Filer og filsystemer i Linux **

  • Filer, kataloger og enheter
  • Det virtuelle filsystemet
  • ext2/ext3 filsystemet
  • Journalføring filsystemer
  • ext4/ filsystemet
  • Labs

Fil I/O

  • UNIX-fil I/O
  • Åpning og lukking
  • Lese, skrive og søke
  • Posisjonell og vektor I/O
  • Standard I/O-bibliotek
  • Støtte for store filer (LFS)
  • Labs

Avanserte filoperasjoner

  • Statistiske funksjoner
  • Katalogfunksjoner
  • inotifisere
  • Minnekartlegging
  • flock() og fcntl()
  • Lage midlertidige filer
  • Andre systemanrop
  • Labs

Prosesser I

  • Hva er en prosess?
  • Prosessgrenser
  • Prosessgrupper
  • Proc-filsystemet
  • InterProcess Communication Metoder
  • Labs

Prosesser II

  • Bruke system() for å lage en prosess
  • Bruke fork() for å lage en prosess
  • Bruke exec() for å lage en prosess
  • Bruke klone()
  • Avslutter
  • Konstruktører og destruktorer
  • Venter
  • Demonprosesser
  • Labs

Rør og Fifos

  • Rør og interprosess Communication
  • popen() og pclose()
  • rør()
  • Navngitte rør (FIFOer)
  • splice(), vmsplice() og tee()
  • Labs

Asynkron I/O**

  • Hva er Asynkron I/O?
  • POSIX Asynchronous I/O API
  • Linux Implementering
  • Labs

Signaler I

  • Hva er signaler?
  • Signaler tilgjengelig
  • Sender ut signaler
  • Alarmer, pause og sove
  • Sette opp en signalbehandler
  • Signalsett
  • sigaction()
  • Labs

Signaler II

  • Reentrancy og signalbehandlere
  • Hopp og ikke-lokale returer
  • siginfo og sigqueue()
  • Sanntidssignaler
  • Labs

POSIX-tråder I

  • Multithreading under Linux
  • Grunnleggende programstruktur
  • Opprette og ødelegge tråder
  • Signaler og tråder
  • Forking vs Threading
  • Labs

POSIX-tråder II

  • Vranglås og løpsforhold
  • Mutex-operasjoner
  • Semaforer
  • Futexes
  • Betingede operasjoner
  • Labs

Networking og stikkontakter

  • Networking Lag
  • Hva er Sockets?
  • Stream Sockets
  • Datagram kontakter
  • Raw Sockets
  • Bytebestilling
  • Labs

Sockets adresser og verter

  • Socket adressestrukturer
  • Konvertering av IP-adresser
  • Vertsinformasjon
  • Labs

Sockets Porter og protokoller

  • Serviceportinformasjon
  • Protokollinformasjon
  • Labs

Sockets klienter

  • Grunnleggende klientsekvens
  • stikkontakt()
  • koble()
  • close() og shutdown()
  • UNIX-klient
  • Internett-klient
  • Labs

Sockets servere

  • Grunnleggende serversekvens
  • binde()
  • lytte()
  • aksepterer()
  • UNIX-server
  • Internett-server
  • Labs

Sockets Input/Output operasjoner

  • Skriv les()
  • send(), recv()
  • sendto(), recvfrom()
  • sendmsg(), recvmsg()
  • Send fil()
  • socketpair()
  • Labs

Alternativer for stikkontakter

  • Få og stille inn socketalternativer
  • fcntl()
  • ioctl()
  • getsockopt() og setsockopt()
  • Labs

Netlink Sockets**

  • Hva er netlink Sockets?
  • Åpne en netlink-socket
  • netlink meldinger
  • Labs

Sockets multipleksing og samtidige servere

  • Multipleks og asynkron socket I/O
  • plukke ut()
  • avstemming()
  • pselect() og ppoll()
  • epoll
  • Signaldrevet og asynkron I/O
  • Samtidige servere
  • Labs

Interprosess Communication

  • Metoder for IPC
  • POSIX IPC
  • System V IPC**
  • Labs

Delt minne

  • Hva er delt minne?
  • POSIX delt minne
  • System V delt minne**
  • Labs

Semaforer

  • Hva er en semafor?
  • POSIX semaforer
  • System V semaforer**
  • Labs

Meldingskøer

  • Hva er meldingskøer?
  • POSIX meldingskøer
  • System V meldingskøer**
  • Labs

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

Antall deltakere



Price per participant

Relaterte kurs

Related Categories