Válassza ki a nyelvét
Linux Rendszerprogramozás Tanfolyam
Több mint 2 millió diák világszerte

Linux Rendszerprogramozás Tanfolyam

Merüljön el mélyen a Linux rendszermagjában, és tanuljon meg olyan éles szintű C programokat írni, amelyek közvetlenül kommunikálnak az operációs rendszerrel. Ez a kurzus a fájl I/O-t, folyamatokat, jeleket, IPC-t, memóriakezelést, socketeket és a többszálú feldolgozást az alapoktól fedi le. Minden témakör valós rendszerhívásokon, működő kódon és azokon a mentális modelleken alapul, amelyeket a szakemberek nap mint nap használnak.

Dedika vállalatoknak

Mit fogsz megtanulni:

Pontos megértést fog kialakítani arról, hogy a Linux hogyan kezeli a folyamatokat, memóriát, fájlokat és hálózati kapcsolatokat rendszerszintű hívás szinten. C programokat fog írni, amelyek POSIX API-kat használnak fájl I/O-hoz, folyamatközi kommunikációhoz és socket-alapú hálózatkezeléshez. Többszálú alkalmazásokat fog megvalósítani és kiküszöböli az adatütközéseket a pthreads szinkronizációs primitívek segítségével. Olyan fejlett eszközöket fog alkalmazni, mint a GDB, strace, Valgrind, AddressSanitizer, perf és io_uring. Továbbá foglalkozni fog a Linux biztonsági primitívjeivel, például névterekkel, seccomppal és képességekkel. A kurzus végére rendelkezni fog azokkal a készségekkel, amelyek szükségesek a rendszerszoftverek tervezéséhez, hibakereséséhez és optimalizálásához, amelyek megbízhatóan futnak éles Linux környezetekben.

Hogyan tanulhatsz gyakorlatiasan Linux Rendszerprogramozás Tanfolyam

Hogyan gyakorolsz Linux Rendszerprogramozás Tanfolyam

Önnek, ha vállalatként szeretné képezni a csapatát

A Dedika vállalatoknak szóló képzésein a tanfolyam saját üzleti példákkal és gyakorlatokkal, az Ön cégének igényeihez igazítva érhető el.

Kattintson ide

A kurzus tartalma

8 Fejezet • 40 Óra4 és 360 óra közötti időtartam (te döntesz)

1. fejezetRészletek megtekintése

Linux Rendszerprogramozási Alapok

  • 1. óra • Bevezetés a Rendszerhívásokba

    Bemutatja, hogyan hívhatnak meg a felhasználói programok kernelszolgáltatásokat a glibc burkolófüggvényeken és a nyers syscall-on keresztül. Összeköti a C könyvtárfüggvényeket az alapul szolgáló kernelműveletekkel.

  • 2. óra • Linux Architektúra és Kernel Áttekintés

    Leírja a kernel és a felhasználói tér közötti különbséget, a monolitikus kerneltervet és a hardver-absztrakciós réteget. Megalapozza azt a koncepcionális keretrendszert, amelyre az összes további programozási téma épül.

  • 3. óra • Fordítás, Linkelés és Betöltés

    Elmagyarázza a teljes eszközlánc-folyamatot a forráskódtól a végrehajtható állományig, beleértve a statikus és dinamikus linkelést. Felkészíti a hallgatókat a fordítási hibák diagnosztizálására és a bináris szerkezet megértésére.

  • 4. óra • C Nyelvi Alapismeretek Rendszerprogramozáshoz

    Áttekinti a mutatók, a memóriaelrendezés, a struktúrák és a bitenkénti műveletek kritikus fontosságú elemeit a rendszerkódokban. Áthidalja az általános C ismereteket a kurzus során használt alacsony szintű mintákhoz.

  • 5. óra • Fejlesztői Környezet Beállítása

    Konfigurál egy Linux fejlesztői környezetet GCC-vel, GDB-vel, Make-val és az alapvető könyvtárakkal. Biztosítja, hogy minden hallgató rendelkezzen egy reprodukálható fordítási alapkonfigurációval, mielőtt bármilyen kódot írna.

2. fejezetRészletek megtekintése

