Intrati in legatura

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

Numărul de participanți


Pret per participant

Cursuri viitoare

Categorii înrudite