2026. najnovija i najsveobuhvatnija putanja za učenje operativnih sistema (preporuka za čuvanje 🔥)
Operativni sistem je program koji upravlja hardverskim i softverskim resursima računara — kamen temeljac računara.
Da uzmemo primer: u Java-i, deo o konkurentnom programiranju — ako ne razumete principe raspoređivanja procesa, sinhronizacije i uzajamnog isključivanja, najverovatnije će doći do jednog od dva ishoda:
- Višenitni program koji napišete počne da prikazuje razne čudne probleme;
- Ne znate ni zašto se ti problemi uopšte pojavljuju.
Za video verziju, možete na Bilibili-u pogledati Ergeovu putanju učenja operativnih sistema:
Kako učiti operativne sisteme? Za uvod preporučujem dva video kursa.
Prvo jedan domaći, a zatim jedan strani — kombinacija Istoka i Zapada daje najduže trajanje.
1. Laboratorijski kurs „Operativni sistemi" Harbinskog instituta tehnologije (HIT)
Od domaćih, preporučujem laboratorijski kurs „Operativni sistemi" sa HIT-a. Sledeća četiri dela su najvažnija.

- Osnove operativnih sistema
- Procesi i niti operativnog sistema
- Upravljanje memorijom operativnog sistema
- Periferni uređaji i sistem fajlova operativnog sistema
Kurs operativnih sistema sa HIT-a ima najveću vrednost među CS predmetima te institucije, naročito laboratorijski deo. Osam laboratorija obuhvataju ključne delove operativnog sistema; iako se labovi ne rade na HIT-ovom sopstvenom HITOS-u, linux-0.11 je zaista vrlo dobar izbor.
Verzija Linux-0.11 omogućava studentima da se više fokusiraju na eksperimente, umesto da se muče sa raznim čudnim problemima — kao uvod u OS sasvim je dovoljna.
Linux se do danas razvio toliko da je kernel izvorni kod, u poređenju sa 0.11, doživeo gotovo potpunu preobrazbu. Ali to ne znači da proučavanje linux-0.11 nema smisla — jer, razumete vi već šta je to kernel...
Da ne dužim: nakon što savladate linux-0.11, bar ćete razumeti kako izgleda najjednostavniji potpuni operativni sistem: kako se postepeno, počevši od BIOS-a, učitavaju programi i podaci; kako se na jednom CPU-u realizuje višezadatačno, višeprocesno raspoređivanje i prebacivanje.
Linux kernel se uglavnom sastoji iz 5 modula:
- Modul za raspoređivanje procesa — kontroliše korišćenje CPU resursa od strane procesa.
- Modul za upravljanje memorijom — obezbeđuje da svi procesi bezbedno dele memoriju mašine; istovremeno podržava virtuelnu memoriju, tako da procesi mogu koristiti više memorije nego što je fizički dostupno.
- Modul sistema fajlova — podržava drajvere i skladište spoljnih uređaja. Verzija linux-0.95 postepeno je implementirala virtuelni sistem fajlova, koji kroz zajednički interfejs fajlova za sve spoljne uređaje za skladištenje krije razlike među hardverskim uređajima i time ostaje kompatibilan sa drugim operativnim sistemima.
- Modul za komunikaciju među procesima — podržava više načina razmene informacija između procesa.
- Modul mrežnog interfejsa (tek od verzije linux-0.96) — pruža pristup različitim mrežnim standardima i podržava mrežni hardver.
Njihove međusobne zavisnosti prikazane su na slici ispod. Puna linija predstavlja zavisnost između njih, a isprekidana linija delove koji u linux-0.11 još uvek nisu implementirani.

Iz gornje slike se vidi da svi moduli zavise od modula za raspoređivanje procesa, jer svima njima treba raspoređivač procesa da obustavi ili ponovo pokrene njihove procese.
Za učenje linux-0.11 preporučujem knjigu „Kompletni komentari Linux kernela". Ona detaljno i sveobuhvatno komentariše i objašnjava sve izvorne fajlove linux-0.11, omogućavajući vam da u što kraćem vremenu steknete potpuno i duboko razumevanje načina rada Linux-a, čime se postavlja čvrst temelj za dalje učenje Linux sistema.