Fájl I/O és a VFS Réteg

  • 1. óra • Könyvtár- és Metaadat-műveletek

    A stat() függvény, a könyvtárbejárás és a linkek kezelését tanítja, beleértve a kemény és szimbolikus linkeket is. Lehetővé teszi, hogy a programok programozottan vizsgálják és módosítsák a fájlrendszer szerkezetét.

  • 2. óra • POSIX Fájlműveletek

    Lefedi az open(), read(), write(), lseek() és close() függvényeket az összes releváns jelzővel és móddal. Megtanítja a helyes használati mintákat és a gyakori buktatókat, mint például a részleges olvasások és írások.

  • 3. óra • Memórialeképezett Fájlok

    Bemutatja az mmap() használatát fájlok folyamatcímterébe történő leképezésére a gyors I/O és a megosztott adatok érdekében. Összeköti a fájl I/O-t a későbbi fejezetekben bemutatott virtuális memória fogalmakkal.

  • 4. óra • Fájlleírók és Megnyitott Fájlok

    Elmagyarázza a megnyitott fájlok tábláját, a fájlleíró egész számokat és a mögöttük álló kernel adatszerkezeteket. Minden további I/O munkát a kernel által a megnyitott fájlok nyomon követésére használt pontos modellre alapoz.

  • 5. óra • Haladó Fájlműveletek

    Bemutatja a szórvány-gyűjtő I/O-t, a fájl csonkítást és a lyukasztást ritka fájlokhoz. Kiterjeszti az alapvető I/O készségeket a nagy teljesítményű és tárhelyhatékony forgatókönyvekre.

3. fejezetRészletek megtekintése

Folyamatok: Létrehozás, Vezérlés és Befejezés

  • 1. óra • Folyamat Belső Működés és Attribútumok

    Vizsgálja a PID, PPID, UID, GID értékeket és a kernel által karbantartott folyamatleíró mezőket. Megadja a folyamatok programozott vezérléséhez szükséges szókincset és adatmodellt.

  • 2. óra • Gyermekfolyamatokra Várakozás és Befejezésük

    A wait(), waitpid() és waitid() függvények tanítása a gyermek kilépési státuszának begyűjtésére és a zombik megelőzésére. Biztosítja, hogy a hallgatók szivárgásmentes, többfolyamatos programokat írjanak.

  • 3. óra • Programok Végrehajtása az exec() segítségével

    Elmagyarázza az exec családot, az argumentum- és környezetátadást, valamint azt, hogy mi marad meg az exec során. Lehetővé teszi a hallgatók számára, hogy héjakat és folyamatindítókat építsenek, amelyek helyesen cserélik le a folyamat képmását.

  • 4. óra • Folyamatok Létrehozása a fork() segítségével

    Lefedi a másolás íráskor szemantikát, a visszatérési érték kezelését és az erőforrás-öröklést fork() után. Megalapozza a kurzus összes többfolyamatos programozási mintáját.

  • 5. óra • Folyamat Hitelesítő Adatok és Jogosultságok

    Lefedi a setuid/setgid biteket, a képességhalmazokat és a jogosultságok eldobását a biztonságos folyamattervezés érdekében. Felkészíti a hallgatókat olyan programok írására, amelyek biztonságosan kezelik a megemelt jogosultságokat.

4. fejezetRészletek megtekintése

Jelek: Kézbesítés, Kezelés és Maszkolás

  • 1. óra • Jel Fogalmak és Szabványos Jelek

    Bemutatja a jelszámokat, az alapértelmezett dispozíciókat és a kernel kézbesítési mechanizmusát. Megalapozza azt a koncepcionális modellt, amely a jelkezelő kód megírása előtt szükséges.

  • 2. óra • Jel Maszkok és Blokkolás

    A sigprocmask(), a sigset_t manipuláció és a kritikus szakaszok blokkolással történő védelmének tanítása. Lehetővé teszi a hallgatók számára, hogy megelőzzék a jelversenyhelyzeteket a több lépésből álló műveletekben.

  • 3. óra • Aszinkron-Jel-Biztos Programozás

    Azonosítja az aszinkron-jel-biztos függvényeket és mintákat a helyes, reentráns kezelők írásához. Megelőzi azokat a finom hibákat, amelyek a nem biztonságos függvények kezelőkön belüli meghívásából származnak.

  • 4. óra • Valós Idejű Jelek és a signalfd

    Lefedi a POSIX valós idejű jeleket, a sorba állítási garanciákat és a signalfd() felületet a szinkron kezeléshez. Kiterjeszti a jelkészségeket a nagy megbízhatóságú és eseményvezérelt architektúrákra.

  • 5. óra • Jelkezelők Telepítése

    Lefedi a sigaction() struktúrát, az SA_jelzőket és a különbségeket a régi signal() függvénytől. Megtanítja a helyes, hordozható módot a versenyhelyzeteket elkerülő kezelők telepítésére.

