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

Numărul de participanți


Pret per participant

Cursuri viitoare

Categorii înrudite