PDF izdanje u visokoj rezoluciji može se naći u jednom open-source repozitorijumu (JavaBooks) na GitHub-u (uz izvorni kod linux-0.11 kernela):
https://github.com/itwanger/JavaBooks#Linux%E5%86%85%E6%A0%B8
Dok sam lutao po GitHub-u, naišao sam na ovaj repozitorijum:
Autor je na četvrtoj godini studija, na ovom laboratorijskom kursu iz operativnih sistema ima maksimalan broj bodova, i odlučio je da napiše sopstveni OS — pa je usput objavio i prethodni kod, nadajući se da će poslužiti kao referenca onima koji uče operativne sisteme ili koje zanima ovaj HIT laboratorijski kurs.
U njemu su lab1—lab7 dati delovi izmena, a u lab 8 dat je kompletan izmenjeni izvorni kod linux-0.11. Iako ovaj repozitorijum nije ažuriran već godinama, i dalje ima referentnu vrednost.
Autorova rečenica: „Just coding system, it's fantastic!" — i mene je zadivila.
2. MIT 6.268 i 6.S081
Od stranih, toplo preporučujem MIT 6.268 (pretežno za postdiplomce) — opštepriznat je kao izuzetno čvrst kurs, dugi niz godina uživa veliku popularnost i široko je hvaljen, klasičan primer spoja teorije i prakse.
Međutim, pre nego što krenete na ovaj kurs, najbolje je da već imate izvesne osnove operativnih sistema — na primer, da ste slušali OS kurs na svom fakultetu, pročitali knjigu „Uvod u operativne sisteme", da poznajete C i asembler i da razumete arhitekturu računara.
Koliko je ovaj kurs moćan?
Primer: IPADS laboratorija Univerziteta Shanghai Jiao Tong, na čelu sa profesorom Chen Bo, jedna je od najjačih domaćih laboratorija u oblasti operativnih sistema, a Chen Bo i kolege su tokom doktorskih studija završili kurs 6.828 i na toj osnovi razvili operativni sistem „Corey" i objavili široko citirani rad: „Corey — An operating system for many cores".
Ako vam se ovaj kurs učini previše teškim, možete izabrati MIT 6.S081 (Introduction to Operating System) — namenjen pretežno osnovnim studijama.
Kurs 6.S081 se oslanja na XV6 — nastavni operativni sistem sličan Unix-u, ali znatno jednostavniji. Iako nije „pravi" Linux, dovoljan je za razumevanje načina rada i strukture Linux-a.
Ovaj kurs je u potpunosti na engleskom; u „video" linkovima čak nema ni engleskih titlova, pa za domaće studente sa prosečnim znanjem engleskog prilično je teško dobro pratiti gradivo.
Ispod je raspored časova sa PDF i „video" linkovima 🔗.

Da bih vam olakšao učenje, na Biliboli sam pronašao verziju ovog kursa sa kineskim i engleskim titlovima.

Sa dvojezičnim titlovima, učenje je mnogo ugodnije. Adresu kursa ostavljam ovde:
Pored toga, našao sam i jedan onlajn dokument na srpskom, sa ukupno oko 350 000 znakova. Prema rečima autora, potrošio je oko 200 sati, a rezultat napornog rada je ne samo da je sam autor popunio praznine u znanju, već je i onima koji dolaze iza njega ostavio retko i dragoceno gradivo. Iskreno — osim uzvika „bravo!", ne znam ni koja bi reč bila dovoljno sjajna!
https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/

Jedan deo kursa obrađuje osnovne koncepte operativnih sistema, a drugi su labovi — gotovo svake nedelje po neki programerski zadatak.
Svi znamo koliko je operativni sistem važan, ali njegovo učenje se ne može svesti samo na gledanje i slušanje — obavezno ga prati praktičan rad. Smisao laboratorija je u tome da vam pomognu da steknete praktično iskustvo u korišćenju i implementaciji operativnog sistema.
Beleške za učenje koje je pripremio Xiaofan takođe su veoma vredne kao referenca:
https://fanxiao.tech/posts/MIT-6S081-notes/#11-processes-and-memory

Ciljevi kursa 6.S081 su tri:
- Razumeti dizajn i implementaciju operativnih sistema
- Moći proširiti jedan mali OS
- Moći implementirati sistemske aplikacije
3. Čvrst OS PDF
Ovde preporučujem dva izuzetno čvrsta materijala za učenje operativnih sistema — oba su već sređena u PDF.
Prvi: „Jedna linija kroz operativni sistem" — pogledajte sliku i osetite.

Drugi: „Ključne tačke znanja o operativnim sistemima" — opet, pogledajte sliku.

Iskreno — operativni sistemi su zaista teški, i dok ih savladavate obavezno pijte mnogo vode, jer je ovaj kurs zaista „suv". Da budem iskren, već i tokom sređivanja ova dva materijala ponovo sam naučio mnoštvo svežih detalja. Nadam se da su ova dva kursa koje preporučujem tek „kamen u jezero" — idemo zajedno napred!
Zapamtite jedno: važno je raditi rukama, važno je odraditi lab.
GitHub otvorena zbirka znanja sa preko 17 000 zvezdica — „Ergeova Java putanja napredovanja". Lajkuj i prati
