Alegeți limba dvs.
Curs Programator Sisteme
Peste 2 milioane de cursanți în întreaga lume

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.

Dedika pentru companii

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.

Apasă aici

Conținutul cursului

8 Capitole • 40 LecțiiDurata între 4 și 360 ore (tu decizi)

Capitolul 1Vezi detalii

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 2Vezi detalii

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 3Vezi detalii

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 4Vezi detalii

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 5Vezi detalii

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 6Vezi detalii

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 7Vezi detalii

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 8Vezi detalii

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.

Certificare

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...
Giulio Carlo
Giulio CarloStudent Marketing Digital
Î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.
Mariana Ferres
Mariana FerresStudentă Fotografie
Îmi place conținutul și modul de prezentare și transcriere a videoclipurilor, ceea ce accelerează procesul!
Luciana Alvarenga
Luciana AlvarengaStudentă Design Unghii
Platforma este rapidă, simplă de utilizat. Diversitatea conținutului și videoclipurile complementare ajută foarte mult la învățare.
André Felipe
André FelipeStudent Inginerie Prompt

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