5. fejezetRészletek megtekintése

Folyamatok Közötti Kommunikáció

  • 1. óra • POSIX Üzenetsorok

    Az mq_open(), mq_send(), mq_receive() és a prioritás alapú üzenetkézbesítés tanítása. Strukturált, típusos alternatívát nyújt a bájfolyam-csövek helyett az üzenet-orientált IPC-hez.

  • 2. óra • IPC Mechanizmusok Összehasonlítása és Kiválasztása

    Elemzi az átviteli sebesség, késleltetés, komplexitás és perzisztencia közötti kompromisszumokat az összes IPC típus között. Felkészíti a hallgatókat a megalapozott architekturális döntések meghozatalára valós rendszertervekben.

  • 3. óra • POSIX Szemaforok

    Lefedi a névvel ellátott és névtelen szemaforokat, a sem_wait/sem_post függvényeket és a kölcsönös kizárás mintáit. Biztosítja a szinkronizációs réteget, amely a megosztott memória biztonságos használatához szükséges.

  • 4. óra • Csövek és FIFO-k

    Lefedi a névtelen csöveket, a FIFO létrehozást és a termelő-fogyasztó mintát rokon és nem rokon folyamatok számára. Bemutatja az egyirányú bájfolyam IPC-t, mint a legegyszerűbb koordinációs primitívet.

  • 5. óra • POSIX Megosztott Memória

    A shm_open(), ftruncate() és mmap() használatának bemutatása megosztott memóriaterületek létrehozására folyamatok között. Lehetővé teszi a nagy áteresztőképességű, nulla másolású adatcserét, és felkészíti a hallgatókat a szemafor alapú szinkronizációra.

6. fejezetRészletek megtekintése

Memóriakezelés és Virtuális Memória

  • 1. óra • Fejlett mmap() Használat

    Bemutatja a MAP_ANONYMOUS, MAP_FIXED, az óriáslapokat és az madvise() használatát a teljesítmény hangolásához. Kiterjeszti az mmap() készségeket a fájl I/O-ról az általános célú memóriakezelésre.

  • 2. óra • Heap Foglalás és a Foglaló

    Lefedi a malloc(), calloc(), realloc(), free() függvényeket és a glibc foglaló belső működését, beleértve az arénákat is. Megtanítja a helyes foglalási mintákat és a heap sérülésének elkerülését.

  • 3. óra • Memória Védelem és Engedélyek

    Az mprotect() tanítása a lapengedélyek megváltoztatására és az őrző lapok használatára puffer túlcsordulás észlelésére. Lehetővé teszi a hallgatók számára, hogy biztonsági megerősítési technikákat valósítsanak meg a memória szintjén.

  • 4. óra • Virtuális Memória Architektúra

    Elmagyarázza a laptáblákat, a virtuális címtér elrendezését és a /proc/pid/maps felületet. Megadja azt a mentális modellt, amely a foglaló viselkedésének és az mmap() szemantikájának megértéséhez szükséges.

  • 5. óra • Memóriahibák Észlelése és Javítása

    A Valgrind, AddressSanitizer és LeakSanitizer használata szivárgások, használat utáni felszabadítás és túlcsordulások megtalálására. Kiépíti a termelési minőségű memóriabiztonság fenntartásához szükséges diagnosztikai készségeket.

7. fejezetRészletek megtekintése

POSIX Szálak és Szinkronizáció

  • 1. óra • Szál Létrehozás és Életciklus

    Lefedi a pthread_create() függvényt, a szál attribútumokat, a leválasztott állapotot és a pthread_join() függvényt. Megalapozza azt a szál életciklus modellt, amelyre az összes szinkronizációs téma épül.

  • 2. óra • Olvasás-Írás Zárak és Korlátok

    Lefedi az rwlock-ot az olvasás-igényes munkaterhelésekhez és a pthread_barrier-t a fázis szinkronizációhoz. Kiterjeszti a szinkronizációs eszközkészletet azokra a mintákra, ahol a kizárólagos zárolás túl durva.

  • 3. óra • Feltételváltozók

    Bemutatja a pthread_cond_wait() függvényt, a hamis felébresztéseket és a predikátum ciklus mintát. Lehetővé teszi a szálak számára, hogy hatékonyan várjanak állapotváltozásokra anélkül, hogy foglalt várakozást végeznének.

  • 4. óra • Mutexek és Kritikus Szakaszok

    A mutex inicializálás, a lock/unlock fegyelem és a hibajelző mutex típusok tanítása. Biztosítja az elsődleges eszközt a megosztott adatok egyidejű módosítástól való védelmére.

  • 5. óra • Szál-Helyi Tárhely és Biztonság

    Elmagyarázza a __thread, pthread_key_t és az aszinkron-jel biztonságot a többszálú programokban. Olyan mintákat tanít a szálonkénti állapothoz, amelyek elkerülik a megosztást és csökkentik a lock versengést.

