Борисав Живановић: Увод у оперативне системе на примеру Линукса

Important Considerations to keep in mind when choosing an Operating System – Namerific Blog

Увод


Оперативни систем је скуп системских и апликативних програма (о томе више у поглављу 4. Програми) чији задатак је управљање харверским и софтверским ресурсима. Хардверски ресурси су хардвер којим рачунар располаже (процесор, графичка карта, радна меморија, ДВД читач, штампач...). Софтверски ресурси су датотеке (то могу бити слике, песме, програми...). Према броју корисника оперативни систем може бити једнокорисничи и вишекориснички. Према броју процеса који се изврашавају оперативни систем може бити једнопроцесни и, погодили сте, вишепроцесни. Линукс дистрибуције су вишекориснички вишепроцесни оперативни системи по датој подели.


Историја и филозофија



Why Hardly Anyone Calls Linux "GNU/Linux"

Линукс је настао као пројекат из хобија. Линус Торвалдс је 1991. објавио како је почео са развојем слободног оперативног система. Такође је изјавио како његов пројекат "неће бити велик и професионалан као ГНУ". Пројекат ГНУ је пројекат развоја слободног оперативног система налик Униксу и у склопу пројекта већи део корисничких програма је био развијен али је за функционалан и потпуно слободан систем био потребан кернел. Како су Линукс и ГНУ униксолики системи није било тешко ГНУ-ове програме прилагодити Линуксу. Тако је добијен функционалан слободан оперативни систем који се назива Линукс дистрибуција. Линукс и ГНУ су слободан софтвер што значи да је целокупан изворни код јавно доступан (отворен изворни код, енгл. open source) и да је дозовољена његова измена од стране корисника. Свако може на основу кода једног пројекта започети свој (енлг. fork). Овакав систем је добар јер уколико се заједници не допадне правац којим је пројекат кренуо остатак заједнице може наставити са развојем.



Дистрибуције

Linux. Freedom. Choices. Beautiful. - www.opendesktop.org

Људи често греше говорећи Линукс уместо Линукс дистрибуција. Линукс је кернел (језгро оперативног система) и то је део заједнички свим Линукс дистрибуцијама. Линукс дистрибуција је заправо комбинација Линукс кернела и корисничних програма. Питате се онда којаје разлика између њих, то су управник пакета и верзије корисничких програма и кернела које добијате. Чему све то? Па ето, тако лепо, одређени преинсталирани програми олакшавају употребу рачунара за одређени посао. Такође, неким корисницима је потребан стабилан и добро проверен софтвер, док неки преферирају најновије верзије јер су ентузијасти.


Управници пакета

Управник пакета Синаптик. Фотографија: Ћирилизовано

Управник пакета је програм за инсталацију, ажурирање и уклањање програма. Инсталације програма се чувају као архиве и искључиво управник пакета може да их инсталира, односно оне не садрже извршни код за распакивање свог садржаја налик чаробњацима за инсталацију који се користе на Прозорима. Архиве се махом преузимају из репозиторијума које су обезбедили творци дате дистрибуције, али их је могуће набавити преузимањем са интернета и инсталирати. Пакети могу захтевати и инсталацију других пакета, односно њихових зависности (енгл. dependencies). Пакети зависности су најчешће библиотеке (Јава и/или Пајтон, на пример) и фонтови, али могу бити и независни програми. Након уклањања одређеног програма могу остати библиотеке (рецимо Јава) које су биле аутоматски инсталиране и које више нису потребне и такви пакети се називају сирочићи (енгл. orphans). Управик пакета мора да прати уз који пакет су они били инсталирани како би знао да ли их је потребно уклонити и да не би дошло до уклањања неповезаних пакета грешком. Дистрибуције могу користити исте управнике пакета али не и исте репозиторијуме, и у том случају разлика између њих су само верзије програма и због тога се пакети за једну можда не могу инсталирати и на другој дистрибуцији због различитих верзија њихових зависности. Један пакет може онемогућити инсталацију другог (на пример, различите верзије истог пакета) и уколико различити пакети захтевају такве пакете долази до проблема званог пакао зависности (енгл. dependency hell).


Програми

Фотографија: LinuxInsider

Програм је скуп наредби који на основу улазних података генерише излазне податке. Улазни подаци могу бити различитог облика, најчешће су у питању улаз са тастатуре (или миша код графичких програма) и садржај датотеке. Излазни подаци исто могу бити различитог облика, али су најчешће у питању исписивање на екрану и чување у датотеци. Сам програм је обична датотека који садржи извршни код и која је означена извршном заставицом (више у поглављу 6. Систем датотека). Програми се деле на системске и апликативне. Системски програми директно управљају хардвером и као такви омогућавају рад апликативним програмима са различитим врстама компоненти (управљачки програми, енгл. drivers). У односу на системске програме за апликативне програме се може рећи да су вишег нивоа јер са хардвером не комуницирају директно, већ посредно преко системских. На тај начин апликативни програм може радити са различитим хардвером исти посао (на пример, резање диска различитим ДВД уређајима).


Налози и групе

Infoelektronika

Налози су систем који омогућава употребу рачунара од стране више корисника. Постоје две врсте налога: администраторски и кориснички. На Линукс систему мора бити присутан најмање један налог - root (свемоћни администраторски налог). Овакав систем смањује шансу да злонамерни програм направи штету јер само администраторски налог сме мењати системске датотеке. Пошто су Линукс дистрибуције вишекориснички оперативни системи (детаљније објашњено у поглављу 1. Увод) више корисника може употребљавати рачунар у исто време тако што ће сваки корисник имати своју сесију. Корисничка сесија је скуп програма покренутих у својству одређеног корисника (чиме се одређује шта ти програми могу урадити). Групе олакшавају администрацију окружења које поседује велики број корисника. Пошто су основно својство корисника његове приступне дозволе (привилегије) групе олакшавају додељивање дозвола за приступ ресурсима (како хардверским тако и софтверским) налозима одређене групе корисника.


