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 insignă digitală
- 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 linia principală pentru securitate și calitate
- Studiază și înțelege ADN-ul proiectului
- Descoperă ce probleme vrei să rezolvi
- Identifică responsabilii și fluxurile lor de lucru și metode
- Obține feedback timpuriu și lucrează deschis
- Contribuie cu părți incrementale, nu cu dumpuri mari de cod
- Lasă ego-ul la ușă: Nu fi prea sensibil
- Fii răbdător, dezvoltă relații pe termen lung, fii de ajutor
Compilatoare
- GCC
- Alte compilatoare
- Opțiuni majore ale gcc
- Preprocesor
- Medii de dezvoltare integrate (IDE)
- Lucrări practice
Biblioteci
- Biblioteci statice
- Biblioteci partajate
- Legături către biblioteci
- Încărcător de legături dinamice
- Lucrări practice
Make
- Utilizarea make și Makefiles
- Construirea proiectelor mari
- Reguli mai complicate
- Reguli încorporate
- Lucrări practice
Controlul surselor
- Controlul surselor
- RCS și CVS
- Subversion
- git
- Lucrări practice
Depanare și fișiere de dump
- gdb
- Ce sunt fișierele de dump?
- Generarea fișierelor de dump
- Examinarea fișierelor de dump
- Lucrări practice
Instrumente de depanare
- Obținerea timpului
- Profilare și performanță
- valgrind
- Lucrări practice
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
- Lucrări practice
Gestionarea și alocarea memoriei
- Gestionarea memoriei
- Alocare dinamică
- Optimizarea malloc()
- Blocarea paginilor
- Lucrări practice
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/
- Lucrări practice
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)
- Lucrări practice
Operații avansate cu fișiere
- Funcții Stat
- Funcții de director
- inotify
- Mapare de memorie
- flock() și fcntl()
- Crearea fișierelor temporare
- Alte apeluri de sistem
- Lucrări practice
Procese I
- Ce este un proces?
- Limitele proceselor
- Grupuri de procese
- Sistemul de fișiere proc
- Metode de comunicare interproces
- Lucrări practice
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
- Lucrări practice
Tuburi și fifo-uri
- Tuburi și comunicare interproces
- popen() și pclose()
- pipe()
- Tuburi denumite (FIFO-uri)
- splice(), vmsplice() și tee()
- Lucrări practice
I/O asincron**
- Ce este I/O asincron?
- API-ul POSIX pentru I/O asincron
- Implementarea Linux
- Lucrări practice
Semnalizări I
- Ce sunt semnalele?
- Semnale disponibile
- Distribuirea semnalelor
- Alarme, pauze și somn
- Configurarea unui handler de semnal
- Seturi de semnale
- sigaction()
- Lucrări practice
Semnalizări II
- Reentranță și handle-uri de semnal
- Salturi și returnări nelocale
- siginfo și sigqueue()
- Semnale în timp real
- Lucrări practice
Fire de execuție POSIX I
- Multithreading în Linux
- Structura de bază a programului
- Crearea și distrugerea firelor de execuție
- Semnale și fire de execuție
- Forking vs. Threading
- Lucrări practice
Fire de execuție POSIX II
- Deadlock-uri și condiții de competiție
- Operații de mutex
- Semafoare
- Futexes
- Operații condiționale
- Lucrări practice
Rețele și socket-uri
- Straturi de rețea
- Ce sunt socket-urile?
- Socket-uri de flux
- Socket-uri de datagrame
- Socket-uri brute
- Ordonarea octeților
- Lucrări practice
Adrese și gazde pentru socket-uri
- Structuri de adrese pentru socket-uri
- Conversia adreselor IP
- Informații despre gazde
- Lucrări practice
Porturi și protocoale pentru socket-uri
- Informații despre porturile de serviciu
- Informații despre protocoale
- Lucrări practice
Clienți pentru socket-uri
- Secvența de bază a clientului
- socket()
- connect()
- close() și shutdown()
- Client UNIX
- Client Internet
- Lucrări practice
Servere pentru socket-uri
- Secvența de bază a serverului
- bind()
- listen()
- accept()
- Server UNIX
- Server Internet
- Lucrări practice
Operații de I/O pentru socket-uri
- write(), read()
- send(), recv()
- sendto(), recvfrom()
- sendmsg(), recvmsg()
- sendfile()
- socketpair()
- Lucrări practice
Opțiuni pentru socket-uri
- Obținerea și setarea opțiunilor pentru socket-uri
- fcntl()
- ioctl()
- getsockopt() și setsockopt()
- Lucrări practice
Socket-uri netlink**
- Ce sunt socket-urile netlink?
- Deschiderea unui socket netlink
- Mesaje netlink
- Lucrări practice
Multiplexare și servere concurente pentru socket-uri
- I/O multiplexat și asincron pentru socket-uri
- select()
- poll()
- pselect() și ppoll()
- epoll
- I/O dirijat de semnale și asincron
- Servere concurente
- Lucrări practice
Comunicare interproces
- Metode de IPC
- IPC POSIX
- IPC System V**
- Lucrări practice
Memorie partajată
- Ce este memoria partajată?
- Memorie partajată POSIX
- Memorie partajată System V**
- Lucrări practice
Semafoare
- Ce este un semafor?
- Semafoare POSIX
- Semafoare System V**
- Lucrări practice
Cozi de mesaje
- Ce sunt cozile de mesaje?
- Cozile de mesaje POSIX
- Cozile de mesaje System V**
- Lucrări practice
Cerințe
Acest curs este destinat dezvoltatorilor experimentați. Studenții trebuie să fie competenți în programarea C și să fie familiarizați cu utilitarele de bază ale Linux și cu editorii de text.
Public țintă
Acest curs este destinat dezvoltatorilor experimentați. Studenții trebuie să fie competenți în programarea C și să fie familiarizați cu utilitarele de bază ale Linux și cu editorii de text.
Nivel de experiență: Intermediar
28 Ore