Kursplan

Införandet

  •  Mål
  •  Vem du är
  •  Stiftelsen Linux
  •  Linux Grundläggande utbildning
  •  Certifieringsprogram och digital märkning
  •  Linux Distributioner
  •  Plattformar
  •  Förbereda ditt system
  •  Använda och ladda ned en virtuell dator
  •  Saker och ting förändras i Linux

Förberedelser

  •  Procedurer
  •  standarder och LSB

Hur man arbetar i OSS-projekt **

  •  Översikt över hur du bidrar på rätt sätt
  •  Håll dig nära huvudlinjen för säkerhet och kvalitet
  •  Studera och förstå projektets DNA
  •  Ta reda på vilken klåda du vill Scratch
  •  Identifiera förvaltare och deras arbetsflöden och metoder
  •  Få tidig input och arbeta öppet
  •  Bidra med inkrementella bitar, inte stora koddumpar
  •  Lämna ditt ego vid dörren: Var inte tunnhudad
  •  Ha tålamod, utveckla långsiktiga relationer, var hjälpsam

Kompilatorer

  •  GCC
  •  Andra kompilatorer
  •  Större gcc-alternativ
  •  Preprocessor
  •  Integrerade utvecklingsmiljöer (IDE)
  •  Labs

Bibliotek

  •  Statiska bibliotek
  •  Delade bibliotek
  •  Länka till bibliotek
  •  Dynamisk länkande lastare
  •  Labs

Göra

  •  Använda make och makefiles
  •  Bygga stora projekt
  •  Mer komplicerade regler
  •  Inbyggda regler
  •  Labs

Kontroll av källa

  •  Kontroll av källa
  •  RCS och CVS
  •  Subversion
  •  Git
  •  Labs

Felsökning och kärndumpar

  •  Gdb
  •  Vad är Core Dump-filer?
  •  Producera kärndumpar
  •  Undersöka kärndumpar
  •  Labs

Felsökningsverktyg

  •  Att få tiden
  •  Profilering och prestanda
  •  valgrind
  •  Labs

Systemanrop

  •  Systemanrop kontra biblioteksfunktioner
  •  Hur systemanrop görs
  •  Returvärden och felnummer
  •  Labs

Minne Management och allokering

  •  Minne Management
  •  Dynamisk allokering
  •  Stämning malloc()
  •  Låsa sidor
  •  Labs

Filer och filsystem i Linux **

  •  Filer, kataloger och enheter
  •  Det virtuella filsystemet
  •  Filsystemet ext2/ext3
  •  Journalföring av filsystem
  •  Ext4/ Filsystemet
  •  Labs

Fil I/O

  •  UNIX-fil I/O
  •  Öppning och stängning
  •  Läsa, skriva och söka
  •  Positionell och vektor-I/O
  •  Standard I/O-bibliotek
  •  Stöd för stora filer (LFS)
  •  Labs

Avancerade filåtgärder

  •  Stat-funktioner
  •  Katalogfunktioner
  •  inotify
  •  Mappning av minne
  •  flock() och fcntl()
  •  Skapa temporära filer
  •  Andra systemanrop
  •  Labs

Processer  I

  •  Vad är en process?
  •  Processgränser
  •  Processgrupper
  •  Proc-filsystemet
  •  InterProcess Communication-metoder
  •  Labs

Processer  II

  •  Använda system() för att skapa en process
  •  Använda fork() för att skapa en process
  •  Använda exec() för att skapa en process
  •  Använda clone()
  •  Spännande
  •  Konstruktörer och destruktörer
  •  Väntan
  •  Daemon-processer
  •  Labs

Rör och Fifos

  •  Rör och InterProcess Communication
  •  popen() och pclose()
  •  rör()
  •  Namngivna pipes (FIFOs)
  •  splice(), vmsplice() och tee()
  •  Labs

Asynkron I/O**

  •  Vad är asynkron I/O?
  •  POSIX:s asynkrona I/O-API
  •  Linux Genomförande
  •  Labs

Signaler  I

  •  Vad är signaler?
  •  Tillgängliga signaler
  •  Skicka signaler
  •  Larm, paus och sömn
  •  Ställa in en signalhanterare
  •  Signaluppsättningar
  •  sigaction()
  •  Labs

Signaler  II

  •  Återinträdes- och signalhanterare
  •  Hoppning och icke-lokala returer
  •  siginfo och sigqueue()
  •  Signaler i realtid
  •  Labs

POSIX-trådar  I

  •  Multitrådning under Linux
  •  Grundläggande programstruktur
  •  Skapa och förstöra trådar
  •  Signaler och trådar
  •  Gaffling vs. gängning
  •  Labs

POSIX-gängor  II

  •  Dödlägen och tävlingsförhållanden
  •  Mutex-åtgärder
  •  Semaforer
  •  Futexes
  •  Villkorliga åtgärder
  •  Labs

Networking och uttag

  •  Networking Skikt
  •  Vad är uttag?
  •  Strömma uttag
  •  Sockets för datagram
  •  Råa uttag
  •  Byte ordning
  •  Labs

Socketadresser  och värdar

  •  Strukturer för socketadresser
  •  Konvertera IP-adresser
  •  Information om värden
  •  Labs

Socket-portar  och protokoll

  •  Information om serviceport
  •  Information om protokollet
  •  Labs

Sockets-klienter  

  •  Grundläggande klientsekvens
  •  uttag()
  •  ansluta()
  •  close() och shutdown()
  •  UNIX-klient
  •  Internetklient
  •  Labs

Sockets-servrar  

  •  Grundläggande serversekvens
  •  bind()
  •  lyssna()
  •  acceptera()
  •  UNIX-server
  •  Internet-server
  •  Labs

Sockets in-/utgångsoperationer  

  •  write(), read()
  •  send(), recv()
  •  sendto(), recvfrom()
  •  sendmsg(), recvmsg()
  •  sendfile()
  •  socketpair()
  •  Labs

Alternativ för  uttag

  •  Hämta och ställa in uttagsalternativ
  •  fcntl()
  •  ioctl()
  •  getsockopt() och setsockopt()
  •  Labs

Netlink-uttag**

  •  Vad är netlink Sockets?
  •  Öppna ett nätlänkuttag
  •  netlink Meddelanden
  •  Labs

Sockets  , multiplexering och samtidiga servrar

  •  Multiplexad och asynkron socket-I/O
  •  Välj()
  •  poll()
  •  pselect() och ppoll()
  •  epoll epoll
  •  Signaldriven och asynkron I/O
  •  Samtidiga servrar
  •  Labs

Inter Process Communication

  •  Metoder för IPC
  •  POSIX IPC
  •  System V IPC**
  •  Labs

Delat minne

  •  Vad är delat minne?
  •  POSIX-delat minne
  •  System V delat minne**
  •  Labs

Semaforer

  •  Vad är en semafor?
  •  POSIX-semaforer
  •  System V-semaforer**
  •  Labs

Meddelandeköer

  •  Vad är meddelandeköer?
  •  POSIX-meddelandeköer
  •  System V-meddelandeköer**
  •  Labs

Krav

Den här kursen är för erfarna utvecklare. Eleverna bör vara skickliga i C-programmering och vara bekanta med grundläggande Linux verktyg och textredigerare.

Publik

Den här kursen är för erfarna utvecklare. Eleverna bör vara skickliga i C-programmering och vara bekanta med grundläggande Linux verktyg och textredigerare.

Erfarenhetsnivå: Medel

 28 timmar

Antal deltagare



Price per participant

Relaterade Kategorier