20. 7. 2013.

Razvoj Linux kernela






Kako se „kuva” Linux


Razvoj Linuxa, tačnije Linux kernela, jedan je od najdinamičnijih i najvećih open source projekata današnjice. Hiljade programera (kako nezavisnih tako i onih koji rade za kompanije uključene u projekat) svakodnevno učestvuje u pisanju izvornog koda i dodaju nove funkcionalnosti ili rešavaju postojeće probleme, a sve sa ciljem dobijanja što kvalitetnijeg krajnjeg proizvoda. Ovom prilikom bliže ćemo se upoznati sa načinom na koji ovako kompleksan sistem funkcioniše. Prvi čovek Linuxa, pod čijom se dirigentskom palicom odigrava ceo proces, svakako je Linus Torvalds. On daje poslednju reč kada je razvoj kernela u pitanju, ali je više nego jasno da jedan čovek ne može sam da upravlja celim sistemom, pa je odgovornost za pojedine celine (drajveri, mreža, podsistemi kernela itd.) poverena i drugim ljudima, takozvanim maintainerima (u bukvalnom prevodu – održavalac).

 Ovakvom delegacijom dužnosti stvara se hijerarhija obaveza i odgovornosti, kao i sistem poverenja, o čijem ćemo značaju nešto kasnije govoriti. Takođe, vođa projekta tako može lakše da koordiniše i upravljanja celokupnim projektom jer ima daleko manji broj ljudi sa kojima dolazi u direktan kontakt i neuporedivo manje posla oko samog izvornog koda kernela, a ne treba smetnuti s uma ni činjenicu da kernel trenutno ima više od 15 miliona redova.Kako se uopšte piše i ispravlja izvorni kôd? Svaki programer koji želi da napravi neku izmenu u kernelu radi to tako što napiše ispravku (eng. patch), koju zatim odgovarajućim kanalima prosledi u sistem. Jedan peč menja postojeći kôd tako što briše, dodaje ili menja postojeće redove. Međutim, daleko od toga da bilo čija izmena automatski postaje i sastavni deo sledećeg izdanja Linuxa, pošto postoji čitav niz preduslova koje je potrebno ispuniti da bi se osiguralo da željene izmene ne utiču negativno na krajnji rezultat. Najlakše će biti da na primeru jedne takve ispravke vidimo kako čitav sistem funkcioniše.

Ukoliko programer napiše peč kojim se, na primer, dodaje upravljački softver (drajver) za određeni uređaj, on će ga, poštujući propisane konvencije o pisanju ispravki, proslediti osobi nadležnoj za taj deo kernela (maintainer). Nakon revizije ostalih učesnika projekta i, naravno, ukoliko se predložena promena prihvati, nadležni održavalac će odobriti peč tako što će ga potpisati i proslediće ga višoj instanci (tj. uključiti u podsistem za koji je zadužen). Proces revizije i potpisivanja ponavlja se nekoliko puta dok se ne dođe do vrha, čime se smanjuje mogućnost da dođe do problema sa drugim delovima kernela. Na kraju, ukoliko je sve u redu, izmena se uključuje u kernel i postaje njegov sastavni deo. Iako deluje kao jednostavan i brz proces, u stvarnosti situacija može da bude drugačija. Peč testira više učesnika i ukoliko naiđu na problem, on može da bude odbijen ili vraćen na doradu. To produžava vreme njegove implementacije, ali je taj proces neophodan kako se ne bi ugrozile stabilnost i sigurnost samog kernela i kako ne bi dolazilo do problema u radu (nemojte zaboraviti da isti kernel mora da radi na mnogo različitih računarskih konfiguracija i da pritom treba da obavlja najraznovrsnije zadatke).