Графичка окружења

KDE Plasma - Ultimate Desktop Environment For Linux

Графичко окружење (енгл. desktop environment) је систем комуникације (уношења улазних и добијања излазних података) човека и рачунара. Његов главни део је управник прозора (енгл. window manager). Графичко окружење није обавезан део Линукс дистрибуције, скоро увек је присутно на корисничим рачунарима, док на серверским није због уштеде ресурса (када је сервер једном подешен није га потребно дирати). То је програм чији је задатак распоређивање програма на екрану, који се симболично називају прозори. Све што се може видети на екрану је прозор, иако тако не изгледа на први поглед. Прозори могу имати различита својства, на пример да ли заузимају цео екран, да ли се приказује трака са командама и на ком се нивоу налази (ручно, испод или изнад осталих прозора). Позадина екрана је само прозор у коме се приказује слика чија су својства да заузима цео екран, да је испод осталих прозора и да се не приказује трака са командама. Панели на којима се налази мени са програмима су само прозори чије је својство да су на врху. Из овога се може закључити да се графичко окружење технички реализује као скуп програма аутоматски покренутих након управника прозора.


Кернел

Heart of Linux Operating System
Кернел (језгро) је програм преко ког кориснички програми могу управљати хардверским и софтверским ресурсима преко системских позива. Системски позив је јединица преко које процеси комуницирају са осталим процесима и хардвером уз посредство кернела. Овакав систем омогућава контролу над радом корисничких програма (програм не сме приступити хардверу ако то кернел одбије) и омогућава рад програма са различитим врстама хардвера. То значи да се било који вид добављања улазних и исписивања излазних података обавља преко системских позива, програм даље може обрађивати те податке директно али не може их директно вечно записати без системског позива. Такође, кернел управља меморијом и паралелним извршавањем процеса. Процеси се не могу истински паралелно извршавати, већ кернел изврши одређени број инструкција једног процеса, сачува његове податке, пређе на следећи и тако у круг што се јако брзо дешава јер модерни процесори могу извршити велики број инструкција у секунди.


Систем датотека

Crunchbangplusplus

Систем датотека је систем за управљање складишном меморијом рачунара. Подаци који се складиште су организовани у датотеке распоређене у директоријумима. Датотека је структура за складиштење података која на диску не мора заузимати континуалан простор. Директоријум је каталошка структура система датотека која упућује на друге директоријуме и датотеке. Диск се физички састоји из сектора (најмање јединице уписа на хардверском нивоу), док систем датотека податке складишти у кластерима (најмања јединица уписа на нивоу система датотека) који се састоје од једног или више сектора. Датотека представља низ кластера. Како услед накнадног уписивања у датотеку, која је из перспективе апликативног софтвера бесконачно велики простор за упис, може доћи до повећања простора која она заузима и ти подаци ће бити уписани у први следећи слободан простор. Појава датотека које нису записане у континуалном просору се назива фрагментација, а процес преписивања датотека у континуалан простор се назива дефрагментација. Дефрагментација се врши ради повећања брзине читања и уписа. Уколико је пожељно сакрити неку датотеку или директоријум од приказивања на почетку назива треба ставити тачку. Тако почињу називи датотека које садрже подешавања те није пожељно да заузимају простор у приказивању. Наравно, могуће је приступити им без ограничења.


Процес покретања система*

How To Dual Boot Linux Mint And Windows 10 [Beginner’s Guide]

Покретач оперативног система (енгл. bootloader) је први програм који се изврашава након ПОСТ-а. ПОСТ (енгл. Power-on self-test) je процес који извршава БИОС и чија је основна сврха препознавање повезаног хардвера. БИОС (енгл. Basic input output system) је програм ускладиштен у флеш меморији на матичној плочи. Његови основни задаци су извршавање ПОСТ-а и подешавање харвдера преко графичког сучеља. БИОС чува податке о редоследу уређаја за покретање. То је листа уређаја за које се проверава да ли садрже оперативни систем и након откривања првог који га садржи његов покретач се учитава у меморију и предаје му се контрола над рачунарским системом. Покретач се може састојати из више делова. Први део се увек налази у првом сектору диска, а уколико је за његово складиштење потребно више места други део ће се налазити негде у остатку диска и бити учитан и позван од стране првог, након чега ће други део наставити са стандардном процедуром. Један покретач може позвати други што чини инсталацију више система на истом рачунару и избор жељеног при покретању могућим. Након што је кернел учитан у меморију он започиње први процес: init. Он затим покреће остале процесе преко бројних скрипти и конфигурационих датотека. Након тога се уносе корисничко име и шифра и тако се започиње нова корисничка сесија. Ниво покретања (енгл. runlevel) је скуп започетих процеса на основу скрипти које је init извршио. Такав систем омогућава лако пребацивање између више начина рада.

*init је застарео, али је интуитивно једноставнији за разумевање од systemd-а, те сам га узео као пример.

О аутору: Борисав Живановић, самоуки средњошколац који воли да се бави темама рачунарства, филозофије и политике. Ради као програмер. Жели да учини доступним добар садржај на српском језику.

Извор: Увод у оперативне системе на примеру Линукса - Борисав Живановић

Коментари