8. fejezetRészletek megtekintése

Socketek és Hálózati Programozás

  • 1. óra • Nem Blokkoló I/O és epoll

    Megvalósít egy eseményvezérelt szervert nem blokkoló socketek, az epoll_create() és az élvezérelt mód használatával. A kapcsolatkezelést a szálankénti egy kapcsolat modellen túlra skálázza.

  • 2. óra • Socket API Alapok

    Lefedi a socket(), bind(), listen(), accept(), connect() függvényeket és a címstruktúrákat IPv4 és IPv6 esetén. Megalapozza azt a mag API felületet, amelyre az összes hálózati programozás épül.

  • 3. óra • UDP és Datagram Socketek

    Lefedi a sendto(), recvfrom() függvényeket és a kapcsolat nélküli kommunikációs mintákat UDP esetén. Szembeállítja az UDP megbízhatatlan kézbesítését a TCP-vel, és azonosítja a megfelelő használati eseteket.

  • 4. óra • Socket Opciók és Fejlett Funkciók

    A getsockopt()/setsockopt() használatának tanítása pufferek hangolására, keepalive beállítására és a Nagle algoritmus vezérlésére. Lehetővé teszi a hálózati kapcsolatok finomhangolását a teljesítmény és a megbízhatóság érdekében.

  • 5. óra • TCP Kliens-Szerver Programozás

    Megvalósít egy teljes TCP echo szervert és klienst a megfelelő kapcsolatkezeléssel és bontással. Megtanítja a megbízható adatfolyam-kommunikációt és a részleges küldések és fogadások kezelésének fontosságát.

Tanúsítvány

Érvényes befejezési tanúsítványod

Ez a kurzus neked szól:

  • Háttérrendszer-fejlesztők, akik szeretnék megérteni, mi történik a keretrendszereik alatt.

  • Beágyazott rendszermérnökök, akik Linux-alapú platformokra és POSIX API-kra váltanak.

  • Számítástechnika-szakos diplomások, akik áthidalják a szakmai képzés és az ipari rendszerfejlesztés közötti szakadékot.

  • DevOps mérnökök, akik rendszermagszintű problémákat szeretnének diagnosztizálni találgatás nélkül.

  • Hobbiból C-t programozók, akik készen állnak a gyakorlati útmutatókon túllépve a valódi operációs rendszerrel való interakcióra.

  • Biztonsági kutatók, akiknek meg kell érteniük a Linux belső működését a biztonsági rések megtalálásához.

Mit mondanak a diákjaink

Az órái tökéletesek. Megvettem az egyéves csomagot, és végre lehetőségem van különböző érdekes témákat követni anélkül, hogy platformot kellene váltanom... köszönöm mindazt, amit csinálnak, már ajánlottam is másoknak...
Giulio Carlo
Giulio CarloDigitális Marketing Hallgató
Szeretem, hogy a leckék egyenesen a lényegre térnek, és hogy tudok fejezeteket váltani és átugrani olyan tartalmakat, amikre nincs szükségem.
Mariana Ferres
Mariana FerresFotográfia Hallgató
Szeretem a tartalmat és a videók bemutatási és átírási módját, ami felgyorsítja a folyamatot!
Luciana Alvarenga
Luciana AlvarengaKörömdesign Hallgató
A platform gyors, egyszerű használni. A tartalom sokfélesége és a kiegészítő videók nagyon sokat segítenek a tanulásban.
André Felipe
André FelipePrompt Engineering Hallgató

Főbb képzések

GYIK

Mi a Dedika?

Érvényes a tanúsítvány Magyarországon?

Ingyenesek a tanfolyamok?

Mennyi a tanfolyamok óraszáma?

Milyenek a tanfolyamok?

Hogyan működnek a tanfolyamok?

Mennyi ideig tartanak a tanfolyamok?

Mennyibe kerülnek a tanfolyamok?

Mi az az EAD vagy online tanfolyam, és hogyan működik?

PDF tanfolyam