Linux kernel

Linux kernel jest monolitni i Unixu-sličan kernel operativnog sistema. Porodica Linux operativnih sistema se temelji na ovom kernelu i nalazi se u računarskim sistemima poput ličnih računara i servera, obično u obliku Linux distribucije,[4] i na raznim ugrađenim uređajima kao što su ruteri, bežične pristupne tačke, telefonski sistemi, set-top boksevi, FTA prijemnici, pametni televizori, video rekorderi i NAS uređaji. Iako Linux kernel nema veliki udio u operativnim sistemima na korisničkim stolnim računarima, dominira u gotovo svim drugim segmentima u računarstvu, od mobilnih uređaja do glavnih centralnih računara. Od novembra 2017, svi od 500 najmoćnijih superračunara na svijetu pokreću Linux.[5] Operativni sistem Android za tablet računare, pametne telefone i pametne satove također koristi Linux kernel.

Linux
Tux
Pingvin Tux, maskota Linuxa[1]
Linux 3.0.0 boot.png
Linux kernel 3.0.0 booting
Razvijatelj Linus Torvalds i hiljade drugih
Napisan u C and asembler[2]
Grupa OS-a Unixu-sličan
Opća
dostupnost
0.01 (17. septembar 1991; prije 28 godina (1991-09-17))
Dostupan u Engleski
Vrsta kernela Monolitni
Licenca GPLv2 sa BLOB[3]
Službeni veb-sajt www.kernel.org

Linux kernel je 1991. godine osmislio i napravio Linus Torvalds[6] za svoj lični računar. Linux je brzo privukao druge programere i korisnike koji su usvojili njegov kernel za druge slobodne softverske projekte, posebno operativni sistem GNU, koji je stvoren kao besplatni, slobodni operativni sistem.

Aplikativni programski interfejs (API) Linux kernela preko kojeg korisnički programi komuniciraju s kernelom, je dizajniran da bude vrlo stabilan i da ne prekida programe korisničkog prostora.

Linux kernel koji su razvili saradnici širom svijeta predstavlja istaknuti primjer softvera koji je slobodan i otvorenog koda.[7] Linux kernel je objavljen pod općom GNU javnom licencom verzije 2 (GPLv2),[8][9] sa nekim slikama firmvera objavljenim pod raznim drugim neslobodnim licencama.

ArhitekturaUredi

 
Mapa Linux kernela

Linux kernel je monolitni kernel, koje podržava preventivni "multitasking" (u korisničkom režimu, a od verzije 2.6, i u kernel modu[10][11]), virtualnu memoriju, zajedničke biblioteke, zahtjeve za učitavanje, dijeljene "Copy-on-Write" izvršne datoteke (preko KSM-a), upravljanje memorijom, paket internet protokola i istovremene zadatke u procesima (threading).

Upravljački programi i proširenja kernela pokreću se u prostoru kernela sa potpunim pristupom hardveru. Grafički sistem koji većina ljudi koristi na Linuxu ne radi unutar kernela. Za razliku od standardnih monolitnih kernela, upravljački programi se lako konfigurišu kao moduli i učitavaju ili otpakuju dok sistem radi. Također, za razliku od standardnih monolitnih kernela, pod određenim uvjetima upravljački programi mogu se isključiti; ova osobina dodana je za ispravno rukovanje hardverskim prekidima i za bolju podršku simetričnog multiprocesiranja.[11]

Programski jezik i kompajlerUredi

Linux kernel je napisan u programskom jeziku C koji podržava GCC, zajedno sa malim brojem ubačenog asemblerskog koda.

GCC je zadani kompajler za izvorni kod Linux. 2004. godine, Intel je izmijenio kernel tako da ga je i njegov C kompajler mogao kompajlirati.[12]

Baza podatakaUredi

U 2013. Linux kernel 3.10 je imao 15.803.499 linija koda. Od 2007. godine, otprilike 5% koda otpada sržni dio kernela, dok 52% otpada na upravljačke programe.[13]

Održavanje i dugoročna podrškaUredi

Najnovija verzija kernela i starije verzije se održavaju odvojeno. Obično najnovija izdanja kernela nadgledao je Linus Torvalds.[14] Trenutne verzije objavljuje Greg Kroah-Hartman.[15]

