Schița de curs

Introducere

  • Obiective
  • Cine sunteți
  • Fundația Linux
  • Formarea Linux Fundației
  • Programe de certificare și insigne digitale
  • Linux Distribuții
  • Platforme
  • Pregătirea sistemului dvs.
  • Utilizarea și descărcarea unei mașini virtuale
  • Lucrurile se schimbă în Linux

Preliminarii

  • Proceduri
  • Standardele și LSB

Cum se lucrează în cadrul proiectelor OSS **

  • Privire de ansamblu asupra modului de a contribui în mod corespunzător
  • Rămâneți aproape de linia principală pentru securitate și calitate
  • Studiați și înțelegeți ADN-ul proiectului
  • Aflați ce mâncărime doriți să Scratch
  • Identificați responsabilii cu întreținerea și fluxurile și metodele lor de lucru
  • Obțineți din timp contribuții și lucrați în mod deschis
  • Contribuiți cu fragmente incrementale, nu cu descărcări mari de cod
  • Lasă-ți ego-ul la ușă: Nu fiți prea slab de caracter
  • Fiți răbdător, dezvoltați relații pe termen lung, fiți util

Compilatoare

  • GCC
  • Alte compilatoare
  • Principalele opțiuni gcc
  • Preprocesor
  • Medii de dezvoltare integrate (IDE)
  • Laboratoare

Biblioteci

  • Biblioteci statice
  • Biblioteci partajate
  • Conectarea la biblioteci
  • Încărcător de legături dinamice
  • Laboratoare

Faceți

  • Utilizarea make și a fișierelor Makefile
  • Construirea proiectelor mari
  • Reguli mai complicate
  • Reguli încorporate
  • Laboratoare

Controlul sursei

  • Controlul sursei
  • RCS și CVS
  • Subversion
  • git
  • Laboratoare

Depanarea și descărcările de nucleu

  • gdb
  • Ce sunt fișierele Core Dump?
  • Producerea de Core Dumps
  • Examinarea fișierelor de vidare a nucleului
  • Laboratoare

Instrumente de depanare

  • Obținerea timpului
  • Profilarea și performanța
  • valgrind
  • Laboratoare

Apeluri de sistem

  • Apeluri de sistem vs. funcții de bibliotecă
  • Cum se efectuează apelurile de sistem
  • Valori de returnare și numere de eroare
  • Laboratoare

Memorie Management și alocare

  • Memorie Management
  • Alocarea dinamică
  • Ajustarea malloc()
  • Blocarea paginilor
  • Laboratoare

Fișiere și sisteme de fișiere în Linux **

  • Fișiere, directoare și dispozitive
  • Sistemul de fișiere virtuale
  • Sistemul de fișiere ext2/ext3
  • Sisteme de fișiere cu jurnalizare
  • Sistemul de fișiere ext4/
  • Laboratoare

E/S de fișiere

  • UNIX File I/O
  • Deschiderea și închiderea
  • Citire, scriere și căutare
  • I/O pozițional și vectorial
  • Biblioteca I/O standard
  • Suport pentru fișiere mari (LFS)
  • Laboratoare

Operațiuni avansate cu fișiere

  • Funcții Stat
  • Funcții de directoare
  • inotify
  • Maparea memoriei
  • flock() și fcntl()
  • Crearea de fișiere temporare
  • Alte apeluri de sistem
  • Laboratoare

Procese I

  • Ce este un proces?
  • Limitele proceselor
  • Grupuri de procese
  • Sistemul de fișiere proc
  • Metode interproces Communication
  • Laboratoare

Procese II

  • Utilizarea system() pentru a crea un proces
  • Utilizarea fork() pentru a crea un proces
  • Utilizarea exec() pentru a crea un proces
  • Utilizarea clone()
  • Ieșirea
  • Constructori și destructori
  • Așteptarea
  • Procese demon
  • Laboratoare

