{"id":30717,"date":"2019-10-31T21:37:05","date_gmt":"2019-10-31T18:37:05","guid":{"rendered":"https:\/\/prohoster.info\/blog\/operating-systems-three-easy-pieces-part-1-intro-perevod\/"},"modified":"2019-10-31T21:37:05","modified_gmt":"2019-10-31T18:37:05","slug":"operating-systems-three-easy-pieces-part-1-intro-perevod","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","title":{"rendered":"Sistemet Operative: Tre Pjes\u00eb t\u00eb Lehta. Pjesa 1: Hyrja (p\u00ebrkthim)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Hyrja n\u00eb sistemet operative<\/h1>\n<p>P\u00ebrsh\u00ebndetje, Habr! Dua t'ju prezantoj nj\u00eb seri artikujsh p\u00ebrkthimesh nga nj\u00eb literatur\u00eb interesante sipas mendimit tim \u2014 OSTEP. Ky material shqyrton n\u00eb m\u00ebnyr\u00eb t\u00eb thell\u00eb funksionimin e sistemeve operative t\u00eb ngjashme me Unix, ve\u00e7an\u00ebrisht \u2014 menaxhimin e proceseve, planifikuesit e ndrysh\u00ebm, memorjen dhe komponent\u00ebt e tjer\u00eb t\u00eb ngjash\u00ebm q\u00eb p\u00ebrb\u00ebjn\u00eb nj\u00eb sistem operativ modern. Origjinali i t\u00eb gjitha materialeve mund ta shihni k\u00ebtu <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">k\u00ebtu<\/a><\/noindex>. Ju lutem, merrni parasysh se p\u00ebrkthimi \u00ebsht\u00eb realizuar n\u00eb m\u00ebnyr\u00eb jo profesionale (mjaft lirsh\u00ebm), por shpresoj se kuptimi i p\u00ebrgjithsh\u00ebm e kam ruajtur.<\/p>\n<p>P\u00ebr laborator\u00ebt n\u00eb k\u00ebt\u00eb l\u00ebnd\u00eb mund t\u00eb gjeni k\u00ebtu:<br \/>\n \u2014 origjinali: <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/Homework\/homework.html\">pages.cs.wisc.edu\/~remzi\/OSTEP\/Homework\/homework.html<\/a><\/noindex><br \/>\n \u2014 origjinali: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><br \/>\n \u2014 adaptimi im personal: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bykvaadm\/OS\/tree\/master\/ostep\">github.com\/bykvaadm\/OS\/tree\/master\/ostep<\/a><\/noindex><\/p>\n<p>Dhe gjithashtu mund t\u00eb shikoni kanalin tim n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/bykvaadm\">telegram<\/a><\/noindex> =)<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Funksioni i programit<\/h3>\n<p>\n\u00c7far\u00eb ndodh kur nj\u00eb program ekzekutohet? Programi i nisur kryen nj\u00eb veprim t\u00eb thjesht\u00eb \u2014 ai ekzekuton instruktionet. \u00c7do sekond\u00eb miliona dhe ndoshta miliarda instrukcionesh eksportohet nga procesori nga memorie operative, i cili n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb i dekodon (p.sh., njeh se cilit lloj i p\u00ebrkasin k\u00ebto instrukcione) dhe i ekzekuton. K\u00ebto mund t\u00eb jen\u00eb shkall\u00ebzimi i dy numrave, qasje n\u00eb memorie, kontrollim kushti, kalim n\u00eb funksion dhe k\u00ebshtu me radh\u00eb. Pasi t\u00eb p\u00ebrfundoj\u00eb ekzekutimi i nj\u00eb instrukcioni, procesori kalon n\u00eb ekzekutimin e nj\u00eb tjet\u00ebr. Dhe k\u00ebshtu, instrukcioni pas instrukcioni, ato ekzekutohen derisa programi t\u00eb p\u00ebrfundoj\u00eb.<br \/>\nKy shembull sigurisht \u00ebsht\u00eb shqyrtuar n\u00eb m\u00ebnyr\u00eb t\u00eb thjeshtuar \u2014 n\u00eb t\u00eb v\u00ebrtet\u00eb, p\u00ebr t\u00eb p\u00ebrshpejtuar pun\u00ebn e procesorit, hardueri modern lejon ekzekutimin e instrukcioneve jasht\u00eb rendit, llogaritjen e rezultateve t\u00eb mundshme, ekzekutimin e instrukcioneve n\u00eb nj\u00eb koh\u00eb dhe truqet e tjera t\u00eb ngjashme.<\/p>\n<h3>Modeli i llogaritjes s\u00eb Von Neumann<\/h3>\n<p>\nForma e thjeshtuar e funksionimit q\u00eb kemi p\u00ebrshkruar ngjan me modelin e llogaritjes s\u00eb Von Neumann. <i>Von Neumann \u00ebsht\u00eb nj\u00eb nga pioneer\u00ebt e sistemeve kompjuterike, gjithashtu \u00ebsht\u00eb nj\u00eb nga autor\u00ebt e teoris\u00eb s\u00eb loj\u00ebrave<\/i>. Gjat\u00eb pun\u00ebs s\u00eb programit ndodhin shum\u00eb ngjarje t\u00eb tjera, punojn\u00eb shum\u00eb procese t\u00eb tjera dhe logjika an\u00ebsore, q\u00ebllimi kryesor i t\u00eb cilave \u00ebsht\u00eb thjeshtimi i nisjes, funksionimit dhe mir\u00ebmbajtjes s\u00eb sistemit.<br \/>\nEkziston nj\u00eb grup softuer\u00ebsh q\u00eb \u00ebsht\u00eb p\u00ebrgjegj\u00ebs p\u00ebr leht\u00ebsin\u00eb e nisjes s\u00eb programeve (ose madje lejon ekzekutimin e disa programeve nj\u00ebher\u00ebsh), ai lejon q\u00eb programet t\u00eb ndajn\u00eb t\u00eb nj\u00ebjtin kujtes\u00eb dhe gjithashtu t\u00eb bashk\u00ebveprojn\u00eb me pajisje t\u00eb ndryshme. Ky grup softuer\u00ebsh (software) quhet n\u00eb thelb sistem operativ dhe detyrat e tij p\u00ebrfshijn\u00eb monitorimin p\u00ebr t\u00eb siguruar q\u00eb sistemi t\u00eb funksionoj\u00eb sakt\u00eb dhe efikas, si dhe t\u00eb siguroj\u00eb leht\u00ebsin\u00eb e menaxhimit t\u00eb k\u00ebtij sistemi. <\/p>\n<h2>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430<\/h2>\n<p>\n<b>Sistemi operativ, shkurt si OS \u2014 \u00ebsht\u00eb nj\u00eb grup i nd\u00ebrlidhur programesh q\u00eb jan\u00eb t\u00eb destinuara p\u00ebr t\u00eb menaxhuar burimet e kompjuterit dhe p\u00ebr t\u00eb organizuar nd\u00ebrveprimin e p\u00ebrdoruesit me kompjuterin.<\/b>. <br \/>\nOS arrin efektivitetin e saj kryesisht p\u00ebrmes teknik\u00ebs m\u00eb t\u00eb r\u00ebnd\u00ebsishme \u2014 teknik\u00ebs <b>virtualizimit<\/b>. OS nd\u00ebrvepron me burimet fizike (procesori, kujtesa, disku dhe t\u00eb ngjashme) dhe e transformon at\u00eb n\u00eb nj\u00eb form\u00eb m\u00eb t\u00eb p\u00ebrgjithshme, me mund\u00ebsi m\u00eb t\u00eb m\u00ebdha dhe m\u00eb t\u00eb leht\u00eb p\u00ebr t'u p\u00ebrdorur. Prandaj, p\u00ebr t\u00eb kuptuar n\u00eb m\u00ebnyr\u00eb t\u00eb p\u00ebrgjithshme, mund t\u00eb krahasohet n\u00eb nj\u00eb m\u00ebnyr\u00eb shum\u00eb t\u00eb thjesht\u00eb sistemin operativ me nj\u00eb makin\u00eb virtuale.<br \/>\nP\u00ebr t\u00eb lejuar p\u00ebrdoruesit t\u00eb japin komandat sistemit operativ dhe k\u00ebshtu t\u00eb shfryt\u00ebzojn\u00eb mund\u00ebsit\u00eb e makin\u00ebs virtuale (si\u00e7 jan\u00eb: ekzekutimi i programeve, shp\u00ebrndarja e kujtes\u00ebs, qasja n\u00eb skedar dhe k\u00ebshtu me radh\u00eb), sistemi operativ ofron nj\u00eb nd\u00ebrfaqe t\u00eb caktuar, t\u00eb quajtur <b>API<\/b> (application programming interface) e cila mund t\u00eb thirret (call). Nj\u00eb sistem operativ tipik ofron mund\u00ebsin\u00eb p\u00ebr t\u00eb realizuar qindra thirrje sistemike.<br \/>\nDhe n\u00eb fund, p\u00ebrderisa virtualizimi lejon q\u00eb shum\u00eb programe t\u00eb punojn\u00eb (n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb, t\u00eb ndajn\u00eb CPU-n\u00eb), dhe nj\u00ebkoh\u00ebsisht t\u00eb ken\u00eb qasje n\u00eb udh\u00ebzimet dhe t\u00eb dh\u00ebnat e tyre (nd\u00ebrsa ndajn\u00eb kujtes\u00ebn), si dhe t\u00eb ken\u00eb qasje n\u00eb disqet (n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb, t\u00eb ndajn\u00eb pajisjet e hyrjes dhe daljes), sistemi operativ njihet gjithashtu si menaxher i burimeve. \u00c7do procesor, disk dhe kujtes\u00eb \u00ebsht\u00eb burim i sistemit dhe k\u00ebshtu nj\u00eb nga rolet e sistemit operativ b\u00ebhet menaxhimi i k\u00ebtyre burimeve, duke e b\u00ebr\u00eb k\u00ebt\u00eb n\u00eb m\u00ebnyr\u00eb efikase, t\u00eb ndershme ose, p\u00ebrkundrazi, n\u00eb var\u00ebsi t\u00eb detyr\u00ebs p\u00ebr t\u00eb cil\u00ebn ky sistem operativ \u00ebsht\u00eb krijuar.<\/p>\n<h3>Virtualizimi i CPU<\/h3>\n<p>\nLe t\u00eb shqyrtojm\u00eb programin e m\u00ebposht\u00ebm:<br \/>\n(https:\/\/www.youtube.com\/watch?v=zDwT5fUcki4&amp;feature=youtu.be)<\/p>\n<p> <img decoding=\"async\" alt=\"Sistemet Operative: Tre Pjes\u00eb t\u00eb Lehta. Pjesa 1: Hyrja (p\u00ebrkthim)\" src=\"\/wp-content\/uploads\/2019\/04\/1f353e582b857fc71231472ec4f55319.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAi nuk kryen ndonj\u00eb veprim t\u00eb ve\u00e7ant\u00eb; n\u00eb thelb, gjith\u00e7ka q\u00eb b\u00ebn \u00ebsht\u00eb t\u00eb th\u00ebrras\u00eb funksionin <b>spin<\/b>(), i cili ka si detyr\u00eb t\u00eb kontrolloj\u00eb koha n\u00eb cik\u00ebl dhe t\u00eb kthehet, pasi t\u00eb ket\u00eb kaluar nj\u00eb sekond\u00eb. N\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb, ai p\u00ebrs\u00ebrit pafund\u00ebsisht string-un q\u00eb p\u00ebrdoruesi e kaloi si argument.<br \/>\nT\u00eb lan\u00e7ojm\u00eb k\u00ebt\u00eb program dhe t'i kalojm\u00eb si argument simbolin \u201cA\u201d. Rezultati nuk \u00ebsht\u00eb shum\u00eb interesant \u2014 sistemi thjesht ekzekuton programin, i cili periodicisht shfaq simbolin \u201cA\u201d n\u00eb ekran.<br \/>\nTani, le t\u00eb provojm\u00eb nj\u00eb variant kur jan\u00eb t\u00eb lan\u00e7uar shum\u00eb instanca t\u00eb t\u00eb nj\u00ebjtit program, por q\u00eb shfaqin letra t\u00eb ndryshme, p\u00ebr t\u00eb qen\u00eb m\u00eb e qart\u00eb. N\u00eb k\u00ebt\u00eb rast, rezultati do t\u00eb jet\u00eb disi ndryshe. Megjith\u00ebse kemi nj\u00eb procesor, programi ekzekutohet nj\u00ebkoh\u00ebsisht. Si \u00ebsht\u00eb e mundur kjo? E mundshme \u00ebsht\u00eb q\u00eb sistemi operativ, me ndihm\u00ebn e kapaciteteve t\u00eb pajisjes, krijon iluzionin. Iluzionin se n\u00eb sistem ka disa procesor\u00eb virtual\u00eb, duke e kthyer nj\u00eb procesor fizik n\u00eb nj\u00eb num\u00ebr teorikisht t\u00eb pafund, dhe k\u00ebshtu duke lejuar q\u00eb, programet t\u00eb duken se ekzekutohen nj\u00ebkoh\u00ebsisht. Ky iluzion quhet <i>Virtualizimi i CPU<\/i>.<br \/>\n Nj\u00eb pamje e till\u00eb ngjall shum\u00eb pyetje, p\u00ebr shembull, n\u00ebse disa programe d\u00ebshirojn\u00eb t\u00eb lancohen nj\u00ebkoh\u00ebsisht, cili n\u00eb t\u00eb v\u00ebrtet\u00eb do t\u00eb lan\u00e7ohen? Ky pyetje zgjidhet nga \u201cpolitik\u00eb\u201d t\u00eb OS. Politikat p\u00ebrdoren n\u00eb shum\u00eb vende t\u00eb OS dhe p\u00ebrgjigjen ndaj pyetjeve t\u00eb tilla, si dhe jan\u00eb mekanizma baz\u00eb q\u00eb OS i realizon. K\u00ebshtu q\u00eb roli i OS si menaxher burimesh \u00ebsht\u00eb i r\u00ebnd\u00ebsish\u00ebm.<\/p>\n<h3>Virtualizimi i memories<\/h3>\n<p>\n Tani le t\u00eb shqyrtojm\u00eb memorien. <b>Modeli fizik i memories n\u00eb sistemet moderne paraqitet si nj\u00eb masiv bit\u00ebsh<\/b>. P\u00ebr t\u00eb lexuar nga memoria, duhet t\u00eb specifikohet <b>adresa e qeliz\u00ebs<\/b>, p\u00ebr t\u00eb aksesuar at\u00eb. P\u00ebr t\u00eb shkruar ose p\u00ebr t\u00eb p\u00ebrdit\u00ebsuar t\u00eb dh\u00ebnat, gjithashtu duhet t\u00eb specifikohet t\u00eb dh\u00ebnat dhe adresa e qeliz\u00ebs ku do t\u00eb shkruhen.<br \/>\n Aksesi n\u00eb memorie ndodh vazhdimisht gjat\u00eb pun\u00ebs s\u00eb programit. Programi ruan n\u00eb memorie t\u00eb gjith\u00eb struktur\u00ebn e t\u00eb dh\u00ebnave dhe i qaset asaj duke ekzekutuar instruksione t\u00eb ndryshme. Instruksionet gjithashtu ruhen n\u00eb memorie, prandaj aksesi n\u00eb t\u00eb ndodh gjithashtu me \u00e7do k\u00ebrkes\u00eb p\u00ebr instruksionin tjet\u00ebr.<\/p>\n<h4>Thirrja malloc()<\/h4>\n<p>Le t\u00eb shqyrtojm\u00eb programin e m\u00ebposht\u00ebm, i cili alokon nj\u00eb zon\u00eb memorie duke p\u00ebrdorur thirrjen <b>malloc()<\/b> (https:\/\/youtu.be\/jnlKRnoT1m0):<\/p>\n<p><img decoding=\"async\" alt=\"Sistemet Operative: Tre Pjes\u00eb t\u00eb Lehta. Pjesa 1: Hyrja (p\u00ebrkthim)\" src=\"\/wp-content\/uploads\/2019\/04\/00b285e1999c2b010c84e712a3ac3087.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProgrami kryen disa veprime. S\u00eb pari, alokon nj\u00eb sasi t\u00eb caktuar memorjeje (rreshti 7), m\u00eb pas shfaq adres\u00ebn e qelis\u00eb s\u00eb alokuar (rreshti 9), shkruan zero n\u00eb slotin e par\u00eb t\u00eb memorjes s\u00eb alokuar. M\u00eb pas, programi hyn n\u00eb nj\u00eb cik\u00ebl ku inkrementon vler\u00ebn e shkruar n\u00eb memorie n\u00eb adres\u00ebn e variabl\u00ebs \"p\". Gjithashtu, ai tregon identifikuesin e procesit t\u00eb vet. <b>Identifikuesi i procesit \u00ebsht\u00eb unik p\u00ebr \u00e7do proces t\u00eb akorduar<\/b>. Duke ekzekutuar disa kopje, do t\u00eb ndeshni nj\u00eb rezultat interesant: N\u00eb rastin e par\u00eb, n\u00ebse nuk b\u00ebni asgj\u00eb dhe thjesht ngjallni disa kopje, adresat do t\u00eb jen\u00eb t\u00eb ndryshme. Por kjo nuk shkon me teorin\u00eb ton\u00eb! E sakt\u00eb, sepse n\u00eb shp\u00ebrndarjet moderne \u00ebsht\u00eb aktivizuar n\u00eb m\u00ebnyr\u00eb t\u00eb paracaktuar funksioni i randomizimit t\u00eb memorjes. N\u00ebse e \u00e7aktivizoni, do t\u00eb merrni rezultatin e pritur - adresat e memorjes p\u00ebr dy programe q\u00eb funksionojn\u00eb nj\u00ebkoh\u00ebsisht do t\u00eb p\u00ebrputhen. <\/p>\n<p><img decoding=\"async\" alt=\"Sistemet Operative: Tre Pjes\u00eb t\u00eb Lehta. Pjesa 1: Hyrja (p\u00ebrkthim)\" src=\"\/wp-content\/uploads\/2019\/04\/882fe00a72deadac12f146bc8d15b024.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Si\u00e7 rezulton, dy programe t\u00eb pavarura punojn\u00eb me hap\u00ebsira adrese private t\u00eb tyre, t\u00eb cilat m\u00eb pas reflektohen nga sistemi operativ n\u00eb memorjen fizike<\/b>. Prandaj, p\u00ebrdorimi i adresave t\u00eb memorjes brenda nj\u00eb programi nuk do t\u00eb ndikoj\u00eb n\u00eb t\u00eb tjerat dhe \u00e7do program i duket se ka nj\u00eb cop\u00eb t\u00eb vetme t\u00eb memorjes fizike, plot\u00ebsisht n\u00eb dispozit\u00ebn e tij. Realiteti, megjithat\u00eb, \u00ebsht\u00eb se memorja fizike \u00ebsht\u00eb nj\u00eb burim i ndar\u00eb, i cili administrohet nga sistemi operativ.<\/p>\n<h3>Konsistenca<\/h3>\n<p>\nNj\u00eb tjet\u00ebr tem\u00eb e r\u00ebnd\u00ebsishme n\u00eb kuad\u00ebr t\u00eb sistemeve operative \u00ebsht\u00eb <b>konsistenca<\/b>. Ky term p\u00ebrdoret kur b\u00ebhet fjal\u00eb p\u00ebr problemet n\u00eb sistem, t\u00eb cilat mund t\u00eb lindin gjat\u00eb pun\u00ebs me shum\u00eb gj\u00ebra nj\u00ebkoh\u00ebsisht brenda nj\u00eb programi. Problemet e konsistenc\u00ebs ndodhin edhe n\u00eb vet\u00eb sistemin operativ. N\u00eb shembujt e m\u00ebparsh\u00ebm me virtualizimin e memorjes dhe procesorit, kuptuam se sistemi operativ menaxhon shum\u00eb gj\u00ebra nj\u00ebkoh\u00ebsisht - fillon procesin e par\u00eb, pastaj t\u00eb dytin dhe k\u00ebshtu me radh\u00eb. Si\u00e7 duket, ky sjellje mund t\u00eb \u00e7oj\u00eb n\u00eb disa probleme. P\u00ebr shembull, programet moderne shum\u00ebthesare p\u00ebrjetojn\u00eb k\u00ebto v\u00ebshtir\u00ebsi.<\/p>\n<p>Le t\u00eb shqyrtojm\u00eb programin e m\u00ebposht\u00ebm:<\/p>\n<p> <img decoding=\"async\" alt=\"Sistemet Operative: Tre Pjes\u00eb t\u00eb Lehta. Pjesa 1: Hyrja (p\u00ebrkthim)\" src=\"\/wp-content\/uploads\/2019\/04\/091af38bd53fb94e65afa6c57b08f012.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProgrami n\u00eb funksionin kryesor krijon dy thread-e, duke p\u00ebrdorur thirrjen <b>Pthread_create()<\/b>. N\u00eb k\u00ebt\u00eb shembull, mund t\u00eb mendojm\u00eb p\u00ebr thread-in si nj\u00eb funksion t\u00eb ekzekutuar n\u00eb nj\u00eb hap\u00ebsir\u00eb \u200b\u200bmemorjeje p\u00ebrgjat\u00eb funksioneve t\u00eb tjera, ku numri i funksioneve t\u00eb ekzekutuara n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb \u00ebsht\u00eb m\u00eb shum\u00eb se nj\u00eb. N\u00eb k\u00ebt\u00eb shembull, \u00e7do thread niset dhe realizon funksionin <b>worker() i cili thjesht inkrementon nj\u00eb variab\u00ebl<\/b>,.<\/p>\n<p>. Le t\u00eb nisim k\u00ebt\u00eb program me argumentin 1000. Si\u00e7 e keni kuptuar, rezultati duhet t\u00eb jet\u00eb 2000, pasi \u00e7do thread inkrementoi variablin 1000 her\u00eb. Megjithat\u00eb, nuk \u00ebsht\u00eb aq e thjesht\u00eb. Le t\u00eb provojm\u00eb t\u00eb ekzekutojm\u00eb programin me nj\u00eb num\u00ebr p\u00ebrs\u00ebritjesh shum\u00eb m\u00eb t\u00eb madh.<\/p>\n<p><img decoding=\"async\" alt=\"Sistemet Operative: Tre Pjes\u00eb t\u00eb Lehta. Pjesa 1: Hyrja (p\u00ebrkthim)\" src=\"\/wp-content\/uploads\/2019\/04\/a6a3e63f9ab94793ffde67342c5a19da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDuke futur nj\u00eb num\u00ebr, p\u00ebr shembull, 100000, ne presim t\u00eb shohim n\u00eb dalje numrin 200000. Megjithat\u00eb, duke ekzekutuar numrin 100000 disa her\u00eb, jo vet\u00ebm q\u00eb nuk do t\u00eb shohim p\u00ebrgjigje t\u00eb sakt\u00eb, por do t\u00eb marrim p\u00ebrgjigje t\u00eb ndryshme t\u00eb gabuara. Zgjidhja q\u00ebndron n\u00eb faktin se p\u00ebr t\u00eb rritur numrin k\u00ebrkohen tre operacione - nxjerrja e numrit nga memoria, inkrementimi dhe pastaj shkarkimi i numrit p\u00ebrs\u00ebri. Duke qen\u00eb se t\u00eb gjitha k\u00ebto instruksione nuk realizohen n\u00eb m\u00ebnyr\u00eb atomike (t\u00eb gjitha nj\u00ebher\u00ebsh), gj\u00ebra t\u00eb \u00e7uditshme mund t\u00eb ndodhin. Kjo problematik\u00eb quhet n\u00eb programim <b>race condition \u2014 gjendje garash<\/b>. Kur forca t\u00eb panjohura n\u00eb nj\u00eb moment t\u00eb panjohur mund t\u00eb ndikojn\u00eb n\u00eb ekzekutimin e ndonj\u00eb prej operacioneve tuaja.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446340\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP. \u0412 \u044d\u0442\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430 unix-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430\u043c\u0438, \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0438 \u043f\u0440\u043e\u0447\u0438\u043d\u0438\u043c\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u041e\u0421. \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0432\u0441\u0435\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0443\u0442. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":22702,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-30717","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Operating Systems: Three Easy Pieces. Part 1: Intro (\u043f\u0435\u0440\u0435\u0432\u043e\u0434) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:37:05+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:37:05+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Operating Systems: Three Easy Pieces. Pjesa 1: Hyrje (p\u00ebrkthim) | ProHoster","description":"Hyrje n\u00eb sistemet operative. P\u00ebrsh\u00ebndetje, Habr! Dua t'ju prezantoj me nj\u00eb seri artikujsh-p\u00ebrkthimesh t\u00eb nj\u00eb let\u00ebrsie interesante sipas mendimit tim \u2014 OSTEP.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Operating Systems: Three Easy Pieces. Part 1: Intro (\u043f\u0435\u0440\u0435\u0432\u043e\u0434) | ProHoster","og:description":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:37:05+00:00","article:modified_time":"2019-10-31T18:37:05+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30717","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 02:38:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:30:51","updated":"2026-01-21 02:38:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/30717","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=30717"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/30717\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/22702"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=30717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=30717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=30717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}