Linux je evolucija, a ne inteligentni dizajn!

– Linus Torvalds, 2005[16]
Razni slojevi unutar Linuxa, koji pokazuju granicu između korisničkog prostora i kernel prostora
Korisnički prostor Korisničke aplikacije Na primjer, bash, LibreOffice, GIMP, Blender, 0 A.D., Mozilla Firefox, itd.
Sistemske komponente niskog nivoa: Sistemski daemoni:
systemd, runit, logind, networkd, PulseAudio, ...
Prozorni sistem:
X11, Wayland, SurfaceFlinger (Android)
Druge biblioteke:
GTK+, Qt, EFL, SDL, SFML, FLTK, GNUstep, itd.
Grafika:
Mesa, AMD Catalyst, ...
C standarda biblioteka open(), exec(), sbrk(), socket(), fopen(), calloc(), ... (do 2000 podrutina)
glibc cilja da bude POSIX/SUS-kompatibilan, musl i uClibc cilja ugrađene sisteme, bionic je pisan za Android, itd.
Kernel mod Linux kernel stat, splice, dup, read, open, ioctl, write, mmap, close, exit, itd. (oko 380 sistemskih poziva)
Linux kernel System Call Interface (SCI, cilja da bude POSIX/SUS-kompatibilan)
Raspoređivanje procesa
podsistem
IPC
podsistem
Upravljanje memorijom
podsistem
Virtualni
podsistem
Mrežni
podsistem
Druge komponente: ALSA, DRI, evdev, LVM, device mapper, Linux Network Scheduler, Netfilter
Linux siguronosni moduli: SELinux, TOMOYO, AppArmor, Smack
Hardver (CPU, radna memorija, uređaji za pohranu, itd.)

Također pogledajteUredi

ReferenceUredi

  1. ^ "Linux Logos and Mascots". Linux Online. 2008. Arhivirano s originala, 15. 8. 2010. Pristupljeno 11. 8. 2009.
  2. ^ The Linux Kernel Open Source Project on Open Hub: Languages Page
  3. ^ "kernel/git/stable/linux-stable.git". git.kernel.org. 16. 10. 2002. Arhivirano s originala, 13. 1. 2013. Pristupljeno 21. 8. 2012. path: root/firmware/WHENCE
  4. ^ "README". git.kernel.org. Arhivirano s originala, 24. 7. 2012. Pristupljeno 12. 11. 2010.
  5. ^ "TOP500 Supercomputer Sites: Operating system Family / Linux". Top500.org. Pristupljeno 5. 10. 2019.
  6. ^ Richardson, Marjorie (1. 11. 1999). "Interview: Linus Torvalds". Linux Journal. Pristupljeno 20. 8. 2009.
  7. ^ "Re: GPLv3 Position Statement". 
  8. ^ "Linux Kernel Copying". Arhivirano s originala, 21. 12. 2012. Pristupljeno 25. 9. 2013.
  9. ^ "Linux-2.4.0-test8". 
  10. ^ "FAQ: Preemption". kernelnewbies.org. 22. 8. 2009. Pristupljeno 7. 5. 2015.
  11. ^ a b Jonathan Corbet (24. 2. 2003). "Driver porting: the preemptible kernel". LWN.net. Pristupljeno 7. 5. 2015.
  12. ^ Kubbilun, Ingo A. (2. 6. 2004). "Linux kernel patch for Intel Compiler" (jezik: njemački). Pyrillion.org. Arhivirano s originala, 22. 7. 2011. Pristupljeno 12. 11. 2010.
  13. ^ Marti, Don. "Are top Linux developers losing the will to code?". ComputerworldUK (jezik: engleski). Pristupljeno 24. 10. 2016.
  14. ^ "Linux MAINTAINERS file". Arhivirano s originala, 12. 1. 2013.
  15. ^ Torvalds, Linus (16. 9. 2018). "Linux 4.19-rc4 released, an apology, and a maintainership note". LKML. Pristupljeno 23. 9. 2018.
  16. ^ "Linux Evolution" (PDF). 26. 3. 2008.

Vanjski linkoviUredi