Pipe-uri și Fifos

  • Pipe-uri și InterProces Communication
  • popen() și pclose()
  • pipe()
  • Pipe-uri numite (FIFO)
  • splice(), vmsplice() ș i tee()
  • Laboratoare

I/O asincronă**

  • Ce este I/O asincronă?
  • API-ul POSIX de I/O asincronă
  • Linux Implementare
  • Laboratoare

Semnale I

  • Ce sunt semnalele?
  • Semnale disponibile
  • Dispecerizarea semnalelor
  • Alarme, pauză și adormire
  • Configurarea unui gestionar de semnale
  • Seturi de semnale
  • sigaction()
  • Laboratoare

Semnale II

  • Reîntregirea și gestionarii de semnal
  • Salt și retururi nelocale
  • siginfo și sigqueue()
  • Semnale în timp real
  • Laboratoare

Fire POSIX I

  • Multithreading sub Linux
  • Structura de bază a programului
  • Crearea și distrugerea firelor de execuție
  • Semnale și fire de execuție
  • Forking vs. Threading
  • Laboratoare

Fire POSIX II

  • Blocaje și condiții de rasă
  • Operațiuni Mutex
  • Semafoare
  • Futexuri
  • Operațiuni condiționate
  • Laboratoare

Networking și Sockets

  • Networking Straturi
  • Ce sunt Sockets?
  • Sockets de flux
  • Socluri de datagramă
  • Socketuri brute
  • Ordonarea octeților
  • Laboratoare

Adrese ș i gazde Sockets

  • Structuri de adrese de socket
  • Conversia adreselor IP
  • Informații despre gazdă
  • Laboratoare

Porturi și protocoale Sockets

  • Informații despre portul de serviciu
  • Informații despre protocol
  • Laboratoare

Clienți Sockets

  • Secvența de bază a clientului
  • socket()
  • connect()
  • close() și shutdown()
  • Client UNIX
  • Client Internet
  • Laboratoare

Servere Sockets

  • Secvența de bază a serverului
  • bind()
  • listen()
  • accept()
  • Server UNIX
  • Server Internet
  • Laboratoare

Operațiuni de intrare/ieș ire prin socket-uri

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

Opțiuni Sockets

  • Obținerea și setarea opțiunilor socket-urilor
  • fcntl()
  • ioctl()
  • getsockopt() și setsockopt()
  • Laboratoare

Sockets Netlink**

  • Ce sunt Sockets netlink?
  • Deschiderea unui Socket netlink
  • Mesaje netlink
  • Laboratoare

Multiplexarea socketurilor și serverele concurente

  • Socket I/O multiplexat și asincron
  • select()
  • poll()
  • pselect() ș i ppoll()
  • epoll
  • I/O asincronă și cu semnal
  • Servere concurente
  • Laboratoare

Interproces Communication

  • Metode de IPC
  • IPC POSIX
  • System V IPC**
  • Laboratoare

Memorie partajată

  • Ce este memoria partajată?
  • Memoria partajată POSIX
  • Memorie partajată System V**
  • Laboratoare

Semafoare

  • Ce este un semafor?
  • Semafoare POSIX
  • Semafoare în sistemul V**
  • Laboratoare

Cozi de mesaje

  • Ce sunt cozile de mesaje?
  • Cozi de mesaje POSIX
  • Cozile de mesaje System V**
  • Laboratoare

Cerințe

Acest curs se adresează dezvoltatorilor cu experiență. Studenții trebuie să cunoască bine programarea în C și să fie familiarizați cu utilitarele de bază Linux și cu editorii de text.

Audiență

Acest curs se adresează dezvoltatorilor cu experiență. Studenții trebuie să cunoască bine programarea în C și să fie familiarizați cu utilitățile de bază Linux și cu editorii de text.

Nivel de experiență: Intermediar

 28 ore

Cursuri înrudite

Categorii înrudite