Mulțumim pentru trimiterea solicitării! Un membru al echipei noastre vă va contacta în curând.
Mulțumim pentru trimiterea rezervării! Un membru al echipei noastre vă va contacta în curând.
Schița de curs
Introducere
- Obiective
- Cine ești tu
- The Linux Foundation
- Formarea Linux Foundation
- Programe de certificare și insigne digitale
- Distribuții Linux
- Platforme
- Pregătirea sistemului tău
- Utilizarea și descărcarea unei mașini virtuale
- Lucrurile se schimbă în Linux
Preliminarii
- Proceduri
- Standarde și LSB
Cum să lucrezi în proiecte OSS **
- Prezentare generală despre cum să contribui corect
- Rămâi aproape de Mainline pentru securitate și calitate
- Studiază și înțelege ADN-ul proiectului
- Află ce vrei să rezolvi
- Identifică mentori și fluxurile lor de lucru și metode
- Obține feedback timpuriu și lucrează în mod deschis
- Contribuie cu bucăți incrementale, nu cu dumpuri mari de cod
- Lasă ego-ul la ușă: Nu fi sensibil
- Fii răbdător, dezvoltă relații pe termen lung, fii de ajutor
Compilatoare
- GCC
- Alte compilatoare
- Opțiuni majore gcc
- Preprocesor
- Medii de dezvoltare integrate (IDE)
- Laboratoare
Biblioteci
- Biblioteci statice
- Biblioteci partajate
- Legături la biblioteci
- Încărcător de legături dinamice
- Laboratoare
Make
- Utilizarea make și Makefile-uri
- Construirea de proiecte mari
- Reguli mai complicate
- Reguli încorporate
- Laboratoare
Controlul surselor
- Controlul surselor
- RCS și CVS
- Subversion
- git
- Laboratoare
Depanare și Core Dumps
- gdb
- Ce sunt fișierele Core Dump?
- Producerea Core Dumps
- Examinarea Core Dumps
- Laboratoare
Instrumente de depanare
- Obținerea timpului
- Profilare și performanță
- valgrind
- Laboratoare
Apeluri de sistem
- Apeluri de sistem vs. Funcții de bibliotecă
- Cum sunt făcute apelurile de sistem
- Valori de returnare și numere de eroare
- Laboratoare
Gestionarea și alocarea memoriei
- Gestionarea memoriei
- Alocare dinamică
- Reglarea malloc()
- Blocarea paginilor
- Laboratoare
Fișiere și sisteme de fișiere în Linux **
- Fișiere, directoare și dispozitive
- Sistemul de fișiere virtual
- Sistemul de fișiere ext2/ext3
- Sisteme de fișiere cu jurnal
- Sistemul de fișiere ext4/
- Laboratoare
I/O de fișiere
- I/O de fișiere UNIX
- Deschiderea și închiderea
- Citirea, scrierea și căutarea
- I/O pozițional și vectorial
- Biblioteca Standard I/O
- Suport pentru fișiere mari (LFS)
- Laboratoare
Operații avansate cu fișiere
- Funcții Stat
- Funcții de director
- inotify
- Mapare de memorie
- 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 de comunicare interproces
- 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 daemon
- Laboratoare
Țevi și fifo
- Țevi și comunicare interproces
- popen() și pclose()
- pipe()
- Țevi denumite (FIFO)
- splice(), vmsplice() și tee()
- Laboratoare
I/O asincron**
- Ce este I/O asincron?
- API-ul POSIX pentru I/O asincron
- Implementarea Linux
- Laboratoare
Semnalizări I
- Ce sunt semnalele?
- Semnalizări disponibile
- Distribuirea semnalelor
- Alarme, pauze și somn
- Configurarea unui handler de semnale
- Seturi de semnale
- sigaction()
- Laboratoare
Semnalizări II
- Reentranța și handler-ele de semnale
- Salturi și returnări nelocale
- siginfo și sigqueue()
- Semnalizări în timp real
- Laboratoare
Fire de execuție POSIX I
- Multithreading sub Linux
- Structura de bază a programului
- Crearea și distrugerea firelor de execuție
- Semnalizări și fire de execuție
- Forking vs. Threading
- Laboratoare
Fire de execuție POSIX II
- Deadlock-uri și condiții de cursă
- Operații de mutex
- Semafoare
- Futexes
- Operații condiționale
- Laboratoare
Rețele și socket-uri
- Straturi de rețea
- Ce sunt socket-urile?
- Socket-uri de flux
- Socket-uri de datagrame
- Socket-uri brute
- Ordinea octeților
- Laboratoare
Socket-uri Adrese și gazde
- Structuri de adrese socket
- Conversia adreselor IP
- Informații despre gazde
- Laboratoare
Socket-uri Porturi și protocoale
- Informații despre porturile de serviciu
- Informații despre protocoale
- Laboratoare
Socket-uri Clienți
- Secvența de bază a clientului
- socket()
- connect()
- close() și shutdown()
- Client UNIX
- Client Internet
- Laboratoare
Socket-uri Servere
- Secvența de bază a serverului
- bind()
- listen()
- accept()
- Server UNIX
- Server Internet
- Laboratoare
Socket-uri Operații de intrare/ieșire
- write(), read()
- send(), recv()
- sendto(), recvfrom()
- sendmsg(), recvmsg()
- sendfile()
- socketpair()
- Laboratoare
Socket-uri Opțiuni
- Obținerea și setarea opțiunilor socket
- fcntl()
- ioctl()
- getsockopt() și setsockopt()
- Laboratoare
Socket-uri Netlink**
- Ce sunt socket-urile Netlink?
- Deschiderea unui socket Netlink
- Mesaje Netlink
- Laboratoare
Socket-uri Multiplexare și servere concurente
- I/O de socket multiplexat și asincron
- select()
- poll()
- pselect() și ppoll()
- epoll
- I/O condus de semnale și asincron
- Servere concurente
- Laboratoare
Comunicare interproces
- Metode de IPC
- IPC POSIX
- IPC System V**
- Laboratoare
Memorie partajată
- Ce este memoria partajată?
- Memorie partajată POSIX
- Memorie partajată System V**
- Laboratoare
Semafoare
- Ce este un semafor?
- Semafoare POSIX
- Semafoare System V**
- Laboratoare
Cozi de mesaje
- Ce sunt cozile de mesaje?
- Cozile de mesaje POSIX
- Cozile de mesaje System V**
- Laboratoare
Cerințe
Acest curs este destinat dezvoltatorilor experimentați. Studenții ar trebui să fie competenți în programarea C și să fie familiarizați cu utilitarele de bază Linux și editorii de text.
Publicul țintă
Acest curs este destinat dezvoltatorilor experimentați. Studenții ar trebui să fie competenți în programarea C și să fie familiarizați cu utilitarele de bază Linux și editorii de text.
Nivel de experiență: Intermediar
28 Ore