
Curs Programator Sisteme
Treci de la scrierea de cod de aplicație la stăpânirea întregului stack de sisteme — interfețe de nucleu, gestionarea memoriei, concurență și depanare la nivel hardware. Acest curs îți oferă fundația tehnică profundă care diferențiază inginerii de sisteme seniori de toți ceilalți. Fiecare concept este fundamentat pe instrumente reale, cod real și scenarii reale de producție.
Ce vei învăța:
Vei construi un model mental complet al modului în care software-ul interacționează cu hardware-ul și nucleul Linux, pornind de la arhitectura CPU și structura memoriei proceselor. Vei stăpâni C pentru lucrul cu sistemele, inclusiv gestionarea manuală a memoriei, aritmetica pointerilor și modele de cod defensiv. Cursul acoperă limbajul de asamblare x86-64, depanarea la nivel scăzut cu GDB și analiza binară cu objdump. Vei implementa crearea de procese, thread-uri POSIX, primitive de sincronizare și comunicare între procese. Subiectele avansate includ memoria virtuală, proiectarea de alocatoare personalizate, I/O de fișiere de înaltă performanță și dezvoltarea de module de nucleu. Securizarea, elementele interne ale containerizării, planificarea în timp real și profilarea performanței cu perf completează programa.
Cum studiezi practic Curs Programator Sisteme
Cum exersezi Curs Programator Sisteme
Pentru tine, care reprezinți o companie și vrei să îți instruiești echipa
La Dedika pentru companii, cursul vine cu exerciții și exemple adaptate afacerii tale și exact așa cum are nevoie compania ta.
Conținutul cursului
8 Capitole • 40 LecțiiDurata între 4 și 360 ore (tu decizi)
Capitolul 1AscundeAscunde detaliiVezi detaliiFundamentele Programării Sistemelor
Fundamentele Programării Sistemelor
Lecția 1 • Mediu de Compilare și Construire
Configurează compilatoare, linker-e, asamblatoare și depanatoare utilizate pe parcursul cursului. Se asigură că fiecare student poate compila, link-ui și inspecta binare încă din prima zi.
Lecția 2 • Abstractizări ale Sistemului de Operare
Prezintă spațiul nucleu vs. spațiul utilizator, apelurile de sistem și gestionarea resurselor de către sistemul de operare. Leagă conceptele hardware de interfețele software pe care programatorii le folosesc zilnic.
Lecția 3 • Aspectul Memoriei unui Proces
Examinează segmentele stivă, heap, BSS, date și text într-un proces în execuție. Oferă modelul spațial necesar pentru aritmetica pointerilor și gestionarea memoriei.
Lecția 4 • Elemente Esențiale de Arhitectura Calculatoarelor
Acoperă registrele CPU, ciclurile de instrucțiuni și ierarhia memoriei. Stabilește vocabularul hardware necesar pentru fiecare subiect ulterior legat de sisteme.
Lecția 5 • Niveluri de Privilegii și Inele de Protecție
Explică inelele de privilegii impuse hardware și modul în care sistemul de operare impune izolarea. Pregătește studenții să raționeze despre granițele de securitate în codul de sisteme.
Capitolul 2AscundeAscunde detaliiVezi detaliiProgramarea în C pentru Lucrul cu Sisteme
Programarea în C pentru Lucrul cu Sisteme
Lecția 1 • Tipuri de Date și Reprezentarea în Memorie
Acoperă lățimile întregilor, endianness, alinierea și umplerea în structuri. Fondează studenții în modul în care tipurile C se mapează la octeți reali în memorie.
Lecția 2 • Gestionarea Erorilor și Programarea Defensivă
Prezintă errno, convențiile codurilor de returnare și strategiile de aserțiuni în C. Creează obiceiuri care previn eșecurile silențioase în codul de sisteme de producție.
Lecția 3 • Preprocesorul C și Macro-urile
Explică gardurile de includere, macro-urile asemănătoare obiectelor și funcțiilor și compilarea condiționată. Permite studenților să scrie antete de sisteme portabile și configurabile.
Lecția 4 • Gestionarea Manuală a Memoriei
Acoperă malloc, calloc, realloc și free, plus erori comune de alocare. Studenții învață să detecteze scurgerile de memorie și să folosească instrumente de tip valgrind pentru verificare.
Lecția 5 • Pointeri și Aritmetică cu Pointeri
Predă declararea pointerilor, dereferențierea și aritmetica pe tablouri și buffer-e. Permite direct gestionarea manuală a memoriei și accesul la registre hardware.
Capitolul 3AscundeAscunde detaliiVezi detaliiLimbaj de Asamblare și Depanare de Nivel Scăzut
Limbaj de Asamblare și Depanare de Nivel Scăzut
Lecția 1 • Asamblare Inline în C
Predă sintaxa extinsă de asamblare inline GCC, constrângerile și listele de clobber. Permite accesul direct la hardware din C fără un fișier de asamblare separat.
Lecția 2 • Setul de Instrucțiuni de Bază
Acoperă instrucțiunile de mutare a datelor, aritmetice, logice și de control al fluxului. Oferă studenților suficient vocabular pentru a citi output-ul compilatorului și a scrie rutine mici.
Lecția 3 • Setul de Registre și Convențiile de Apel x86-64
Mapează registrele de uz general, de segment și SIMD la rolurile lor. Stabilește contractul ABI pe care codul C și cel de asamblare trebuie să îl respecte la interoperare.
Lecția 4 • Analiza Binară cu Dezasamblatoare
Folosește objdump și instrumente similare pentru a inspecta binare compilate și biblioteci partajate. Leagă înțelegerea la nivel de sursă de codul mașină real din artefactele de producție.
Lecția 5 • Tehnici de Depanare de Nivel Scăzut
Aplică GDB la nivel de asamblare: puncte de întrerupere, puncte de supraveghere și inspectarea registrelor. Studenții diagnostichează crash-uri și coruperi de memorie citind starea brută a mașinii.
Capitolul 4AscundeAscunde detaliiVezi detaliiGestionarea Proceselor și a Firelor de Execuție
Gestionarea Proceselor și a Firelor de Execuție
Lecția 1 • Semnale și Evenimente Asincrone
Explică livrarea semnalelor, mascarea și înregistrarea handler-elor cu sigaction. Pregătește studenții să scrie cod sigur pentru semnale și să gestioneze notificări asincrone ale sistemului de operare.
Lecția 2 • Crearea și Ciclul de Viață al Proceselor
Acoperă fork, exec, wait și exit în medii POSIX. Studenții înțeleg cum sistemul de operare urmărește starea proceselor de la creare până la terminare.
Lecția 3 • Fundamentele Thread-urilor POSIX
Prezintă crearea, unirea și detașarea thread-urilor pthread, împreună cu atributele thread-urilor. Stabilește modelul de thread-uri utilizat în toate subiectele ulterioare de concurență.
Lecția 4 • Primitivi de Sincronizare
Acoperă mutex-uri, variabile de condiție, semafoare și blocări de citire-scriere. Studenții aplică fiecare primitiv pentru a elimina competițiile de date în programe cu memorie partajată.
Lecția 5 • Comunicarea Inter-Proces
Analizează pipe-uri, FIFO-uri, memorie partajată și cozi de mesaje pentru IPC. Studenții selectează și implementează mecanismul IPC potrivit pentru o anumită constrângere de proiectare.
Capitolul 5AscundeAscunde detaliiVezi detaliiGestionarea Memoriei și Memoria Virtuală
Gestionarea Memoriei și Memoria Virtuală
Lecția 1 • Profilarea Memoriei și Detectarea Scurgerilor
Aplică Valgrind Memcheck, AddressSanitizer și /proc/maps pentru a găsi scurgeri și coruperi. Studenții produc profiluri de memorie curate pentru cod de nivel de producție.
Lecția 2 • Arhitectura Memoriei Virtuale
Explică tabelele de pagini, funcționarea TLB și hardware-ul de traducere a adreselor. Oferă fundația pentru înțelegerea mmap, paginilor uriașe și efectelor NUMA.
Lecția 3 • Pagini Uriașe și Conștientizarea NUMA
Prezintă paginile uriașe transparente, alocarea explicită de pagini uriașe și topologia NUMA. Studenții ajustează plasarea memoriei pentru sarcini de lucru de sisteme sensibile la latență.
Lecția 4 • Proiectarea unui Alocator de Memorie Personalizat
Construiește un alocator de tip slab folosind sbrk și mmap ca stocare suport. Întărește înțelegerea fragmentării, coalescenței și metadatelor alocatorului.
Lecția 5 • Maparea Memoriei cu mmap
Acoperă mapările anonime și bazate pe fișiere, fanioanele de protecție și MAP_SHARED vs. MAP_PRIVATE. Studenții folosesc mmap pentru I/O cu zero-copiere și IPC cu memorie partajată.
Capitolul 6AscundeAscunde detaliiVezi detaliiSisteme de Fișiere și Subsisteme de I/O
Sisteme de Fișiere și Subsisteme de I/O
Lecția 1 • I/O Avansat: Împrăștiere-Adunare și Asincron
Prezintă readv/writev, io_uring și epoll pentru I/O de înaltă performanță. Permite studenților să construiască servere bazate pe evenimente cu un overhead minim al apelurilor de sistem.
Lecția 2 • Optimizarea Performanței de Stocare
Aplică fio, iostat și blktrace pentru a măsura și îmbunătăți debitul și latența I/O. Studenții identifică blocajele din stiva de stocare, de la aplicație la dispozitiv.
Lecția 3 • I/O Buffer-at vs. I/O Nebuffer-at
Contrastează buffer-ele stdio cu I/O-ul direct prin apeluri de sistem și explică când este potrivit fiecare. Studenții măsoară impactul asupra performanței al strategiilor de buffer-e pe debit.
Lecția 4 • API-ul POSIX pentru I/O de Fișiere
Acoperă open, read, write, lseek și close cu toate fanioanele și modurile relevante. Stabilește modelul descriptorului de fișier ca abstractizare universală a I/O în POSIX.
Lecția 5 • Mecanisme Interne ale Sistemelor de Fișiere
Examinează inode-urile, intrările de directoare, extent-urile și journaling-ul în sistemele de fișiere moderne. Studenții înțeleg modul în care structurile de pe disc afectează durabilitatea și recuperarea după erori.
Capitolul 7AscundeAscunde detaliiVezi detaliiInterfețe ale Nucleului și Drivere de Dispozitiv
Interfețe ale Nucleului și Drivere de Dispozitiv
Lecția 1 • Dezvoltarea Modulelor de Nucleu
Acoperă funcțiile init/exit ale modulului, sistemul Kbuild și cerințele de stil de codificare ale nucleului. Studenții compilează, încarcă și descarcă în siguranță un modul de nucleu minimal.
Lecția 2 • Memoria Nucleului și DMA
Explică kmalloc, vmalloc și alocarea coerentă DMA pentru utilizare în drivere. Studenții aleg API-ul de alocare corect în funcție de dimensiune, aliniere și cerințe DMA.
Lecția 3 • Noțiunile de Bază ale Driverelor de Dispozitiv de Tip Caracter
Implementează callback-urile file_operations: open, release, read, write și ioctl. Studenții expun o sursă de date din nucleu către spațiul utilizator printr-un fișier de dispozitiv.
Lecția 4 • Mecanisme Interne ale Apelurilor de Sistem
Urmează un apel de sistem din spațiul utilizator prin tabela de apeluri de sistem până la handler-ul din nucleu. Studenții înțeleg comutarea de context, transmiterea argumentelor și căile de returnare.
Lecția 5 • Gestionarea Întreruperilor și Jumătățile de Jos
Înregistrează handler-e IRQ, implementează tasklet-uri și workqueue-uri pentru lucrul amânat. Studenții scriu cod de driver sigur pentru întreruperi care respectă constrângerile de latență în timp real.
Capitolul 8AscundeAscunde detaliiVezi detaliiAnaliza și Optimizarea Performanței
Analiza și Optimizarea Performanței
Lecția 1 • Tehnici de Optimizare a Cache-ului
Aplică aspectul structurilor de date, prefetch-ul și tile-irea buclelor pentru a îmbunătăți utilizarea cache-ului. Studenții măsoară ratele de ratare a cache-ului înainte și după fiecare transformare.
Lecția 2 • Metodologia de Evaluare Comparativă
Acoperă proiectarea micro-benchmark-urilor, analiza statistică și evitarea capcanelor comune. Studenții produc rezultate de evaluare comparativă reproductibile care rezistă revizuirii colegiale.
Lecția 3 • Optimizarea Compilatorului și Optimizarea la Link-Time
Explorează nivelurile -O, PGO, LTO și fanioanele de auto-vectorizare. Studenții verifică faptul că transformările compilatorului produc binare corecte și mai rapide.
Lecția 4 • Contenția Blocărilor și Scalabilitatea
Măsoară contenția blocărilor cu perf lock și aplică tehnici fără blocări acolo unde este cazul. Studenții reproiectează sincronizarea pentru a scala pe mai multe nuclee CPU.
Lecția 5 • Contoare de Performanță ale CPU și Profilarea
Folosește perf stat, perf record și flame graph-uri pentru a identifica punctele fierbinți ale CPU. Studenții corelează datele contoarelor hardware cu codul sursă pentru a ghida optimizarea.
Certificatul tău valid de finalizare
Acest curs este pentru tine:
Inginer backend: vrea să nu mai trateze sistemul de operare ca pe o cutie neagră.
Student la informatică: gata să aplice teoria în cod real la nivel de nucleu.
Dezvoltator firmware: are nevoie de fundații mai solide în Linux și POSIX pentru lucrul embedded.
Inginer DevOps: caută o perspectivă mai profundă asupra componentelor interne ale containerelor și scheduler-elor.
Cercetător în securitate: trebuie să înțeleagă direct structura memoriei și limitele privilegiilor.
Reconvertit profesional: face tranziția de la roluri de scripting la inginerie de infrastructură low-level.
Ce spun cursanții noștri
Lecțiile dumneavoastră sunt perfecte. Am achiziționat pachetul de un an și, în sfârșit, am oportunitatea să urmăresc diverse subiecte de interes fără să fie nevoie să schimb platforma... vă mulțumesc pentru tot ceea ce faceți, v-am recomandat deja altor persoane...

Îmi place cum lecțiile sunt directe la subiect și cum pot să schimb capitolele și să sar peste conținutul de care nu am nevoie.

Îmi place conținutul și modul de prezentare și transcriere a videoclipurilor, ceea ce accelerează procesul!

Platforma este rapidă, simplă de utilizat. Diversitatea conținutului și videoclipurile complementare ajută foarte mult la învățare.

Cele mai importante formări
Întrebări frecvente
Cine este Dedika?
Este certificatul valabil în România?
Cursurile sunt gratuite?
Care este volumul de muncă al cursului?
Cum sunt cursurile?
Cum funcționează cursurile?
Care este durata cursurilor?
Care este costul sau prețul cursurilor?
Ce este un curs EAD sau online și cum funcționează?
Curs PDF




















