77
Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim se si kane evoluar sistemet e shfrytezimit nder vite.Perderisa sistemet e shfrytezimit lidhen ngushte me arkitekturen e kompjuterave, duhen pare gjeneratat e kompjuterave per te pare se si ishin sistemet e shfryteziit perkatese. Kompjuteri i pare digital eshte projektuar nga Charles Babbage, matematicien anglez i cili synonte te krijonte nje “motor analitik”. Kjo ndodhi ne fillimet e shekullit te 19-te. Kjo makine nuk mund te funksiononte sakte per shkak se teknologjia e kohes nuk e mbeshteste. Kjo makine nuk pati nje sistem shfrytezimi. Pas kesaj makine fshihet dhe sotware i pare. Ada Lovelace eshte progamatorja e pare. Per nder te saj eshte emertuar gjuha e programimit Ada. Gjenerata e pare (1945-55), tubat vacuum Gjenerata e pare i perket viteve te pas luftes se II boterore. Howard Aiken,John Von Neumann, J Presper Eckert, William Mauchley dhe Konrad Zuse paten sukses ne ndertimin e motoreve llogarites. Keto makina te para ishin te ngadalta, me cikle qe maten ne sekonda. Pjese te tyre ishin tubat vakume. Keto makina ishin gjigante ne madhesi, zinin komplet dhomen dhe permbanin dhjetra mijera tuba te tille. Te gjitha programet shkruheshin ne gjuhe makine. Sistemet e shfrytzimit ende ishin te panjohura. Problemet qe zgjidhnin keto makina ishin llogaritje matematikore te tilla si ndertimi i tabelave te sinuseve e te logaritmeve. Gjenerata e dyte (1955-65) transistoret dhe sistemet batch Ne kete periudhe teknologjia kishte ecur drejt transistoreve dhe batch systems. Ne kete periudhe kompjuterat u beneme te besueshem dhe pati shitje te tyre. Per here te pare u ndane me vete projektuesit, operatoret, programatoret dhe personeli mirembajtes. Keto makina quheshin mainframe dhe vendoseshin ne dhoma me ajer te kontrolluar, ne kushte te vecanta, me staf te specializuar qe funskiononin me to. Vetem agjensite dhe koorpotatat e medha ose universitetet mund te blinin sisteme te tille me cmime multimilion dollareshe. Te ekzekutosh nje program ne keto sisteme, nje programator duhet me pare te te shkruaje programin ne leter, dhe me pas ta kaloje ate ne karte. Kete karte e sjell ne dhomen e inputit, ia jep opertatoreve dhe pret per pak kohe derisa te dale outputi. Kur kompjuteri mbaron detyren qe kishte nisur, nje operator merr nga printeri daljen dhe e kalon ne dhomen e outputit, qe kur programatori ta marre se bashku me outputet e tjere. Shume kohe humbet ne kete menyre nga koha e veprimit te kompjuterit nderkohe qe operatori kalon sa nga njera dhome ne tjetren. Duke u nisur nga kjo, shume njerez u perpoqen qe te eliminonin kete humbje te panevojshme kohe. Zgjidhja ishte perdorimi i te ashtuquajturave batch systems. Si parim pune ata kishin grumbullimin e disa puneve se bashku nga dhoma e inputit dhe ti lexonin mbi nje shirit magnetik duke perdore nje kompjuter te vogel dhe jo te kushtueshem qe jane te mire ne leximin e te dhenave por jo ne kalkulime numerike. Fig 1. Nje batch system. a) Programatori sjell karten ne 1401 (b) 1401 lexon punen qe duhet kryer nga nje shirit, (c) operatori kalon shiritin ne 7094 (d) 7094 realizon veprimin (e) Operatori kalon shiritn ne 1401 (f) 1401 printon outputin. Gjenerata e trete (1965-1980) Multiprogramimi Ne fillim te viteve 1960 shumica e prodhuesve te kompjuterave kishin dy linja produkti totalisht te ndryshme. Njera ishte e linja e perdorur per qellime llogaritjesh numerike ne shkence

Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

1

Leksioni 2 Historia e OS Gjate ketij leksioni do shihim se si kane evoluar sistemet e shfrytezimit nder vite.Perderisa sistemet e shfrytezimit lidhen ngushte me arkitekturen e kompjuterave, duhen pare gjeneratat e kompjuterave per te pare se si ishin sistemet e shfryteziit perkatese. Kompjuteri i pare digital eshte projektuar nga Charles Babbage, matematicien anglez i cili synonte te krijonte nje “motor analitik”. Kjo ndodhi ne fillimet e shekullit te 19-te. Kjo makine nuk mund te funksiononte sakte per shkak se teknologjia e kohes nuk e mbeshteste. Kjo makine nuk pati nje sistem shfrytezimi. Pas kesaj makine fshihet dhe sotware i pare. Ada Lovelace eshte progamatorja e pare. Per nder te saj eshte emertuar gjuha e programimit Ada. Gjenerata e pare (1945-55), tubat vacuum Gjenerata e pare i perket viteve te pas luftes se II boterore. Howard Aiken,John Von Neumann, J Presper Eckert, William Mauchley dhe Konrad Zuse paten sukses ne ndertimin e motoreve llogarites. Keto makina te para ishin te ngadalta, me cikle qe maten ne sekonda. Pjese te tyre ishin tubat vakume. Keto makina ishin gjigante ne madhesi, zinin komplet dhomen dhe permbanin dhjetra mijera tuba te tille. Te gjitha programet shkruheshin ne gjuhe makine. Sistemet e shfrytzimit ende ishin te panjohura. Problemet qe zgjidhnin keto makina ishin llogaritje matematikore te tilla si ndertimi i tabelave te sinuseve e te logaritmeve. Gjenerata e dyte (1955-65) transistoret dhe sistemet batch Ne kete periudhe teknologjia kishte ecur drejt transistoreve dhe batch systems. Ne kete periudhe kompjuterat u beneme te besueshem dhe pati shitje te tyre. Per here te pare u ndane me vete projektuesit, operatoret, programatoret dhe personeli mirembajtes. Keto makina quheshin mainframe dhe vendoseshin ne dhoma me ajer te kontrolluar, ne kushte te vecanta, me staf te specializuar qe funskiononin me to. Vetem agjensite dhe koorpotatat e medha ose universitetet mund te blinin sisteme te tille me cmime multimilion dollareshe. Te ekzekutosh nje program ne keto sisteme, nje programator duhet me pare te te shkruaje programin ne leter, dhe me pas ta kaloje ate ne karte. Kete karte e sjell ne dhomen e inputit, ia jep opertatoreve dhe pret per pak kohe derisa te dale outputi. Kur kompjuteri mbaron detyren qe kishte nisur, nje operator merr nga printeri daljen dhe e kalon ne dhomen e outputit, qe kur programatori ta marre se bashku me outputet e tjere. Shume kohe humbet ne kete menyre nga koha e veprimit te kompjuterit nderkohe qe operatori kalon sa nga njera dhome ne tjetren. Duke u nisur nga kjo, shume njerez u perpoqen qe te eliminonin kete humbje te panevojshme kohe. Zgjidhja ishte perdorimi i te ashtuquajturave batch systems. Si parim pune ata kishin grumbullimin e disa puneve se bashku nga dhoma e inputit dhe ti lexonin mbi nje shirit magnetik duke perdore nje kompjuter te vogel dhe jo te kushtueshem qe jane te mire ne leximin e te dhenave por jo ne kalkulime numerike.

Fig 1. Nje batch system. a) Programatori sjell karten ne 1401 (b) 1401 lexon punen qe duhet kryer nga nje shirit, (c) operatori kalon shiritin ne 7094 (d) 7094 realizon veprimin (e) Operatori kalon shiritn ne 1401 (f) 1401 printon outputin. Gjenerata e trete (1965-1980) Multiprogramimi Ne fillim te viteve 1960 shumica e prodhuesve te kompjuterave kishin dy linja produkti totalisht te ndryshme. Njera ishte e linja e perdorur per qellime llogaritjesh numerike ne shkence

Page 2: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

2

dhe ne inxhinieri. Linja e dyte ishte ajo e kompjuterave komerciale qe perdoreshin ne renditje dhe printim nga shiritie perdorur ne banka dhe ne kompani sigurimesh. Te mbash keto dy linja ishte shume e kushtueshme per kompanite, dhe per me teper shihej dukshem se tendenca ishte dalja ne treg e linjave te reja. Ne kete moment IBM prezantoi System/360, e cila ishte nje seri makinash te cilit ishin kompatibel ne software. Keto makina dallonin vetem ne cmim dhe ne performance, ku perfshihen memorja maksimale, shpejtesia e procesorit, numri i paisjeve I/O te lejuara, etj. Perderisa te gjitha keto makina kishin te njejten arkitekture si dhe te njejten bashkesi instruksionesh, nje program i shkruajtur ne njeren nga keto makina mund te ekzekutohej ne makinat e tjera te ketij lloji. 360 ishin te afta te llogaritnin edhe veprime numerike edhe veprime komerciale. Linja 360 ishte e para linje e cila perdorte qarqet e integruar, per kete siguronin nje avantazh ne cmim dhe ne performance ne krahasim me makinat e gjenerates se dyte, te cilet ishin te ndertuar nga transistore te vecuar. Ky ishte nje sukses i kohes. Linja te tilla qe rrjedhin nga keto sisteme sot perdoren ne srevera web qe procesojne mijera procese ne sekonde. Synimi ishte qe te gjithe programet, perfshi ketu dhe sistemin e shfrytezimit OS/360, duhej te funksiononin ne te gjithe modelet, te te gjitha tipeve e madhesive. Ky sistem shfrytezimi duhej te ishte eficient per te gjitha llogaritjet dhe per te gjithe perdoruesit. Nuk kishte asnje menyre qe te shkruhej nje program qe te permbushte te gjitha keto kerkesa konfliktuale. Rezultati ishte nje sistem shfrytezimi shume kompleks. Ai konsistonte ne miliona rreshta programi ne gjuhen assembler. Keto rreshta natyrisht permbanin mijera gabime, dhe per kete shtoheshin rreshta te tjere per ti korrigjuar dhe secili prej ketyre rreshtave riparonte disa gabime dhe shtonte disa te tjere. Panvaresisht problemeve, sistemet e shfrytezimit te gjenerates se trete sollen teknika te reja, prej te cilave me e rendesishmja ishte ajo e multiprogramimit, e cila shmangte mundesine qe CPU te rrinte gjate papune. Zgjidhje per kete ishte ndarja e memorjes ne disa pjese, me disa procese ne keto pjese. Nderkohe qe njera pune angazhonte nje paisje I/O, nje tjeter mund te perdorte CPU-ne. Nje tjeter tipar i rendesishem per makinat e kesaj gjenerate ishte aftesia per te lexuar proceset prej kartave ne disk sapo te sillen ne dhomen e kompjuterit. Me pas sapo nje proces kryen sistemi i shfrytezimit mund te ngarkoje nje tjeter pune nga disku dhe ta ekzekutoje. Gjithsesi, keto kompjutera ishin ende sisteme batch. Koha qe i duhej ketyre sistemeve per te ekzekutuar nje pune dhe per te nxjerre rezultatin ishte prej disa oresh. Nje presje e vendosur gabim ne keto programe shkaktone probleme ne kompilim , dhe per kete bente qe programuesi te humbiste punen e disa oreve. Deshira per nje pergjigje te shpejte i hapi rrugen timesharing, nje variant i multiprogramming. Ne nje sistem te tille, nqs 2 perdorues jane te log-uar ne sistem, 17 prej te cileve jane duke menduar ose duke folur, CPU i dedikohet punes se ketyre 3 puneve qe duhen kryer. Gjenerata e katert (1980-sot ) Personal Computers. Me zhvillimin e qarqeve me shkalle te larte integrimi, çipet permbanin mijera transistore ne nje centimeter katror. Duke qene te lire ne cmim, minikompjuterat bene te mundur qe nje departament ne nje kompani, ne universitet, ose dhe nje individ te kishte kompjuterin e tij personal. Ne vitin 1974, kur Intel doi me variantin 8080, kerkohej nje sistem shfrytezimi qe ta testonte ate. Ne kete kohe u krijua floppy disk 8 inch. Ne vitet 1980, IBM projektoi IBM PC dhe po kerkonte nje soft qe ta ekzekutonte ate. Punonjes te IBM kontaktuan me Bill Gates per licensen qe kishte per interpretuesin e Basic. Ata gjithashtu i kerkuan nese njihte ndonje sistem shfrytezimi qe te funksiononte ne PC. Gates iu sugjeroi te kontaktonin me kompanine Digital Reseach, ne ate kohe dominuese ne bote per sistemet e shfrytezimit. Vendimi me i keq ne historine e bizneseve ishte kur Kidlall refuzoi te takonte personalisht perfaqsuesit e IBM, duke iu derguar atyre nje nepunes te thjeshte. Ceshtja u perkeqesuar kur avokati i Digital Research nuk pranoi te nenshkruante kontraten me IBM. Atehere IBM u rikthye te Bill Gates dhe i kerkoi atij nese mund tiu siguronte ndonje sistem shfrytezimi. Gates dinte qe Seatle Computer Products kishin nje sistem

Page 3: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

3

shfrytezimi te pershtatshem per ta, DOS ( Disk Operating System). Ai ua bleu kete per 50.000$. Gates i ofroi IBM paketen DOS/Basic. IBM kerkonte modifikime, atehere nje Gates kerkoi personin qe shkroi DOS te modifikonte ate, dhe e punesoi ne kompanine e sapokrijuar te tijen, Microsoft. Modifikimet u riemeruar si MS-DOS dhe shpejt u be mbizoteruese ne treg. MS-DOS u perdor me vone ne 80386, dhe ne 80486. Megjithese versionet e tij te para ishin primitive,versionet e mevonshme permbanin shume opsione shtese te marra nga Unix. MS-DOS dhe te tjere sisteme shfrytezimi te asaj kohe bazoheshin ne komandat qe perdoruesi shkruante nga tastjera. Kjo ndryshoi fale ndryshimeve te bera nga Doug Engelbart i cili krijoi te ashtuquajturen GIU ( Graphical User Interface ), e cila perdor dritaret, ikonat, menute dhe mousin. Steve Jobs, njeri nga krijuesit e kompjuterit Apple, pa nje GUI dhe vendosi te ndertonte nje Apple me GUI. Ky projekt u quajt Lisa, por duke qene shume e shtrenjte deshtoi ne treg. Perpjekja e dyte e Jobs ishte Apple Macintoch, cili ishte vertet nje sukses, jo vetem se ishte i lire, por dhe sepse ishte user friendly, qe do thote se ishte krijuar per perosnat qe jo vetem nuk ia kishin idene rreth kompjuterave. Kur Microsoft vendosi te ndertonte pasuesin e MS-DOS, u influencua nga suksesi i Machintosh. Ndertoi nje GUI qe e quajti Windows, i cili bazen e kishte ne MS-DOS. Gjate viteve 1985-1993 Windows ishte thjesht nje nderfaqe grafike e MS-DOS. Ne vitin 1995 nisi versioni i panvarur i Windows 1995, i cili me pas u ndoq nga Windows 98. Te dy keto versione te Windows permbanin sasi te medha kodesh ne assembler Intel 16 bit. Ne tjeter sistem shfrytezimi eshte Windows NT (shkurtim i New Technology), i cili eshte compatibel me Windows 95 ne nje fare niveli, por eshte nje sistem i plote 32 bit. Microsoft priti se versioni i pare i NT do largonte MS-DOS dhe te gjithe versionet e meparshme te Windows perderisa ishte superior, por nuk ndodhi keshtu. Versioni 5 i Windows NT u rimerua Windows 2000. Qellimi ishte qe versioni 5 i Windows Nt te ishte pasues i Windows 98, por nuk ndodhi keshtu, per kete Microsoft prezantoi versionin e ri te Windows 98 te quajtur Windows Me ( shkurtim i Millennium). Pas ketij, versioni i fundit i suksesshem eshte Windows XP ( shkurtim i Experience) me dy edicionet, Professional dhe Home Edition. Nje tjeter sistem shfrytezimi i fuqishem eshte Unix, dhe degezimet e tij. Unix eshte i favorshem ne worstation dhe ne serverat e rrjeteve. Ne kompjutera me baze Pentium, Linux eshte bere nje alternative kundrejt Windows. Panvaresisht faktit qe shume perdorues te Unix, sidomos ata me shume eksperience preferojne nje nderfaqe te bazuar ne komanda, thuajse te gjithe sistemet e Unix mbeshtesin nje sistem te ndertuar mbi dritare dhe qe quhet X Windows. Ky sistem permban menaxhimin e dritareve, krijimi i userave. Nje nderfaqe GUI e quajtur Motif lejon qe Unix te ngjasoje me Macintoch ose me Microsoft Windows. Nje zhvillim i rrjeteve gjate viteve 1980 cuan ne evolumin e network operating systems dhe distributet operating systems. Ne nje sistem shfrytezimi te tille perdoruesit jane ne dijeni te shume kompjuterave dhe qe mund te log-ojne ne nje makine ne rrjet, mund te kopjojne skedare nga nje makine ne nje tjeter. Secila makine ekzekuton sistemin lokal te shfrytezimit dhe ka perdoruesit e vet. Network operating systems ne thelb nuk jane te ndryshem nga sistemet nje-procesoresh. Ata duken natyrisht qe keto sisteme kane nevoje per network interface controller dhe softe qe e komandojne ate. Nje distributed operating system ngjason per perodruesit si nje sistem tradicional, edhe pse eshte i perbere nga shume procesore. Perdoruesit nuk duhet te jene ne dijeni se ku do ekzekutohen programet e tyre ose se ku jane te vendosur skedaret e tyre, me te gjitha keto merret ne menyre eficiente sistemi i shfrytezimit. Distributed operating systems te mirefillta kerkojne me teper se shtese kodi te nje sistemi nje-procesor, sepse e shperndare dhe ate te perqendruar ndryshojne ne shume aspekte kritike. Psh sistemet e shperndare (distributed systems ) psh lejojne qe aplikacionet te ekzekutohen ne disa procesore ne te njejten kohe, per kete kerkojne algoritme me komplekse skedulimi ne menyre qe te permiresojne paralelizmin.

Page 4: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

4

Leksioni 4 Pjeset hardware te kompjuterit Nje sistem shfrytezimi eshte i lidhur ngushte me pjeset hardware te kompjuterit ne te cilet ekzekutohet. Per kete arsye po shohim pjeset kryesore te ndertimit te kompjuterit. Nje pamje kryesore te ndertimit te kompjuterit mund te permblidhet ne figuren e meposhtme. CPU, memorja dhe paisjet I/O jane te gjitha te lidhura ne nje sistem bus per te komunikuar me njeri-tjeterin. Kompjuterat personale moderne kane nje strukture me te komplikuar busesh.

Procesoret Truri i kompjuterit eshte CPU. Ai e merr instruksionin nga memorja, e dekodon per te percaktuar tipin dhe operandat dhe e ekzekuton ate. Me pas vazhdon me instuksionin tjeter. Ne kete menyre ekzekutohen programet. Cdo CPU ka nje bashkesi te caktuar instruksionesh qe mund te ekzekutoje. Per kete nje Pentium nuk mund te ekzekutoje programet e SPARC dhe nje SPARC nuk mund te ekzekutoje nje program te Pentium. Kjo per faktin se aksesimi i memorjes per te marre nje instruksion ose nje te dhene kerkon me teper kohe se ekzekutimi i instruksionit. Te gjithe CPU-te permbajne disa regjistra qe kane per detyre te ruajne dhe dhena te perkohshme. Per kete ne bashkesine e instruksioneve ndodhen dhe instruksione qe realizojne ngarkimin e nje fjale memorjeje ne njerin prej ketyre regjistrave, ose te ruajne vleren e nje regjistri te tille ne memorje. Instruksione te tjere kombinojne veprime mes dy regjistrave, qelizave te memorjes, ose te dyja prej tyre. Veprime te tilla mund te jene veprimi add, si dhe veprime te tjera te ketij lloji. Pervec regjistrave qe mbajne rezultate dhe te dhena te perkohshme, ekzistojne dhe regjistra speciale qe programatori mund ti shohe. Njeri prej ketyre regjistrave eshte dhe program counter. Ky regjister permban adresen e memorjes te intstruksionit te ardhshem qe do merret nga memorja. Pasi instruksioni merret nga memorja, program counter ndryshon vleren duke shenjuar te adresa e instruksionit pasardhes. Nje tjeter regjister i vecante eshte stack pointer. Ky regjister shenjon ne fillimin e “turres” se memorjes. Kjo turre permban te gjitha procedurat qe jane thirre por qe nuk jane ekzekutuar ende. Ne keto te dhena per proceduren ndodhen parametrat hyres, variablat lokal, dhe variablat e perkohshem qe nuk jane ruajtur ne regjistra. Regjister tjeter eshte dhe PSW (Program Status Word). Ky regjister permban bite qe permbajne informacion rreth prioritetit te CPU-se, faktin nese programi po ekzekutohet ne user mode ose ne kernel mode dhe disa bite te tjere kontrolli. Ky regjister luan nje rol kryesor ne sistem calls dhe I/O. Sistemi i shfrytezimit duhet te kontrolloje secilin prej ketyre regjistrave. Gjate kohes se punes se CPU-se, sistemi i shfrytezimit shpesh ndalon nje ekzekutimin e nje programi per te vazhduar me nje program tjeter. Cdo here qe nje program ndalohet, sistemi i shfrytezimit i ruan vlerat e te gjithe regjistrave sepse vlerat qe ato permbajne duhet kur ai program te rifilloje punen.

Page 5: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

5

Projektuesit e CPU-se kane ndryshuar modelin e marrjes, dekodimit dhe te ekzekutimit te nje instruksioni te vetem ne nje moment te caktuar. Sot shume CPU ekzekutojne disa instruksione njeheresh. Psh nje CPU mund te kete njesi te ndryshme te marrjes, dekodimit dhe te ekzekutimit, per kete nderkohe qe ai ekzekuton instruksionin e n-te, ai mund te dekodoje instruksionin e n+1 dhe te marre instruksionin e n+2. Shume CPU ekzekutojne programet ne dy menyra, ne kernel mode dhe ne user mode. Nje bit ne regjistrin PSW paraqet kete gje. Gjate ekzekutimit ne kernel mode, CPU mund te ekzekutoje cdo instruksion ne bashkesine e tij te instruksioneve dhe perdor cdo karakteristike te hardware-it te tij. Sistemi i shfrytezimit ezkekutohet ne kernel mode dhe ka akses ne te gjithe hardware-in. Nderkohe, nje program i perdoruesit ekzekutohet ne user mode, dhe ka mundesi te ekzekutoje vetem nje nenbashkesi te instruksioneve. Ne pergjithesi, te gjithe instruksionet qe perfshijne veprimet I/O si dhe memorjen e mbrojtur nuk mundesohen ne user mode. Sigurisht nuk lejohet nderyshimi i vleres se PSW. Per te marre sherbime nga sistemi i shfrytezimit nje programit ne user mode i duhet te beje nje system call. Nje instruksion kalon kontrollin nga user mode ne kernel mode dhe nis sistemi i shfrytezimit nis punen. Kur puna mbaron, kontrolli i kalon perseri programit te perdoruesit ne instruksionin qe beri thirrjen e system call. Memorja Nje komponenet tjeter i rendesishem eshte memorja. Nje memorje ideale do ishte shume e shpejte, teper e madhe dhe shume e lire. Asnje teknologji e kohes nuk i ploteson te treja keto kushte njeheresh. Sistemi i memorjes kosiderohet nje hierarki si ne figuren meposhte :

Ne maje te kesaj piramide qendrojne regjistrat e CPU-se. Ata jane te perbere me te njejtin material me CPU-ne dhe per kete jane te shpejte sa memorja, pra mund te aksesohen shpejt. Kapaciteti i tyre eshte 32 X 32 bit per CPU me 32 bit, dhe 64 X 64 bit per nje CPU me 64 bit. Ne te dyja rastet kapaciteti shkon me pak se 1 KB. Nje nivel me poshte eshte memorja Cache, shumica e se ciles kontrollohet nga hardware. Memorja qendrore eshte e ndare ne rreshta cache zakonisht me permbajtje 64 bytes. Rreshti i pare ka adresat 0-63, rreshti i dyte ka adresat 64-127, etj. Rreshtat qe perdoren me shpesh mbahen me prane CPU-se ne menyre qe te akseksohen me shpejt. Kur programi ka nevoje te lexoje nje fjale memorjeje, pjesa hardware qe kontrollon memorjen cache verifikon nese kjo fjale gjendet ne memorjen cache. Memorjet cache jane te kufizuar ne madhesi dhe kane kosto te larte. Disa makina kane dy ose dhe tre nivele te memorjes cache, secila me e ngadalte dhe me e madhe se paraardhesja. Ne nivelin tjeter ndodhet memorja qendrore, e cila shpesh quhet dhe RAM ( Random Access Memory). Ne ditet e sotme madhesia e saj po rritet shume shpejt, dhe normalisht eshte qindra megabytes. Nje nivel meposhte ne hierarkine e memorjes qendron disku magnetik (hard disku). Keto disqe jane me te lire se RAM, ne nje madhesi dy rende me pak, dhe gjithashtu dy rende me te medhenj. Problemi eshte vetem te aksesimi i te dhenave kryhet ne dy rende me pak se memorja qendrore. Kjo ngadalesi eshte nga ndertimi i diskut.

Page 6: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

6

Shtresa e fundit ne hierarkine e memorjes eshte shiriti magnetik. Ky shirit shpesh perdoret per backup, ose per te ruajtur te dhena qe jane ne sasi shume te medha. Per te aksesuar ne nje shirit te tille, se pari duhet vndosur shiriti ne lexuesin e tij, me pas shiriti duhet te cohet ne pozicionin e kerkuar. E gjitha kjo mund te kerkoje disa minuta. Avantazhi kryesor i ketyre shiriteve eshte fakti qe eshte shume i lire per bit, dhe qe mund te ndahet nga kompjuteri dhe mund te vendoset ne vende te mbrojtura nga zjarret dhe nga fatkeqesite natyrore, gje kjo shume e rendesishme per te ruajtur te dhena me rendesi. Hierarkia e paraqitur me lart eshte tipike, por ne disa raste ka disa shtresa qe mungojne ose disa te ndryshime te tjera. Gjithsesi, ne te gjitha keto raste sa me teper qe te ulemi ne hierarki koha e askesimit rritet se tepermi, kapaciteti rritet gjithashtu dhe kostoja per bit ulet. RAM eshte memorje e tille qe humbet informacionin kur fiket kompjuteri. Ndryshe nga kjo, ROM (Read Only Memory) eshte programuar e tille qe nuk mund te ndryshohet pasi eshte shkruar. Ajo eshte nje memorje e shpejte dhe jo e kushtueshme. Ne shume kompjutera procesi i boot-imit kryhet nga ROM. Shpesh kerkohet qe ne memorje te qendorjne disa programe njeheresh. Nqs nje program eshte bllokuar ne pritje te leximit ne disk, nje tjeter program mund te perdore CPU-ne, duke dhene ne kete menyre nje perdorim me eficient te CPU-se. Por me dy programe ne memorjen kryesore mund te kemi keto probleme :

1. Si ti mbrojme programet nga njeri-tjetri dhe kernel nga te dy keto programe. 2. Si mund ti marresh keto programe.

Problemi i pare dallohet qarte, i dyti eshte me delikat. Kur nje program kompilohet dhe lidhet, kompilatori dhe linker-i nuk e di se ne cilen pjese te memorjes fizike do te ngarkohet kur te ekzekutohet. Per kete ata supozojne gjithmone se ai do nise nga adresa zero. Ai vendos instruksionin e pare ne kete pozicion. Supozoni se intsruksioni i pare merr nja fjale nga adresa 10.000 e memorjes. Supozoni se komplet programi dhe te dhenat e tij ngarkohen ne adresen 50.000. Kur ekzekutohet instruksioni i pare ai do nuk do ekzekutohet per shkak ai referencon ne fjalen me adresen 10.000 ne vend te fjales me adrese 60.000. Per te zgjidhe kete problem, ne na duhet ose te rivendosim programit gjate kohes se ekzekutimit, duke gjete te gjitha adresat dhe duke i modifikuar ato, ose mund te rivendosim gjate kohes se ekzekutimit. Zgjidhja parqitet ne figuren (a) me poshte. Shohim qe kemi kompjuterin e paisur me dy regjistra speciale, regjistri baze dhe regjistri limit. Kur ekzekutohet nje program, regjistri baze shenjon ne fillim te tekstit te programit, kurse regjistri limit tregon se sa te gjere jane teksti i programit dhe te dhenat e tij. Kur merret nje instruksion nga memorja, hardware kontrollon per te pare nese program counter eshte me i vogel se regjistri limit, e nese po, ia shton ate regjistrit baze dhe dergon shumen ne memorje. Ne menyre te ngjashme kur programi kerkon te marre te dhena nga nje adrese e caktuar (psh nga adresa 10.000) hardware automatikisht ia shton permbajtjen e regjistrit baze (psh 50.000) kesaj adrese dhe dergon shumen (60.000) ne memorje. Regjistri baze pengon qe nje program te shenjoje ne nje pjese te memorjes qe ndodhet me poshte ketij regjistri. Regjistri limit pengon qe nje program te shenjoje ne nje pjese te memorjes siper tij. Per kete kjo skeme zgjidh te dyja problemet, te mbrotjes dhe te rimarrjes te programeve dhe me nje kosto te dy regjistrave te rinj, dhe te nje rritjeje te vogel te ciklit per te mundesuar kontrollimit e limitit dhe per te realizuar shtimin. Adresa e gjeneruar nga programi quhet adrese virtuale, kurse adresa e perdore nga memorja quhet adrese fizike. Paisja qe realizon kete kontroll dhe konvertimin quhet MMU (memory management unit). Ajo eshte e pozicionuar ne nje chip te CPU-se ose afer saj, por logjikisht eshte mes CPU-se dhe memorjes. Nje MMU me te sofistikuar kemi ne fig (b) meposhte. Ketu MMU eshte e perbere nga dy cifte regjistrash baze dhe limit, nje per tekstin e programit dhe nje per te dhenat. Program counter dhe te gjithe shenjuesit e tjere te tekstit te programit perdorin ciftin e pare te referensave, kurse per te shenjuar te dhenat perdorin ciftin e dyte. Per kete, ne mundemi te kemi shume perdorues qe ndajne te njejtin program kur ky i fundit ndodhet vetem nje here ne memorje. Kur programi 1

Page 7: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

7

eshte ne ekzekutim, kater regjistrat marrin vlerat sic tregohet ne pjesen e majte te figures. Kur programi 2 eshte ne ekzekutim, keto regjistra marrin vlera sic paraqiten ne pjesen e djathte te figures.

Memorja cache fsheh ngadalesine e memorjes. Kur nje program eshte ekzekutuar per pak kohe, memorja cache eshte e mbushur me rreshtat e ketij programi, duke dhene keshtu nje performance te mire. Gjithsesi, kur sistemi i shfrytezimit kalon nga nje program tek nje tjeter, memorja cache vazhdon te jete plot me rreshtat prej programit te pare. Keto rreshta updatohen nje nga nje nga memorja fizike. Paisjet I/O Memorja nuk eshte resursi i vetem qe duhet te menaxhoje sistemi i shfrytezimit. Nje paisje I/O ne pergjithesi konsiston ne dy pjese : nje controller dhe vete paisja. Kontrolleri eshte nje chip ose nje bashkesi chipesh qe kontrollojne fizikisht paisjen. Ai pranon komanda nga sistemi i shfrytezimit dhe i realizon keto komanda. Ne shume raste kontrolli i paisjes eshte shume i nderlikuar, keshtu qe puna e kontrollerit eshte te paraqese nje nderfaqe te thjeshte per sistemin e shfrytezimit. Pjesa tjeter eshte vete paisja, e cila ka nje nderfaqe te thjeshte sepse ato nuk kane nje detyre te nderlikuar. Keto paisje duhet te jene standarte, psh cdo disk kontroller IDE mund te trajtoje cdo disk IDE ( IDE eshte shkrutim i Integrated Drive Electronics dhe eshte tipi standart i diskut ne procesoret pentium dhe ne disa lloje te tjere procesoresh). Perderisa nderfaqja e paisjes fshihet pas kontrollerit, gjithcka qe sheh sistemi i shfrytezimit eshte nderfaqja e kontrollerit e cila mund te jete krejt ndryshe nga nderfaqja e nga nderfaqja e paisjes. Duke qene se secili tip i kontrollerit eshte i ndryshem, software te ndryshem nevojiten per te kontrolluar secilin nga keto tipe kontrollerash. Software-i qe i ndervepron me kontrollerin quhet nje device driver. Secili kontroller mbeshtet nje driver per cdo sistem shfrytezimi qe suporton, psh nje scanner paiset me driverat e Windows 98, Windows 2000 dhe Unix . Nje driver, qe te perdoret, duhet te vednoset ne sistemin e shfrytezimit dhe te ekzekutohet ne kernel mode. Teorikisht nje driver mund te ekzekutohet dhe jashte kernel-it, por kjo kerkon mundesine qe nje driver nga user mode te aksesoje nje paisje ne menyre te kontrolluar.

Page 8: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

8

Ekzistojne tre menyra qe nje driver mund te vendoset ne kernel. Menyra e pare eshte te rilidhet kernel me driver-in e ri dhe me pas te behet nje boot-im te ri sistemit. Shume sisteme ne Unix funksionojne ne kete menyre. Menyra e dyte eshte te nderhyhet ne skedaret e sistemit te shfrytezimit duke i treguar qe ka nevoje per nje driver te ri dhe me pas te beje nje boot-im sistemit. Ne momentin e boot-imit, sistemi i shfrytezimit gjen driverin e kerkuar dhe e ngarkon ate. Ne kete menyre funskionon Windows. Menyra e trete eshte e tille qe sistemi i shfrytezimit nderkohe qe eshte ne ekzekutim eshte i afte te pranoje driver-at e rinj dhe ti instaloje ata pa pase nevoje te beje nje boot-im te ri. Kjo menyre po perhapet me shpejt. Paisje te tilla si Usb dhe paisjet IEEE 1394 ngarkohen ne kete menyre. Cdo kontroller ka nje sasi regjistrash qe perdoren per te komunikuar me to. Per te aktivizuar nje kontroller, driver-i merr nje komande nga sistemi i shfrytezimit dhe e perkthen ate ne vlera qe do shkruhen ne regjistrat e paisjeve. Inputi dhe outputi mund te realizohen ne tre menyra te ndryshme. Ne menyren me te thjeshte, nje program kryen nje sistem call, te cilen kernel-i e perkthen ne nje thirrje procedure per nje driver te caktuar. Me pas driver-i nis procesin e I/O dhe kryen nje cikel qe zgjat per aq kohe se nevojet te realizohet procesi I/O. Kur ky proces ka mbaruar, driver-i vendos te dhenat qe duhet dhe sistemi i shfrytezimit i kalon kontrollin programin qe kreu kete sistem call. Kjo menyre quhet dhe busy waiting dhe ka disavantazhin qe bllokon CPU-ne derisa te mbaroje pune paisja. Metoda e dyte eshte e tille qe nje driver nis punen e paisjes dhe kerkon per nje interrupt kur paisja te mbaroje punen. Ne kete moment sistemi i shfrytezimit bllokon programin dhe kryen ndonje pune tjeter. Kur kontrolleri sheh qe puna e paisjes ka kryer, atehere ai jep nje interrupt per te treguar realizimin e punes. Sistem bus Me zhvillimin e memorjeve dhe te procesoreve, u pa qe ishte e pamundur qe nje bus i vetem te perballonte “trafikun” e te dhenave qe qarkullonin shpejt mes perberesve te ndryshem ne nje kompjuter. Per kete u shtuan bus-e te tjere shtese, si per paisje I/O te shpejta ashtu dhe per trafikun mes CPU-se dhe memorjes. Per kete sistem bus ne nje Pentium ka pamje te ngjashme me ate te figures meposhte :

Page 9: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

9

Ky sistem ka tete bus-e : cache, local, memory, PCI, SCSI, USB, IDE, dhe ISA. Secili prej ketyre bus-eve ka nje shkalle te ndryshme transferimi te dhenash si dhe nje funksion te ndryshem. Dy linjat e para ishin PCI (Peripheral Component Interconnent) dhe ISA (Industry Standart Architecture). Me pas nje sistemi te tille iu shtuan tre bus-e, IDE, USB dhe SCSI. Bus-i IDE perdoret per te lidhe paisje periferike, si psh disqe dhe CD-ROM me sistemin. Bus-i USB (Universal Serial Bus) u krijua per te lidhe paisje I/O te ngadalta, sic eshte tastjera ose mousi. USB eshte nje bus qendor dhe mund te trajtoje nje ngarkese prej 1.5 MB/sec. Te gjitha paisjet USB mund ndajne nje USB device driver dhe per kete eshte e panevojshme instalimi i driver-ave te rinj per cdo USB device. Pra, paisjet USB i shtohen kompjuterit pa pase nevoje te behet nje boot-im sistemit. Linja SCSI (Small Computer System Interface) eshte nje bus me performance te larte dhe perdoret per disqe te shpejte, scanner-a dhe paisje te tjera me sasi te medha informacioni te transferuar ne sekonde. Mund te transmetoje deri ne mbi 160MB/sec. Nje tjeter linje bus qe nuk eshte paraqitur ne figuren me lart eshte dhe linja IEEE 1394. Paisjet e ashtuquajtura plug and play bejne qe sistemi automatikisht te mbledhe informacion rreth paisjeve I/O, te caktoje nivelet e interrupteve dhe te tregoje numrat seciles karte. Ne Pentium kjo funksionon keshtu : cdo Pentium ka nje motherboard ne te cilin eshte nje program i quajtur BIOS (Basic Input Output System). BIOS permban software nivele te uleta I/O, ketu perfshihen procedura qe lexojne tastjeren, afishojne ne ekran, dhe gjera te tjera si keto. Sot BIOS ndodhet ne nje memorje flash Ram, e cila mund te updatohet nga sistemi i shfrytezimit ne momentin kur ne BIOS gjenden viruse. Kur kompjuterit i behet boot-im nis BIOS. Se pari ai kontrollon se sa memorje RAM ka te instaluar ne te dhe nese tastjera dhe paisje te tjera periferike jane te instaluara sakte. Me pas nis skanimi i linjave bus ISA dhe PCI per te kontrolluar paisjet qe jane lidhur me keto linja. Disa nga keto paisje jane te projektuara para se te krijohej sistemi plug and play dhe kane nje nivel te fiksuar nivelesh te interrupteve dhe adresave I/O. BIOS me pas percakton paisjen e boot-imit duke tentuar te boot-oje nga nje liste paisjesh qe jane ne memorje. Perdoruesi mund te ndryshoje kete liste duke hyre ne konfiguracionin e BIOS pas boot-imit. Zakonisht behet nje perpjekje te boot-ohet nga floppy disk, nqs kjo perpjekje deshton, atehere provohet te boot-ohet nga CD-ROM. Nqs dhe kjo deshton atehere sistemi boot-on nga hard disku. Sektori i pare nga paisja e boot-imit lexohet ne memorje dhe ekzekutohet. Ky sektor normalisht permban nje program i cili kontollon partition table ne fund te cdo sektori te boot-imit dhe percakton se cila partition eshte aktive. Me pas lexohet nje boot-im sekondar nga ky partition. Ky boot-im sekondar lexon sistemin e shfrytezimit nga active partition dhe nis ekzekutimin e sistemit te shfrytezimit. Sistemi i shfrytezimit merr nga BIOS informacion rreth konfigurimit. Sistemi i shfrytezimit kontrollon per cdo paisje nese ka apo jo nje driver perkates. Nese nuk ka nje driver per nje paisje te caktuar, atehere i kerkon perdoruesit te nderfuse nje diskete ose disk qe permban nje driver te lejuar nga prodhuesi perkates i paisjes. Pasi te gjitha paisjet te kene driverat perkates sistemi i shfrytezimit i ngarkon ato ne kernel. Me pas sistemi i shfrytezimit inicializon tabelat e tij, krijon ne proceset ne background dhe nis nje nderfaqe grafike. Koncpete te nje sistemi shfrytezimi Procesi Nje koncept baze i perbashket ne te gjithe sistemet e shfrytezimit eshte procesi. Ne thelb nje proces eshte nje program ne ekzekutim. Cdo procesi i bashkengjitet zona e adresave te tij qe eshte nje pjese memorjeje ne te cilen procesi mund te shkruaje ose te lexoje. Ne kete zone adresash ndodhet programi i ekzekutueshem, te dhenat e programit dhe nje stack i programit. Gjithashtu me nje proces lidhen dhe nje bashkesi regjistrash, duke perfshire ketu nje program counter, stack pointer dhe te tjere regjistra qe permbajne informacionin e nevojshem per te ekzekutuar programin. Sistemi i shfrytezimit here pas here vendos te ndaloje perkohesisht ekzekutimin e nje procesi dhe te ekzekutoje nje tjeter proces. Procesi i pare ristartohet ekzaktsisht ne te njejten

Page 10: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

10

gjendje qe kishte kur u ndalua, qe do te thote se i gjithe informacioni rreth procesit duhet te ruhet ne menyre eksplicite diku menjehere sa te ndalohet procesi. Ne shume sisteme shfrytezimi i gjithe informacioni rreth nje procesi ruhet ne nje tabele. Kjo tabele quhet tabele e procesit (process table) dhe ne te nuk ruhen vec permbajtja e vete procesit si dhe zona e adresave te tij. Kjo tabele eshte nje array ose liste strukturash dhe permbajne nga nje element per cdo process qe ekziston momentalisht. System call jane celesi i menaxhimit te proceseve dhe merren me krijimin dhe perfundimin e proceseve. Nje proces mund te krijoje nje ose me teper procese te tjera. Ketyre iu referohemi si procese femije, dhe keto gjithashtu mund te krijojne procese te tjera, duke krijuar ne kete menyre nje strukture ne forme peme me procese. Disa prej ketyre proceseve iu duhet te komunikojme per te realizuar nje pune, dhe ne kapitujt ne vijim do sqarojme gjithashtu dhe komunikimin mes proceseve. Ndodh qe duhet cuar informacion nje procesi ne ekzekutim. Psh nje proces qe eshte duke komunikuar me nje tjeter proces ne nje kompjuter tjeter e realizon kete komunikim duke derguar nje mesazh te nje procesi tjeter ne rrjet. Duhet kujdesur qe te mos kete mundesi qe te humbase nje mesazh ose nje pergjigje mesazhi. Per kete nje dergues mund ti kerkoje sistemit te tij te shfrytezimit qe pas nje numri te caktuar sekondash ai ta informoje qe te ritransmetoje mesazhin. Pasi te kete percaktuar kete timer, programi mund te vazhdoje me nje tjeter detyre. Kur te kete kaluar numri i percaktuar i sekondave, sistemi i shfrytezimit i dergon procesit nje sinjal alarmi. Sinjali ben qe procesi te nderprese perkohesisht ate qe po bente, te ruaje regjistrat ne stack dhe te ekzekutoje nje procedure te vecante qe trajton problemin per te cilin informoi sinjali, ne kete rast te perpiqet te ridergoje mesazhin e humbur. Kur kjo realizohet, procesi i nderprere nis taman aty u shkeput prej sinjalit. Sinjalet jane pjese software analoge me interruptin hardware dhe mund te gjenerohen per disa arsye. Deadlock ( bllokimet ) Kur dy ose me shume procese jane ne nderveprim, ato mund te te perfshihen ne nje situate nga e cila nuk mund te dalin. Nje situate e tille quhet bllokim ( deadlock ). Deadlock mund te na kujtojne nje shembull te mire nga jeta reale e jona, bllokimet ne trafik, kur secila makine do te kaloje dhe te prese nje udhekryq, por asnjera nuk mund te kaloje rrugen, pasi eshte bllokuar ne trafik. Proceset ne nje kompjuter mund te kene te njejtin fat. Psh nje kompjuter mund te lexoje te dhena nga nje CD-ROM dhe nga nje shirit magnetik. Ne nje moment ne te jane dy procese, i pari kerkon te lexoje te dhenat nga nje CD kurse i dyti po lexon te dhena nga nje shirit magnetik. Me pas procesi i pare kerkon te lexoje dhe nga shiriti, dhe per kete pezullohet deri sa procesi i dyte ta leshoje shiritin. Ne te njejten kohe procesi i dyte kerkon te lexoje te dhena nga nje CD dhe pezullohet gjithashtu per te njejten arsye. Ne kete rast kemi nje deadlock nga i cili nuk mund te dalim. Menaxhimi i memorjes Cdo kompjuter ka nje memorje qendrore te cilen e perdor per te ekzekutuar programe. Ne nje sistem shfrytezimi te thjeshte ne memorjen qenderore mund te jete vetem nje program. Per te ekzekutuar nje program te dyte i pari duhet te largohet nga memorja dhe i dyti ze vend ne memorje. Sistemet e shfrytezimit me te sofistikuar lejojne qe disa programe te jene ne memorjen qendrore ne te njejten kohe. Per te realizuar sakte kete gje duhet te ekzistoje nje mekanizem mbrotjeje per keto dy programe dhe kjo mbrotje duhet te jete ne hardware dhe te mundesohet nga sistemi i shfrytezimit. Nje tjeter ceshteje me rendesi per sa i perket memorjes eshte dhe menaxhimi i zonave te proceseve ( address space ) te memorjes. Cdo proces ka nje bashkesi adresash qe mund te perdore. Ne rastin me te thjeshte sasia e adresave qe ka nje proses eshte me e vogel se sasia totale e adresave te memorjes qendrore. Ne kete menyre nje proces mund te mbushe nje pjese ne memorje te mjaftueshme per ta mbajtur. Shume kompjutera kane adresa nga 32 deri ne 64 duke dhene nje

Page 11: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

11

zone adresash nga 232 deri ne 264. Teknika e memorjes virtuale mundeson qe nje pjese e adresave te procesit te jene ne memorjen qendrore kurse nje pjese tjeter qendron ne disk. Input / Output Te gjithe kompjuterat kane paisje fizike qe mundesojne marrje dhe transmetim te dhenash. Ekzistojne shume lloje paisjesh te tilla, sic jane tastjera, printeri, monitori dhe i takon sistemit te shfrytezimit te menaxhoje keto paisje. Disa nga software-t I/O jane te panvarur nga paisja, qe do te thote se aplikohen ne te shume ose nga te gjitha paisjet I/O ne menyre te njejte. Te tjere software, sic jane device driver, jane specifike per cdo device. Skedaret Nje tjeter koncept i cili mundesohet nga sistemi i shfrytezimit eshte dhe file system (sistemi i skedareve). Nje detyre baze e sistemit te shfrytezimit eshte fshehja e vecorive te disqeve dhe te paisjeve I/O dhe ti prezantoje perdoruesit nje pamje te kendshme, nje model te abstraguar te skedareve. Per te krijuar, per te fshire dhe per te shkruar ne skedare aktivizohen system calls. Sistemi i shfrytezimit duhet te kete konceptin e direktorise, ne menyre qe te siguroje nje organizim dhe grupim te skedareve. Perseri nevojiten system call per te krijuar dhe per te fshire direktori. System call gjithashtu nevojiten per te vendosur nje skedar ne nje direktori ose per te fshire nje skedar nga nje direktori. Direktorite mund te permbajne nendirektori duke krijuar keshtu nje sktrukture hierarkike ne formen e nje peme. Thame qe dhe proceset dhe direktorite jane ne nje strukture hierarkike ne forme peme, por ngjashmeria ndalon ketu, sepse hierarkia e proceseve nuk eshte shume e thelle ( zakonisht jo me shume se tre nivele ) kurse nje strukture skedaresh zakonisht mund te jete me tre, kater ose me me shume nivele. Hierarkia e proceseve zgjat pak, maksimumi disa minuta, kurse hierarkia e skedareve zgjat ndoshta dhe me vite. Gjithashtu ndryshojne problemet e mbrojtjes dhe te aksesit. Zakonisht vetem nje proces prind mund te kontrolloje dhe te aksesoje nje proces femije, kurse ky mekanizem te skedaret mundeson qe nje grup i gjere perdoruesish mund te aksesojne nje skedar. Direktoria qe ndodhet ne maje te hierarkise quhet ndryshe direktori rrenje. Cdo skedar brenda nje direktorie mund te specifikohet me ane te nje adrese (rrugekalimi) qe nis nga direktoria rrenje. Rrugekalimi absolut konsiston ne listen e direktorive qe duhen kaluar per te shkuar te skedari nga direktoria rrenje. Direktorite ne kete rrugekalim ndahen me slash ( / ) ne UNIX dhe me backslash ne Windows ( \ ). Psh rrugekalimi ne UNIX /Fakulteti/Informatike/OS/Leksioni5 ne Windows paraqitet \Fakulteti\Informatike\OS\Leksioni5 Simboli / ne fillim tregon se kemi nisur nga direktoria rrenje. Ne cdo moment, cdo proces ka nje direktori te punes. Keshtu, nqs direktoria e punes do ishte /Fakulteti/Informatika, atehere ne mund te specifikojme skedarin Leksioni5 dhe me rrugekalimin OS/Leksioni5. Nje teknike me rendesi e perdore ne UNIX eshte dhe montimi i sistemit te skedareve (mounted file system). Cdo personal komputer ka nje ose disa floppy disk dirive ne te cilen mund te vendosen disa disketa. Nje menyre elegante per te vepruar me paisje te tilla, qofte dhe me nje CD-ROM, UNIX mundeson qe file system i ketyre paisjeve te montohen ne pemen e direktorive.

Ne figuren me lart, file system i floppy nuk mund te perdoret, sespe nuk ka asnje menyre per te specifikuar emrat e skedareve. UNIX nuk lejon qe emrat e driverit ti vendoset para emrit te

Page 12: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

12

skedarit per ta specifikuar ate. Nje system call per montimin lejon qe file system i floppy te bashkangjitet me file system te rrenjes.

Ne kete rast, pas montimit te floppy-t ne direktorine b, ne mund te aksesojme skedaret x dhe y. Siguria Kompjuterat permbajne nje sasi te madhe informacioni i cili duhet te jete konfidencial, sic mund te jete posta elektronike, plane biznesi, etj. Sistemi i shfrytezimit e ka per detyre te menaxhoje sigurine e ketyre skedareve ne menyre qe vetem personat e autorizuar te askesojne skedare te ndryshem. Ne sistemin UNIX, skedaret jane te mbrojtur dhe kjo paqitet me kete skeme. Tre fusha percaktojne mbrojtjen per pronarin (owner), tre fusha percaktojne mbrojtjen per grupin e pronarit (owner’s group) , dhe tre fusha percaktohen per cdo perdorues tjeter (everyone else). Cdo fushe permban nje bit per aksesimin ne lexim, nje bit per aksesimin ne shkrim, dhe nje bit per aksesimin ne ekzekutim. Keto tre bite njihen si rwx ( read, write, execute). Psh rwxr-x—x nenkupton qe pronari mund te lexoje, te shkruaje dhe te ekzekutoje skedarin, nje anetar i grupit mund te lexoje ose te ekzekutoje skedarin, cdokush tjeter mundet vetem te ekzekutoje skedarin. Llojet e sistemeve te shfrytezimit Ne kete leksion po paraqesim shtate llojet kryesore te sistemeve te shfrytezimit. Lloje te ndryshme sistemesh jane zhvilluar perkrah zhvillimit te paisjeve kompjuterike. Mainframe operating systems Mainframe jane kompjuterat gjigande te cilet ende gjenden ne perdorim ne qendrat e te dhenave. Keto kompjutera dallojne nga kompjuterat personale nga kapaciteti I/O i tyre. Eshte dicka jo e pazakonte qe nje mainframe te kete 1000 disqe dhe te dhena te ruajtura qe kapin madhesine mijera gigabajt. Mainframe te tille perdoren dhe si servera ne boten e Web, gjithashtu dhe ne biznese me sasi te madhe transaksionesh. Sistemet e shfrytezimit per mainframe kryesisht realizojne nje proces ne nje moment te caktuar dhe shumica e ketyre proceseve kerkojne nderveprimin e I/O. Kryesisht ofrohen tre tipe sherbimesh : batch, transaction processing dhe timesharing. Nje sistem batch eshte i tille qe proceson nje pune rutine e cila nuk ka nevojen e nderveprimit te perdoruesit. Ne magazinat e shitjeve ose ne kompanite e sigurimeve shume procese jane te tilla. Sistemet e transaction processing trajtojne nje numer te madh kerkesash, psh kontrolli i veprimeve ne nje banke, ose ne rezervimet ne nje kompani ajrore. Secila prej ketyre puneve eshte e vogel por sistemit i duhet te procesoje mijera te tilla ne sekonde. Te tilla sisteme lejojne shume perdorues te ekzekutojne pune ne nje moment te caktuar, sic mund te jete nderveprimi dhe marrja e te dhenave nga nje database. Nje sistem shfrytezimi mainframe mundeson te gjitha keto. Sisteme te tille mund te jene OS/390, variant i OS/360. Server operating systems Nje nivel me poshte jane sistemet e shfrytezimit per serverat. Serverat mund te jene kompjutera personale, workstaion ose mainframe. Ata mund t’u sherbejne disa perdoruesave ne rrjet dhe lejojne qe perdoruesa te ndryshem te ndajne te dhenat dhe paisjet ne rrjet. Serverat mundesojne printime, file service ose Web service. Servera te shumte suportojne klientet ne Web

Page 13: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

13

dhe trajtojne te gjithe kerkesat e shumta qe vijne nga perdoruesit e internetit. Sisteme shfrytezimit tipike per servera jane Unix dhe Windows 2000. Linux gjithashtu po perdoret si sistem i tille. Sistemet e shfrytezimit multiprocesore Nje menyre e mire per te shfrytezuar me mire fuqine e kompjuterit eshte te lidhesh shume procesore ne nje sistem te vetem. Keto sisteme quhen sisteme paralele, multi kompjutera ose multi procesore. Keto sisteme kane nevoje per nje sistem shfrytezimi te vecante. Shume prej ketyre sistemeve kane origjinen ne sistemet e shfrytezimit te serverave me opsione shtese per komunikimin dhe lidhjen. Sisteme shfrytezimi per kompjutera personale Kjo kategori sistemesh ka per qellim te krijoje nje nderfaqe te mire per nje perdorues te vetem. Shembuj sistemesh te tille jane versionet e Windows, Macintoch dhe Linux. Keto sisteme jane aq te njohur saqe shume njerez nuk dine qe ekzistojne dhe sisteme te tjere pervec ketyre. Sistemet e shfrytezimit te real-time. Keto sisteme karakterizohen nga rendesia qe i japin faktorit kohe. Psh ne shume procese ne industri , veprime te ndryshme duhet te kryhen ne menyre precize ne nje moment te caktuar dhe nqs kryhet me heret soe me vone deshton procesi. Ne keto raste kemi te bejme me sistem hard real time. Sistemi soft real time mund te toleroje afatin kohor. Sisteme digitale ose multimediale jane te tille. Sisteme shfrytezimi real time jane VxWorks dhe QNX. Sisteme shfrytezimi embedded Shembull sistemi embedded eshte nje palmtop. Nje kompjuter palmtop ose PDA (pesonal digital assistant) eshte nje kompjuter i vogel i cili mund te kryeje nje numer te vogel veprimesh sic mund te jete nje liber adresash elekronik ose nje axhende elekronike. Sisteme te tille kane karakteristikat e nje sistemi real time por gjithashtu kane madhesi dhe kufizime ne fuqi qe i ben ato te vecante. Shembuj sistemesh shfrytezimi per to jane PalmOS dhe Windows CE. Sisteme shfrytezimi te Smart Card Sistemet shfrytezimi me te vegjel ekzekutohen ne smart card te cilat jane paisje ne madhesine e nje karte krediti dhe qe permbajne nje chip CPU. Ata kane disa kufizime ne fuqi llogaritese dhe ne memorje. Disa prej tyre kane mundesi vetem te llogaritin pagesen elekronike. Disa prej ketyre sisteme jane te programuar ne Java, qe do te thote se memorja e tyre mban nje interpretues te makines virutale te Java dhe ne te mund te ekzekutohen applete.

Leksioni 5 Proceset

Koncepti qendror ne cdo sistem shfrytezimi eshte procesi. Procesi perkufizohet si nje abstragim i nje programi ne ekzekutim. Te gjithe kompjuterat moderne mund te kryejne disa pune ne te njejten kohe. Nje kompjuter ne te njejten kohe mund te ekzekutoje nje program, mund te lexoje nga nje disk gjithashtu dhe mund te printoje. Ne nje sistem multiprogramming ( shume programesh ) CPU-ja kalon nga nje program ne tjetrin dhe ekzekuton secilin nga keto programe per qindra milisekonda. Ne cdo moment te caktuar CPU-ja ekzekuton vetem nje program, per nje kohezgjatje prej 1 sekondi, por duke ekzekutuar shume programe ne intervale te shkurtra i jep perdoruesit iluzionin e paralelizmit. Per njerezit eshte e veshtire te konceptohen aktivitetet paralele dhe te shumfishta. Per krijuar kete model projetuesit e sistemeve te shfrytezimit jane marre me vite. Po shohim me poshte ndertimin e ketij modeli.

Page 14: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

14

Modeli i procesit Ne baze te ketij modeli, te gjithe programet ne kompjuter jane te organizuar ne disa procese sekuenciale, ose thjesht ne procese. Nje proces eshte nje program ne ekzekutim i cili permban dhe vlerat e program counter , regjistrave dhe variablave. Cdo proces konceptohet sikur ka nje CPU virtuale te veten. Natyrisht qe ne realitet ekziston vetem nje CPU reale e cila kalon kontrollin nga njeri proces ne tjetrin. Por per te kuptuar sistemin eshte me thjeshte te mendojme sikur ekzistojne disa procese qe ekzekutohen ne paralel sesa te mendojme CPU-ne qe kalon nga programi ne program. Ky kalim i shpejte i kontrollit nga njeri program ne tjetrin quhet multiprogramming. Ne fig a) meposhte kemi nje kompjuter me kater programe ne memorje. Ne fig b) kemi kater procese, secili me rrjedhen e vet te kontrollit dhe duke u ekzekutuar ne menyre te panvarur nga proceset e tjere. Sigurisht qe ne realitet ekziston vetem nje program counter. Ne kete menyre kur ekzekutohet secili proces, program counteri i tij logjik ngarkohet ne program counterin e vetem real. Ne fig c) ne shohim rrjedhen e ekzekutimit ne nje interval kohe duke pare qe te gjithe proceset ekzekutohen por ne cdo moment ekziston vetem nje proces ne ekzekutim.

Diferenca mes nje programi dhe nje procesi shpesh nuk dallohet qarte, por eshte e rendesishme. Ketu mund tju ndihmoje nje shembull. Mendoni sikur po pergatisni nje embelsire dhe per kete ju merrni nje recete gatimi e cila ju sugjeron te perdorni sasi te caktuara perberesish. Per analogji kjo recete eshte programi, pra algoritmi i paraqitur ne nje gjuhe programimi, ju vete luani rolin e procesorit, dhe perberesit jane inputi. Procesi eshte aktiviteti i gatimit te embelsires dhe konsiston ne leximin e recetes, marrja e perberesve dhe pjekja e embelsires. Nderkohe qe ju pjekni embelsiren, djali juaj vjen dhe ju tregon se duke luajtur eshte gervishtur pak. Atehere ju mbani shenim ne recete ( ruhet gjendja e procesit ), hapni librin e ndihmes se shpejte dhe nisni e lexoni udhezimet ne te. Njelloj vepron dhe procesori kur kalon nga nje proces ( pjekja e embelsires ) ne nje proces tjeter me prioritet me te larte ( dhenia e ndihmes se shpejte ). Secili prej ketyre proceseve ka nje program te ndryshem ( receta e gatimi dhe libri i ndihmes se shpejte ). Pasi keni mjekuar djalin, ju vazhdoni te gatuani embelsiren ne momentin ku e nderprete. Idea e ketij shembulli eshte kjo : procesi eshte nje aktivitet. Programi i tij ka nje input, output dhe nje gjendje. Nje procesor mund te realizoje disa procese ne baze te disa algortimeve te skedulimit qe percaktojne se kur te nderpritet nje proces dhe te kalohet te tjetri. Krijimi i nje procesi Ekzistojne kater ngjarje qe shkatojne krijimin e nje procesi :

1. Inicializimi i nje procesi 2. Thirrja nga ne proces ne ekzekutim i nje thirrje sistemi per krijimin e nje procesi te ri. 3. Kerkesa e perdoruesit per krijimin e nje procesi te ri 4. Nisja e nje batch job ( pune batch).

Page 15: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

15

Ne momentin e boot-imit te sistemit te shfrytezimit krijohen disa procese. Disa prej ketyre proceseve nderveprojne me perdoruesin dhe realizojne nje pune ne tyre. Disa procese te tjere jane procese ne background te cilet nuk kane lidhje me nje perdorues, por kane funksione te tjera specifike. Psh nje proces i tille ne background eshte ai i cili pret nje e-mail qe mund te vije. Ky proces eshte gjithe kohen pasiv por nis punen kur vjen nje mail. Procese te tille ne Windows ju mund ti shihni ne Task Manager. Pervec proceseve qe krijohen gjate kohes se boot-imit, te tjere procese shtohen me pas. Shpesh nje proces ne ekzekutim mund te beje nje thirrje sistemi per te krijuar nje proces te ri qe ta ndihmoje ne detyren e tij. Duhet pase parasysh qe keto procese jane te nevojshem per te shpejtuar punet. Gjithashtu ata jane te nderlidhur dhe te panvarur njekohesisht njeri me tjetrin. Per te nisur nje program, perdoruesi jep nje komande ose klikon ne nje ikone. Ne kete moment nis nje proces i ri i cili ekzekuton kete program. Ne shume sisteme me nderfaqe grafike cdo program i hapur jepet me ane te nje dritareje. Perdoruesi me ane te mousit zgjedh se me cilin program do nderveproje. Rasti i fundit i krijimit te proceseve aplikohet vetem ne sistemet batch ne mainframet gjigande. Ne keto sisteme perdoruesi mund te kryeje nje pune dhe kur sistemi i shfrytezimit vendos qe ka resurse per te krijuar nje tjeter pune, atehere ai krijon nje proces te ri. Ne te gjithe keto raste, nje proces i ri krijohet duke pas nje tjeter proces qe ekzekuton nje thirrje sistemi per te krijuar nje proces te ri. Ky proces mund te jete nje proces ne ekzekutim, nje proces sistemi i thirrur nga tastjera ose nga mousi. Ajo qe realizon nje proces eshte ekzekutimi i nje thirrje sistemi per te krijuar nje proces te ri. Kjo thirrje i tregon sistemit te shfrytezimit qe duhet krijuar nje proces i ri si dhe i tregon se cili program te ekzekutohet ne kete proces. Ne UNIX ekziston vetem nje thirrje sistemi per te krijuar nje proces te ri. Kjo quhet fork dhe krijon nje kopje ekzakte te procesit. Pas ketij instruksioni fork te dy proceset kane te njejtin imazh ne memorje si dhe te njejtet skedare te hapur. Zakonisht ne kete moment procesi femije ekzekuton execve per te ndryshuar imazhin e tij ne memorje dhe per te ekzekutuar nje tjeter program. Psh kur perdoruesi shkruan komanden sort atehere ekzektohet nje thirrje fork per te krijuar nje proces te ri dhe me pas ky proces ekzekuton komanden sort. Ne Windows kjo ndodh keshtu : behet nje thirrje per nje funksion CreateProcess e cila kryen krijimin e procesit si dhe ngarkimin e programit te procesi i sapokrijuar. Kjo thirrje ka 10 parametra, ne te cilat perfshihen programi qe do ekzekutohet, disa atribute te sigurise, bite qe tregojne nese trashegohen skedaret e hapur, infromacion rreth prioritetit, ndonje specifikim rreth dritares se hapur, etj. Pervec CreateProcess, ne Win32 ekzistojne dhe rreth 100 funksione te tjere qe sinkronizojne proceset. Ne Windows ashtu edhe ne UNIX, pasi krijohet nje proces, procesi prind dhe procesi femije kane zonat e ndryshme te adresave. Nqs njeri nga keto dy ndryshon nje fjale ne zonen e adresave ndyshimi nuk i paraqitet tek procesi tjeter. Gjithsesi eshte e mundur qe nje proces i sapokrijuar ndan me procesin prind te njejtat resurse, si psh skedaret e hapur. Perfundimi i nje procesi Cdo proces mbaron pasi ka kryer punen e tij. Kjo gje ndodh ne nje nga keto kushte : 1 ) Perfundim normal ( ne menyre te vullnetshme ) 2 ) Dalje me gabim ( ne menyre te vullnetshme ) 3 ) Gabim fatal ( ne menyre te pavullnetshme ) 4 ) E komanduar nga nje proces tjeter ( ne menyre te pavullnetshme ) Shume procese mbarojne sepse e kane perfunduar detyren e tyre. Psh kur nje kompilator ka kryer kompilimin e nje programi atehere kompilatori ekzekuton nje thirrje sistemi per ti treguar se mbaroi detyren. Kjo thirrje ne UNIX eshte exit kurse ne Windows eshte ExitProcess. Ne rastin e dyte procesi mbaron per shkak te nje gabimi. Psh kur perdoruesi perpiqet te kompiloje nje program ne nje skedar i cili nuk ekziston. Ne kete rast kompilatori perfundon dhe shpesh ne te tilla raste afishohen mesazhe qe njoftojne perdoruesin. Ne rastin e trete arsyeja e perfundimit eshte nga nje gabim i gjeneruar nga vete procesi. Psh procesi mund te tentoje te ekzekutoje nje instruksion jo te rregullt, mund te tentoje te shenjoje ne

Page 16: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

16

nje vend joekzistent ne memorje. Ne te tilla raste ne UNIX nje proces mund ti kerkoje sistemit te shfrytezimit qe te trajtoje vete te tilla gabime dhe procesi mund te nderpritet por jo te ndaloje. Ne rastin e katert nje proces mund ti beje nje thirrje sistemi per te mbaruar nje proces tjeter. Ne UNIX kjo thirrje quhet kill. Per Win32 ky funksion eshte TerminateProcess. Ne te dyja rastet procesi qe realizon thirrjen duhet te jete i autorizuar per te realizuar kete thirrje. Hierarkite e proceseve Ne disa sisteme, kur nje proces krijon nje proces tjeter, keto dy procese vazhdojne te mbajne lidhje. Nqs procesi femije krijon nje proces te ri, atehere kemi te bejme me nje hierarki te formuar nga keto procese. Ne UNIX nje proces dhe te gjithe proceset femije formojne nje grup procesesh. Kur nje perdorues i dergon nje mesazh prej tastjere, ky sinjali shkon te gjithe anetareve te grupit ku ben pjese procesi. Secili proces mund te aksesojne kete sinjal ne menyre individuale, ta injorojne ate ose ta trajtojne me veprimin ne menyren default. Ne UNIX nje proces i vecante i quajtur init i cili kur nis ekzekutimin lexon nga nje skedar se sa terminale jane ne sistem. Me pas krijon nga nje proces per secilin terminal. Keto procese presin derisa nje perdorues te log-oje. Nese log-imi realizohet me sukses atehere mund te jepen komanda per te nise programe te ndryshme. Per kete mund te themi se cdo proces i sistemit i perket nje peme te vetme, asaj qe nis me nje proces init. Ne Windows gjerat ndodhin ndryshe. Ketu nuk ekziston koncepti i i hierarkise se proceseve dhe te gjithe proceset jane te barabarta. Vetem nje moment duket sikur kemi me nje hierarki procesesh, kur krijohet nje proces i ri. Ne kete moment procesit prind i jepet nje mundesi kontrolli per procesin femije te tij. Gjendjet e nje procesi Megjethese nje proces eshte i panvarur, gjithsesi ai ka nderveprim me proceset e tjera. Rezultati i nje procesi mund te sherbeje si input per nje proces tjeter. Bllokimi i nje procesi ndodh sepse procesi nuk mund te vazhdoje. Nje arsye mund te jete sepse procesi kerkon nje input qe nuk eshte ende i gatshem, ose procesi mund te jete gati per ekzekutim por sistemi i shfrytezimit vendos ti jape procesorin nje tjeter procesi. Keto dy kushte jane totalisht te ndryshme. Ne rastin e pare nderprerja ka lidhje me problemin ne fjale, psh ju nuk mund te procesoni komanden e dhene nga perdoruesi kur perdoruesi ende nuk e ka dhene ate. Rasti i dyte eshte nje teknike e sistemit te bllokoje procesin. Ne figuren meposhte shohim diagramen e gjendjeve ne te cilen mund te

ndodhet nje proces. Nje proces mund te jete ne keto tre gjendje : 1 ) Duke u ekzekutuar, qe do te thote duke perdore CPU-ne. 2 ) Gati per ekzekutim, qe do te thote i nderprere perkohesisht nga nje proces tjeter. 3 ) I bllokuar qe do te thote se eshte e pamundur te ekzekutohet ne varesi te nje kushti qe vjen nga jashte

procesit. Dy gjendjet e para jane te ngjashme. Ne te dyja keto raste procesi mund te ekzekutohet, vetem se te rasti i dyte perkohesisht CPU-ja nuk eshte e gatshme per te. Ne gjendjen e trete procesi nuk mund te ekzekutohet edhe sikur CPU-ja eshte e lirshme. Kalimet e shenuara me numra ne figure tregojne kalimet qe mund te behen mes tre gjendjeve te ndryshme. Transaksioni 1 ndodh kur nje proces zbulon qe nuk mund te vazhdoje. Ne disa sisteme procesi ekzekuton nje thirrje qe mund te jete block ose pause. Ne UNIX kur nje proces kupton se nuk ka input ne dispozicion atehere kalon automatikisht ne gjendjen blocked. Transaksionet 2 dhe 3 shaktohen nga skeduluesi i proceseve. Transaksioni 2 ndodh kur skeduluesi vendos qe procesi qe po ekzekutohet eshte ekzekutuar per shume kohe dhe i takon nje procesi tjeter te kete ne dispozicion CPU-ne. Transaksioni 3 ndodh kur te gjithe proceset kane pase kohen e tyre per ekzekutim dhe e ka rradhen perseri procesi i pare per ekzekutim. Transaksioni 4

Page 17: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

17

ndodh kur mundesohet nje ngjarje e jashtme per te cilen por priste procesi. Nqs nuk po ekzekutohet asnje instruksion tjeter atehere procesi nis te ekzekutohet, perndryshe ai pret ne nje gjendje gati derisa te kete rradhen per te pase kontrollin e CPU-se. Implementimi i proceseve Sistemi i shfrytezimit implementon modelin e procesit duke perdore nje tabele e cila quhet tabele e proceseve. Kjo tabele permban shenjuesa dhe ka nga nje element per proces. Keto elemente permbajne informacione rreth gjendjes se procesit, program counter-in e tij, alokimin e memorjes, gjendjen e skedareve, informacione rreth skedulimit dhe cdo gje tjeter qe duhet ruajtur kur procesi kalon nga nje gjendje ne tjetren. Menaxhimi i proceseve Menaxhimi i memorjes Menaxhimi i skedareve Regjistrat Shenjues tek pjesa e tekstit Direktoria rrenje Numeruesi i programit Shenjues tek pjesa e te dhenave Direktoria e punes Gjendja e programit Shenjues tek pjesa e “turres” Pershkrim i skedarit Shenjues tek “turra” Identifikues i perdoruesitGjendja e procesit Identifikues i grupit Prioriteti Parametrat e skedulimit Identifikuesi i procesit Procesi prind Grupi i procesit Sinjalet Koha kur nis procesi Koha e perdorimit te CPU-se Koha e CPU-se per procest femije Koha per alarmin e ardhshem

Cdo paisje I/O permban ne memorje nje strukure qe quhet vektor i nderprerjeve ( interrupt vector ) i cili permban adresat e procedurave te nderprera. Psh nqs procesi 3 eshte duke u ekzekutuar dhe ne kete moment ndodh nje nderprerje nga disku. Program counter ( numeruesi i programit ) i procesit 3, gjendja e ketij porgami si dhe disa regjistra te tjere te tij vendosen ne kete turre. Ne kete moment kalohet ne adresen e specifikuar nga vektori i nderprerjeve te diskut. Keto i realizon hardware, kurse pjesa qe vjen me pas realizohet nga software, nga nje procedure e nderprerjeve.

Thread-ed

Modeli i thread Modeli i procesit bazohet ne dy koncepte, ne grupimin e resurseve dhe ne ekzekutimin. Shpesh eshte me e vlefshme te ndahen keto koncepte. Kjo eshte ajo qe realizon nje thread. Nje kendveshtrim per proceset eshte grupimi i resurseve qe kane lidhje. Nje proces ka nje zone adresash qe permban te dhenat dhe tekstin e programit si dhe resurset e tjera. Ketu perfshihen skedaret e hapur, proceset femije te procesit, alarmet, si dhe informacione te tjera. Te gjitha keto duke i bashkuar ne formen e nje procesi mund te menaxhohen me mire. Koncepti tjeter i nje procesi ka te beje me nje thread ( fije ) ekzekutimit. Nje thread ka nje numerues programi qe tregon se cili instruksion e ka rradhen te ekzekutohet. Nje thread gjithashtu ka dhe regjistra qe mbajne vlerat e variablave te nevojshem. Ai ka gjithashtu nje turre qe tregon procedurat e pathirrura qe nuk kane perfunduar ende. Nje thread ekzekutohet brenda nje procesi. Megjithate thread-i dhe procesi jane koncepte te ndryshme. Proceset perdoren per te grupuar resurset kurse thread-ed jane entitetet e planifikuara per ekzekutimin ne CPU.

Page 18: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

18

Ajo qe thread i shton modelit te procesit eshte lejimi i disa ekzekutimeve ne te njetin moment ne te njejtin proces dhe me panvaresi te madhe nga njeri-tjetri. Duke pase disa thread qe ekzekutohen ne paralel ne te njejtin proces eshte njelloj sikur te kemi disa procese paralele qe ekzekutohen ne kompjuter. Por ne kete krahasim kemi dhe dallime. Thread-ed paralele kane te perbashket zonen e adresave, skedaret e hapur dhe resurset e tjera. Proceset paralele kane te perbashket memorjen fizike, disqet printerat si dhe periferiket e tjere. Termi multithreading perdoret per te pershkruar situaten e disa thread-eve ne te njejtin proces. Ne figure shohim keto dy situata. Ne figuren a) kemi tre procese ku secili prej tyre ka zonen e vet te adresave dhe nje thread te vetem. Ne figuren b) kemi nje proces te vetem me tre

thread. Thread-ed ne nje proces ekzekutohen me rradhe, ne menyre analoge si proceset. Duke kaluar nga nje thread tek tjetri na jepet idea e thread-eve paralele. Ne nje proces me tre thread-e ne nje proces, keto thread-e duken perseri paralele,

secila me nje CPU me shpejtesi sa nje e treta e shpejtesise reale te CPU-se. Thread-et paralele te nje procesi nuk jane aq te te panvarur sa proceset paralele. Te gjithe thread-ed e nje procesi ken ekzaktesisht te njejten zone adresash, qe do te thote se kane variabla global te perbashket. Cdo thread, duke pase mundesi te aksesoje cdo qelize memorjeje ne kete zone adresash, mund te lexoje , te shkruaje madje dhe te fshije “turren” e nje thread-i tjeter. Pra nuk ekziston nje mbrojtje e nje thread-i nga thread-et e tjere te te njejtit proces. Kjo gje ka dy arsye : eshte e pamundur te realizohet , nuk eshte e nevojshme te realizohet. Procese te ndryshme mund te jene te perdorshem per disa perdorues, kurse nje proces eshte gjithmone prone e nje perdoruesi te vetem. Kjo do te thote se thread-ed e nje procesi bashkepunojne dhe nuk jane ne kundershtim te njeri-tjetrit.

Leksioni 6

Thread-ed (…vazhdim) Ne tabelen e meposhtme paraqiten elementet qe jane te perbashket per thread-ed dhe per proceset. Elementet e kolones se pare jane vecori te procesit dhe jo te thread-eve. Psh nje skedar i hapur nga nje thread mund te shikohet dhe nga thread-ed e tjere te te njejtit proces. Kjo per shakak se njesia e menaxhimit te resurseve eshte procesi dhe jo thread-i. Thread-ed krijohen te tilla qe te kene te perbashket keto resurse ne menyre qe te bashkepunojne se bashku brenda nje procesi.

Njelloj si proceset, dhe thread-ed jane ne njeren nga keto gjendje : ne ekzekutim, i bllokuar, gati per ekzekutim, i perfunduar. Nje thread ne ekzekutim eshte aktiv dhe ka CPU-ne ne dispozicion. Nje thread i bllokuar pret qe te plotesohet kushti per ekzekutimin e tij. Psh kur nje thread realizon nje thirrje sistemi per leximin nga tastjera,

atehere ai qendron i bllokuar deri sa perdoruesi te shtype ne tastjere komanden. Nje thread gati per ekzekutim eshte ne pritje te CPU-se deri sa te vijne rradha e tij per tu ekzekutuar.

Elementet e nje procesi Elementet e nje thread-i Zona e adresave Program counter Variablat global Regjistrat Skedaret e hapur Turra e procedurave Proceset femije Gjendja Alarmet Sinjalet Informacion shtese

Page 19: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

19

Duhet theksuar se secili thread ka turren e vet te procedurave. Kjo turre permban si elemente procedurat e thirrura por te papurfunduara. Secili element permban variablat lokale te procedures, dhe adresen ku duhet kthyer kur te perfundoje. Ne nje proces gjithcka nis me nje thread te vetem. Ky thread ka aftesine te krijoje thread-e te tjere duke thirrur nje procedure qe realizon pikerisht kete gje, psh thread_create. Nje parameter qe ka kjo procedure eshte emri i procedures qe do ekzekutoje thread-i i ri. Eshte e mundur por jo e domosdoshme te percaktohet zona e adresave te thread-id te ri. Kur nje thread ka perfunduar punen e tij, ai mund te dale duke thirre nje procedure te tille si thread_exit. Ne disa thread-e sistemi, nje thread mund te prese te mbaroje nje thread tjeter duke thirre proceduren thread_wait. Nje tjeter procedure e perdorur eshte dhe thread_yield. Kjo procedure mundeson thread-in te leshoje vete CPU-ne nje thread-i tjeter. Kjo procedure eshte e rendesishme per faktin se per thread-ed, ndryshe nga proceset, nuk ekziston nje clock interrupt per te percaktuar rradhen e ekzekutimit. Per kete eshte mire qe nje thread te leshoje vete kontrollin e CPU-se per ta rimarre me vone. Modeli i thread, pervec avantazheve qe paraqet, sjell dhe disa probleme ne programim. Psh, shqyrtojme efektin e thirrjes fork ne UNIX. Kjo thirrje krijon nje kopje te procesit. Ky proces ka disa thread-e, atehere a do ti kete dhe procesi femije keto thread-e ? Nqs jo, atehere procesi nuk do funksionoje mire, sepse jane keto thread qe kryejne funksionimin e sakte. Por nqs procesi femije ka te njejtat thread si procesi prind, atehere cfare ndodh nqs nje thread i procesit prind eshte bllokuar ne nje thirrje leximi? Kjo thirrje mund te jete psh lexim nga tastjera. Ne kete situate te dy thread-ed do jene te bllokuar, ai i procesit prind dhe ai i procesit femije, apo vetem thread-i ne procesin prind. Nje tjeter problem lidhet me faktin qe thread-ed kane te njejtat te dhena te perbashketa. Cfare do ndodhe nqs nje thread mbyll nje skedar nderkohe qe nje tjeter thread po lexon prej ketij skedari? Mendoni si do ishte situata kur dy thread-e kerkojne me teper memorje njeheresh. Cilit thread do ti leshohej kjo hapsire memorjeje? Keto probleme jane te zgjidhshme ne menyre te tille qe modeli i multithreading te funksionoje sakte. Perdorimi i thread-eve Tani eshte e nevojshme te sqarojme arsyen e perdorimit te thread-eve. Thread-ed perdoren per faktin se shpesh shume aktivitete ndodhin paralelisht. Programimi behet me i thjeshte duke e shperbere nje aplikacion ne shume thread-e sekuenciale qe ekzekutohen thuajse ne paralel. Ne fakt, kete arsye e kemi dhene per te pase disa procese ne paralel. Por me thread-e ne mund te shtojme nje element tjeter: mundesine qe entitete paralele te kene nje zone adresash te perbashket. Kjo eshte e rendesishme per disa aplikacione te cilat nuk mund te funksionojne me procese paralele. Nje argument i dyte per te implementuar thread-ed eshte fakti se thread-ed jane me te thjeshte per tu krijuar dhe per tu fshire. Kjo ndodh per arsyen sepse thread-ed nuk lidhen me resurset, per kete krijimi i tyre shkon deri ne 100 here me shpejt se krijimi i nje procesi. Ky eshte nje argument i fuqishem ne ato raste kur numri i thread-eve ndyshon dinamikisht shume shpejt. Arsye tjeter lidhet me performancen, gjithashtu me faktin se thread-ed jane me vlere dhe ne sistemet me shume procesore, aty ku paralelizmi eshte dicka qe ekziston realisht. Tani le te shohim si shembull nje editor teksti. Shumica e editoreve paraqesin ne ekran dokumentin qe po formatohet ashtu sic do printohet ne flete. Supozoni se perdoruesi po shkruan nje liber. Per autorin eshte me e thjeshte te mbaje te tere librin ne nje skedar te vetem sepse ne kete menyre thjeshtohet shume kerkimi. Nje tjeter mundesi eshte qe libri te ndahet ne kapituj, dhe nje kapitull eshte nje skedar me vete. Por kjo menyre kerkon qe cdo editim te behet ne menyre individuale per cdo kapitull, psh nese ne minuten e fundit kerkohet te zevendesohet nje fjale me nje tjeter, kjo duhet te behet per cdo kapitull. Nqs libri ndodhet ne nje skedar te vetem kjo gje realizohet me nje komande te vetme. Tani supozoni se autori fshin nje rresht ne faqen e pare. Me pas ai kerkon te lexoje dhe nje here faqen 600. Per kete ai jep komanden qe te con direkt te faqja 600. Ne kete moment editori

Page 20: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

20

vonon pak te shkoje tek kjo faqe derisa te procesoje te gjitha faqet me rradhe, dhe kjo vonese nuk i pelqen perdoruesit. Ne kete situate thread-ed mund te ndihmojne. Supozoni se nje editor eshte pjese e nje programi me dy thread-e. Nje thread ndervepron me perdoruesin kurse tjetri kryen veprimet e tjera te fshehura. Sapo perdoruesi fshin nje fjali, thread-i nderveprues i kerkon thread-id te formatimit te riformatoje librin. Ne kete moment ne sfond kryhet riformatimi, nderkohe qe thread-i i nderveprimit pret komandat nga tastjera dhe nga mousi. Me shume mundesi mund te jete me fat qe perdoruesi te kerkoje te shkoje te faqja 600 pak pasi eshte riformatuar teksti, duke paraqite ne kete menyre menjehere faqen e kerkuar. Jemi qe jemi pse mos te shtojme dhe nje thread te trete. Shume editore teksti kane aftesine te ruajne here pas here skedarin duke bere qe te mos humbase puna e gjithe dites nga nje nderpreje dritash. Thread-i i trete mund te meret me kete gje pa pase ndikim ne thread-ed e tjere. Nqs programi eshte me nje thread kur kemi nje ruajtje ne disk bllokohet per pak caste tastjera dhe mousi deri sa te mbaroje ruajtja. Me tre thread-ed qe permendem me lart, njeri ndervepron me perdoruesin, tjetri riformaton dokumentin dhe i treti shkruan here pas here permbajtjen ne disk. Eshte e qarte se sikur te kishim tre procese nuk do ishte e njejta gje sepse te tre keto thread-e kane nevoje te nderveprojne me dokumentin, ndajne nje memorje te perbashket dhe kane akses te njekohshem ne dokumentin qe po editohet. Implementimi i thread-eve ne zonen e perdoruesit (user space) Ka dy menyra per te implementuar thread-ed : ne zonen e perdoruesit dhe ne kernel. Ekziston gjithashtu nje implementim i ndermjetem. Po pershkruajme keto menyra me avantazhet dhe me disavantazhet e tyre. Metoda e pare vendos thread-ed ne zonen e perdoruesit dhe kernel nuk di asgje rreth tyre. Nje avantazh i dukshem eshte mundesia qe thread-ed ne kete menyre mund te implementohen ne sisteme shfrytezimi qe nuk suportojne thread-ed. Me pare te gjithe sistemet e shfrytezimit i perkisnin kesaj kategorie, por dhe tani ka te tille. Te gjithe keto implementime kane nje strukture te ngjashme me figuren meposhte :

Thread-ed ekzekutohen me ane te disa procedurave te tilla si : thread_create, thread_exit, thread_wait, thread_yield, por ka dhe procedura te tjera. Ne rastin kur thread-ed menaxhohen ne zonen e perdoruesit cdo procesi i duhet te kete nje tabele per thread-ed. Kjo tabele eshte analoge per tabelen e proceseve ne kernel, me dallimin se ketu ndodhen te dhenat per thread-ed. Kur nje thread ben dicka qe mund te shakatoje bllokim ne pritje qe nje proces te kryeje punen e tij, atehere thirret nje procedure sistemi gjate ekzekutimit. Kjo procedure kontrollon nese thread-i mund te vendoset ne gjendje te bllokuar.

Nqs kete rast atehere ai ruan regjistrat e tabeles se thread-eve, kerkon ne tabele per nje thread qe mund te ekzekutohet dhe ringarkon regjistrat e makines me vlerat e ketij thread-i qe do ekzekutohet. Ky kalim nga nje thread tek tjetri me nje shpejtesi te nje rendi me te larte se bllokimi i kernelit eshte nje argument i forte pro perdorimit te thread-eve ne zonen e perdoruesit. Kur nje thread per momentin perfundon se ekzekutuari, psh kur therret thread_yield, kodi i thread_yield mund te ruaje informacion ne tabelen e thread-eve. Per me teper ajo mund te therrase

Page 21: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

21

skeduluesin te pergjedhe nje thread tjeter per ekzekutim. Keto jane procedura lokale keshtu qe kjo gje eshte shume me eficiente dhe me e shpejte se nje thirrje ne kernel. Thread-ed e perdoruesit gjithashtu kane avantazhin se lejojne cdo proces te kete nje algoritem skedulimi te veten. Por pervec ketyre avantazheve qe permendem me lart kane dhe disa probleme. Se pari eshte problemi se si do implementohen thirrjet e sistemit qe realizojne bllokimin. Supozoni se nje thread lexon prej tastjeres. Atehere lejimi i thread-id te beje nje thirrje sistemi eshte e pamundur sepse kjo do ndalonte te gjitha tread-ed e tjera. Nje nga qellimet e pasjes se thread-eve eshte dhe lejimi i tyre te perdore nje thirrje sistemi, por te parandalohet qe nje thread i bllokuar te ndikoje tek te tjeret. Thirrjet e sistemit mund te modifikohen te mos jene bllokuese, por kjo do kerkonte ndryshime ne sistemin e shfrytezimit. Nje zgjidhje e tille nuk eshte e pelqyeshme sepse ne kerkonim qe ky implementim ti pershtatej sistemit ekzistues. Nje zgjidhje tjeter do ishte qe te tregohej me perpara nese kjo thirrje do ishte bllokuese. Ne disa versione te UNIX ekziston nje thirrje sistemi qe quhet select dhe qe lejon thirresin qe te tregoje nese procedura bllokon. Kjo kerkon qe te rishkruhen disa pjese te librarise se sistemit, eshte nje zgjidhje ineficiente dhe jo elegante. Nje tjeter problem vjen nga fakti se nqs nje thread nis ekzekutimin asnje thread tjeter e atij procesi nuk ekzekutohet derisa thread-i ne ekzekutim te leshoje CPU-ne. Brenda nje procesi nuk ka nderprerje clock-u qe te beje skedulimin. Nje zgjidhje e mundshme e ketij problemi eshte qe cdo sekonde te behet nje kerkese sistemi per nje sinjal. Nderprerje periodike te shpeshta nuk jane gjithmone te mundshme. Nje tjeter argument kunder thread-eve te perdoruesit eshte dhe ajo qe programuesi kerkon thread-e aty ku ato bllokohen here pas here. Keto thread-e kerkojne te bejne shpesh thirrje sistemi. Pasi eshte bllokuar kernel per te ekzekutuar kete thirrje, eshte e veshtire qe kernel te kaloje ne thread-in tjeter. Implementimi i thread-eve ne kernel. Ne kete situate eshte kernel ai qe menaxhon thread-ed. Nje skeme per kete rast paraqitet ne figuren meposhte.

Ne kete model nuk ekziston nje tabele thread-esh per cdo proces, por eshte kernel ai qe ka nje tabele thread-esh qe mban informacionet e duhura per thread-ed ne sistem. Kur nje thread do te krjijoje nje thread te ri atehere i duhet te beje nje thirrje kernel-it i cili me pas krijon thread-in dhe kete e paraqet dhe ne tabelen e thread-eve. Tabela ne kernel paraqet per cdo thread regjistrat, gjendjen si dhe informacione shtese. Informacioni eshte i njejete me ate ne zonen e perdoruesit por ketu eshte ne kernel. Te gjitha thirrjet qe bllokojne thread-ed ketu jane te implementuara ne formen e thirrjeve te sistemit, pra me nje kosto me te larte se sa thirrja e nje procedure te sistemit. Kur nje thread bllokohet kerneli mund te ekzekutoje nje tjeter thread te ketij procesi (kuptohet nje thread te gatshem per ekzekutim). Kostos se

larte te krijimit dhe te fshirjes se nje thread-i i eshte gjetur nje variant zgjidhjeje, thread-ed riciklohen. Kur nje thread fshihet shenjohet si jo i ekzekutueshtem por struktura e tij e te dhenave ne kernel nuk ndryshohet. Me pas kur nje thread i ri krijohet aktivizohet nje thread i vjeter. Ky riciklim eshte i vlefshem dhe per thread-ed e perdoruesit por per to menaxhimi nuk eshte me problem per kete kjo nuk zgjidh shume probleme. Implementimi i ndermjetem

Page 22: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

22

hread-ed qe shfaqen (pop-up thread) met e shperndare. Nje shembull per keto raste mund te

e mesazh te ri ben qe sistemi te krijoje nje thread te ri

je avantazh kryesor i ketyre thread-eve eshte meqe jane te reja, ata nuk kane regjistra , turre .

ur perdorim thread-ed pop-up

e

je

ne

-

Leksioni 7

Jane bere perpjekje per te realizuar nje implementim hibrid ne te cilin te kombinohen avantazhet e seciles metode. Figura meposhte paraqet nje skeme te mundshme :

Ne kete projektim kernel njeh vetem thread-ed te kernelit dhe i skedulon ato. Disa nga keto thread kane si perberes thread-e te perdoruesit te cilat krijohen, fshihen dhe skedulohen njelloj si thread-ed e perdoruesit ne nje proces. Ne kete proces cdo thread ne kernel ka nje bashkesi thread-e te perdoruesit qe i perdor.

T Thread-ed perdoren shpesh ne sistejete teknika se si trajtohet nje mesazh qe vjen. Tradicionalisht mund te ishte nje proces ose nje thread qe kur vjen nje mesazh bllokohet ne nje nga nje thirrje sistemi receive. Kur mesazhi vjenatehere ai pranon mesazhin dhe e proceson. Nje tjeter rast eshte qe njoftimi per njqe te trajtoje mesazhin. Thread-e te tille quhen thread-e qe shfaqen dhe jane te paraqitur ne figuren e meposhtme. Ne fig a) jepet situata para se mesazhi te kete ardhur, ne fig b) thread-i eshte krijuar pasi ka ardhe mesazhi. Nprocedurash apo elemente te tille qe duhen ruajtur. Kjo ben te mundur krijimin e shpejte te tyreThread-it te ri i jepet si detyre te procesoje mesazhin e ardhur. Arsyeja e perdorimit te thread-evepop-up eshte se vonesa mes mesazhit qe vjen dhe nisjes se procesimit eshte shume shkurte.

Kduhen bere disa plane, si psh ne cilin proces do ekzekutohet ky thread. Nqs sistemi suporton thread-ed qe te ekzekutohen nkernel, edhe thread-ed pop-up mund te ekzekutohen atje. Madthread-ed ne kernel jane me te thjeshte dhe me te shpejte se sa zonen e perdoruesit. Gjithashtu it si dhe paisjet I/O.

thread-ed pop-up ne kernel mund te aksesojne tabelat e kernel

Komuni oceseve

Nje proces vazhdimisht i ocese te tjera. Shkurtimisht po rmen

ohen dhe te thread-et. I pari

kimi mes pr duhet te komunikoje me pr

pe d tre ceshtje ketu. E para konsiston ne menyren sesi nje proces i kalon informacion nje procesi tjeter. E dyta qendron ne menyren sesi te mundesojme qe dy ose me teper procese te mos nderhyjne te njeri-tjetri ne momentet kritike. Ceshtja e trete ka te beje me varesine qe ka nje proces nga procesi tjeter, psh kur procesi A prodhon te dhena te cilat procesi B duhet ti printoje. Ne kete rast B duhet te prese derisa A te kete prodhuar disa te dhena. E rendesishme eshte te theksohet se te dy keto probleme shtreshte i thjeshte per thread-et pasi duke qene se ato ndajne te njejten zone adresash, kjo zgjidhet

Page 23: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

23

shte gare erbashket memorjen nga e cila dhe lexojne dhe aty shkruajne te dhena.

emor

cesi A e

k kohe i vjen rradha e ekzekutimit procesit A. Ai nis ekzekutimin ne ate moment ku

angim kete gare procesesh? Duhet gjete nje menyre qe te sigurohemi qe

ejashtimi i dyanshem disa zgjidhje per te arrite ne perjashtimin e dyanshem ne menyre qe kur

terrupt-et te behen jo aktive. interruptet te mos funskiononin qe nga momenti kur nje proces te

te caktivizoje

lehte. Dy problemet e tjera shtrohen dhe per thread-ed dhe zgjidhja per to eshte analoge me zgjidhjen qe jepet per proceset. Proceset ne ku Proceset kane te pM je e perbashket mund te jete memorja qendrore ose mund te jene skedare qe dy procese i kane te perbashket. Gjithsesi lloji i memorjes nuk ndikon ne problemin qe po shtrojme. Le te japim nje shembull per te ilustruar me mire kete rast. Kemi nje proces i cili kerkon te printoje nje skedar. Ai vendos emrin e ketij skedari ne nje direktrori te posatshme per kete gje. Nje proces tjeter kontrollon here pas here nese ka skedare ne kete direktori qe duhen printuar. Nese po atehere i printon ato dhe heq emrin e tyre nga direktoria. Mendoni sikur direktoria ka nje numer te madh vendesh te cilat paraqiten me numrat 0, 1, 2, 3…dhe secili prej tyre mban nje emer skedari. Gjithashtu ekzistojne variabli out i cili shenjon ne skedarin tjeter qe duhet printuar, dhe in qe shenjon ne zonen e lirshme ne direktori. Ne nje moment te caktuar vendet 0,1,2, 3 jane bosh sepse skedaret qe ishin aty jane printuar, dhe vendet 4, 5, 6 jane plot me emrat e skedareve qe duhen printuar. Ne te njejtin moment proceset A dhe B duan te vendosin skedare per tu printuar. Procesi A lexon variablin in dhe sheh qe vendi i lire bosh eshte 7. Kete vlere proruan ne nje variabel te perkohshem qe ka pikerisht per kete qellim. Ne kete moment ndodh nje clock interrupt i cili ia kalon CPU-ne procesit B. Procesi B gjithashtu lexon variablin in, merr vleren 7 per vendin e lire bosh dhe ruan kete vlere ne variablin e perkohshem qe ka pikerisht per kete qellim. Ne kete moment te dy proceset mendojne se 7 eshte vendi bosh. Procesi B vazhdon te kete ne dispozicion CPU-ne, ai ruan emrin e skedarit qe do printoje ne vendin 7 dhe variablit in i jep vleren 8. Pas pae la. Ne variablin e perkohshem qe ka, gjen se pozicion i lire eshte 7, vendos emrin e skedarit ne kete pozicion duke fshire ne kete menyre emrin qe procesi B sapo kishte vendose. Procesi A i jep vleren 8 variablit in. Nuk ka probleme ne direktorine e printimit, keshtu qe printeri do printoje skedarin e procesit A, kurse perdoruesi i procesit B pret me kot te marre skedarin e printuar, ai s'do printohet asnjehere. Nje gjendje e tille quhet "kushte gare" dhe ndodh kur dy ose me teper procese kerkojne te lexojne ose te shkruajne te dhena, dhe rezulatati varet nga momenti se kur ekzekutohet procesi. Pjeset kritike Po si mund ta shmkur nje proces perdor variabla te perbashket proceset e tjera nuk mund te kryejne te njejten gje. Problemi mesiper ndodhi sepse procesi B nis te perdore variablat e perbashket para se procesi A te kishte perfunduar punen me ta. Nje procesi shpesh i duhet qe te aksesoje keto variabla ose skedare te perbashket dhe kjo pjese e programit quhet dhe zone kritike ose pjese kritike. P Tani po trajtojmenje proces eshte duke perpunuar te dhenat e perbashketa ne pjesen kritike, asnje proces tjeter nuk do te hyje ne pjesen e vet kritike dhe te mos shkaktoje probleme. In Nje zgjidhje do ishte qehyje ne pjesen kritike dhe te riaktivizohen kur procesi del nga pjesa kritike. Duke mos funksionuar interruptet, CPU nuk do kaloje nga njeri proces ne tjetrin dhe ne kete menyre procesi ne ekzekutim mund te perpunoje te dhenat e perbashketa pa pase nderhyrjen e proceseve te tjere. Kjo zgjidhje nuk eshte e preferuar sepse kjo i jep te drejten nje procesiinterruptet. Po sikur ky proces te "harroje" ti aktivizoje perseri ? Ky moment do ishte fundi i sistemit. Kjo zgjidhje gjithashtu nuk funsksionon per sistemet me shume procesore, sepse

Page 24: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

24

e bllokimi i interrupteve eshte nje teknike e perdorur nga stemi

ariablat celes idhje te dyte te mundshme le te shohim nje zgjidhje nga ana e software. Le te

arrim

rektoria qe pame ne shembullin me lart.

gjidhja e Peterson. .L. Peterson dha nje zgjidhje te thjeshte per kete problem. Zgjidhja jepet ne

#define FALSE 0

/* per te treguar numrin e proceseve */

FALSE*/

r */ /

UE)

_region (int process) le zonen kritike */

kete moment procesi 0 therret

bllokohen vetem interruptet e CPU-se qe ekzekuton procesin, por procese te tjere qe ekzekutohen nga CPU-ja tjeter mund te nderhyjne. Si perfundim mund te themi ssi i shfrytezimit por nuk preferohet te kryhet nga proceset e perdoruesit. V Si nje zgjm nje variabel te perbashket ( qe do sherbeje si celes ) dhe e inicializojme me 0. Kur nje proces do te hyje ne pjesen kritike, me pare kontrollon kete celes. Nqs ka vleren 0, atehere procesi i jep vleren 1 dhe hyn ne zonen kritike. Nqs celesi ka vleren 1, atehere procesi pret derisa vlera e celesit te behet 0. Pra vlera 0 do te thote se asnje proces nuk eshte ne pjesen e tij kritike, kurse vlera 1 do te thote se nje proces eshte ne pjesen kritike. Fatkeqesisht kjo zgjidhje ka te njejtin fat si diSupozojme se nje proces lexon celesin dhe shikon se eshte zero. Para se te jape vleren 1 variablit celes nje tjeter proces nis ekzekutimin dhe vendos vleren 1 te variabli celes. Kur procesi i pare te nise ekzekutimin, edhe ai do vendose vleren 1 te variabli celes. Tani te dy proceset jane ne pjeset e tyre kritike. Z Ne vitin 1981 Galgortimin e meposhtem i cili eshte ne gjuhen ANSI C. Per thjeshtesi nuk po paraqesim prototipet e ketij programi, por vetem kete pjese kodi : #define TRUE 1 #define N 2

int turn; /* tregon se kush e ka rradhen */ int interested[N]; /* ne fillim te gjitha vlerat i ka 0

void enter_region(int process) /* procesi eshte 0 ose 1*/ {

other; /* numri i procesit tjeter */ int other = 1 − process;

procesit */ /* e kunderta e interested[process] = TRUE;

eresua /* trego qe eshte i int urn = p t rocess; /* vendos nje shenje * while (turn == process && interested[other] == TR }

void leave /* procesi, eshte ai qe po {

nterested[process] = FALSE; i }

ariablat e perbashket ( pra para se te hyje ne pjeset kritike), therret Cdo proces, para se te perdore venter_region me parameter numrin e vet te procesit. Kjo thirrje do te shkaktoje pritje derisa te jete gati per te hyre. Pasi ka kryer pune me variablat e perbashket, procesi therret leave_region per te tregon se ndonje proces tjeter mund te hyje ne pjesen e vet kritike. Fillimisht asnje proces nuk eshte ne pjesen e tij kritike. Neenter_region. Ai vendos vleren True ne elementin e tij ne tabele, dhe turn e ben 0. Perderisa procesi 1 nuk eshte i interesuar, enter_region kthen kontrollin menjehere. Nqs procesi 1 tani therret enter_region, ai bllokohet ne kete pike derisa interested[0] te behet False. Kjo gje ndodh vetem kur procesi 1 therret leave_region, procedure e cila mundeson daljen nga pjesa kritike.

Page 25: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

25

. Te

ur nje proces do te hyje

hues-konsumator r te perbashket i cili ka nje madhesi fikse. Njeri nga keto

e thjeshte, por eshte edhe ketu nje situate gare. Per te mbajtur shenim umrin

e pari teston nese count eshte 0. Nqs po

japim kodin e ketyre procedurave :

define N 100 /* numri i vendeve ne buffer*/ /

E) { /* cikel i pafundem*/ eter */

fle*/

d consumer(void)

) { /* cikel i pafundem*/ h atehere fle*/

Tani te shqyrtojme rastin kur proceset thuajse ne te njejten kohe therrasin enter_regiondy keto procese do ruajne me pare numrin e tyre ne turn. Ajo qe llogaritet eshte vlera e fundit, i pari qe shkruan kete vlere ne turn i mbivendoset kjo vleredhenie. Supozojme se procesi 1 ruan vleren i fundit, pra turn ka vleren 1. Kur te dy proceset arrijne ne ciklin while, procesi 0 e ekzekuton ate zero here dhe hyn ne zonen e tij kritike, kurse procesi 1 hyn ne cikel, nuk hyn ne zonen e tij kritike dhe pret derisa procesi 0 te dale nga zona e vet kritike. Kjo zgjidhje eshte e sakte dhe ne thelb ajo qe realizon eshte kjo : kne pjesen e vet kritike, me pare kontrollon nese mund te hyje. Nqs hyrja nuk i mundesohet, procesi hyn ne nje cikel pritjeje. Kjo jo vetem qe ngadalson punen e CPU-se por dhe mund te kete efekte te padeshirueshme. Psh mendoni se ne nje kompjuter ka dy procese H me prioritet te larte dhe L me prioritet te ulet. Skedulimi duhet te jete i tille qe ne cdo moment kur H eshte ne gjendje gati , ai te mund te nise ekzekutimin. Ne nje moment te caktuar L eshte ne pjesen e tij kritike dhe H behet gati per ekzekutim. H tani bllokohet ne pritje te L. Meqe L nuk skedulohet kurre nderkohe qe H eshte ne ekzekutim, L nuk del kurre nga pjesa e vet kritike. Problemi prod Dy procese kane nje buffeprocese, prodhuesi, vendos informacionin ne buffer kurse procesi tjeter, konsumatori, merr keto te dhena nga buffer-i. Problemi nis kur prodhuesi do te vendose te dhena ne buffer, por ai eshte i mbushur. Zgjidhja mund te ishte qe prodhuesi te "fleje" per pak kohe, dhe te "zgjohet" kur konsumatori te marre informacionin nga buffer. Ne menyre te ngjashme nqs konsumatori do te marre te dhena nga buffer, por ai eshte bosh, atehere konsumatori duhet te "fleje" derisa prodhuesi vendos dicka ne buffer. Kjo duket dicka n e te dhenave ne buffer do perdorim nje variabel counter. Nqs maksimumi i te dhenave qe mban nje buffer eshte N, atehere prodhuesi se pari do kontrolloje nese count eshte N. Nqs count eshte N atehere prodhuesi do "fleje", nqs count eshte me i vogel se N atehere prodhuesi do vendose te dhena ne buffer dhe do rrise vleren e count. Konsumatori ka nje procedure te ngjashme. Satehere ai "fle" per pak kohe kurse nqs count nuk eshte 0 atehere ai merr te dhena nga counter dhe zvoglon counter. Secili proces teston nese nese procesi tjeter duhet te "zgjohet" e nqs po mundeson zgjimin. Me poshte po #int count = 0; /* numri i te dhenave ne buffer*

d producer (void) voi{ int item;

while (TRU

item = produce_item(); /* prodhon elementin tj if (count == N) sleep(); /* nqs buffer eshte plot atehere insert_item(item); /* vendos elementin ne buffer*/

uffer*/ count = count + 1; /* rrit numrin e te dhenave ne b if (count == 1) wakeup(consumer); /* a ishte buffer bosh? */ } } voi{ int item;

while (TRUE

if (count == 0) sleep(); /* nqs buffer eshte bos

Page 26: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

26

buffer*/

Procedura insert_item dhe remove_item, te cilat nuk jane te trajtuara me lart, mundesojne rrjen

gare ndodh sepse aksesi per variablin count

atori nuk eshte logjikisht duke fjetur ne kete moment prandaj thirrja wakeup mbe

i ketu eshte se nuk duhet nise nje thirrje wakeup nje procesi i cili ende nuk ka

emaforet ishte e E.W. Dijkstra i cili sugjeroi perdorimin e nje variabli qe ruan numra te plote.

a eshte me e madhe se 0. Nqs eshte e

semaforit. Nqs nje ose me teper procese jane duke fjetur ne ate

lemit Prodhues-Konsumator duke perdore semaforet.

pedef int semaphore; /* semaforet jane nje lloj i vecante numrash int*/

int item;

while (TRUE) { /* cikel i pafundem*/ vendose ne buffer*/

ke*/

item = remove_item(); /* merr nje element nga buffer */ count = count − 1; /* zvogelon numrin e te dhenave ne if (count == N − 1) wakeup(producer); /* a ishte buffer plot? */ consume_item(item); /* printo elementin*/ } } ma dhe vendosjen e te dhenave ne buffer. Le ti rikthehemi "gares" te ketij shembulli. Kjoeshte i pakushtezuar. Mund te ndodhe situata e meposhtme. Buffer eshte bosh dhe konsumatori sapo ka lexuar count per te pare nese eshte zero. Ne kete moment skeduluesi vendos te ndaloje ekzekutimin e konsumatorit dhe te nis ekzekutimin prodhuesi. Prodhuesi vendos te dhenen ne buffer, rrit count dhe ve re qe count tani eshte 1. Duke qene tani 1, count do kete qene 0 me pare, prandaj konsumatori do kete qene duke fjete, per kete prodhuesi therret wakeup per te zgjuar konsumatorin. Konsumhu t. Kur konsumatori rinis ekzekutimin teston vleren e count qe kontrolloi me pare, dhe meqe ajo eshte 0, atehere do fleje. Shpejt dhe prodhuesi do mbushe bufferin dhe te dy do flejne gjithe kohes. Problemfjetur. Kjo quhet ndryshe dhe thirrje e humbur. S Idea Ky variabel numron numrin e zgjimit. Ky varibel quhet semafor. Nje semafor mund te kete vleren 0 qe tregon se asnje wakeup nuk eshte derguar, ose dhe vlera 1 ose me teper per te treguar se ka vlera qe pozitive pr zgjimet e dreguara por te parealizuara. Veprimi down ne nje semafor kontrollon nese vlertille, ai zvoglon vleren. Nqs vlera eshte 0 do te thote se procesi eshte duke fjetur pa arritur ne marrin nje thirrje down. Kontrollimi i vleres, ndryshimi i saj dhe, kur duhet, kalimi ne fjetje, duhet kryer ne nje veprim te vetem atomik. Kjo sigurohet qe pasi nje veprim semafori ka nisur, asnje proces tjeter mund te aksesohet para se e perfundoje veprimi. Ky atomicitet eshte me rendesi ne problemet e kushteve te gares. Veprimi up rrit vleren esemafor pa mundur te plotesoje nje veprim te meparshem down. Ne kete rast njeri nga keto procese zgjidhet dhe lejohet te plotesoje thirrjen e down. Pas kesaj, pas nje up ne nje semafor me procese qe flejne ende, semafori do jete perseri 0, por ka nje proces me pak qe flen. Veprimi i rritjes te semaforit dhe zgjimit te nje procesi eshte gjithashtu veprim i pandashem. Zgjidhja e prob Kodi qe jepet meposhte eshte nje zgjidhje duke perdore semaforet : #define N 100 /* numri i vendeve ne buffer*/ tysemaphore mutex = 1; /* kontrollon aksesin ne pjesen kritike*/ semaphore empty = N; /* numeron vendet bosh*/ semaphore full = 0; /* numeron vendet plot*/ void producer(void) { item = produce_item(); /* prodhon dicka per ta down(&empty); /* zvoglon empty*/ down(&mutex); /* hyn ne zonen kriti

Page 27: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

27

r*/

plot*/

consumer(void)

int item;

eve plot*/

bosh*/

Zgjidhja e mesiperme perdor tre semafore, njeri i quajtur full qe mban numrin e vendeve qe

utex eshte nje version i thjeshte i semaforeve, kur nuk perdoren semaforet e tjere. Mutex

je variabel qe mund te jete ne njeren nga dy gjendjet : i hapur ose i kycur.

tat e thread-eve ne zonen e perdoruesit nuk eshte problem qe disa thread-e te kene

gjigje. Se pari, disa nga strukturat e perbashketa, si psh semaforet, mund

insert_item(item); /* vendos elementin ne buffe up(&mutex); /* le zonen kritike*/ up(&full); /* rrit numrin e vendeve } } void{ while (TRUE) { /* cikel i pafundem*/ down(&full); /* zvoglon numrin e vend down(&mutex); /* hyn ne zonen kritike*/ item a= remove_item(); /* merr nje element nga buffer*/ up(&mutex); /* le zonen kritike*/ up(&empty); /* rrit numrin e vendeve consume_item(item); /* proceson kete te dhene qe mori*/ } } jane plot, njeri qe quhet empty dhe qe mban numrin e vendeve qe jane bosh, dhe nje i trete qe quhet mutex i cili sherben per te siguruar qe prodhuesi dhe konsumatori nuk aksesojne bufferin ne ne njejten kohe. Full fillimisht inicializohet me 0, empty inicializohet me numer te njejte me numrin e pozicioneve total te bufferit dhe mutex incializohet me 1. Semaforet fillimisht inicializohet me 1 dhe perdoren nga dy ose me shume procese per te siguruar qe dy ose me teper procese te mos nderhyjne ne pjeset kritike te njeri tjetrit. Semafore te tille quhen semafore binare. Semafori mutex perdoret per te perjashtuar mundesine qe dy procese lexojne njeheresh bufferin dhe variablat e perbashket. Kjo eshte me rendesi ne parandalimin e kaosit. Semaforet full dhe empty nevojiten per te siguruar qe te mos ndodhin situata te padeshiruara, ne kete rast parandalojne mundesite qe prodhuesi te ndaloje ekzekutimin kur buffer eshte plot ose konsumatori te ndaloje ekzekutimin kur bufferi eshte bosh. Mutex Meshte i mire vetem per menaxhim te perjashtimeve te dyanshme per nje nje pjese kodi te perbashket. Ata jane te thjeshte ne implementim, gje kjo qe i ben te perdorshem ne thread-ed ne zonen e perdoruesit. Mutex eshte nShifet qarte qe nevojitet vetem nje bit per te ruajtur vleren e tij, por shpesh ne praktike perdoret nje numer i plote, per te cilin 0 paraqet gjendjen e hapur dhe nje numer tjeter i ndryshem nga 0 paraqet gjendjen te kycur. Nje proces therret proceduren mutex_lock kur i duhet akses ne pjesen kritike. Kur mutex eshte i hapur ( gje qe do te thote se pjese kritike mund te aksesohet) thirrja ka sukses dhe procesi mund te hyje ne pjesen e tij kritike. Puna ndryshon kur mutex eshte i kycur. Ne kete rast procesi bllokohet derisa procesi tjeter qe eshte nje pjesen kritike del dhe therret proceduren mutex_unlock. Me pakeakses ne te njejtin mutex, perderisa te gjithe thread-ed veprojne ne nje zone te perbashket. Ne shumicen e zgjidhjeve te tilla si algortimi i Peterson ose semaforet ka nje supozim qe disa procese kane akses ne nje pjese te perbashket memorjeje. Nqs proceset kane zona te vecuara adresash, sic e kemi thene ne, atehere si mund te kene te perbashket variablin turn ne algoritmin e Peterson, ose semaforet, ose buffer-at? Per kete ka dy perte ruhen ne kernel dhe mund te aksesohen duke perdore thirrje te sistemit. Kjo eliminon problemin. E dyta mundesi : shume sisteme shfrytezimi moderne, duke perfshire ketu UNIX dhe

Page 28: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

28

dy ose me shume procese kane te perbashket nje pjese te madhe te zones se

unikimi mes proceseve me ane te semaforeve ju duket mire?? Gaboheni! Vereni me

ehet nje

ucer( );

; ure consumer( );

nitor;

Monitoret kane avantazh qe mundesojne qe ne nje moment vetem nje proces mund te

it. Kur nje

Windows, ofrojne nje mundesi qe proceset te kene te perbashket nje pjese te zonave te adresave. Ne kete menyre buffer-at dhe struktura te tjera mund te jene te perbashket per dy ose me shume procese. Rasti me i keq, kur asnjera nga zgjidhjet me lart eshte e mundur, mund te perdoret nje skedar i perbashket. Ne rastin kuradresave, ose komplet kete zone, atehere nuk behet i qarte dallimi mes proceseve dhe thread-eve. Por nuk duhet harruar se gjithsesi dy procese kane cilesi te tjera qe jane vecanta per dy proceset, dhe qe thread-ed i kane te perbashketa. Gjithashtu disa procese qe kane nje pjese te zones se adresave te perbashket nuk jane aq eficiente sa thread-ed e perdoruesit. Monitoret Komkujdes rendin e down para shtimit ose heqjes se elementit nga buffer. Provoni te nderroni vendet te down tek prodhuesi. Ne kete menyre mutex zvogelohet para empty ne vend qe te zvoglohet pas tij. Sikur bufferi te ishte plot prodhuesi do bllokohej, me mutex me vleren 0. Heren tjeter qe konsumatori te perpiqej te aksesonte bufferin, ai do bente nje down per mutex, i cili tani eshte 0, dhe ta bllokoje. Te dy proceset do qendrojne te bllokuar dhe asnje pune nuk do behej me teper. Ky problem tregohet per te vene ne dukje kujdesin qe duhet treguar kur perdorim semaforet. Per te bere me te thjeshte ndertimin e programeve te sakte eshte propozuar qe te bsinkronizim te nje niveli me te larte te quajtur monitor. Nje monitor eshte nje grumbull procedurash dhe variablash dhe strukturash te grupuara bashke ne nje modul. Proceset mund te therrase ne cdo moment procedurat te nje monitori, por nuk mund te akesesoje direkt strukturat e brendshme te monitorit. monitor example integer i; condition c;procedure prod· · · endproced· · · end; end mo aktivizojne nje monitor. Monitoret jane nje konstrukt ne nje gjuhe programimi, e tille qe kompilatori i trajton ndryshe nga procedurat e tjera. Zakonisht, kur nje proces therret nje monitor, instruksionet e para te procedures do te kontrolloje nese ndonje proces tjeter eshte aktiv ne monitor. Nqs gjen nje proces tjeter aktiv ne kete monitor, atehere thirrja bllokohet. Nqs nuk ka ndonje proces tjeter ne monitor, atehere procesi thirres mund te hyje ne monitor. Nje monitor zakonisht implementohet me mutex ose me ane te semaforeve binare. Ne cdo rast personi qe shkruan monitorin i nevojitet te dije se duke kombinuar zonat kritike ne procedura monitori atehere asnje grup procesesh nuk mund te ekzekutoje pjeset e veta kritike paralelisht. Dy veprimet wait dhe signal mundesojne veprime me variablat e kushtprocedure monitori veren se nuk mund te vazhdoje atehere ai ben nje wait ne nje variabel kusht, psh full. Ky veprim shkakton thirrjen per bllokim procesi. Kjo lejon qe te vazhdoje nje proces te cilit me pare i ishte ndaluar te vazhdonte. Konsumatori mund te zgjoje nje shok te tij duke i bere nje sinjal. Per te shmangur pasjen e dy proceseve ne monitor ne te njejten kohe na nevojitet nje rregull qe tregon se cfare duhet te ndodhe pas nje thirrjeje signal. Nje zgjidhje eshte qe mund te

Page 29: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

29

shtezimit nuk jane numratore, ata nuk gumbullojne sinjale per ti perdore me

mer

nsert(item: integer);

nt = N then wait(full);

nal(empty)

emove: integer;

nt = 0 then wait(empty);

signal(full)

;

ucer;

ile true do

produce_item; em)

ure consumer;

ile true do

ProducerConsumer.remove;

eprimet wait dhe signal duken shume te ngjashem me sleep dhe wakeup. Ata jane te

impl

lasa our_monitor permban bufferin, variablat e administrimit dhe dy metoda te

jete qe pas nje procesi signal monitori duhet te dale menjehere, pra e thene ndryshe, signal duhet te jete thirrja e fundit. Variablat e kuvone ( sic benin semaforet ). Nqs nje variabel i kushtezuar le sinjal por askush nuk pret per te, atehere ky sinjal humbet. E thene ndryshe nje wait duhet te jete pas nje signal. Ky rregul e ben implementimin me te thjeshte. monitor ProducerConsucondition full, empty; integer count; procedure i begin if cou insert_item(item); count := count + 1: if count = 1 then sig end; function r begin if cou remove = remove_item; count := count − 1; if count = N − 1 then end; count := 0end monitor; procedure prodbegin wh begin item = ProducerConsumer.insert(it end end; procedbegin wh begin item = consume_item(item) end end;

Vngjashem, por me nje diference te madhe se sleep dhe wakeup deshtonin sepse nderkohe qe njeri proces perpiqej te flinte, tjetri perpiqej ta zgjonte. Me monitoret kjo gje nuk mund te ndodhe. Me poshte po japim nje zgjidhje te problemit konsumator-prodhues duke pare nje monitor te ementuar ne Java. Zgjidhja konsiston ne 4 klasa. Klasa ProducerConsumer krijon dhe nis dy thread-e, p dhe c. Klasa e dyte eshte ajo e prodhuesit, producer. Klasa e trete eshte ajo e konsumatorit, consumer. Klasa our_monitor permban dy thread-e te sinkronizuar qe vendosin te dhena ne buffer dhe marrin te dhena nga ai. Ne kete shembull po tregojme dhe kodin e insert dhe remove. Ksinkronizimit. Kur prodhuesi eshte brenda metodes insert, ai e di me siguri se konsumatori nuk

Page 30: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

30

ublic class ProducerConsumer { konstante qe merr vlere sa madhesia e buffer

s

atic class producer extends Thread {

int produce_item ( ){ … } // prodhimi aktual

tic class consumer extends Thread {

cikel i pafundem

void consume_item (int item) { … } // konsumi aktual

atic class our_monitor { // ky eshte monitori

et

buffer eshte plot, fli r

je

blic synchronized int remove( ) {

// nqs buffer eshte bosh, fli

o_sleep() { try{wait( ); }

mund te jete aktiv ne metoden remove. Vetem ne kete menyre mund te modifikohet bufferi pa problemet e kushteve te gares. Variabli count mban ban numrin e te dhenave qe ndodhen ne buffer, pra merr vlera nga 0 deri ne N-1. Variabli lo eshte indexi i vendit te bufferit nga ku mund te marrim elementin, kurse variabli hi tregon indexin e vendit te buffer ku vendoset elementi. Kur nuk ka asnje element ne buffer lo=hi=0. Procedurat wait dhe notify jane analoge me sleep dhe wakeup. p static final int N = 100; // static producer p = new producer(); // inicializon nje thread prodhues

r static consumer c = new consumer(); // inicializon nje thread konsumato static our_monitor mon = new our_monitor(); // inicializon nje monitor public static void main(String args[ ]) {

p.start(); // nis thread-i prodhue c.start(); // nis thread-i konsumator } st

public void run( ) { int item;

{ // cikel i pafundem while(true) item = produce_item(); mon.insert(item); } }

ivate pr } sta

public void run() { int item;

) { // while(true item = mon.remove(); consume_item (item); } }

vate pri }

st private int buffer[ ] = new int[N];

0; // numruesi dhe index- private int count = 0, lo = 0, hi = public synchronized void insert (int val) {

if(count == N) go_to_sleep(); //nqs buffer [hi] = val; // vendos nje element ne buffe hi = (hi + 1) % N; // vrima ku mund te vendosim elementin count = count + 1; // tani ka nje element me teper ne buffer if(count == 1) notify( ); // nqs konsumatori po flinte, tani zgjo }

pu int val;

== 0) go_to_sleep( ); if(count val = buffer [lo]; // merr nje element nga buffer lo = (lo + 1) % N; // vendi nga ku mund te marrim elementin count = count − 1; // tani ka nje element me pak ne buffer if(count == N − 1) notify(); // nqs prodhuesi po flinte, zgjoje return val; }

vate void go_t pri

Page 31: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

31

Leksioni 8

catch{ InterruptedException exc) {}; } } }

Skedulimi i proceseve

Zakonisht ne nje kompjuter disa procese konkurojne per marrjen e kontrollit te CPU-se.

Kjo nd

errnin inputin nga shiritat magnetike. Ne keto sisteme goritm

ejtime me kompjuterat personale. Se pari ne shumicen e kohes

rim i

Ne keto sisteme shume

e duhur per tu ekzekutuar, mendon qe te beje sa e efic

ocesi roces alternon veprimet e procesimit me veprimet I/O. Zakonisht CPU-ja

e tille

odh kur ne te njejten kohe jane disa procese ne gjendjen te gatshme per ekzekutim. Pjesa e sistemit te shfrytezimit qe merret me kete perzgjedhje quhet skedulues kurse algoritmi qe perdoret ne kete rast quhet algoritem skedulimi. Sistemet batch te dikurshme mal i i skedulimit ishte i thjeshte, mjaftonte te ekzekutohej procesi tjeter ne shirit. Sistemet timesharing shnderrojne algortimin e skedulimit ne nje algoritem kompleks duke pase disa perdorues qe kerkojne sherbim. Situata ndryshoi ne dy dreshte vetem nje proces aktiv. Nje perdorues qe editon tekstin ne nje editor teksti veshtire se mund te jete duke kompiluar dhe nje program ne sfond. Kur nje perdorues shtyp komanden ne editorin e tekstit skeduluesi nuk ka shume pune per te bere, nje editori i tekstit eshte mundesia e vetme. Se dyti, kompjuterat sot po ecin me ritme te shpejta dhe CPU-ja nuk eshte me nje burralle. Sot shumica e programeve te kompjuterave personale kufizohen nga shpejtesia me te cilen nje perdorues jep te dhenat, dhe jo nga shpejtesia e procesimit te CPU-se. Edhe po te jene dy programe ne ekzekutim, nje editor teksti dhe nje spreadsheet, nuk ka rendesi se cili e ka rradhen sepse ndoshta te dy bllokohen ngaqe perdoruesi vonon te jape te dhenat. Situata ndryshon kur behet fjale per workstation dhe per servera.procese mund te jene ne gare per te marre kontrollin e CPU-se, keshtu qe skedulimi ne keto raste ka rendesi. Psh kur CPU duhet te zgjedhe mes nje procesi qe updaton ekranin pasi nje perdorues ka mbyllur dritaren dhe nje proces qe dergon nje mail. Nqs procesi qe mbyll dritaren ne ekran pret 2 sekonda derisa te niset maili, atehere perdoruesi do ankohej per sistemin shume te ngadalte. Nderkohe sikur te vonohej dergimi i nje maili 2 sekonda, nderkohe te pastrohej ekrani , kjo nuk do vihej re. Ne kete rast skedulimi eshte me rendesi. Skeduluesi, pervec se percakton procesin m iente perdorimin e CPU-se. Kjo sepse kalimi nga nje proces ne nje tjeter eshte me kosto te larte. Le te shohim se cfare hapash duhen bere per te kaluar nga nje proces tek tjetri. Se pari ndodh kalimi nga user mode ne kernel mode. Me pas ruhet gjendja e procesit, pra ruhen vlerat ne regjistrat e tij, vlerat e regjistrave ne tabelen e proceseve ne menyre qe te ringarkohen me vone. Nje proces i ri duhet zgjedhe ne baze te algortimit te skedulimit. MMU duhet te ringarkohet me harten e memorjes se procesit te ri. Me ne fund nis nje proces i ri. Sjellja e nje pr Thujase cdo pvepron per pak kohe pa nderprerje dhe me pas behet nje thirrje sistemi per te lexuar (ose per te shkruar ) te dhena nga nje skedar. Kur kjo thirrje sistemi perfundon, CPU-ja rinis veprimet. Disa procese kalojne shumicen e kohes duke kryer veprime procesimi. Procese tquhen procese te kufizuar nga llogaritjet. Te tjere procese kalojne shume kohe duke kryer veprime I/O. Keto procese quhen ndryshe dhe procese te kufizuar nga I/O. Proceset e kufizuar nga llogaritjet kane ne aktivitet CPU-ne per nje kohe te gjate dhe nderprerje te rralla te I/O, kurse proceset e kufizuar nga I/O kane CPU-ne me pak ne aktivitet por shpesh presin per paisjet I/O. Vini re qe ketu nje faktor kyc eshte gjatesia e aktivitetit te CPU-se, dhe jo gjatesia e aktivizimit te paisjeve I/O. Proceset e kufizuar nga I/O jane te tilla jo sepse nuk bejne shume kalkulime ndermjet dy kerkesave per I/O, dhe jo sepse kane kerkesa te vecanta per periferiket I/O.

Page 32: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

32

e skedulimi shtrohet pyetja se ne cilat momente duhet bere skedulimi. Jane disa

in kur nje proces perfundon. Ky proces uk m

t tjeter skedulimi eshte kur nje proces eshte bllokur ne pritje te nje paisjeje I/O, ose

I/O. Nqs interrupt ndodh vjen nga

ndahen ne dy kategori. Nje algoritem quhet nonpreemptive nese err nj

procesi lejohet te ekzekutohet ne nje interval kohe i

edulimit me sistemesh nevojiten algoritme skedulimi te ndryshme. Kjo sepse

steme

batch nuk ka perdorues te padurueshem qe presin nje pergjigje te shpejte. Pra

jedis me perdorues iteraktiv duhet medoemos te perdoret nje algoritem preeptive

hte e domosdoshme sepse procesi e di qe nuk

ashketa te algoritmeve te skedulimit shume ne pune te gjithe pjeset e sistemit.

Kur duhet ber Me te drejte mund tesituata kur duhen marre vendime skedulimi. Se pari, kur nje proces krijohet merret nje vendim skedulimi, duhet te ekzekutohet procesi femije apo duhet te vazhdoje ekzekutimin procesi i ri. Perderisa te dy proceset jane ne gjendjen gati per ekzekutim, eshte normale qe nuk eshte problem nese mund te zgjidhet njeri nga keto dy procese apo tjetri. Nje vendim skedulimi merret gjithashtu ne momentn und te ekzekutohet me, keshtu qe duhet zgjedhe nje tjeter proces per tu ekzekutuar. Ky proces do merret natyrisht nga rradha e proceseve qe jane ne gjendjen gati per ekzekutim. Nqs asnje proces nuk eshte ne gjendje te tille, atehere nis ekzekutimin nje proces i sistemit i tille per kete moment. Momenne nje semafor. Ne kete moment duhet zgjedhe per ekzekutim nje tjeter proces. Shpesh arsyeja e bllokimit te nje procesi A eshte se ai pret te marre te dhena nga nje proces B. Per kete nje vendim i mire do ishte qe pas bllokimit te procesit A te niste ekzekutimin pikerisht procesi B. Mirepo problemi eshte se skeduluesi nuk ka nje informacion per kete. Nje moment i katert eshte kur ndodh nje interrupt per nje paisje I/O e cila ka perfunduar punen, atehere rinis procesi i cili me pare duhet te jete bllokuar nga kjo paisje dhe qe tani eshte ne gjendjen gati per ekzekutim. Eshte ne dore te skeduluesit te vendose per te nise punen pikerisht ky proces, apo te zgjedhe per ekzekutim nje tjeter proces nga rradha e proceseve te gatshme. Algoritmet e skedulimitm e proces per ekzekutim dhe e lejon te vazhdoje derisa te bllokohet ( duke kerkuar te dhena nga ne paisje I/O ) ose derisa te leshoje vete kontrollin e CPU-se. Ky algoritem nuk do ndaloje nje proces edhe sikur ai te jete duke u ekzekutuar per ore te tera. Asnje vendim skedulimi nuk merret ne mes te nje clock interrupt-t. Pasi eshte kryer nje clock interrupt, gjithmone rinis procesi qe po ekzekutohej para se te behej kjo interrupt. Nje algoritem eshte preemptive kurfiksuar. Nqs ne fund te ketij intervali procesi eshte ende duke u ekzekutuar, atehere ai nderpritet nga skeduluesi dhe zgjidhet nje tjeter proces per te nise ekzekutimin. Kur kryhet nje clock interrupt kontrolli i kalon CPU-se dhe skeduluesit. Nqs nuk ka nje clock atehere skedulimi sipas nje algoritmi nonpreeptive. Kategorite e sk Ne lloje te ndryshsi te ndryshme kane qellime te ndryshme dhe se skedulimi duhet te permiresohet jo ne baze te nje kriteri te vetem. Tre sisteme qe dallojne jane : sistemet batch, sistemet iteraktive si dhe sistemet real time. Ne sistemetnuk eshte problem nese perdoren algoritme preemptive ne nje intervale te gjate kohos ose algoritme nonpreemptive. Kjo ben te rritet performanca dhe te zvoglohet kalimi nga nje proces ne tjetrin. Ne nje mper te penguar qe nje proces te bllokoje te tjeret. Ne sistemet real time preemption nuk esmund te vazhdoje per nje kohe te gjate, ai shpesh kryen nje pjese te punes dhe bllokohet. Qellimet e perb Ne synim i perbashket eshte te mbahen sa me Nqs CPU dhe te gjithe periferiket I/O jane aktiv gjate gjithe kohes behet me teper pune ne sekonde sesa nje pjese e tyre te jene joaktive.

Page 33: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

33

Mire do ishte qe ne memorje te kishim edhe procese te kufizuar nga llogaritjet dhe procese te kufizuar nga I/O. Nqs do vepronim ndryshe, qe me pare te ekzekutonim proceset e kufizuar nga llogaritjet dhe me pas te ekzekutonim proceset e kufizuar nga I/O do te kishim me pak eficiense. Kur te ekzekutohen proceset e kufizuar nga llogaritjet CPU-ja do ishte shume e zene, kurse periferiket do rrinin pasive. Kur te nisnin punen proceset e kufizuar nga I/O, CPU-ja do rrinte pasive dhe proceset do konkuronin per periferiket. Ekzistojne disa parametra qe masin performancen e sistemit dhe qe jane :

Throughput, qe jep numrin e puneve qe kryen sistemi ne nje ore. Dihet qe eshte me mire te kryhen 50 pune ne nje ore sesa te kryhen 20 pune ne nje ore.

Turnaround time jep mesataren statistikore nga momenti qe nis nje pune derisa te perfundoje kjo pune. Ajo mat se sa ka prite mesatarisht perdoruesi per te marre rezultatin. Per kete madhesi eshte me mire vlera me e vogel.

Nje algoritem qe zmadhon thorughput nuk do te thote qe minimizon turnaround time. Psh, kur kemi disa pune te shkurtra dhe disa te gjata, nje algoritem qe ekzekuton me pare punet e shkurtra mund te kete nje throughput te mire por nje turnaround time shume te madhe per punet e gjata. Perdorimi i CPU-se eshte nje tjeter madhesi ne sistemet batch sepse ne keto sisteme CPU eshte shume e shtrenjte. Ne fakt ajo qe ka me shume rendesi eshte sa pune kryhen ne nje ore ( fakt te cilin e paraqet throughput ) dhe per sa kohe merret rezultati i nje pune ( gje qe e paraqet madhesia turnaround time ). Per sisteme iteraktive eshte dhe nje tjeter qellim, ai i zvoglimit te kohes se pergjigjes. Koha e pergjigjes eshte koha per nje pune nga momenti i dhenies se komandes deri te marrja e pergjigjes. Ne nje kompjuter personal ne te cilin jane ne aktivitet dhe procese te tjera ne sfond, si psh kontrolli here pas here i postes elektronike, nje perdorues qe nis nje program ose qe hap nje skedar ka perparesi ne krahasim me procesin ne sfond. Sistemet real time kane cilesi te ndryshme ne krahasim me sistemet iteraktive, per kete dhe synime te ndryshme ne skedulim. Ata karakterizohen nga pune qe duhen kryer brenda nje afati kohor te caktuar. Ne disa sisteme te tille perfshihen elemente multimediale. Ne nje video psh mund te kete vonesa ne audio ose ne pamje, ne fakt nje gabim ne audio eshte me fatal se nje problem vonese me pamjen. Syri eshte me pak i ndjeshem nga gabimet ne vonese, per kete procesi i skedulimit duhet te shmange keto probleme. Skedulimi ne nje sistem batch First come first served Ky eshte algoritmi me i thjeshte nonpreemptive. Me kete algoritem proceset nisin punen ne baze te rradhes me te cilen jepet komanda. Ekziston vetem nje rradhe me procese, kur nje pune i jepet sistemit te mengjes, ajo nis menjehere. Nqs hyn dhe nje tjeter pune, kjo e dyta vendoset ne rradhe. Nje pune e trete do vendosej ne rradhe pas se dytes, etj. Kur nje proces kalon ne gjendje te bllokuar, atehere rradhen per ekzekutim e ka procesi i pare ne kete rradhe procesesh. Kur nje proces kalon nga gjendja e bllokuar ne gjendjen gati per ekzekutim, atehere ai vendoset ne fund te kesaj rradhe, njelloj si proceset e saponisur. Avanatzhi i ketij algoritmi eshte thjeshtesia ne te kuptuar dhe ne programim. Eshte e thjeshte mbajtja shenim e proceseve vetem me nje rradhe te renditur. Shortest job first Ky eshte nje tjeter algoritem nonpreemtive. Per realizimin e tij duhet qe te dihen qe me pare kohet e ekzekutimit te secilit proces. Le te shohim nje shembull me kater procese.

Kater proceset A, B, C, D kane kohet e ekzekutimit perkatesisht 8, 4, 4, 4. Nqs i ekzekutojme ne keto procese me kete rend, turnaround time per A eshte 8 minuta, per B eshte 12 minuta, per C eshte 16 minuta, per D eshte 20 minuta. Mesatarja e kesaj kohe eshte 14 minuta.

Page 34: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

34

Ne kete rast ne ekzekutojme te parin procesin me te shkurter. Ne kete rast turnaround time eshte perkatesisht 4, 8, 12, 20. mesatarja e kesaj kohe eshte 11 minuta. Pra shihet qe ky eshte nje algoritem optimal.

Shortest remaining time next Ky eshte nje version preemptive i shortest job first. Me kete algoritem skeduluesi gjithmone zgjedh procesin te cilit i ka mbetur me pak kohe. Edhe ne kete rast duhet ditur me pare kohet e ekzekutimit. Kur nis nje pune e re, koha e saj totale krahasohet me kohen e mbetur te procesit ne ekzekutim. Nqs procesit te ri i nevojitet me pak kohe atehere procesi aktual nderpritet dhe nis punen procesi i ri. Tre nivelet per skedulimit Tre nivelet e skedulimit jane :

1. Skedulimi i pranimit 2. Skedulimi i memorjes 3. Skedulimi i CPU-se

Skedulimi i pranimit vendos se cilen pune te pranoje sistemi. Punet e tjera mbahen ne rradhe derisa te perzgjidhen. Nje algoritem tipik per kete do kontrolloje per pune te kufizuar nga llogaritjet si dhe nga pune te kufizuar nga I/O. Punet e shkurtra mund te pranohen menjehere kurse punet me te gjata presin.

Pasi nje pune eshte pranuar nga sistemi, per te krijohet nje proces ne menyre te tille qe CPU-ja ta ekzekutoje ate. Gjithsesi mund te ndodhe qe sistemi te kete shume procese dhe te mos kete memorje te mjaftueshme qe te mbaje te gjithe proceset. Ne kete rast disa nga keto procese duhet te kalojne ne disk. Niveli i dyte i skedulimit quhet skedulim i memorjes dhe vendos se cilet procese duhet te mbahen ne memorje dhe cilet duhet te mbahen ne disk.

Ky vendim duhet te merret here pas here per te bere te mundur qe edhe proceset ne disk te marrin sherbimin e tyre. Sjellja e nje procesi nga disku ne memorje eshte me kosto te larte. Per te optimizuar performancen e sistemit duhet marre vendimi rreth numrit te proceseve qe presin ne memorje. Kjo vlere ndryshe quhet dhe shkalle multiprogramimi. Do ishte mire qe ne cdo moment te kishim ne memorje edhe procese te kufizuar nga llogaritjet edhe procese te kufizuar nga I/O.

Niveli i trete eshte skedulimi i CPU-se, i cili merr nje proces ne listen e proceseve te gatshme dhe e ekzekuton ate. Shpesh kur flasim per skedulues kemi parasysh kete nivel skedulimi.

Page 35: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

35

Skedulimi ne sistemet iteraktive Te gjithe keto algoritme qe po shohim me poshte sherbejne per skedulimin e CPU-se. Round-Robin Ne baze te ketij algoritmi secilit proces i caktohet nje interval kohor gjate se cilit mund te ekzekutohet. Ky interval quhet ndryshe dhe quantum. Nqs procesi ne fund te quantum eshte ende duke u ekzekutuar atehere CPU i kalohet nje procesit tjeter. Nqs procesi kalon ne gjendje te bllokuar ose mbaron para se te mbaroje quantum atehere CPU i kalon procesit tjeter ne momentin kur procesi i meparshem u bllokua.

Round Robin eshte nje algoritem i thjeshte per tu implementuar. Ceshtja e vetme per tu diskutuar ketu eshte gjatesia e intervalit te kohes quantum. Dihet se kalimi nga nje proces ne tjeterin kerkon nje sasi kohe te konsiderueshme. Kjo kohe duhet per te bere ruajtjen e regjistrave, ngarkimi i regjistrave te procesit tjeter, updatimi i variablave ne tabelat e proceseve, ringarkimi me vlera te memorjes cache, etj. Supozoni se kalimi nga nje proces ne tjetrin kerkon nje kohe prej 1 msec. Supozoni dhe se quantum eshte 4 msec. Me keto parametra, pasi te kemi bere 4 msec pune te dobishme CPU harxhom 1 msec kohe per nderrimin e proceseve. Kjo do thote se 20 % e kohes se CPU-se harxhohet per administrim. Per te rrite eficiensen e CPU-se ne mund te caktojme nje quantum 100 msec. Tani koha e humbur eshte vetem 1%. Por duhet te kini parasysh kete gje, nqs quantum eshte shume i madh, preemption veshtire se ndodh. Kjo sepse shumica e proceseve bllokohen ose perfundojne para se te mbaroje quantum. Si perfundim mund te themi se caktimi i quantum shume te vogel shkakton shume nderrime procesesh dhe eficiense te pakte te CPU-se, kurse caktimi i quantum shume te madh shkakton vonese ne pergjigje ne komunikimin iteraktiv. Nje vlere e pranueshme do ishte ndermjet 20 dhe 50 msec. Skedulimi me prioritet Algoritmi Round Robin supozon ne menyre implicite se te gjithe proceset jane me prioritet te njejte. Fakti qe ekzistojne disa perdoruesa ne nje kompjuter do thote se mund te jene procese me prioritet dhe me synime te ndryshme. Idea eshte e qarte, cdo procesit i caktohet nje prioritet dhe proceset me prioritet me te larte ekzekutohen me pare. Ketu duhet patur parasysh nje problem, proceset me prioritet te larte mund te ekzekutohen pafundesisht. Per te shmangur kete gje skeduluesi pas cdo clock interrupt zvoglon prioritetin e procesit. Kjo ben te mundur qe kur procesit i zvoglohet ndjeshem prioriteti, atehere kontrolli i CPU-se i kalon nje tjeter procesi.

Prioriteti mund te caktohet ne menyre statike ose dinamike. Procesi mund te caktohet ne menyre dinamike nga vete sistemi. Si shembull po marrim rastin kur disa procese shpenzojne shume kohe duke prite per te perfunduar nje veprim I/O. Kurdo qe nje proces i tille kerkon kontrollin e CPU-se, ajo i jepet menjehere per te kaluar shpejt ne nje procesim I/O. Ne kete menyre ne mund te procesojme ne paralel dhe nje tjeter proces qe kerkon llogaritje. Sikur te linim nje proces te kufizuar nga I/O te priste gjate per CPU-ne do qendronte gjate kot ne memorje.

Skedulimi ne sistemet real time Ne nje sistem real time ekzistojne nje ose disa periferike te tille qe gjenerojne stimul dhe kompjuteri duhet te reagoje ne menyre te pershtatshme brenda nje kohe te caktuar. Sisteme te tille i gjejme prane qendrave shendetesore, prane autopiloteve ne qendrat e avioneve, ne sistemet e roboteve, etj. Ne te gjithe keto raste te kesh nje pergjigje te vone eshte po aq keq si te mos kesh aspak pergjigje. Sistemet real time ndahen ne sisteme hard real time dhe ne sisteme soft real time. Te parat kane deadline te percaktuar mire, ne te dytat nje deadline pranohet por nuk eshte e deshirueshme. Ne te dy rastet proceset jane pergjithesisht jeteshkurter dhe plotesohen brenda sekondes. Ngjarjet ne keto sisteme kategorizohen ne periodike te cilat ndodhin ne intervale te rregullta dhe aperiodike qe ndodhin ne intervale jo te rregullta.

Page 36: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

36

#define N 5 /* numri i filozofeve */

0 ne 4 */

while (TRUE) { /* filozofi mendon */

*/

d te modifikojme kete program ne menyre qe pasi te merret piruni i djathte

ene me lart realizohet me perdorimin e semafo

Algoritmet ne sistemet real time mund te jene statike ose dinamike. Te parat bejne skedulimin para se te nise sistemi. Te dytit bejne vendimet e skedulimit ne moentin e ekzekutimit. skedulimi statik funksionon vetem kur ka qe me pare nje informacion rreth punes qe duhet bere. Skedulimi dinamik nuk i ka keto kufizime.

Leksioni 9 Probleme klasike 1) Darka e filozofeve

Ne vitin 1965 Dijkstra paraqiti kete problem sinkronizimi. Problemi paraqitet si me poshte: pese filozofe jane ulur ne nje tryeze te rrumbullaket. Secili prej tyre ka perpara nje pjate me spageti qe mund te hahen vetem me pirun. Mes seciles pjate ka vetem nje pirun.

Jeta e nje filozofi permban periudha kur ai mendon dhe periudha kur ai ha. Kur nje filozof e merr uria, ai perpiqet te marre pirunjte majtas dhe djathtas. Pasi ha per pak kohe ai le ne tryeze pirunjte dhe rifillon mendimet. Ceshtja eshte kjo : a mund te realizoni qe secili filozof te haje ose te prese pa probleme?

Le te shohim nje tentative per te zgjidhe kete problem. Procedura take_fork pret derisa te jete i vlefshem piruni dhe e merr ate. Shihet qe kjo eshte nje zgjidhje e gabuar. Asnjeri nuk do marre pirunin dhe situata con ne bllokim.

void philosopher(int i) /* i: nr i filozofit, nga { think( ); take_fork(i); /* merr pirunin majtas take_fork((i+1) % N); /* merr pirunin djathtas */ eat(); /* yum-yum, spaghetti */ put_fork(i); /* le pirunin majtas */ put_fork((i+1) % N); /* le pirunin djathtas */ } }

Ne munprogrami te kontrolloje nese eshte i vlefshem dhe piruni i majte. Nqs piruni i djathte nuk eshte i lirshem ai leshon dhe pirunin e majte, pret per pak kohe dhe perserit procesin. Edhe ky propozim nuk funksionon per nje arsye tjeter. Mund te rastise qe te gjithe filozofet provojne njeheresh te bejne kete gje. Marrin pirunin e majte, shohin qe i djathti nuk eshte lirshem dhe leshojne edhe pirunin e djathte. Kjo situate mund te vazhdoje gjithmone. Nqs filozofet do te prisnin per nje kohe te cfaredoshme per te marre pirunin e majte ne vend qe te realizonin kete gje pernjeheresh. Ne praktike kjo funksionon mire. Gjithsesi shume aplikacione do preferonin nje zgjidhje qe funksionon gjithmone dhe nuk i beson numrave te rastit.

Nje propozim qe eliminon bllokimet e kodit te dhrit binar. Para se te nise te perdore nje pirun, nje filozof do beje nje down ne nje mutex. Pasi

leshohet piruni behet nje up ne mutex. Nja ana praktike kjo nuk eshte nje zgjidhje optimale sepse vetem nje filozof mund te haje ne nje moment te caktuar. Duke pase 5 pirunj, duhet te behet e mundur qe 2 filozofe te hane ne te njejten kohe.

Page 37: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

37

Zgjidhja e meposhtme nuk ka mundesi bllokimi dhe lejon maksimumin e paralelizimit. Ketu perdoret nje tabele me emrin state dhe mban shenim nese filozofi eshte duke ngrene, duke menduar, apo eshte i uritur dhe pret te marre pirunin. Nje filozof mund te kaloje ne gjendjen duke ngrene vetem nese asnjeri nga fqinjet e tij nuk eshte duke ngrene. Per filozofin e i-te left jep i-1 dhe right jep i+1. Programi pedor nje tabele me semaforet, nga nje per secili filozof. #define N 5 /* nr i filozofeve */ #define LEFT (i+N−1)%N /*numri i fqinjit majtas fil i */ #define RIGHT (i+1)%N /* numri i fqinjit djathtas fil i */ #define THINKING 0 /* filozofi mendon */ #define HUNGRY 1 /* filozofi do te marre pirunjte */ #define EATING 2 /* filozofi ha */ typedef int semaphore; /* semafori eshte nje int i vecante */ int state[N]; /* maban shenim per gjendjen e secilit */ semaphore mutex = 1; /* perjashtim per pjeset kritike */ semaphore s[N]; /* nje semafor per cdo filozof */ void philosopher (int i) /* i: numri i filozofit, nga 0 ne N−1 */ { while (TRUE) { /* cikel i pafundem */ think(); /* fizofi mendon */ take_forks(i); /* merr dy pirinjte ose bllokohet */ eat(); /* yum-yum, spaghetti */ put_forks(i); /* le te dy pirunjte */ } } void take_forks(int i) /* i: numri i filozofit, nga 0 ne N−1 */ { down(&mutex); /* pjesa kritike */ state[i] = HUNGRY; /* tregon qe fil i eshte i uritur */ test(i); /* do te marre te dy pirinjte */ up(&mutex); /* del nga pjesa kritike */ down(&s[i]); /* bllokohet nese pirunjte nuk merren */ } void put_forks(i) /* i: numri i filozofeve, nga 0 ne N−1 */ { down(&mutex); /* hyn ne pjesen kritike */ state[i] = THINKING; /* filozofi mbarin se ngreni */ test(LEFT); /* sheh nese fqinji majtas po ha */ test(RIGHT); /* sheh nese fqinji djathtas po ha */ up(&mutex); /* del nga pjesa kritike */ } void test(i) /* i: numri i filozofit, nga 0 ne N−1 */ { if (state[i] == HUNGRY && state[LEFT] != EATING && state[RIGHT] != EATING) { state[i] = EATING; up(&s[i]); } }

Page 38: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

38

2) Problemi i lexuesit dhe shkruesit Ky eshte nje tjeter problem i parqitur ne vitin 1971 dhe modelon aksesin ne nje baze te dhenash. Imagjinoni nje sistem qe rezervon biletat ne nje agjensi arjore. Duhet qe disa procese te mund te lexojne dhe te shkruajne ne kete baze te dhenash, por ne momentin kur nje proces eshte duke ndryshuar nje rekord, asnje proces tjeter nuk duhet te ndryshoje bazen e te dhenave. Si duhet te programohet kjo situate? Ne kete zgjidhje se pari lexuesi merr akses ne bazen e te dhenave dhe ben nje down ne nje semafor db. Lexuesat e tjere do rrisin nje numrues rc. Kur kryn pune nje lexues ata zvoglojne numruesin dhe lexuesi i fundit ben nje up te semafori per te mundesuar shkruesin e bllokuar te vazhdoje. Kur i vjen rradha shkruesit, ai nuk mund te pranohet ne baze te dhenash ne fillim. Me vone mberrijne lexuesat. Per sa kohe qe nje lexues eshte aktiv disa lexuesa mund te pranohen. Shkruesi eshte i bllokuar derisa asnje lexues te mos jete prezent. Nqs cdo lexues vjen cdo 2 sekonda dhe ka pune 5 sekonda atehere shkruesi nuk do punoje anjehere. Per te eliminuar kete problem programi duhet ndryshuar. Kur nje lexues vjen dhe nje shkrues eshte duke pritur, lexuesi nderpritet derisa te mbaroje pune shkruesi. Ne kete menyre shkruesi pret vetem ata lexues qe i gjeti aktiv kur erdhi dhe nuk pret ata lexues qe vijne pas tij. typedef int semaphore; semaphore mutex = 1; /* kontrollon aksesin per 'rc' */ semaphore db = 1; /* kontrollon aksesin ne ‘db’ */ int rc = 0; /* nr i proceseve qe shkruajne ose lexojne */ void reader(void) { while (TRUE) { /* cikel i pafundem */ down(&mutex); /* akses ekskluziv ne 'rc' */ rc = rc + 1; /* nje lexues me teper */ if (re == 1) down(&db); /* nqs ky eshte lexuesi i pare… */ up{&mutex); /* leshon aksesin ekskluziv ne 'rc' */ read_data_base(); /* merr te dhenat */ down(&mutex); /* merr aksesin ekskluziv ne 'rc' */ rc = rc − 1; /* nje lexues me pak */ if (rc == 0) up(&db); /* nqs ky eshte lexuesi i fundit… */ up(&mutex); /* leshon aksesin ekskluziv ne 'rc' */ use_data_read(); /* pjese jo kritike */ } } void writer(void) { while (TRUE) { /* cikel i pafundem */ think_up_data(); /* pjese jo kritike */ down(&db); /* merr akses ekskluziv */ write_data_base(); /* shkruan te dhenat */ up(&db); /* le aksesin ekskluziv */ } }

Page 39: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

39

3) Problemi i berberit qe fle Situata ndodh ne nje floktore i cila ka vetem nje berber nje ndenjese dhe n karrige per klientet qe presin. Kur nuk eshte prezent asnje klient qe pret berberi ulet ne ndenjesen dhe fle. Kjo paraqitet dhe ne figuren e meposhtme.

Kur berberi eshte i zene me nje klient dhe nderkohe vjen nje klient tjeter, ky i fundit pret dhe ulet ne njeren nga karriget. Nqs te gjitha karriget jane te zena klienti largohet nga floktorja. Problemi eshte i tille, duhet programuar qe berberi dhe klientat te mos jene ne kushte gare. Nje zgjidhje perdor tre semafore : - customer, i cili numron klientat qe presin ( ketu perjashtohet klienti qe eshte ne ndjenjese te cilit berberi po i pret floket dhe nuk eshte duke pritur ), - barbers qe shenon numrin e e berbereve qe jane pasiv ( 0 ose 1 ) - mutex sherben per perjashtimin e

dyanshem. Na duhen gjithashtu nje varibel waiting qe numeron klientat qe presin. Ky variabel na duhet se nuk ka asnje menyre per te lexuar vleren aktuale ne semafor. Meposhte po japim nje zgjidhje. Kur berberi nis punen ne megjes ai ekzekuton nje procedure barber qe e bllokon ate ne nje semafor customer sepse si fillim eshte 0. Me pas berberi nis e flen derisa vjen nje klient. #define CHAIRS 5 /* nr i karrigeve per klientat */ typedef int semaphore; semaphore customers = 0; /* klientat qe duan sherbim */ semaphore barbers = 0; /* berberet qe presin klientat */ semaphore mutex = 1; /* per pejashtimin e dyanshme */ int waiting = 0; /* klientet qe presin*/ void barber(void) { white (TRUE) { down(&customers); /* fle nese nr i klienteve eshte 0 */ down(&mutex); /* merr akses ne 'waiting' */ waiting = waiting − 1; /* zvoglon nr e klient qe presin */ up(&barbers); /* nje berber eshte gati te prese floke */ up(&mutex); /* leshon 'waiting' */ cut_hair(); /* pret floket(jashte zones kritike) */ } } void customer(void) { down(&mutex); /* hyn ne zonen kritike */ if (waiting < CHAIRS) { /* iken nese nuk ka karrige lirshem */ waiting = waiting + 1; /* rritet nr.klienteve qe presin */ up(&customers); /* nqs berberi fle, ai zgjohet */ up(&mutex); /* leshon akessin e 'waiting' */ down(&barbers); /*fle nese numri i berbereve lirshem =0 */ get_haircut(); /* ulet dhe sherbehet klienti */ } else { up(&mutex); /* floktorja eshte plot */ } }

Page 40: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

40

Kur vjen nje klient ekzektuohet procedura customer, e cila nis me nje mutex qe kyn ne nje pjese kritike. Nqs nje tjeter klient perpiqet te beje dicka ai pret derisa te lirohet mutex. Klienti kontrollon nese numri i klintave eshte me i vogel se sa numri i karrigave. Nqs eshte lirshme ndonje karrige, klienti rrit variablin waiting. Me pas ai ben nje up ne semaforin customer. Kur klienti leshon mutex, berberi e merr ate dhe nis te prese floket e klientit. Kur perfundon prerjen e flokeve, klienti del nga procedura dhe largohet nga dyqani. Ndryshe nga shembujt e tjera qe pame me lart, nuk ka asnje cikel per klientin sepse secili pret vetem nje here floket. Cikli i berberit perpiqet qe te marre klinetin tjeter. Nqs nuk ka nje te tille berberi nis e fle.

Leksioni 10 Rastet e bllokimit

Resurset e nje kompjuteri mund te perdoren ne nje moment te caktuar vetem nga nje

proces. Eshte detyre e sistemit te shfrytezimit qe te caktoje nje proces te cilit mund ti jape akses per nje resurs te caktuar. Shpesh nje proces ka nevoje per disa resurse. Psh ne sistem jane dy procese dhe secili do te skanoje nje dokument qe ndodhet ne CD. Procesi A kerkon leje per te marre skanerin dhe arrin ta marre. Procesi B eshte i programuar ndryshe, ai ne kete moment kerkon te marre lexuesin nga CD dhe arrin ta marre. Tani A kerkon te marre lexuesin nga CD. Kerkesa nuk i plotesohet sepse kete paisje duhet ta leshoje procesi B. Ky i fundit ne vend qe te leshoje paisjen e lexuesit nga CD kerkon te marre skanerin. Ne kete pike te dy proceset do mbeten pergjithmone te bllokuar. Situata quhet rast bllokimi. Ne do shqyrtojme rastet se kur krijohen keto bllokime, mundesite qe kemi per ti parandaluar dhe per te zgjidhur situaten.

Resurset Per te bere me te pergjithshem diskutimin tone mbi bllokimet, nje resurs eshte nje objekt qe perdor procesi. Nje resurs mund te jete nje paisje hardware, sic mund te jete nje shirit magnetik, por mund te jete dhe nje pjese software, psh nje rresht ne nje baze te dhenash. Nje kompjuter ka disa resurse qe i jepen proceseve te ndryshme. Per disa prej ketyre resurseve mund te jene te vlefshme disa instanca. Ne kete rast secili prej tyre sherben per te plotesuar nje kerkese per nje resurs te ketij lloji. Mund te themi se nje resurs eshte dicka qe perdoret ne nje moment te caktuar nga nje proces i vetem. Resurset e zevendesueshme dhe te pazevendesueshme Resurset ndahen ne dy lloje, te zevendesueshme dhe te pazevendesueshme. Nje resurs i zevendesueshem eshte i tille qe mund te merret pa probleme nga procesi qe e ka nen kontroll. Nje shembull per kete eshte memorja. Psh, nje sistem ka 32 MB memorje pune, nje printer dhe dy procese 32 MB te tille qe kerkojne te printojne. Procesi A ben kerkese per printer dhe arrin ta marre. Ai nis te printoje vlerat. Para se te perfundoje veprimet mbaron koha quantum e tij dhe i vjen rradha per ekzekutim procesit tjeter. Memorja e punes lirohet per te zene vend procesi B. Ky proces ben kerkese per te marre printerin, por kjo kerkese nuk i pranohet. Kjo situate eshte nje situate bllokimi sepse procesi A ka printerin kurse procesi B ka memorjen dhe secili nuk e leshon resursin qe zoteron. Ne mund te largojme procesin B nga memorja dhe ne te mund te vendosim procesin A. Tani mund te ekzekutojme procesin A, te kryejme printimet e tij dhe te leshojme printerin. Ne kete menyre zgjidhim kete bllokim. Memorja ne fakt eshte nje resurs qe mund ti kalohet pa problem nga njeri proces tek tjetri. Nje resurs i pazevendesueshem eshte i tille qe nuk mund te largohet nga procesi pa probleme. Psh nqs nje proces po perdor nje shkrues ne CD dhe ne kete moment i merret ky resurs dhe i kalohet nje procesi tjeter CD prishet. Ne pergjithesi bllokimet jane ne rastin kur kemi te bejme me nje resurse te pazendesueshme. Jane pikerisht keto raste per te cilat do te flasim ne. Hapat qe kerkohen per te perdore nje resurs jane : se pari behet kerkese per te patur kete resurs, me pas perdoret resursi dhe ne fund leshohet. Nqs nje resurs nuk eshte i vlefshem kur nje

Page 41: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

41

proces ben kerkese per te, atehere procesi eshte i detyruar te prese. Ne disa sisteme shfrytezimi, ne kete situate procesi bllokohet per tu zgjuar ne momentin kur behet i vlefshem resursi. Ne rastet e tjera kerkesa deshton dhe varet nga procesi se sa do prese per te bere perseri thirrjen. Marrja e nje resursi Per disa lloje resursesh sic eshte nje rresht ne nje baze te dhenash, menyra se si do perdoret resursi varet nga perdoruesi. Nje menyre mund te jete shoqerimi i nje semafori per cdo resurs. Ky semafor inicializohet me vleren 1. Mutex mund te jete i perdorshem ne kete rast. Tre hapat qe permendem me lart mund te implementohen si nje veprim down mbi nje semafor kurse leshimi mund te behet me nje veprim up. Nje implementim mund te ishte typedef int semaphore; semaphore resource_1; void process_A(void) { down(&resource_1); use_resource_1(); up(&resource_1); } Rasti kur kemi ne veprim nje proces i cili kerkon dy resurse atehere kemi kodin : typedef int semaphore; semaphore resource_1; semaphore resource_2; void process_A(void) { down(&resource_1); down(&resource_2); use_both_resources(); up(&resource_2); up(&resource_1); } Deri tani cdo gje ecen mire per aq kohe sa vetem nje proces eshte ne pune. Tani le te shohim situaten kur dy procese jane aktive, procesi A dhe procesi B. Rasti kur cdo gje ecen mire dhe kur nuk ka bllokime eshte rasti meposhte. Ne kete rast, njeri nga proceset do te marre resursin e pare para se ta marre procesi tjeter. Procesi i dyte do marre resursin e dyte dhe do vazhdoje punen e tij me kete resurs. Nqs njeri proces mundohet te marre nje resurs para se ky i fundit te leshohet nga tjetri, atehere procesi bllokohet ne nje cikel derisa resursi te behet i vlefshem. typedef int semaphore; semaphore resource_1; semaphore resource_2; void process_A(void) { down(&resource_1); down(&resource_2); use_both_resources( ); up(&resource_2); up(&resource_1); } void process_B{void) { down(&resource_1); down(&resource_2);

Page 42: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

42

use_both_resources( ); up(&resource_2); up(&resource_1); } Kodi meposhte eshte nje shembull i rastit te bllokimit. Ketu situata ndryshon. Mund te ndodhe qe nje proces merr te dy resurset dhe bllokon procesin tjeter. Gjithashtu mund te ndodhe qe procesi A merr resursin 1 dhe procesi B merr resursin B. Secili prej tyre do bllokoje tjetrin kur perpiqet te marre resursin tjeter. Asnje nga proceset nuk do vazhdoje ekzekutimin. Nje situate e tille eshte tipike per nje situate bllokimi. typedef int semaphore; semaphore resource_1; semaphore resource_2; void process_A(void) { down(&resource_1); down(&resource_2); use_both_resources( ); up(&resource_2); up(&resource_1); } void process_B{void) { down(&resource_2); down(&resource_1); use_both_resources(); up(&resource_1); up(&resource_2); } Prezantim i rasteve te bllokimit Nje rast bllokimi mund te perkufizohet formalisht : Nje bashkesi procesesh ka nje rast bllokimi kur cdo proces ne kete bashkesi pret per nje ngjarje qe mund te shkaktohet vetem nga nje tjeter proces i kesaj bashkesie. Duke qene se te gjithe proceset presin atehere asnjeri nga keto procese nuk do shkaktoje asgje, pra situata vazhdon keshtu pambarimisht. Ne kete model supozojme se secili nga keto procese ka vetem nje thread dhe interruptet nuk munden qe te shbllokojne nje proces te bllokuar. Ne shumicen e rasteve ngjarja qe cdo proces pret eshte leshimi i disa resurseve qe kerkohen nga nje tjeter proces ne kete bashkesi. Asnjeri nga keto procese nuk mund te vazhdoje ekzekutimin sepse asnjeri nga ato nuk mund te leshoje resurset dhe per rrjedhoje asnjeri nuk mund te zhvillohet. Numri i proceseve si dhe numri dhe lloji i resurseve nuk ka rendesi. Kushtet per nje rast bllokimi Coffman ne vitin 1971 tregoi kater kushtet qe duhen plotesuar per te pase nje rast bllokimi:

1) Kushti i perjashtimit te ndersjellte. Secili resurs ose i eshte caktuar nje procesi ose eshte i lirshem.

2) Kushti i mbajtjes dhe pritjes. Proceset qe kane tashme nje resurs mund te beje kerkese per nje tjeter resurs.

3) Kushti qe resurset nuk jane preemptive. Resurset qe i jane caktuar me pare nje procesi nuk mund ti merren me force. Ka vetem nje mundesi: leshimi i resursit nga vete procesi ne menyre eksplicite.

4) Kushti i pritjes rrethore. Duhet te jete te pakten dy procese te tille qe secili prej tyre pret per nje tjeter resurs qe zoteron nje proces tjeter ne kete rreth.

Page 43: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

43

Qe te ndodhe nje deadlock duhet qe te jene prezent te gjithe keto kushte. Nqs njeri nga keto mungon atehere nuk kemi te bejme me nje rast bllokimi.

Modelimi i nje bllokimi

Ne vitin 1972 Holt tregoi se keto kater rregulla te paraqitura me lart mund te modelohen duke perdore grafin e orietuar. Ky graf ka dy lloje nyjesh: proceset jane te paraqitur me simbolin e rrethit kurse resurset jane te paraqitur me ane te katrorit. Nje hark qe nis nga nje nyje resurs dhe qe mbaron ne nje proces tregon se ky resurs mbahet nga ai proces. Ndersa nje hark qe nis nga nje proces dhe qe mbaron ne nje resurs tregon qe ky proces eshte duke prite ate resurs. Ne figuren resursi R i eshte caktuar procesit A, procesi B eshte duke prite per resursin S.

Ne figure jepet nje shembull bllokimi. Procesi C pret te marre resursin T i cili mbahet nga procesi D. Procesi D nuk ka ndermend te leshoje resursin T dhe pret te marre resursin U, i cili mbahet nga procesi U. Te dy proceset do presin pergjithnje. Nje cikel ne graf do te thote se ka nje rast bllokimi qe perfshin dy ose me shume procese.

Tani le te shohim nje shembull tjeter. Kemi tre proceset, A B dhe C,

dhe tre resurset R S dhe T. Situata ne fillim jepet si ne figure.

Sistemi i shfrytezimit mund te

vazhdoje ekzekutimin e cdo procesi te pabllokuar, ne kete rast mund te vazhdoje te ekzekutoje procesin A derisa ai te perfundoje.

Me pas ekzekuton procesin B derisa ai te mbaroje dhe ne fund te ekzekutoje procesin C.

Kjo zgjidhje shmang bllokimet por nuk ka aspak paralelizem te proceseve.

Ne figuren meposhte jepet menyra sesi do shperndajme resurset dhe me pas realizimi i

kesaj hap pas hapi. Ne kete moment bllokohet A duke prite resursin S. Kjo gje tregohet ne figuren h). Ne dy hapat e tjere B dhe C gjithashtu bllokohen dhe kjo con ne nje cikel me bllokime sic paraqitet ne figuren j).

Ne figuren meposhte, nqs sistemi i shfrytezimit do kishte njohuri rreth bllokimit ai mund te

nderpriste perkohesisht procesin B ne vend qe ti jepte atij te drejten e perdorimit te S. Duke

Page 44: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

44

ekzekutuar vetem proceset A dhe C ne do mund te kishim situaten ne figuren K ne vend te figures D. ne vazhdim do kishim situatat ne fig l) – q) te cilat nuk perbejne bllokime.

Pas hapit q) procesit B i jepet resursi S sepse A ka perfunduar dhe C ka cdo gje qe i duhet.

Edhe sikur B te bllokohet nderkohe qe kerkon resursin T asnje bllokim nuk mund te ndodhe. B do te prese derisa C te perfundoje.

Ne pergjithesi jane kater strategji qe merren me rastet e bllokimit : 1) Thjesht injorojeni problemin. Ndoshta nqs ju injoroni bllokimin dhe ai do ju injoroje

ju! 2) Gjetja dhe zgjidhja e bllokimit. Lereni te ndodhe bllokimi, gjejeni dhe merrni masat. 3) Shmangia dinamike. Ne cdo here kini kujdes kur ti jepni nje resurs nje procesi. 4) Parandalimi, duke mohuar njeren nga kater kushtet me lart qe shkaktojne bllokimin.

Gjetja dhe zgjidhja e bllokimit Kur perdoret kjo teknike sistemi nuk perpiqet qe te parandaloje bllokimet. Ai i lejon te ndodhin, perpiqet ti dedektoje dhe merr masa per ti zgjidhe ato. Ne kete ceshtje do shqyrtojme dy raste, kur kemi vetem nga nje resurs per cdo lloj dhe rasti i dyte eshte kur kemi disa resurse per secilin lloj resursi. Rasti 1 : Nga nje resurs per cdo lloj. Nje sistem i tille mund te kete psh nje skaner, nje Cd recorder, nje ploter, etj por nuk mund te kete dy ose me teper resurse te te njejtes klase. Per nje sistem te tille mund te ndertojme nje skeme si meposhte. Nese kjo skeme do permbaje nje ose me teper cikle atehere kemi raste bllokimi. Cdo proces qe eshte pjese e ciklit mbetet i bllokuar. Le te shoim me ne detaj skemen meposhte. Procesi A ka resursin R dhe kerkon te marre edhe resursin S Procesi B nuk ka asnje resurs dhe kerkon te marre resursin T Procesi C nuk ka asnje resurs dhe kerkon te marre resursin S Procesi D ka resursin U dhe kerkon te marre resurset S dhe T

Procesi E ka resursin T dhe kerkon te marre resursin V Procesi F ka resursin W dhe kerkon te marre edhe resursin S

Procesi G ka resursin V dhe kerkon te marre edhe resursin U A permban sistemi raste bllokimi? Nese po cilet procese jane te perfshire ne te? Per t’iu pergjigjur ketyre pyetjeve na duhet te ndertojme grafin e ketij sistemi. Kete e shohim ne figuren meposhte.

Page 45: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

45

Grafi permban nje rreth. Proceset qe jane perfshire ne bllokim jane proceset E, D dhe G. Eshte e thjeshte te shohim me sy se cilet jane proceset e bllokuar ne nje graf te tille, por per sistemin duhet nje algoritem i vecante per te dedektuar keto procese. Rasti 2: shume resurse per nje tip te caktuar. Kur kemi disa resurse per te njejtin lloj na duhet nje tjeter llogaritje. Ekziston nje algoritem i bazuar ne matrica dhe qe gjen bllokimet ne i procese. Le te jete numri i klasave te resurseve m. Jane E1 resurse per klasen 1, E2 resurse per klasen 2, Ei resurse per klasen i. E eshte vektori i resurseve qe ekzistojne dhe jep numrin total te resurseve. Ne nje moment disa nga resurset i caktohen proceseve dhe nuk jane me te vlefshem per proceset e tjere. Le te jete A nje vektor per resurset e vlefshem. Na duhet dhe dy matrica. Njera eshte matrica C qe tregon alokimet aktuale kurse tjetra eshte matrica R e cila paraqet kerkesat qe bejne proceset per ta marre resurset. Rreshti i i-te i matrices C tregon se sa instanca per cdo lloj resursi mban Pi. Per kete elementi Ci j tregon numrin e instancave te resursit j qe mbahen nga procesi i. Ne menyre te ngjashme elementi Ri j tregon numrin e resurseve j qe kerkon Pi.

Gjetja e nje rasti bllokimi bazohet ne krahasimin e vektoreve. Le te percaktojme me pare relacionin A<=B mes vektoreve qe do thote se cdo element i A-se eshte me i vogel ose i barabarte se

elementi korespondues i vektorit B. Ne fillim cdo proces eshte i pashenjuar. Me procesimin e algoritmit nje proces mund te shenjohet dhe kjo gje tregon se procesi mund te perfundoje pa bllokim. Ne mbarim te algoritmit cdo proces qe ka mbetur i pashenjuar eshte i perfshire ne bllokim. Algoritmi qe gjen rastet e bllokimit eshte si meposhte: 1) kerkohet per cdo proces te pashenjuar, Pi per te cilin rreshti i i-te i matrices R eshte me i vogel ose i barabarte me A. 2) Nqs gjendet nje proces i tille, rreshti i i A-se mblidhet me C, shenjohet procesi dhe rikthehemi ne piken 1 te algoritmit. 3) Nqs nuk gjendet nje proces i tille atehere algoritmi perfundon. Algoritmi me lart ne hapin e pare kerkon per procese qe mund te ekzekutohen pa probleme. Procese te tille kane si vecori faktin se kane kerkesa per resurse qe mund te plotesohen nga resurset e vlefshme. Procesi i perzgjedhur ekzekutohet derisa mbaron dhe ne kete moment i rikthen resurset qe mbante ne gjendjen e vlefshme per proceset e tjere. Me pas procesi shenjohet. Nqs te gjithe proceset e tjere mund te ekzekutohen atehere sistemi eshte pa probleme bllokimi. Nqs ndonjeri per tyre nuk arrin te ekzekutohen ata jane te bllokuar. Dalja nga bllokimi Supozoni se eshte gjetur nje bllokim ne sistem. Ne kete pike duhet gjetur nje menyre per te zgjidhe problemin. Meposhte po shohim disa nga keto zgjidhje, dhe pse asnjera nuk eshte e kendshme. Nje zgjidhje e pare mund te ishte largimi me force i resursit nga procesi qe e mban ate te bllokuar. Psh le te marrim nje printer dhe ta largojme nga procesi qe e perdor per t’ia dhene nje tjeter procesi. Perdoruesi ne kete rast mund te marre fletet e printuara dhe pret per ti rimarre tjerat

Page 46: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

46

me vone. Kjo gje nuk mund te realizohet me cdo lloj resursi dhe varet nga natyra e resursit per te realizuar kete zgjidhje te problemit me sukses.

Nje zgjidhje tjeter eshte ti japim fund procesit. Kjo eshte nje zgjidhje “e pameshirshme” por me e thjeshta. Kjo gje mund te behet ne cikel dhe me pak fat mund te ndodhe qe proceset e tjera te mos kete probleme dhe te zgjidhet me sukses situata. Por mund te ndodhe qe ne ti japim fund dhe nje procesi qe ndodhet dhe jashte ciklit dhe kete gje e bejme ne menyre qe te na leshoje nje resurs te caktuar.

Leksioni 11 Rastet e bllokimit (...vazhdim)

Shmangiet e bllokimeve Ne diskutimin per detektimin e rasteve te bllokimit ne morem parasysh se kur nje proces kerkon nje resurs, ai i kerkon keto procese njeheresh. Por kjo gje nuk ndodh ne shumicen e sistemeve. Sistemi duhet te jete i afte te vendose nese caktimi i resursit per nje proces eshte i sigurt apo jo. Per kete shtrohet pyejta : A ekziston nje algoritem qe gjithmone shmang bllokimet dhe ben zgjedhjen e duhur? Pergjigja e kesaj pyetjeje eshte po, ne mund te shmangim bllokimet por vetem nese kemi qe me pare nje informacion paraprak. Trajektoret e bllokimeve Nje koncept qe duhet sqaruar ne kete moment eshte ajo qe quhet “gjendje e sigurt”.

Ne figure jepet modeli per trajtimin e dy proceseve dhe dy resurseve. Ne kete rast jane marre nje printer dhe nje plotter. Boshti horizontal paraqet numrin e instruksioneve qe ekzekutohen per procesin A. Boshti vertikal paraqet numrin e instruksioneve qe ekzekutohet nga procesi B. Ne pike I1 procesi A ben kerkese per te marre printerin. Ne piken I2 ai kerkon nje plotter. Printeri dhe plotteri leshohen respektivisht ne pikat I3 dhe I4.

Procesi B kerkon plotterin nga I5 deri ne piken I7 dhe printerin nga I6 deri ne I8. Cdo pike ne diagrame paqet nje gjendje te te dy proceseve njeheresh. Si fillim gjendja eshte pika p kur asnjeri nga proceset nuk ka ekzekutuar asnje instruksion. Nqs skeduluesi ka zgjedhe per te ekzekutuar procesin A te parin, atehere ne arrihet ne piken q ne te cilin procesi A ka ekzkutuar disa instruksione por procesi B nuk ka ekzekutuar asnje instruksion. Ne piken q trajektorja behet vertikale duke treguar qe skeduluesi ka zgjedhe per te ekzekutuar procesin B. Me nje procesor te vetem trajektoret mund te jene ose vertikale ose horizontale, dhe asnjehere diagonale. Per me teper ne mund te shkojme ose lart ose djathtas dhe asnjehere poshte dhe majtas. Kjo sepse proceset nuk mund te “ kthehen prapa ”. Kur procesi A kalon linjen I1 ne rrugen nga r per ne s, ai kerkon nje printer dhe do ta marre. Kur procesi B arrin ne piken t ai ben kerkese per plotter. Pjeset qe ne figure jane te vijezuara jane me interes. Pjeset me vija qe kane drejtim nga majtas poshte per ne djathtas lart paraqesin momentin kur te dy proceset kane printerin. Rregulli i perjashtimit te dyanshem e ben te pamundur hyrjen ne kete zone. Ne menyre te ngjashme ndodh per pjesen qe eshte e vijezuar ne kahun e kundert. Ne kete pjese te dy duhet te kene plotterin gje e cila gjithashtu eshte e pamundur. Nqs sistemi do hyje ne pjesen e rrethuar nga I1 dhe I2 dhe nga I5 e I6 ai do bllokohet ne piken ku priten I2 dhe I6. Ne kete zone A kerkon per nje plotter dhe B kerkon nje printer dhe te dy keto resurse jane te zena. E tere kjo zone eshte nje gjendje jo e sigurt dhe ne te nuk duhet hyre. Ne

Page 47: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

47

piken t e vetmja gje qe duhet bere eshte te vazhdoje ekzekutimin procesi A derisa arrin ne piken I4. Me pas cdo trajektore qe te con te u do jete e sakte. Dicka qe duhet theksuar ne kete pike eshte se ne momentin t procesi B kerkon nje resurs. Sistemi duhet te vendose nese i duhet dhene apo jo. Nese i jepet sistemi do hyje ne nje zone te pasigurt dhe se shpejti do bllokohet. Per te shmangur kete procesi B duhet te nderpritet derisa A te kerkoje dhe te leshoje plotterin. Gjendjet e sigurta dhe te pasigurta Nje gjendje thuhet se eshte e sigurt nese nuk permban raste bllokimi dhe ekziston nje skedulim i tille qe cdo proces mund te ekzekutohet komplet edhe nese te gjithe proceset kerkojne papritur te gjithe numri e nevojshem te resurseve. Per te kuptuar me mire kete po jap nje shembull ne te cilin perdor nje resurs.

Ne figuren a) kemi nje gjendje ne te cilen A ka tre instanca te resurseve por mund te kete nevoje per 9 te tille. B ka tre resurse dhe mund te kete nevoje per 4. Ndersa C ke 2 resurse por mund te kete nevoje dhe per 5 te tjere.Ekzistojne nje total prej 10 instancash te resursit keshtu qe 3 resurse jane te lire. Gjendja a) eshte e sigurt sepse ekziston nje sekuence alokimesh qe mundeson qe te plotesohen pa probleme nevoja qe ka secili proces. Skeduluesi mund te ekzekutoje B derisa ai te kerkoje dhe te marre dy instanca te tjera te resursit. Kjo gje te con ne gjendjen b). Kur procesi B perfundon ne jemi ne gjendjen c). Ne kete pike skeduluesi mund te ekzekutoje C dhe jemi ne figuren d). Kur C perfundon kemi arritur ne gjendjen e). Tani A mund te marre 6 instancat qe i duhen dhe te perfundoje. Per kete gjendja a) eshte nje gjendje e sigurt, sepse me nje skedulim te kujdesshem arrihet te perfundohet pa probleme bllokimi. Tani le te supozojme se gjendja eshte ajo e dhene ne figuren a) meposhte.

PoNe kete moment A kerkon dhe merr nje tjeter resurs. Tani jemi ne piken b). A mund te gjejme nje rrugedalje qe nuk na shkakton bllokime? Le ta provojme. Skeduluesi mund te ekzekutoje procesin B derisa ai kerkon per te gjithe resurset. Kjo gje jepet ne figuren c). Procesi B perfundon dhe ne jemi ne situaten e paraqitur ne figuren d). Ne kete pike jemi te bllokuar. Ne kemi vetem tre instanca te lira dhe secili prej proceseve kerkon te kete dhe nga 5 instanca te tjera. Nuk ka rrugedalje. Per kete kalimi nga gjendja e dhene ne a) per te b) conte ne nje gjendje te pasigurt. Duhet theksuar se gjendja e pasigurt nuk eshte e njejte me nje rast bllokimi. Duke u nise nga figura b) sistemi mund te ekzekutohet per pak kohe. Ne fakt nje proces arrin madje te perfundoje. Per me teper procesi A leshon dhe nje resurs para se te kerkoje per tjere duke lejuar qe C te perfundoje dhe duke shmangur nje rast bllokimi. Per kete nje gjendje jo e sigurt dallon nga nje gjendje e sigurt ne faktin qe nje gjendje e sigurt garanton sistemin qe te gjithe proceset te perfundojne pa probleme. Nga nje gjendje jo e sigurt nuk mund te jepet asnje garanci.

Page 48: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

48

Algoritmi i bankierit Ky algoritem eshte propozuar nga Dijkstra ne vitin 1965. Ai eshte modeluar ne nje bankier i cili merret me nje grup klientesh te cileve i jep kredi. Ajo qe ben algoritmi eshte se kontrollon nese plotesimi i kerkeses te con ne nje gjendje te sigurt apo jo. Nqs te con ne nje gjendje te pasigurt atehere kerkesa anullohet dhe nese te con ne nje gjendje te sigurt ajo pranohet.

Ne figure shohim kater kliente A, B, C dhe D ku secilit i eshte dhene nje numer i caktuar ( keto mund te jene dhe vlera ne dollare psh ). Bankieri e di se jo te gjithe klientet kane nevoje per kredite e tyre maksimale menjehere, keshtu qe ai rezervon vetem 10 njesi per tu sherbyer ( dhe jo 22 ). Klientet bejne here pas here kerkese per te marre kredite. Ne nje moment te caktuar situata eshte si ne rastin b). Kjo gjendje eshte e sigurt sepse me dy njesi te lirshme bankieri mund te vonoje cdo kerkese me perjashtim te atyre te bera nga klienti C dhe ne kete menyre lejon qe kryje pune me kete klient. Klienti C leshon njesite e veta. Me kater njesi te lira bankieri mund te plotesoje kerkesat e klientit D ose B. Mendoni sikur nqs do behet nje kerkese me teper nga klienti B per te marre nje njesi tjeter ne figuren b). Ne do kishim ne kete pike situaten e dhene ne figuren c) e cila eshte nje situate jo e sigurt. Nqs te gjithe kliente paprite te kerkonin per te marre maksimimin e tyre atehere bankieri nuk mund te plotesoje nevojat e tyre dhe do kishte nje situate bllokimi. Nje situate jo e sigurt nuk te con detyrimisht ne nje rast bllokimi per aq kohe sa klienti nuk kerkon te gjitha kreditet qe i duhen, por kjo gje nuk eshte ne dore te bankierit. Algoritmi i bankierit kontrollon cdo kerkese. Nqs kjo kerkese te con ne nje gjendje jo te sigurt ai nuk ta ploteson por e shtyn per me vone. Per te kontrolluar nese ai te con ne nje gjendje te sigurt, bankieri kontrollon nese ka resurse te mjaftushmeper te plotesuar kerkesat endonjerit konsumator. Parandalimi i rasteve te bllokimit Ky eshte reagimi i katert ( 4 reagimet per rastet e bllokimi i trajtuam ne leksionin e kaluar). Nqs ne arrijme te eliminojme nje nga kater kushte e bllokimit ne kemi arritur te shmangim dhe bllokimin.

a) Pengimin e kushtit te perjashtimit te dyanshem. Nqs asnje resurs nuk i caktohet vetem nje procesi ne nuk do kishim raste bllokimi. Gjithsesi eshte e qarte qe nuk mund te bejme te mundur qe psh dy procese njekohesisht te perdornin nje hapsire ne disk. Secili proces do zinte gjysmen e hapsires se kerkuar ne disk dhe asnjeri nuk do arrinte te kishte outputin e deshiruar.

Le te trajtojme rastin e nje printeri. Ne mund ti caktojme disa proceseve njeheresh te printojme te dhena. Ne dalje do marrim here fletet e njerit proces dhe here fletet e printuara te procesit tjeter. Ne fakt procesi i vetem qe perdor printerin fizik eshte ai ashtuquajturi printer daemon. Ky proces kurre nuk kerkon resurse te tjere, pra nuk con ne bllokim. Ai eshte i programuar i tille qe te printoje vetem pasi komplet skedari qe do printohet eshte gati ne memorje. Gjithesesi idea ketu eshte shmangia e caktimit te nje

Page 49: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

49

resursi kur ai nuk eshte shume i nevojshem dhe perpiquni te siguroheni se sa me pak procese te bjene kerkese per te marre nje resurs.

b) Pengimi i kushtit “mbaj dhe prit”. Nqs ne mund te shmangim qe procesi te mbaje resursin dhe njekohesisht te prese te marre nje resurs tjeter ne do mund te shmangim bllokimin. Nje menyre per te arritur kete gje eshte qe proceset te kerkojne te gjitha resurset qe iu nevojiten para se te nisin ekzekutimin. Nqs cdo eshte e lirshme atehere proceset mund te marrin cdo gje per te cilen kane nevoje. Nqs nje ose disa resurse jane te zene atehere procesit nuk i caktohet asgje dhe ai thjesht do prese pa pase asnje resurs.

Nje problem qe vihet re eshte fakti se shume procese nuk e dine qe ne fillim se per cfare kane nevoje gjate ekzekutimit te tyre. Nje tjeter problem eshte se me kete zgjidhje resurset nuk do perdoren ne menyre optimale. Psh nje proces qe lexon te dhena nga nje shirit magnetik, i analizon ato per nje ore dhe me pas i shkruan rezultate ne nje tjeter shirit daljeje dhe ne plotter. Nqs resurset do kerkoheshin ne avance atehere shiriti i daljes dhe plotteri do rrinin te bllokuar me kot per nje ore.

Gjithesesi nje teknike e mire per kete ceshtje do ishte qe nje proces para se te beje nje kerkese per te marre nje resurs te leshoje nje here per pak kohe te gjitha resurset qe zoteron dhe me pas te synoje ti marre perseri te gjitha njeheresh.

c) Pengimi i kushtit te resurseve te pazevendesueshme. Kjo zgjidhje nuk eshte me me shume shpresa se zgjidhja paraardhese. Nes nje

procesi i eshte caktuar psh nje printer dhe ai eshte ne mes te procesit te printimit, marrja me dhune e printerit eshte tmerrsisht e gabuar.

d) Pengimi i kushtit te pritjes rrethore. Na ka mbete dhe ky kusht per te eliminuar. Pritja rrethore eliminohet ne disa menyra. Nje menyre eshte te krijojme nje rregull te tille qe nje resurs i caktohet vetem nje procesi dhe nqs do nje resurs te dyte duhet me pare te leshoje te parin.Ky kufizim nuk realizohet per nje proces qe kerkon te kopjoje nje skedar shume te madh nga nje shirit per ne printer.

Nje tjeter menyre per te penguar pritjen rrethore eshte numerimi i resurseve psh 1)Imagesetter 2) Scanner 3) Plotter 4) Shirit magnetik 5) CD-ROM. Rregulli eshte i tille: proceset mund te kerkojne resurset kurdo por te gjithe kerkesat duhen bere sipas rendit numerik. Nje proces mund te kerkoje me pare nje printer, me pas nje shirit magnetik por nuk mund te kerkoje ne fillim nje ploter dhe me vone nje printer. Me kete rregull grafi nuk do kete nyje. Le te shohim se pse kjo funksionon per dy procese. Psh procesi A ka resursin i dhe procesi B ka resursin j. Ne mund te kemi nje rast bllokimi vetem nese A kerkon te marre resursin j dhe B ben kerkese te marre resursin i. Supozojme se i dhe j jane resurse te vecante dhe qe kane numra te ndryshem. Nqs i>j atehere A nuk lejohet te beje kerkese te marre j sepse kjo eshte nje vlere me e vogel se ajo e resursit qe ka. Nqs i<j atehere B nuk lejohet te beje kerkese per te marre i sepse ky resurs ka nje vlere me te vogel se ajo e resursit qe ka. Ne te dyja rastet ne shmangim bllokimin.

Me rastin e shume resurseve eshte e njejta teknike. Ne cdo moment njera nga resurset e caktuar do jete ai me numer me te larte. Procesi qe e zoteron ate nuk do mund te beje kerkese per te mbajtur nje tjeter derisa te mbaroje pune me te dhe ta leshoje.

Leksioni 12

Menaxhimi i memorjes Pjesa e sistemit te shfrytezimit qe merret me menaxhmin e hierarkise se memorjes quhet

menaxher i memorjes (memory manager). Detyra e kesaj pjese eshte te mbahet shenim se cilat zona te memorjes jane ne perdorim e cilat jane te lira. Gjithashtu kjo pjese merret me caktimin e memorjes per procese si dhe te beje kalimin e te dhenave ( swapping) mes memorjes kryesore dhe diskut.

Detyra baze te menaxhimit te memorjes

Page 50: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

50

Sistemet e menaxhimit te memorjes ndahen ne dy kategori, ne ato sisteme qe levizin proceset ndermjet memorjes qendrore dhe diskut. Kategoria e dyte e sistemeve nuk e ben kete gje. Natyrisht qe keto te fundit jane me te thjeshtet, prandaj le te studiojme keto te paret. Me pas do te shohim swapping dhe paging. Mos harroni se levizja mes memorjes qendrore dhe diskut behet kur memorja qendrore nuk eshte e mjaftueshme. Nuk kemi pse te flasim per swapping dhe paging kur kemi memorje RAM te bollshme. Nga ana tjeter pjesa software ka tendencen per tu rrite me shpejt se memorja, keshtu qe gjithmone do synojme te miremenaxhojme memorjen. Monoprogramimi pa swapping dhe paging Menyra me e thjeshte per te menaxhuar memorjen eshte qe ne nje moment te caktuar te ekzekutohet vetem nje program. Ne kete rast memorja ndahet ndermjet ketij programi dhe sistemit te shfrytezimit.

Ne rastin e pare sistemi i shfrytezimit mund te jete ne fund te memorjes Ram. Ne rastin e dyte sistemi i shfrytezimit eshte vendosur ne ROM. Ne rastin e trete driver-at e paisjeve mund te jene te vendosur ne ROM

kurse pjesa tjeter e sistemit ne RAM. Modeli i pare eshte perdore kryesisht ne mainframe dhe ne minikompjutera dhe tani perdoret rralle. Modeli i dyte perdoret ne palmtop dhe ne sistemet embedded. Modeli i trete eshte perdore ne kopjuterat personale. Pjesa e sistemit ne ROM quhet BIOS ( basic input output system ). Multiprogramimi me particion fikse Monoprogramimi nuk perdoret me ne sisteme, me perjashtim te sistemeve embedded. Shumica e sistemeve moderne lejojne qe shume procese te ekzekutohen ne te njejten kohe. Duke pase shume procese qe ekzekutohen paralelisht ne mundesojme qe kur nje proces pret nje paisje I/O, nje tjeter mund te perdore CPU-ne. Ky multiprogramim rrit perdorimin e CPU-se. Menyra me e mire per te realizuar multiprogramimin eshte te ndahet memorja ne n particione. Ato mund te jene te barabarta ose jo ndermjet tyre. Kjo ndarje mund te realizohet edhe manualisht kur nis punen sistemi. Kur arrin nje pune e re, ajo mund te vendoset ne nje rradhe hyrese per particionin me te vogel qe e mban. Perderisa particionet jane fikse ne kete skeme, atehere humbet cdo hapsire ne nje particion qe nuk perdoret nga puna. Ne figuren a) sistemi eshte me particione te fiksuara dhe me

rradhe hyrese te vecanta. Ne figuren b) particionet fikse jane me te njejten rradhe hyrese.

Disavantazhi i vendosjes se puneve ne rradha te vecanta behet i dukshem kur rradha per nje particion te madh eshte bosh kurse rradha per nje particion te vogel eshte plot. Kjo ne figuren a)

Page 51: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

51

tregohet ne particionet 1 dhe 3. Ne kete rast punet e vogla duhet te prese per te marre memorjen , edhe pse ka boll memoje eshte bosh. Ne versionin e dyte b) kur nje particion eshte i lire, mund te ekzekutohet puna qe eshte me afer fillimit te rradhes dhe qe mund te ngarkohet ne particion. Perderisa nuk eshte e deshirueshme te humbet nje particion i madh per nje pune te vogel, nje zgjidhje me mire do ishte qe te zgjidhnim per te ekzekutuar punen me te madhe te mundshme qe ze particioni. Nje synim i mire do ishte qe te kishim gjithmone te pranishem qe pakten nje particion te vogel te lire. Ky do na ndihmoje qe te ekzekutojme punet e shkurtra pa pase nevoje qe te zinim particionet e medha. Swapping Organizimi i memorjes ne particione fikse eshte i thjeshte dhe efektiv ne batch sistemet. Kur arrin ne maje te rradhes, secila pune ngarkohet ne nje particion. Ajo qendron ne memorje derisa te kete mbaruar. Per aq kohe sa kemi pune ne memorje qe mbajne te zene CPU-ne, nuk kemi nevoje te bejme gjerat me te veshtira. Situata ndryshon ne sistemet timesharing si dhe ne sistemet e kompjuterave personale. Shpesh nuk ka memorje qendrore te mjaftueshme per te mbajtur te gjithe proceset aktive. Per kete paraqitet nevoja qe disa procese te mbahen ne disk, dhe kur te lirohet memorja. Jane dy teknika qe mund te perdoren ne menaxhimin me memorjes, te cilat jane swapping dhe memorja virtuale. Zgjedhja nese do perdorim njeren teknike apo tjetren varet nga hardware-i qe kemi ne dispozicion. Teknika e pare realizon sjelljen plotesisht ne memorje qendrore cdo proces, ekzekutimin e tij per pak kohe, dhe rikthimin e tij ne disk. Teknika e dyte lejon qe programet te ekzekutohet dhe kur ato jane pjeserisht ne memorje. Veprimi swapping paraqitet ne figuren meposhte.

Ne fillim ne memorje eshte vetem procesi A. Me pas krijohen proceset B dhe C. Ne figuren d) A kalohet ne disk. Me pas D “vjen” dhe B “largohet”. Ne fund A vjen perseri. Perderisa A tani eshte ne nje tjeter pozicion ne memorje, atehere adresa e re duhet te merret ose nga software ne momentin kur rikthehet, ose nga hardware gjate ekzekutimit te programit. Kur procesi i swapping krijon disa vrima ne memorje, mundet qe te gjitha te grupohen ne nje vrime te madhe duke i spostuar te gjithe proceset. Kjo menyre quhet ndryshe dhe kompaktesimi i memorjes, por kjo kryesisht nuk preferohet pasi shpenzon shume nga koha e CPU-se. Por duhet te kemi parasysh se sa memorje duhet ti caktohet nje procesi kur krijohet. Nqs proceset krijohen me nje madhesi fikse qe nuk ndryshon atehere caktimi i memorjes eshte i thjeshte: sistemi i shfrytezimit i cakton proceseve aq memorje sa iu duhet, as me pak e as me shume. Nqs rriten segmentet e te dhenave per nje proces, atehere hapet problem me rritjen e madhesise se procesit. Nqs nje hapsire ne memorje bosh eshte afer zones ku eshte pozicionuar

Page 52: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

52

procesi, atehere kjo zone mund te merret nga procese duke lejuar rritjen e tij. Por nqs nje proces eshte afer me nje proces tjeter ka dy mundesi, ose procesi te spostohet ne nje tjeter pozicion me te madh, ose procesi qe eshte afer tij te largohet ne disk per ti bere vend ne memorje. Nqs procesi nuk mund te rritet ne memorje, dhe as nuk mund te kalohet ne disk, atehere ai duhet ose te prese, ose do te mbaroje me komanden e nje procesi tjeter. Meqenese dihet se nje proces do te rritet, ndoshta do te ishte ide e mire qe sa here te kalohet nga disku ne memorje te alokohet pak memorje me teper per te. Gjithsesi kur procesi kalon ne disk, do te kalohet vetem memorja qe eshte perdore dhe nuk ia vlen te kalojme dhe

memorjen e paperdore. Ne figuren a) tregohet se si mund te alokohet hapsira per te dhena qe rriten, kurse ne figuren b) alokohet hapsira per te dhena qe rriten si dhe per turren e procesit e cila gjithashtu rritet. Ne kete figure shohim se secili proces ka nje turre ne maje te hapsires qe ze ne memorje dhe vazhdon e rritet poshte, kurse pjesa e te dhenave eshte me poshte dhe vazhdon e rritet lart. Hapsira mes ketyre dy segmenteve mund te perdoret nga te dy keto segmente. Nqs kjo

hapsire mbaron dhe procesi kerkon perseri hapsire te re, atehere procesi ose duhet te spostohet ne nje hapsire me te madhe, ose mund te kalohet ne disk derisa te krijohet nje hapsire e mjaftueshme per te, ose mund te vritet me komanden kill. Menaxhimi i memorjes me Bitmap Ne rastin kur memorja caktohet ne menyre dinamike, i takon sistemit te shfrytezimit ta manxhoje ate. Ka dy menyra se si mund te mbahen shenim perdorimi i memorjes: me ane te bitmaps, dhe me ane te listave te lira. Me tekniket bitmap, memorja ndahet ne njesi te alokueshme. Madhesia e ketyre njesive mund te jete sa disa gjatesi fjale, por mund te jete edhe disa kilobyte. Per te treguar faktin qe nje njesi eshte e zene paraqitet me shenimin 0 kur eshte e lire dhe me 1 kur eshte e zene. Ne figuren meposhte, ne pjesen a) tregohet nje pjese e memorjes me pese procese dhe tre vrima. Hapsirat e vijezuara jane te lira dhe ne bitmap jane treguar me 0. Ne figuren b) jepet paraqitja e kesaj memorjeje me bitmap, dhe ne figuren c) jepet me lista.

Page 53: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

53

Madhesia e nje njesie eshte nje ceshte e rendesishme per tu diskutuar. Sa me e vogel te jete njesia aq me i madh do jete bitmap. Me nje njesi te madhe 4 byte, 32 bit memorje do kerkojne vetem 1 bit ne bitmap, dhe ne pergjithesi nje memorje me 32n bit do perdorin n bitmap, keshtu qe bitmap do zere 1/33 hapsire ne memorje. Nqs njesia zgjidhet e madhe, bitmap do jete me e vogel, por do humbase memorje ne njesine e fundit te nje procesi ne rastin kur ky proces ze pak me shume nje shumfishi i nje njesie.

Nje bitmap siguron nje menyre te thjeshte per te mbajtur shenim fjalet e memorjes. Madhesia e nje bitmap varet vetem nga madhesia e memorjes si dhe nga madhesia e njesise se alokimit. Problemi me i madh eshte se kur duehn sjelle k njesi ne memorjen kryesore, atehere menaxheri i memorjes duhet te kerkoje ne bitmap k njesi njera pas tjetres qe kane bitin 0 ( gje qe tregon se jane te lira). Kerkimi ne bitmap eshte shpesh nje veprim i ngadalte, dhe ky eshte kundershtimi kryesor per tekniken bitmap. Menaxhimi i memorjes me lista te lidhura Nje tjeter menyre per te mbajtur shenim memorjen eshte dhe perdorimi i listave te lidhura. Ne baze te kesaj teknike mbahet nje liste e lidhur per te treguar hapsirat e zena dhe hapsirat e lira. Kjo paraqitet ne segmente, ku nje segment eshte ose nje proces ose nje vrime mes proceseve. Ne figuren qe pame me lart, secili element i listes specifikon nje vrime ( hole H ) ose nje proces P, adresen ku fillon, gjatesine dhe nje shenjues per elementin tjeter. Ne kete shembull lista e segmenteve eshte e renditur ne baze te adresave. Kjo perdoret shpesh sepse kur nje proces perfundon, lista ecen perpara. Kur nje proces perfundon normalisht ka dy fqinje, nje proces ose nje hapsire bosh. Perjashtim per kete bejne vetem rastet kur procesi eshte ne fillim ose ne fund te listes.

Ne figure jepen kater kombinimet e mundshme per fqinjet e nje procesi qe mbaron. Ne figuren a) updatimi i listes behet duke zevendesuar P me nje H. Ne figuren b) dhe c) dy hapsira jane bere bashke ne nje te vetme, dhe ne nje liste hiqet nje element. Ne figuren d) tre elemente jane bashkuar ne njedhe per kete dy elemente jane

hequr nga lista. Meqe proceset dhe hapsirat mbahen ne nje liste te renditur sipas adresave, atehere ne mund te perdorim algoritme te ndryshme per te alokuar memorjen per nje proces te ri. Se pari le te supozojme se menaxheri i memorjes e di paraprakisht se sa memorje duhet te caktoje. Algoritmi me i thjeshte per te percaktuar kete hapsire memorjeje eshte i pari qe pershtatet ( first fit ). Sipas ketij algoritmi, menaxheri i memorjes kerkon ne liste derisa gjen nje hapsire te mjaftueshme. Hapsira ndahet ne dy pjese, njera per procesin dhe tjetra per memorjen e paperdorshme. Ky algoritem eshte i shpejte per vete faktin se kerkon sa me pak qe te jete e mundur. Nje variant tjeter eshte dhe tjetri qe pershtatet (next fit). Ky funksionon ne te njejten menyre me perjashtimin qe nuk nis kerkimin nga fillimi i listes, por nga ai pozicion ku ka mbete ne kerkimin paraardhes. Statistikat tregojne se next fit ka nje performance pak me te keqe se first fit. Nje tjeter algoritem eshte dhe best fit. Ky algoritem kerkon komplet listen derisa sa gjen hapsiren me te vogel te majftueshme per te zene procesin. Ky algoritme nuk ze nje hapsire te madhe, por perpiqet te gjeje nje hapsire sa me afer asaj qe kerkohet. Best fit eshte me i ngadalte se first fit per faktin se ai duhet te kerkoje cdo here ne te gjithe listen per te gjete hapsiren me te pershtatshme. Ne te kundert me kete algoritem eshte dhe ai qe pershtatet me pak (worst fit), i cili i jep nje procesi hapsiren me te madhe te mundshme.

Page 54: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

54

Te gjithe keto algoritme mund te shpejtohen duke mbajtur lista te vecanta per rpoceset dhe per hapsirat. Ne kete menyre, i gjithe kerkimi do perqendrohej ne hapsirat dhe jo duke testuar dhe proceset. Cmimi qe duhet paguar ne kete rast eshte shtimi i kompleksitetit dhe ngadalsimi kur leshojme memorje, sepse ne kete rast na duhet te largojme segmentin nga lista e proceseve dhe ta kalojme ne listen e hapsirave. Nqs do implementojme ne dy lista te vecanta per proceset dhe per hapsirat, atehere lista e hapsirave mund te mbahet e renditur ne baze te madhesise duket bere keshtu me te shpejte algoritmin e best fit. Ne kete menyre, kur best fit kerkon per hapsira ne liste te renditur nga me e vogla deri tek me e madhja,sapo gjen nje vrime qe mjafton, ajo do jete ajo qe pershtatet me mire. Ketu algoritmi mund te ndaloje dhe nuk ka nevoje ta kerkoje deri ne fund listen. Nje tjeter algoritem eshte algoritmi i shpejte ( quick fit). Ky algoritem mban lista te vecanta per disa nga madhesite qe kekrohen me shpesh. Psh, ai mund te kete nje tabele me n elemente ne te cilen elementi i pare eshte nje shenjues i cili te con ne nje liste me hapsira me nga 4 KB, elementi i dyte eshte nje shenjues i cili te con ne nje liste me hapsira me madhesi 8 KB, elementi i trete eshte nje shenjues i cili te con ne nje liste me hapsira me madhesi 12 KB, e keshtu me rradhe. Hapsirat me madhesi 21 KB mund te vendosen ose ne nje hapsire 20 KB ose ne nje liste me hapsira me madhesi numra tek. Me kete algoritem eshte shume e shpejte gjetja e nje hapsire me nje madhesi te caktuar. Disavantazhi eshte ky qe kur nje proces mbaron ose kur kalohet ne disk, gjetja e hapsirave fqinje per te pare nese mund te kemi shkrirje ( bashkim) hapsirash eshte me kosto te larte. Nese nuk do behej kjo shkrirje , shpejt do kishim nje copetim te memorjes ne pjese te vogla te cilat nuk do mund te zinin asnje proces.

Leksioni 13 Memorja Virtuale

Shume vite me pare u shfaq problemi i programeve shume te medhenj te cilet nuk i ze

memorja. Zgjidhja ishte ndarja e programit ne disa pjese, te cilat quhen overlay. Overlay 0 do te nise e para punen. Kur ajo kryen punen, thirret nje tjeter overlay. Disa sisteme jane shume komplekse duke bere te mundur qe te disa overlays te jene ne memorje ne te njejten kohe. Megjithese detyra per te kaluar particionet nga memorja behet nga sistemi, kurse puna per te ndare programin ne pjese behet nga programuesi. Ndarja e programit ne keto pjese behej me shume bezdi dhe ishte pune shume e lodhshme.

Zgjidhje e mire eshte perdorimi i memorjes virtuale. Kjo zgjidhje u paraqit ne vitin 1961 nga Fotheringham. Idea e kesaj zgjidhjeje eshte kjo : madhesia e programit, te dhenat dhe teksti, mund ta kalojne sasine e memorjes fizike te lirshme. Sistemi i shfrytezimit mban ne memorjen qendrore pjesen e programit qe perdoret kurse pjesen tjeter e mban ne disk. Memorja virtuale mund te funksionoje shume mire dhe ne sistemet multiprogramming, me disa bite dhe pjese te programit njeheresh ne memorje. Nderkohe qe nje program pret qe te vijne nje pjese e tij ne memorje, ose nderkohe qe pret per nje paisje I/O, nje tjeter program mund te kete kontrollin e CPU-se. Paging Pjesa me e madhe e memorjes virtuale perdorin tekniken paging. Ne nje kompjuter ekzistojne nje bashkesi adresash te memorjes qe nje program mund te prodhoje. Kur nje program

perdor nje instruksion te tille : MOV REG, 100, ajo qe ben eshte nje kopje te permbajtjes te adreses 100 te memorjes ne nje regjister. Adresa mund te gjenerohet duke perdore indeksimin, regjistrat baze, regjistrat e segmenteve si dhe ne menyra te tjera.

Page 55: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

55

yre te ngjashme instruksioni MOV REG, 8192

6 faqeve virtuale ne 8 konture faqesh nuk e zgjidh problem

e me nje instruksion te tille, psh MOV REG , 32780 i cili eshte ne bitin 12 brenda

te marre konturin e faqes 1, atehere do te ngarkoje faqen virtuale 8 ne adresen fizike 4K dhe duhet te beje dy ndryshime ne

Keto adresa te gjeneruara quhen ndryshe dhe adresa virtuale nga hapsira e adresave virtuale. Ne kompjuterat pa memorje virtuale, adresat virtuale vendoset direkt ne bus-in e memorjes dhe mundeson qe te lexohet ose te shkruhet fjala e memorjes fizike me te njejten adrese. Kur perdoret memorja virtuale adresat virtuale nuk shkojne direkt ne bus-in e memorjes. Ne kete rast ata shkojne ne MMU ( Memory Management Unit ) e cila ben perkthimin e adreses virtuale ne nje adrese fizike.

Figura tregon sesi funksionon ky perkthim. Ne kete shembull kompjuteri gjeneron adresa 16-biteshe, nga 1 deri ne 64 bit. Keto jane adresa virtuale. Ky kompjuter ka vetem 32KB adresa fizike, por mund te shkruhen programe 64 KB. Te gjithe keto programe nuk mund te ngarkohen ne kete memorje. Nje kopje totale e programit mund te gjendet ne disk dhe sjellet ne memorje kur te jete nevoja. Hapsira e adresave virtuale eshte e ndare ne njesi qe quhen faqe (page). Njesia koresponduese ne memorjen fizike quhet kontur faqeje ( page frame ). Faqet dhe konturet e faqeve kane gjithmone te njejten madhesi. Ne kete shembull ata jane me nje madhesi 4 KB por ata variojne nga 512 byte deri ne 64 KB. Ne nje hapsire adresash virtuale me madhesi 64 KB dhe me memorje fizike 32 KB, ne mund te marrim 16 faqe virtuale dhe 8 konture faqesh. Transferimet mes RAM dhe diskut behen gjithmone ne njesi faqesh.

Kur programi perdor instruksionin MOV REG , 0 ai perpiqet te aksesoje adresen 0. Ne kete rast dergohet ne MMU adresa 0. MMU sheh se kjo adrese virtuale korespondon me faqen 0 ( qe ka hapsiren 0-4095) e ne fakt eshte konturi i faqes 2 ( 8192-12287). Prandaj ne bus-in e adresave vendos vleren 8192. Memorja s’di asgje rreth ketyre perkthimeve qe ben MMU, por sheh vetem ate qe dergohet ne bus, ne rastin me lart sheh vec vleren 8192. MMU me lart ka bere korespondencen mes adresave virtuale nga 0 deri ne 4095 ne adresat fizike nga 8192 ne 12287. Ne mentransformohet ne MOV REG, 24576 sepse adresa virtuale 8192 eshte ne faqen virtuale 2 dhe kjo faqe i korespondon konturit te faqes 6 ( adresat fizike nga 24567 deri ne 28671). Nje shembull i trete mund te ishte ai i adreses virtuale 20500 e cila eshte 20 byte larg fillimit te faqes virtuale 5 ( me adresat virtuale nga 20480 deri ne 24575 ) dhe i korespondon adreses fizike 12288+20=12308.

Aftesia per te bere korespondencen e 1in qe hapsira e adresave virtuale eshte me e madhe se memorja fizike. Perderisa kemi 8

konture faqesh fizike, ne do kemi vetem 8 faqe virtuale qe vihen ne korespondence me to. Faqet e tjera te shenuara me X nuk kane nje korespondence. Ne hardware ekziston nje bit i cili mban shenim se cilat faqe jane te pranishme ne memorje. Nje bit i tille quhet present / absent bit ( bit i prezences/mungeses).

Cfare do ndodhfaqes virtuale 8, faqe kjo e cila nis ne 32768 ? MMU ve re se kjo faqe nuk ka nje kontur

faqeje fizike koresponduese, dhe kete gje e kupton me faktin se ka nje shenim X prane saj. Kjo shkakton qe CPU t’i “kerkoje ndihme” sistemit te shfrytezimit, dhe te shkaktoje nje gabim faqeje (page fault). Sistemi i shfrytezimit merr nje kontur faqeje, i cili kohet e fundit eshte perdorur pak, dhe e kopjon permbajtjen e saj ne disk. Me pas merr faqen qe referonte ne kete kontur faqeje dhe ndryshon korespondimet dhe ne fund rinis intruksionin e nderprere. Ne rastin e shembullit me lart, nqs sistemi i shfrytezimit vendos qe

Page 56: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

56

te eshte dhene adresa i kalohet MMU-se. Kjo adrese virtuale 16 – biteshe ndahet ne numra faqesh 4

shte 1 atehere numri i konturit te

nje tabele faqesh qendron ne faktin se kompjuterat moderne

n e faqes eshte rrjedhoje e

acila permban nje tabele me regjistra te shpejte,

jithe hardware-i ka nevoje vetem per nje regjister te vetem qe shenon ne t

harten e MMU. Se pari duhet te beje faqen virtuale 1 si nje faqe pa korespondence. Me pas duhet te zevendesoje ne faqen virtuale 8 shenimin X me vleren 1. Ne kete menyre kur ti rikthehemi instruksionit, adresa virtuale 32780 te korespondoje me adresen fizike 4108. Tabelat e faqeve Le te shohim me nga afer se si funksionon MMU. Ne figuren meposhvirtuale 8196 e cilabiteshe si dhe nga nje offset 12 bit. Me 4 bite per nje numer faqeje ne mund te kemi 16 faqe dhe me 12 bit offset, ne mund te kemi brenda nje faqeje 4096 adresa. Numri i faqes perdoret si nje index ne nje tabele faqesh. Nqs biti i presences/ mungeses eshte 0, atehere shkaktohet nje nderprerje te procesit. Nqs ky bit efaqes i gjetur ne tabelen e faqeve kopjohet ne 3 bit ne regjistrin rezultat, se bashku me 12 bit offset, i cili kopjohet i pamodifikuar, ashtu sic eshte marre nga adresa virtuale. Keto formojne se bashku adresen fizike 15 biteshe. Regjistri rezultat vendoset ne bus-in e memorjes si adrese fizike. Sic e shohim dhe ne figure, bitet me te rendesishem tregojne numrin e faqes, kurse bitet me pak te rendesishem jane si offset. Numri i faqes virtuale perdoret si index per ne tabelat e faqeve. Prej ketij indexi gjendet numri i konturit te faqes. Qellimi i tabelave te faqeve eshte te behet nje korespondence i faqeve virtuale ne konturet e faqeve. Nje problem qe mund te kemi ne lidhje me kete ceshtje eshte se tabelat e faqeve mund te jene shume te medha. Gjithashtu synim i yni eshte te behet sa me shpejt gjetja e konturit te faqes kur jepet faqja virtuale.

Problemi i madhesise se

perdorin adresa virtuale me madhesi se paku 32 bit. Me nje faqe me madhesi 4 KB, nje hapsire adresash me 32 bit ka 1 milion faqe. Me 1 milion faqe ne nje hapsire adresash virtuale, tabela e faqeve duhet te kete gjithashtu 1 milion elemente. Gjithashtu kini parasysh se cdo proces ka nje tabele faqesh te veten, kjo sepse cdo proces ka hapsiren e vet te adresave virtuale. Synimi yne per te arritur te gjejme sa me shpejte konturifaktit se: lidhja virtuale-fizike duhet te behet ne cdo referensim memorjeje. Nje instruksion tipik ka nje fjale dhe gjithashtu nje operand. Per kete eshte e nevojshme qe per cdo intruksion te behen nje, ndoshta dhe dy ose me teper referensa per ne tabele faqesh. Nje qitet ne figure. Aty kemi nje tabele te vetme e me nga nje element per cdo faqe virtuale, te

indeksuar nga numri i faqes virtuale. Kur nis nje proces sistemi i shfrytezimit ngarkon regjistrat me tabelen e procesit. Kjo tabele merret nga kopja qe ndodhet ne memorjen qendrore. Gjate procesit te ekzekutimit nuk ka me nevoje per te referensuar ne tabelen e faqeve. Avantazhi i kesaj metode eshte fakti qe nuk kerkon referensa memorjeje gjate procesit te lidhjes. Disavantazhi eshte se kostoja e larte si dhe performanca prishet kur duhet te ngarkojme te tere tabelen per cdo here qe rinis punen nje proces. Nje tjeter zgjidhje ekstreme mund te ishte ajo e ngarkimit te te tere tabeles se faqeve ne memorjen qendrore. I g

zgjidhje e thjeshte ne koncept do ishte ajo qe par

fillim e tabeles. Ky projektim lejon qe harta e memorjes te ndryshoje vetem po te ndryshojme nje regjister te vetem. Sigurisht qe ka nje disavantazh kerkesa per nje ose me teper shenjuesa qe lexojne tabelat e faqeve gjate ekzekutimit te cdo instruksioni.

Page 57: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

57

abelat shume-nivelshe te faqeve

Problemi i ruajtjes i tabelave ume te medha faqesh ne memorje eshte

zgjidhur duke perdore tabelat

tjes se te gjitha

e majte mi ta

jMMU. MMU se pari merr fushen e PT1 dhe e perdor ke

te tabeles se nivelit te dyte. Hyrja 0 e tabeles se nivelit te pare shenjon

nevojiten ne ate moment; tabela e nivelit te pare si dhe tabelat e nivelit te

Le te shohim me ne detaj strukturen e nje elementi te nje tabele faqeje. Ne fakt detajet e po paraqesim informacionin e perbashket per te

jithe l

T

sh

shumeniveleshe. Ne figuren a) kemi nje adrese virtuale 32-biteshe e cila eshte ndare ne nje fushe 10 biteshe e quajtur PT1, ne nje tjeter fushe 10 biteshe e cila quhet PT2 dhe ne nje fushe 12 biteshe e cila quhet Offset. Madhesia e offset eshte 12 bit, faqet jane 4 KB dhe ne total jane gjithsej 220 faqe te tilla. Sekreti per faqet shumeniveleshe eshte shmangia e mbajtabelave te faqeve ne memorje, sidomos kur jo te gjitha jane ne perdorim. Ne figuren b) ne shohim se si funksionon tabela dynivelshe. Ne tke belen e nivelit te pare. Kjo tabele eses PT1. kur nje adrese virtuale i jepet te vlere si nje index per ne nivelin e pare.

Secila nga keto 1024 hyrje paraqet 4M sepse komplet hapsira e adresave prej 4 gigabyte eshte ndare ne pjese 1024 byte. Hyrja e percaktuar nga indeksimi i tabeles se nivelit te larte te con ne adresen ose ne numrin e konturit te faqes

ka 1024 hyrje te cilat korespondojne me 10 bitet e p

ne tekstin e programit, hyrja 1 shenjon ne te dhenat dhe hyrja 1023 shenjon ne faqen e tabeles per turren e procedurave. Hyrjet e tjera qe ne figure jepen te vijezuara nuk perdoren. Fusha PT2 tani perdoret si nje index ne tabelen e faqeve te nivelit te dyte. Kjo tabele do gjeje numrin e konturit te faqes per vete faqen. Vini re se ne figuren mesiper, megjithese hapsira e adresave permban mbi nje milion faqe, vetem 4 tabela faqeshdyte, nga 0 deri ne 4M, nga 4M deri ne 8M, si dhe 4 M me te larta. Biti i prezences/mungeses ne 1021 hyrjet e tabeles se nivelit te pare jane te vendosur ne 0. Duke qene te tilla, cdo here qe te perpiqemi ti aksesojme, do marrim nje gabim. Struktura e nje elementi ne nje tabele faqesh ketij elementi varen ngushte nga makina, por neg lojet.

Page 58: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

58

Kjo eshte nje pamje tipike e nje elementi per nje tabele faqesh. Madhesia eshte e ndryshme ne kompjutera te ndryshem, por tipike eshte madhesia prej 32 bit. Fusha me e rendesishme eshte page frame number (numri i konturit te faqes), kjo sepse qellimi kryesor eshte gjetja e kesaj vlere. Me pas kemi bitin e prezence/mungeses. Nqs ky bit eshte 1 atehere hyrja eshte e lire dhe mund te perdoret. Nqs ky bit eshte 0 atehere faqja virtuale, te ciles i perket ky element i tabeles, per

dodhet ne memorje. Aksesimi i nje elementi te tille shkakton gabim. brojtjes tregon se cili lloj aksesimi eshte i lejuar. Nje menyre per te treguar kete

shte kur kjo fushe permban 1 bit, i cili kur eshte 0 tregon aksesimin lexim / shkrim, kurse kur eshte 1

( dirty bit )

t ka shume rendesi ne algoritmet e zevendesimit te qeve.

ur ndodh nje gabim faqeje, sistemi i shfrytezimit duhet te zgjedhe nje faqe per ta larguar ga me

ohe, atehere ky opjim do ishte i panevojshem.

Logjikisht sugjerojme se do ishte m arguar nga memorja te zgjidhej nje faqe e cila do ishte pak e perdorur ko qe e cila po perdoret shpesh. Algoritmet qe po shqyrtojme do jene teorike ose eksperimental.

uk kemi ne memorje ate faqe qe na duhet per kete instruksion, por emi m

argohet faqja qe ka etiketen me te adhe, pra faqja e cila duhet te prese me gjate para se te referensohet.

shte fakti se nuk mund te realizohet !!! Ne momenti

momentin nuk n Biti i me

mundesohet vetem leximi. Nje tjeter mundesi eshte qe kjo fushe te permbaje 3 bite, nje bit per secili aksesim, lexim, shkrim, ekzekutim. Bitet e modifikimt dhe references mbajne shenim per perdorimin e faqes. Kur mbi nje faqe eshte shkruar, atehere hardware automatikisht shenon bitin e modifikimit. Nqs faqja eshte modifikuar atehere ajo duhet te rishkruhet ne disk. Nqs faqja nuk eshte modifikuar kjo do te thote se kopja e diskut eshte ende e vlefshme. Ky bit quhet ndryshe dhe biti i papastertisepasi reflekton gjendjen e faqes. Biti i referencimit vendoset kurdo qe nje faqe eshte e referensuar, ose per te shkruan ne te , ose per tu lexuar. Vlera e ketij biti ndihmon sistemin e shfytezimit te zgjedhe nje faqe per te evituar qe te ndodhe nje gabim faqeje. Ky bifa Biti i fundit pengon te ndodhe caching. Kjo eshte e rendesishme per faqes qe referensojne ne regjistrat e paisjeve (device-ve) dhe jo ne memorjen kryesore. Me kete bit, caching eshte jo aktive. Makinat qe kane nje hapsire me vete per paisjet I/O nuk perdorin kete bit.

Leksioni 14 Algoritmet e zevendesimit te faqeve

Kn morja dhe per te sjelle faqen e kerkuar nga disku ne memorjen qendrore. Nqs faqja qe do spostohet eshte modifikuar gjate kohes qe ka qene ne memorje, atehere ajo duhet te rishkruhet ne disk per te updaduar kopjen ne te. Nqs faqja nuk eshte modifikuar gjate kesaj kk

ire qe per tu lhet e fundit, dhe te mos largohej nje fa

Algoritmi optimal i zevendesimit te faqeve Menyra me e mire per te zevendesuar faqet eshte e thjeshte per tu pershkruar, por eshte e pamundur per tu implementuar. Peshkrimi i ketij algoritmi eshte ky : ne momentin qe ndodh gabimi i faqes ( page fault ) ne nk emorjen plot me faqe te tjera, te cilat do na duhen pas 10, ose 100 ose dhe pas 1000 instruksionesh. Secila faqe mund te etiketohet me numrin e instruksioneve qe do ekzekutohen para se te referensohemi te faqja. Algoritmi optimal thote se duhet te lm Problemi i vetem qe ka ky algoritem eqe ndodh gabimi i faqes, sistemi i shfrytezimit nuk ka si ta dije se cila faqe do referensoje me vone. Te njejten situate e pame me algoritmet e skedulimit. Nga ta dije sistemi se cili eshte procesi me i shkurter?! Pune nuk kryen as zgjidhja e procesimit ne nje simulator dhe shenjimi i te gjithe faqeve referensuese. Nuk mund te impelementohet ky algoritem per heren e dyte duke u bazuar ne

Page 59: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

59

e rendesishme te mbahet mend se keto bite duhen updatuar ne cdo referensim emorjeje, keshtu qe keto bite percaktohen nga hardware. Pasi nje bit eshte vendosur me vleren 1,

i qendon i tille derisa sistemi i shfrytezimit e ripercakton ate me vleren 0 ne software. poshte: kur nis nje proces

lgoritmi ” i pari qe hyn, i pari del “ ( first-in first-out (fifo) ). Ky algoritem ngjason me nje

et fakti se mund te largohet nje faqe e cila kerkohet shpesh dhe kjo gje kakton me shume gabime faqesh. Per kete arsye ky algoritem perdoret rralle.

ekzekutimin e heres se pare ne simulator. Me poshte po shohim disa algoritme te realizueshem ne sisteme reale. Algoritmi i zevendesimit te faqes me pak te perdorur kohet e fundit Memorja virtuale ka dy bite qe ndihmojne sistemin e shfrytezimit te mbledhe material se cila faqe eshte e referensuar dhe cila jo. Biti R caktohet per faqet te cilat jane te referensuara. Biti M i vendoset faqeve te cilat jane modifikuar. Keto dite ndodhen ne cdo element te tabeles se faqeve. Eshte ma Nqs hardware nuk ka keto bite, atehere mund te simulohet si mete gjitha faqet e tij shenohen qe nuk jane ne memorje. Sapo te referensohemi tek nje faqe do te ndodhe nje gabim faqeje. Sistemi i shfrytezimit cakton bitin R te tabelave te tij, ndryshon elementin e tabeles duke shenjuar ne kete menyre ne faqen e duhur, cakton menyren Read Only dhe rinis ekzekutimin e instruksionit. Nqs faqja duhet modifikuar, atehere ndodh perseri nje gabim ne faqe, duke bere te mundur qe sistemi i shfrytezimit te modifikoje bitin M duke bere te mundur aksesimin Read/Write. Algoritmi “jo i perdorur kohet e fundit” , NRU (not recently used) ne menyre implicite largon nje faqe e cila nuk eshte referensuar per nje interval te fisuar kohe ( psh 20 msec). Ky algoritem nuk largon nje faqe e cila eshte duke u perdore shpesh. Avantazhet e ketij algoritmi jane thjeshtesia ne kuptim, eficient ne implementim si dhe jep nje performance e cila nuk eshte optimale, por eshte e mire. Arradhe ne supermarket, largohet ai qe ka ardhe i pari. Ne menyre te ngjashme, sistemi i shfrytezimit mban nje liste te te gjitha faqeve qe jane aktualisht ne memorje. Faqja qe ndodhet ne fillim te listes eshte faqja me e vjeter, kurse faqja ne fund te listes eshte faqja e sapoardhur. Nje gabim faqeje shakton largimin e fillimit te listes, dhe shtimin e nje tjeter elementi ne fund te listes. Problemi kryesor ketu mbetsh Algoritmi i shansit te dyte ( second chance replacement) eshte nje modifikim i algoritmit FIFO. Ky algoritem shmang problemin e largimit te faqes shume te perdorur vetem se ke bitin R me te vjeter se faqet e tjera. Nqs biti eshte 0 atehere faqja eshte e vjeter dhe e paperdorur, keshtu qe duhet zevendesuar menjehere. Nqs biti R eshte 1 atehere biti behet 0, faqja vendoset ne fund te listes dhe koha e saj e ngarkimit modifikohet duke bere sikur faqja sapo ka ardhur ne memorje. Me pas vazhdon perseri kerkimi.

Page 60: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

60

Sic shohim ne figure, faqet A deri ne faqet H mbahen ne nje liste e renditur ne baze te ohes kur kane ardhur elementet ne memorje. Ne figuren a) faqet jane renditur me ane te

algoritmit FIFO. Ne figuren b) lista e faqeve ne rastin kur ndodh nje gabim ne faqe ne momentin 20 dhe A ka bitin R 1. Numrat ne ket figure tregojne kohet e ngarkimit ne memorje. Supozoni se ndodh nje gabim faqeje ne momentin 20. Faqja A eshte me e vjetra. Kjo faqe ka ardhur ne memorje ne momentin 0, sapo nisi procesi. Nqs A ka bitin R 0, ajo do largohet nga memorja. Nqs eshte e modifikuar, ajo duhet shkruar dhe njehere ne memorje, nqs nuk eshte e modifikuar, ajo thjesht largohet nga memorja. Nqs biti R eshte 1, atehere faqja A vendoset ne fund te listes, dhe koha a saj e ardhjes ne memorje behet 20. Biti R behet 0. Kerkimi per nje faqe tjeter vazhdon me faqen B. Ajo qe ben ky algoritem eshte kerkimi per nje faqe te vjeter e cila nuk ka qene e referensuar kohet e fundit, ne intervalin clock te fundit. Nqs te gjitha faqet kane qene te referensuara, atehere ky algorimet shnderrohet ne nje FIFO. Supozoni se ne figuren a) te gjithe

et dhe nje tjeter faqe vendoset ne vend te saj. Pas kesaj shenjuesi spostohet e nje

hmen. Me te njejten gjike, nje faqe qe nuk eshte perdore kohet e fundit, nuk do duhet shume dhe ne te ardhmen. Per

matikisht rritet pas cdo struksioni. Gjithashtu cdo tabele faqeje duhet te kete nje fushe qe mund te mbaje kete numrator.

e faqeve qe i duhen dhe

k

bitet R jane 1. Sistemi i shrytezimit nje nga nje do te spostoje per ne fund te listes te gjitha faqet, duke bere 0 bitin R tek te gjitha keto faqe, si dhe duke modifikuar tek te gjitha kohet e ngarkimit ne memorje. Jemi perseri ne faqen A e cila kete here e ka bitin R 0, dhe per kete arsye kete here do largohet nga memorja. Vini re se ky algoritem ka gjithmone nje perfundim. Algoritmit sipas skemes se ores. Ky eshte nje variant i algoritmit te shansit te dyte, por em ndryshimin se lista eshte nje liste rrethore, ku nuk ka nje fillim dhe nje fund. Eshte nje shenjues i cili shenjon ne faqen me te vjeter. Kur ndodh nje gabim faqeje, shenjuesi do jete duke shenjuar tek faqja me e vjeter, dhe ne kontrollojme pikerisht kete faqe. Nqs kjo faqe ka bitin R te barabarte me 0, atehere faqja largohm pozicion. Nqs R eshte 1, atehere ky bit behet 0 dhe shenjuesi spostohet me nje pozicion. Ky proces perseritet derisa te gjendet nje faqe me R=0. Ky algoritem nuk quhet me kot sipas skemes se ores, dhe ndryshon nga shansi i dyte vetem nga implementimi. Algoritmi i faqes me pak te perdorur kohet e fundit ( least recently used (LRU) ) eshte nje perafrim i mire i algoritmit optimal. Ky algoritem bazohet ne faktin statistikor qe tregon se kur nje faqe eshte perdorur shume kohet e fundit, ai do perdoret perseri ne te ardlokete kjo faqe meriton te largohet. Megjithese ky algoritem nuk duket i pamundur per tu realizuar, eshte shume i shtrenjte ne kosto. Per te implementuar kete algoritem, duhet te mirembahet nje liste e lidhur e te gjitha faqeve ne memorje. Ne fillim te kesaj liste do jene faqet e perdorura me pak. Veshtiresia qendron ne faktin se duhet updatuar ne cdo referensim memorjeje. Eshte nje veprim i veshtire gjetja e nje faqeje ne liste, fshirja e saj dhe me pas spostimi i saj ne fillim te listes. Ka disa menyra implementimi i ketij algoritmi duke perdore hardware te vecante. Menyra me e thjeshte kerkon nje hardware me nje numrator C 64 bitesh i cili autoinPas cdo referense, vlera e numratorit C ruhet ne tabelen e faqeve per faqen te cilen referenson. Kur ndodh nje gabim faqeje, sistemi i shfrytezimit kerkon te gjithe numratoret ne tabelen e faqeve dhe gjen numratorin me te vogel. Faqja te ciles i perket ky numrator do jete faqja me pak e perdorur kohet e fundit. Algoritmi i “Grupit te punes” (working set) mori kete emer nga Denning ne vitin 1980. Procesi normalisht nis pa pase asnje faqe ne memorje. Sapo CPU-ja perpiqet te marre instruksionin e pare, shkaktohet nje gabim ne faqe. Kjo ben qe sistemi i shfrytezimit te nise punen per marrjen ne memorje te faqes qe i duhet instruksionit te pare. Do kete perseri gabime faqeje qe duhen per variablat globale si dhe per procedurat. Pas pak procesi ka shumicenvazhdon punen me mire, duke pase me rralle gabime faqesh. Kjo stategji quhet ndryshe dhe marrje

Page 61: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

61

e faqesh. Nqs memorja eshte shume e vogel per te mbajtur te gjithe grupin e unes, atehere procesi mund te shkaktoje shume gabime faqesh dhe do ekzekutohet ngadale. Kjo

ne memorje te gjitha faqet qe kerkohen. Problemi eshte te shmagim kete perseritje

mund te

rej faqeve te klasave me te uleta. Ky algoritem eshte i thjeshte per tu plem

e i shenuar keto ne nje liste lineare. y algoritem largon faqen me te vjeter, por kjo nuk eshte nje zgjedhje e mire.

FIFO, eshte nje permiresim i ndjeshem i

ekzekutim.

e i shtrenjte ne plem

tezimit eshte dhe kontrolli i paisjeve I/O. Eshte sistemi i shfrytezimit ai jep komandat per keto paisje, komandon interruptet dhe trajton gabimet.

sipas kerkeses ( demand paging ) dhe ne kete menyre faqet ngarkohen vetem kur duhen, jo para se te nevojiten. Bashkesia e faqeve qe nje proces perdor ne nje moment te caktuar quhet grup pune. Nqs i gjithe grupi i punes eshte ne memorje , atehere procesi do te ekzekutohet pa probleme, pa shkaktuar gabimpndodh per faktin se ekzekutimi i nje instruksioni realizohet per pak nanosekonda, kurse leximi i nje faqeje nga disku kerkon 10 milisekonda. Nqs kemi shkallen nje instruksion per 10 milisekonda, atehere per nje proces do duhej vite per te mbaruar. Nje proces i cili shkakton shpesh gabime faqesh ( nje ne pak instruksione ) atehere ky proces quhet i shkatrruar (thrashing). Ne nje sistem multiprogramimi , proceset levizen ne disk per ti lene hapsire proceseve tjera te kene ne dispozicion CPU-ne. Ceshtja shtrohet se cfare do ndodhe kur keto faqe do risillen ne memorje. Asgje e vecante nuk do ndodhe, procesi perseri do jete nen kushte gabimesh faqesh derisa te vijnete panevojshme qe shaktohet cdo here qe nje rpoces do rinise punen. Per kete shume sisteme perpiqen te mbajne shenim grupin e punes per cdo proces dhe para se procesi te nise punen, te sigurohen se grupi i tij i punes eshte ne memorje. Ky eshte modeli i grupit te punes, dhe u projektua qe te zvoglonte ndjeshem shkallen e gabimeve te faqeve. Ngarkimi i faqes para se te ekzekutohet procesi quhet ndryshe dhe parafaqosja (prepaging), por mos harroni se grupi i punes ndryshon vazhdimisht. Per te implementuar kete model eshte e nevojshme qe sistemi i shfrytezimit te mbaje shenim faqet qe jane ne grupin e punes te nje procesi. Duke pase kete informacion ne zhvillojme paraprakisht nje algoritem zevendesimi te faqeve. Permbledhje per algoritmet e zevendesimit te faqeve Le ti bejme nje permbledhje shumellojshmerise se algoritmeve qe pame me lart, duke treguar karakteristikat baze te secilit. Algoritmi optimal i referensohet asaj faqeje qe do prese me shume ne memorje, qe eshte e fundit ne rradhe, por ne fakt nuk ka asnje menyre per te percaktuar kete gje. Per kete ky algoritem nuk ka zbatim ne praktike, por eshte i mire per te matur performancen e tjereve. Algoritmi NRU ndan faqet ne kater kategori, ne baze te gjendjes se biteve R dhe M. Nje faqe cfaredo zgjidhet pim entuar por largon dhe faqet qe mund te na duhen, prandaj ekzistojne dhe algoritme me te mire se ky. FIFO mban shenim rradhen e ngarkimit te faqeve, dukK Algoritmi i shansit te dyte eshte nje modifikim iperformances. Algoritmi sipas ores eshte nje implementim ndryshe i shansit te dyte, ka te njejten performance por eshte me i shpejte ne Algoritmi LRU ( i faqes me pak te perdorur kohet e fundit ) eshte shume i mire, por duhet nje hardware shtese per tu implementuar. Algoritmi i grupit te puneska nje performance te mire, por eshtim entim. Ne nje permbledhje mund te themi se permiresime te LRU dhe te grupit te punes jane algoritmet me te favorshem ne perdorim.

Leksioni 15 Paisjet I/O

Nje nga detyrat kryesore te sistemit te shfry

Page 62: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

62

dore nga operatori. Mire do ishte qe kjo nderfaqe te mos

e hardware per keto paisje.

Persona te ndryshem shohin ndertimin ne hardware ne kendveshtrime te ndryshme. xhinieret shohin ne kendveshtrimin e qarqeve elektrike, telave dhe paisjeve te tjera te tilla.

Programuesit shohin nderfaqen qe lidh m andat qe arrin te kuptoje nje hardware, funksionet qe kryen, trajtimin e gabimeve. i yne do jete ai i programuesve, pra nuk do merremi me anen e ndertimit fizik, por me programimin e ketyre paisjeve.

es ketyre paisjeve eshte jo shume i percaktuar. Psh, te jithe e pranojme menjehere qe nje disk eshte nje paisje bllok sepse panvaresisht se ku ndodhet

ojme te dhena nga nje cilinder tjeter, dhe te presim derisa te arrihet te lexohet

per strukturen e bllokut. Ne

Kontrollerat e paisjeve

Gjithashtu duhet te ndertohet nje nderfaqe qe mundeson nderveprimin me keto paisje. Kjo nderfaqe duhet te jete e thjeshte per tu perndikohej nga lloji i paisjes, pra te ishte e njejte per te gjitha llojet e paisjeve. Ne fillim le te shohim karakteristika n Tipare te hardware In

e softin, kom Kendveshtrim

Paisjet I/O ndahen ne dy kategori : paisjet bllok dhe paisjet karakter. Nje paisje bllok eshte e tille qe ruan informacion ne blloqe te fiksuar, secili me adrese te veten. Blloqe te tille mund te jene ne nje madhesi prej 512 byte, por shkojne deri ne 32,768 byte. Karakteristika themelore e paisjeve te tilla eshte mundesia per te lexuar ose per te shkruar keto blloqe ne menyre ta panvarur nga njeri tjetri. Paisje tipike bllok jane disqet. Po te shohesh me ne detaj, dallimi mgkrahu, ne mund te lexajo e dhene qe duam. Shiritet magnetike permbajne rradhe blloqesh. Ne mund te japim komanden per te lexuar bllokun N, dhe mund te rrotullojme shiritin derisa te arrijme bllokun N. Gjithashtu mund te jete ose jo e mundur rishkrimi i nje blloku ne mes te shiritit. Edhe sikur te ishte e mundur perdorimi i shiritit si nje paisje me aksesim te rastit, ky nuk eshte nje perdorim normal i tij.

Tipi tjeter i paisjeve eshte paisjet karakter. Nje paisje e tille merr nje rrjedhe karakteresh, pa pase dijeni

to nuk ka adresim. Printerat, network interfaces, mousi, dhe shume paisje te tilla mund te trajtohen si paisje karakter. Klasifikimi nuk eshte perfekt. Nje clock psh, nuk ben pjese tek asnjera kategori. Ai nuk perdor adresat dhe as nuk merr si hyrje nje rradhe karakteresh. Gjithcka qe nje clock ben eshte shkaktimi i interrupteve ne intervale te percaktuara kohe. Paisjet I/O kane nje diapazon te gjere shpejtesish. Keto madhesi jepen ne figuren.

Page 63: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

63

kater, deri ne tete paisje identike qe omand dart, psh NSI, IEEE, ose ISO, atehere kompanite mund te bejne kontrollera ose paisje qe i pershtaten esaj nderfaqeje.

llerit eshte te konvertoje nje rrjedhe bitesh ne nje bllok byte-sh dhe te

nat, te marre te dhena te reja, si dhe te kryeje veprime te ngjashme me keto.

regjistrave, kane dhe nje buffer te dhenash te cilin sistemi i shfrytezimit und ta lexoje ose ne te cilin mund te shkruaje. Shtrohet pyejta se si arrin te komunikoje CPU-ja

enat ne bufferat e paisjes. Ekzistojne dy alternativa. E para :

Paisjet I/O ne pergjithesi perbehen nga nje komponent mekanik dhe nga nje elektronik. Pjesa elektronike quhet ndryshe dhe device kontroller, ose adapter. Ne kompjuterat personale kjopjese ka formen e nje skede qarku te printuar. Pjesa mekanike eshte vete paisja. Skeda e kontrollerit zakonisht ka nje lidhes (connector) ne te cilen vendoset nje kabblo qe ben lidhjen me vete paisjen. Shume kontrollera mund te kene dy, ose k ojne. Nqs nderfaqja mes nje kontrolleri dhe vete paisjes eshte nje nderfaqe stanAk Detyra e kontromund te korigjoje gabimet qe ndodhin. Blloku i byte-ve grumbullohet ne nje buffer brenda kontrollerit. Pasi kontrollohet nese ka gabime, dhe nqs rezulton se nuk ka te tilla, atehere mund te kopjohet ne memorje. Harta e memorjes e paisjeve I/O Te gjithe kontrollerat kane disa regjistra qe perdoren kur duhet komunikuar me CPU-ne. Sistemi i shfrytezimit, duke shkruar ne keto regjistra, mund te komandoje paisjen dhe te shperndare te dheDuke lexuar keto regjistra, sistemi i shrytezimit mund te mesoje se cila eshte gjendja e ketyre paisjeve, nese eshte gati apo jo paisja per te marre nje komande te re, si dhe informacione te tjera te ketij lloji. Paisjet, pervec mme keto rregjistra si dhe me te dhsecili regjister kontrolli ia caktohet nje numer porte I/O. Ky numer eshte numer i plote 8-bit ose 16-bit. Instruksioni IN REG, PORT mundeson qe CPU-ja te lexoje ne regjistrin e kontrollit PORT dhe te ruaje rezultatin ne regjistrin REG. Ne menyre te ngjashme instruksioni OUT PORT, REG ben te mundur qe CPU te shkruaje permbajtjen e REG ne nje regjister kontrolli.

Ne skemen a) hapsira e adresave per memorjen dhe per I/O. Interuksioni IN R0, 4 dhe instruksioni MOV R0,4 ne kete projektim jane te ndryshem. I pari ben te mundur leximin e permbajtjes se paisjes ne porten 4 dhe vendosjen e kesaj te dhene ne regjistrin R0. Instruksioni i dyte lexon permbajtjen e fjales 4 ne memorje dhe vendosjen e saj ne regjistrin R0. Ne figuren b) regjistrat e kontrollit jane vendosur ne hapsiren e memorjes. Secilit prej ketyre regjistrave i caktohet nje adrese memorjeje unike. Ky sistem quhet ndryshe dhe harta e memorjes I/O ( memory-mapped I/O ). Zakonisht adresat e caktuara jane ne fillim te zones se adresave. Nje skeme e ndermjetme jepet ne figuren c). Kjo skeme eshte me buffera te dhenash ne harta memorjes I/O, dhe porta I/O te vecanta per regjistrat e kontrollit. Pentium perdor kete arkitekture, me adresa 640K deri ne 1M qe i rezervohen bufferave per te dhenat e paisjeve si dhe porta I/O nga 0 deri ne 64K.

Page 64: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

64

AD ne linjen e

ve, edhe paisjes edhe memorjes.

er te pase nje mekanizem special

ke eshte se nqs ka vetem nje zone adresash atehere te gjithe

Kur CPU kerkon te lexoje nje fjale gjuhe, ose prej memorjes ose prej nje porte I/O, ai vendos adresen qe kerkon ne linjen e busit te adresave dhe i shton sinjalin REkontrollit te busit. Nje linje e dyte sinjali perdoret per te treguar nese ka nevoje per per hapsire memorjeje ose hapsire I/O. Nqs kerkohet hapsire memorjeje, atehere eshte memorja ajo qe i pergjigjet kesaj kerkese. Nqs kerkohet hapsire I/O, atehere do jete paisja I/O qe do i pergjigjet kerkeses. Ne rastin e figures b) ku ka vetem nje hapsire memorjeje, cdo modul memorjeje dhe cdo paisje krahason linjat e adresave me zonen e adresave qe sherben. Nqs kjo adrese hyn ne kete zone, atehere kjo paisje i pergjigjet kerkeses. Ne cdo rast nuk mund te kete konflikt perderisa nuk ka adrese qe i caktohet te dyja Dy skemat e adresimit te kontrollerave kane avantazhet dhe disavantazhet e tyre. Avantazhet e hartes se memorjes se paisjeve I/O jane keto : se pari, nqs nje intruksion special I/O kerkohet te loxohet ose te shkruhet nga regjistrat e paisjes se kontrollit, akesimi i tyre kerkon perdorimin e nje kodi ne assembler. Perdoret pikerisht kjo gjuhe sepse nuk ka mundesi per te realizuar instruksionet IN dhe OUT me ane te gjuhes C. Me harten e memorjes I/O, regjistrat e kontrollit te paisjes jane thjesht variabla ne memorjedhe mund tiu adresohemi ne C njelloj si cdo variabli tjeter. Per kete me harten e memorjes I/O, nje driver mund te shkruhet ne C. Pa kete harte duhet medoemos kod ne assembler. Se dyti, me harten e memorjes I/O nuk ka nevoje pmbrojtjeje. Sistemi i shfrytezimit duhet vetem te pengoje vendosjen e pjeses se zones se adresave qe permban regjistrat e kontrollit ne zonen e adresave virtuale te perdoruesit. Do ishte me mire qe nqs cdo paisje te kishte regjistrat e vet te kontrollit ne faqe te ndryshme te zones se adresave atehere sistemi i shfrytezimit mund ti jape nje perdoruesi kontroll vetem mbi disa paisje, jo mbi te gjitha. Kjo mund te arrihej duke vendosur faqet e kesaj paisjeje ne tabelen e faqeve te procesit. Nje skeme e tille lejon qe paisje te ndryshme te vendosen ne zona adresash te ndryshme, gjithashtu jo vetem zvoglon madhesine e kernelit por dhe mban nje paisje nga nderhyjra te paisjet e tjera. Nje disavantazh i kesaj teknimodulet e memorjesdhe paisjet I/O duhet te shohin referensat e memorjes per te pare se ciles i korespondon. Nqs kompjuteri ka nje bus te vetem atehere kjo gje behet e veshtire. Kjo shihet ne figuren a)

Shmica e kompjuterave sot kane nje bus memorjeje me shpejtrsit te larte. Nje skeme e tille tregohet ne figuren b). Ky bus eshte percaktuar per te permiresuar performancen e memorjes. Sistemet Pentium kane tre linja bus te tille, ate te memorjes, PCI dhe ISA. Problemi i pasjes linja te vecanta bus ne nje makine te vetme eshte i tille qe paisjet I/O nuk kane nje menyre per te pare adresat e memorjes nderkohe qe jane ne linjat bus, keshtu qe ata nuk kane nje menyre per te dhene pergjigje. Nje mundesi zgjidhjeje eshte te dergohen ne memorje te gjitha referensat e memorjes. Nqs memorja nuk arrin te jape pergjigje, atehere CPU perpiqet me linjat e tjera bus. Ky projektim ka per te funksionuar por qe kekron per hardware shtese.

Page 65: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

65

. CPU mund te kerkoje te

t ky kontroller, ai busit. Kjo perfshin nje regjister

Nje tjeter mundesi projektimi eshte dhe vendosja e nje paisjeje shtese ne busin e memorjes per te kaluar te gjitha adresat te cilat i interesojne paisjeve I/O. Problemi ketu eshte qe paisjet I/O nuk mund te jene te afta te procesojne pergjigjen aq shpejt sa memorja. Nje projektim tjeter eshte ai i perdore ne Pentium. Ne kete projektim adresat filtrohen ne nje chip te urave PCI. Ky chip permban regjistra qe ngarkohen gjate kohes se boot-imit. Psh adresat 640K deri ne 1M mund te shenohen si adresa jo te rangut te memorjes. Adresat qe perfshihen ne kete zone i drejtohen busit te PCI dhe jo busit te memorjes. Disavantazhi ketu eshte se duhet gjete qe me perpara se cilat adresa te memorjes nuk jane realisht te saj. Aksesimi direkt i memorjes (Direct memory Access (DMA)) Panvaresisht nese CPU ka apo jo nje harte memorjeje I/O, ai ka nevoje per te adresuar kontrollerat e paisjeve per te realizuar shkembimin e te dhenave me tadhena nga nje kontroller I/O bit per bit, por kjo menyre shkakton humbje kohe per CPU-ne. Per kete perdoret nje skeme tjeter, ajo e direct memory access, pra e aksesimit direkt te memorjes. Sistemi i shfrytezimit mund te perdore DMA nqs hardware ka nje kontroller DMA, te cilin e kane shumica a sistemeve. Nganjehere ky kontroller eshte i integruar ne kontrollerat e diskut, por nganjehere eshte dhe me vete. Gjithsesi, panvaresisht ku eshte i vendosur fizikishka akses ne menyre te panvarur nga CPU-ja me sistemin e adresash memorjeje, nje regjister numerimi bitesh, dhe nje ose me shume regjistra kontrolleri. Keto regjistra kontrolleri specifikojne se cilen porte I/O te perdoret, drejtimin e transmetimit ( lexim ose shkrim ), njesine e transferimit ( nje bir ne nje interval kohe apo nje fjale ne po kete interval ) si dhe numrin e biteve qe do transmetohen ne nje interval kohe te ka ne dispozicion procesi. Para se te hspjegojme se si funsksionon DMA, le te shohim se si lexohet disku kur nuk perdoret DMA. Se pari kontrolleri lexon ne menyre seriale bllokun nga driveri, bit per bit, derisa i tere blloku te jete ne bufferin e kontrollerit. Me pas llogaritet nese ka gabime apo jo ne kete bllok te lexuar. Me pas kontrolleri shkakton nje interrupt. Kur sistemi i shfrytezimit nis punen, ai lexon nga bllokun nga bufferi i kontrollerit me ane te nje cikli, bit per bit, dhe ruan kete bllok ne memorje.

Kur perdoret DMA ndryshon procedura. Se pari CPU programon kontrollerin e DMA duke percaktuar regjistrat e tij dhe ne kete menyre e di se ku dhe cfare duhet transferuar ( kjo tregohet ne hapin 1 ne fig me lart ). Gjithashtu i tregon nje komande kontrollerit te diskut me te cilen i tregon se duhet te lexoje te dhena nga disku ne bufferin e brendshem dhe verifikon nese ka gabime ne kete lexim. Kur te dhenat e duhura jane ne bufferin e kontrollerit te diskut, atehere DMA mund te nise punen. Kontrolleri i DMA inicializon transferimin duke bere nje kerkese mbi busin e kontrollerit

diskut ( hapi 2 ne figuren me lart ). Kjo kerkese leximi ngjason me cdo tjeter kerkese per le , te ximdhe kontrolleri i diskut nuk e di nese kjo kerkese vjen nga CPU apo nga DMA. Nje adrese memorjeje vendoset ne linjen e busit te adresave dhe keshtu qe kur kontrolleri i diskut merr fjalen

Page 66: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

66

rolleri i DMA rrit adresen e memorjes qe duhet perdore si dhe zvoglon numrin e

transfer

re. se

e kontrollerit te DMA. Nje skeme tjeter mund te hte te shkruhen adresa virtuale ne kontrollerin e DMA. Me pas kontrolleri i DMA duhet te

perdore MMU per te marre perkthimin ng ale ne fizike. Vetem ne rastin kur MMU eshte pjese e e memorjes ( gje qe nuk ndod ehere mund te vendoset adresa virtuale ne bus.

te dhenat ne nje buffer te brendshem para se te nise punen DMA. Shtrohe

o. Nese kontrolleri do perpiqej ti shkruante te dhenat direkt ne ne memorje, atij i duhej te

pasardhese nga bufferi i brendshem ai e di se ku duhet te vendoset kjo fjale. Per te realizuar shkrimin ne memorje duhet nje tjeter cikel i busit ( hapi 3 ne figuren me lart). Kur shkrimi mbaron, kontrolleri i diskut dergon sinjal kontrollerit te diskut. Edhe kjo realizohet nga sistemi bus ( hapi 4). Kontbiteve. Nqs numri i biteve eshte ende me i madh se 0, atehere perseriten hapat 2 deri ne 4 te figures me lart. Kjo gje perseritet derisa numri te arrije ne 0. Ne kete moment kontrolleri i DMA-se i ben nje interrupt CPU-se dhe i ben me dije se transferimi mbaroi. Kur sistemi i shfrytezimit rinis punen, ai nuk ka nevoj te kopjoje ne memorje bllokun e diskut, ai eshte tashme ne memorje. Kontrollera DMA me komplekse mund te programohen per te trajtuar disa transferta ne te njejten kohe. Kontrollera te tille kane disa regjistra te brendshem, nga nje per cdo kanal transferimi. CPU nis me ngarkimin e secilit grup regjistrash. Cdo transferte duhet te perdore nje kontroller te ndryshem. Pasi transferohet secila fjale , kontrolleri i DMA vendos se cilen paisje ka rradhen per te kryer punen. Kjo percaktohet me alogritme te tipit round robin, atij te prioritetit, etj.

Shume linja bus mund te veprojne ne dy menyra: nje fjale per cdo moment , ose bllok. Disa kontrollera DMA veprojne ne te dyja menyrat. Ne menyren e pare sistemi i shfrytezimit vepron keshtu: kontrolleri DMA kerkon te beje nje transferte per nje fjale dhe e merr kete fjale. Nqs CPU kekron gjithashtu linjen bus, atij i duhet te prese. Kjo menyre quhet ndryshe dhe cikli i marrjes ( cycle stealing ) sepse kontrolleri i paisjes i merr linjen bus CPU-se duke e bere ate te prese pak. Ne menyren bllok, kontrolleri i DMA-se i tregon paisjes te marre busin, ben disa transferta dhe liron linjen bus. Kjo forme quhet ndryshe dhe burst mode. Kjo eshte me eficiente sesa cikli i marrjes sepse marrja e busit kerkon kohe. Kjo kohe do ishte e mjaftueshme dhe per

imin e disa fjaleve. Disavantazhi eshte se ne kete menyre mund te bllokohet CPU-ja perpaisjet e tjera ndoshta dhe per nje kohe te gjate.

Leksioni 16 Pasijet I/O Vazhdim..

DMA ( vazhdim...) Shumica e kontrollerave DMA perdorin adresat e memorjes fizike per transfertat e ty

Duke perdore keto adresa, i duhet sistemit te shfrytezimit te konvertoje adresen virtuale ne adrefizike dhe te shkruaje adresen fizike ne regjistrinis

a adrse virtuh shpesh) at

Disku se pari lexont me te drejte pyejta : pse kontrolleri nuk i ruan bitet ne memorjen qendrore sapo i merr

nga disku? E thene ndryshe , pse na duhet nje buffer i brendshem? Ky buffer na duhet per dy arsye. Se pari, duke i ruajtur njehere ne nje buffer te brendshem kontrolleri i diskut mund te verifikoje nese i ka nise gabim, duke bere nje checksum para se te nise transferta. Nqs rezulton se ka gabime atehere jepet sinjali dhe nuk kryhet asnje transferte. Arsyeja e dyte eshte se pasi ka nise transferta, bitet vijne ne disk me nje shepjtesi konstante, panvaresisht nese kontrolleri eshte gati apo jshkoje ne sistemin bus per cdo transferte. Nqs busi do ishte i zene me nje tjeter paisje atehere kontrollerit do i duhej te prese. Nqs fjala pasardhese do vinte para asaj paraardhese, kontrollerit do i duhej ta ruante perkohesisht diku. Nqs busi do ishte shume i zene, atehere kontrollerit do i duhej te ruante shume fjale te tilla dhe do duhej te mbane te shenim rradhen e tyre. Jo te gjithe kompjuterat kane DMA. Argumenti kunder tij eshte se CPU eshte shume me e shpejte pa te. Nqs nuk do kishte aspak pune disku atehere s’do ia vlente qe CPU-ja e shpejte te priste DMA-ne e ngadalte. Interruptet

Page 67: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

67

t te sqarojme disa

ne nje sistem tipik kompjuterik.

Kur nje paisje I/O ka

tkontrollerit te interrupteve dhe vendos se cfare duhet bere. Kontrointerrupt, nese nuk ka interrupte te tjere qe kane ardhe me parinterrupt eshte ne progres, ose kur nje paisje ka derguar nje interatehere kontrolleri e le te prese interruptin e sapoardhur. Per te trajtuar interruptin, kontrolleri vendos nje numer ne lipercaktuar se cila paisje kerkon vemendje, dhe i dergon sinjal per ttille ben qe CPU te nderprese punen e saj dhe te nise te kryeje nj

isa qindra ne hard disqet. Numri i kokeve varion nga 1 deri ne 16.

ontroller qe ben punen dhe qe lejon ontrollerin real te jape komanda te nivelit me te larte.

der.

pjesen me afer qendres. Ne disk ne te cilin

me afer qendres eshte e ndare ne 16 sektore per cdo track. Per tcdo track, disqet moderne i japin sistemit te shfrytezimit nje figuren b). Vini re qe ne te dyja rastet disku ka 192 sektore, vetemndryshme. Kompjuterat e bazuar ne Pentium kane pergjithesishtsektore per cdo track.

Shkurtimisht i kemi permendur ne leksionet e para. Tani duhegjera ne lidhje me to. Ne figure jepet funksionimi i interrupteve

perfunduar punen e saj, atehere ajo shkakton nje interrupt. Kete uar. Sinjali merret nga chipi i lleri e proceson menjehere kete

e dhe qe presin. Nqs nje tjeter rupt te nje prioriteti me te larte,

e ben duke i derguar nje sinjal ne linjen bus qe i eshte cak

njen e adresave per te e nderprere CPU-ne. Nje sinjal i e tjeter pune. Numri ne linjen e

adresave perdoret si index ne nje tabele te vecante qe quhet dhe vektori i interrupteve. Ne kete menyre i jepet nje tjeter vlere regjistrit IP (numruesit te programit). Ky regjister tani do shenjoje ne fillim te prcedures qe shkaktoi interruptin. Vendodhja e vektorit te interrupteve mund te jene ne pjesen harware-ike, ose ne nje zone te memorjes. Gjitheshtu duhet te ekzistoje nje regjister CPU-je qe shenjon ne fillim te tij. Pasi nis punen procedura e sherbimit te interruptit ben sinjal interruptit per ti treguar se kontrolleri eshte i lire dhe se mund te dergoje interrupte te tjera. Situata ne “kushte gare” pengon qe te mund te dergohen disa interrupte ne te njejten kohe. Disqet magnetike Disqet magnetike jane te organizuar ne cilindra. Numri i track ne keto cilindra eshte sa numri i kokeve te rreshtuar vertikalisht. Track jane ndare ne sektore. Numri i sektoreve varion nga 8 – 32 ne disketat, deri ne d Disa disqe magnetike kane pak pjese elektronike, ata thjesht shperndajne nje rrjedhe bitesh. Kontrolleri eshte ai qe ben shumicen e punes ne keto disqe. Ne disqe te tjera, vecanarisht ne IDE ( integrated drive electronics) vete paisja permban nje mikrokk

Ne llojet e vjetra te disqeve numri i sektoreve per cdo track ishte i njejte per cdo cilinDisqet e koheve te fundit pjesen e jashtme e kane te ndare ne zona me me teper sektore se

figure jepet njekemi dy lloje ndarjesh. Pjesa larg qendres eshte e ndare ne 32 sektore per cdo track, kurse pjesa e fshehur numrin e sektoreve per gjeometri virtuale. Kjo jepet ne se jane pozicionuar ne forma te

65535 cilindra, 16 koka dhe 63

Page 68: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

68

e e disqeve optike jane krijuar nga shoqeria holandeze Philips dhe qellimi i rijimit ishte per te ruajtur filma. Ne vitin 1980 Philips dhe Sony krijuan ato qe sot quhen CD

isk). Standartet e ketyre disqeve percaktohen me nje diameter 120mm, trashesi 1.2mm he m

em duhet bere je ma

kteret e medha,

ormatimi onsiston ne disa shenime qe tregojne numrin e sektoreve si dhe hapsira mes tyre. Nje format i

e.

CD-ROM Kohet e fundit jane bere me te perdorshem diqet optike. Ata kane dendesi me te madhe regjistrimi sesa disqet magnetike. Disqet optike jane zhvilluar ne fillim ne fushen e televizionit. Fale kapaciteteve te tyre te medha, keto disqe kane pesuar nje evulim te vrullshem. Gjenerata e park(Compact Dd e nje vrime me diameter 15mm. Sukses i madh ishin disqet me muzike, per te cilat supozohet se mund te zgjasin deri ne 100 vjet. Pas tyre u zhvilluan dhe CD-ROM. Per te bere te mundur qe nje CD-ROM te perdoret ne kompjutera te ndryshn rreveshje rreth file system te tij. Per kete marreveshje, u mblodhen ne Californi perfaqsues te kompanive te ndryshme. Ata vendosen qe ky file system te ishte High Sierra (emri iu vu nga vendi ku u realizua kjo marreveshje). Ky file system ka tre nivele. Niveli i pare perdor emra skedaresh deri ne 8 karaktere dhe te ndjekur me nje tip skedari me 3 karaktere. Ky eshte dhe kushtezimi tipik i perdorur ne DOS. Emrat e skedareve mund te kene vetem karashifrat dhe vijen poshte (underscore). Niveli i pare kerkon qe te gjithe skedaret te jene te ruajtur ne vazhdimsi, gje e cila nuk eshte problem per memorjet nje here te shkrueshme. Niveli i dyte i lejon emrat te kene deri ne 32 karaktere. Niveli i trete lejon qe skedaret te ruhen te copezuar. Formatimi i diskut Nje hard disk perbehet nga nje shtrese alumini, aliazh, ose nga nje pjate me diameter 5.25 inch ose dhe 3.5 inch. Ketu eshte e vendosur nje oksid metali qe magnetizohet. Pasi nje disk del nga fabrika, ai nuk permban informacion. Para se te perdoret disku, duhet qe secila pjate te formatohen te nga nje soft. Fktille tregohet ne figur

Ky mund te jete nje sektor disku. Prembla nis me nje bllok bitesh qe i tregon diskut se ku eshte fillimi i sektorit. Gjithashtu permban numrat e cilindrit si dhe informacione te tjera. Madhesia e te dhenave varet nga formatimi. Pjesa ECC permban informacion qe perseritet dhe qe perdoret kur duam te dedektojme gabimet. Madhesia e kesaj pjese varet nga fabrika. Kjo pjese zakonisht ka 16 byte.

Ka dy lloje trajtimesh te ketyre problemeve. Trajtimi i pare eshte kur kontrolleri zgjidh ka e dyte eshte kur sistemi i shfrytezimit zgjidh kete problem. Ne rastin e

Trajtimi i gabimeve Defektet gjate prodhimit shkaktojne sektore me probleme. Sektore te tille nuk lexojne vleren qe kane te ruajtur. Nqs defekti eshte i vogel, psh disa bite, atehere mund te perdorim kete sektor dhe te lejojme qe ECC te korigjoje gabimin. Nqs defekti eshte me i madh, ai nuk mund te maskohet. problemin, kurse teknipare testohet disku para se te dale nga fabrika. Nqs gjendet nje sektor me problem atehere ai duhet zevendesuar.

Page 69: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

69

Ne figurat a) dhe b) shohim dy teknikat e zevendesimit te sektorit gabim. Ne figuren a) nje disk me 30 sektore ka nje gabim dhe 2 jane rezerve. Kontrolleri mund te rivendose keto sektorene menyre qe te marre nje sektor rezerve dhe te zevendesoje sektorin me defekt. Ne menyren e pare qe jepet ne figuren b) zevendesohet direkt nje sektor rezerve me sektorin gabim. Ne tekniken e dyte qe jepet ne figuren c) zhvendosen te gjithe sektoret me nga nje per te bere zevendesimin. Ne te dyja rastet kontrolleri e di se ku ka secilin sektor. Gabime gjithashtu mund te merren edhe pasi nisen te kryhen veprime ne disk. Nqs nuk arrijme te lexojme nje sektor me probleme, gjeja e pare qe mund te behet eshte te lexohet dhe njehere. Disa gabime gjate leximit ndodhin vetem nje here. Keto gabime mund te jene shkaktuar nga pluhurin ne koken e leximit te diskut. Nqs kontrolleri veren se eshte perseritur gabimi atehere ai mund te zevendesoje sektorin me nje sektor rezerve. Ne kete menyre nuk humbasin te dhenat dhe sistemi i shfrytezimit nuk ve re asgje. Zakonisht ne kete moment nuk mund te perdoret metoda e dyte, ajo e spostimit e te gjithe sektoreve pasardhes, sepse ky spostim do kerkoje dhe spostim te te dhenave qe permbajne sektoret. Me lart thame qe ka dy mundesi trajtimi te gabimeve, trajtim nga kontrolleri dhe nga sistemi. Kur kontrolleri nuk mund te spostoje sektoret, atehere sistemi i shfrytezimit mundohet ta beje kete gje me ane te nje softi. Problemet ne sektore mund te shkaktohen dhe nga probleme mekanike. Krahu i leximit te diksut mund te kete probleme teknike dhe kjo mund te shkaktoje nje problem ne disk.

Leksioni 17 File systems

Te gjithe aplikacionet iu duhet te marrin informacione. Nje proces ne ekzekutim mund te

ruaje nje sasi te vogel inforacioni ne hapsiren e tij te adresave, por kjo eshte ende pak per informacionin qe duhet. Memorja qe ruan informacion per nje kohe te gjate duhet te kete keto cilesi :

1) duhet te ruaje nje sasi shume te madhe informacioni 2) informacioni duhet te zgjase dhe pas perfundimit te procesit qe e perdor 3) disa procese te mund ta lexojne kete informacion paralelisht

Zgjidhja e ketyre problemeve do ishte ruajtja e ketij informacioni ne disqe ose ne tjera

memorje te jashtme, ne njesi te quajtura skedar (file). Proceset mund te krijojne skedare te rinj dhe te shkruajne ne skedare ekzistues. Informacioni i ruajtur duhet te jete i qendrueshem, qe do te thote se nuk duhet te ndikohet nga krijimi dhe nga perfundimi i proceseve. Nje skedar duhet te fshihet vetem kur ky veprim te realizohet ne menyre eksplicite nga perdoruesi.

Edhe detyra e menaxhimit te skedareve i takon sistemit te shfrytezimit. Eshte ky i fundit qe realizon strukturimin, emertimin, aksesimin, perdorimin, mbrojtjen e nje skedari. Pjesa e sistemit te shfrytezimit qe merret me kete pune eshte quhet file system.

Page 70: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

70

Nga kendveshtrimi i perdoruesit, aspekti me i rendesishem i file system eshte menyra sesi perdoruesit i paraqitet skedari, si mund te emertohet si dhe mbrojtja e tij, veprimet qe mund te kryhen me nje skedar,etj. Perdoruesit te thjeshte nuk intereson menyra se si eshte i ruajtur ne memorje, se sa sektore perdoren per t’i organizuar ato, etj.

Emertimi i skedareve Skedaret jane nje mekanizem abstrakt. Ata mundesojne nje menyre per te ruajtur informacionin ne disk si dhe leximin e tij me vone. Kjo gje realizohet ne nje menyre te tille qe perdoruesit i fshihen detajet se ku dhe si eshte ruajtur skedari ne disk. Rendesi te vecante ka menyra se si emertohen keto skedare. Kur nje proces krijon nje skedar, ai i jep ketij skedari nje emer. Kur procesi perfundon, skedari vazhdon te ekzistoje me po te njejtin emer. Rregullat per emertimin e skedareve variojne nga sistemi. Te gjithe sistemet e shfrytezimit lejojne qe nje rradhe karakteresh me maksimumi tete shkronja mund te jete emer skedari. Shpesh lejohen qe dhe shifrat te jene pjese emrash. Sistemet e fundit lejojne qe emrat te kene nje gjatesi deri ne 255 karaktere. Disa sisteme dallojne shkronjat e medha nga te voglat, psh UNIX, kurse disa sisteme nuk bejne dallimin mes tyre psh MS-DOS. Windows 95 dhe Windows 98 perdorin file system te MS-DOS, prandaj ata trashegojne shume karakteristika te tij, si psh rregullat e emertimit te skedareve. Edhe Windows NT dhe Windows 2000 suportojne file system te MS-DOS dhe kane trasheguar tiparet e tij. Por keto dy sisteme kane nje file system native (NTFS) dhe ka karakteristika e ndryshme. Shume sisteme shfrytezimi suportojne emra skedaresh ne dy pjese te ndara me nje pike. Pjesa e dyte quhet ndryshe dhe prapashtese (extention). Ne MS-DOS emrat lejohen te jene deri ne 8 karaktere kurse prapashtesat deri ne 3 karaktere. Ne UNIX madhesia e prapashtesave vendoset nga perdoruesi, madje ka dhe skedare qe ka nga dy prapashtesa. Psh prog.c.Z mund te jete nje emer skedari ne UNIX. Zakonisht Z tregon se skedari eshte i kompresuar. Ne shume sisteme, parapashtesat e skedareve nuk jane te percaktuar nga sistemi, ata jane thjesht per ti treguar perdoruesit tipin e skedarit, psh nje prapashtese .txt i tregon perdoruesit se ka te beje me nje skedar tekst. Shenime te tilla jane te mira sidomos per rastet kur nje program trajton disa tipe te ndryshme skedaresh. Windows eshte ne dijeni te prapashtesave te skedareve dhe iu cakton ketyre nga nje kuptim. Perdoruesit mund te regjistrojne parashtesat dhe percakton se cili program zoteron kete prapashtese. Kur nje perdorues ben nje dopio klik ne skedar, do hapet programi qe i eshte caktuar kesaj prapashtese. Struktura e skedarit Skedari mund te strukturohet ne disa menyra. Tre mundesi te ndryshme jepen ne figure.

Page 71: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

71

Ne figuren a) skedari eshte nje sekuence e pastrukturuar bitesh. Ne kete rast sistemi i shfrytezimit nuk e di se cfare eshte ne skedar. Sistemi i shfrytezimit sheh vetem bitet. Domethenia percaktohet ne nivelin e perdoruesit. Kete strukture perdor UNIX dhe Windows. Ne strukturen e treguar ne figuren b) skedari eshte nje sekuence rekordesh me gjatesi te fiksuar, secili prej tyre ka nje strukture te brendshme. Struktura ne figuren c) konsiston ne nje peme rekordesh, jo domosdoshmerisht me nje gjatesi fikse. Secili rekord permban nje fushe celes ne nje pozicion fiks ne rekord. Pema eshte e renditur ne baze te ketij celesi, gje qe mundeson kerkimin e shpejte ne baze te nje elementi. Tipet e skedareve Shume sisteme shfrytezimi suportojne disa lloje skedaresh. UNIX dhe Windows kane skedare te rregullt dhe direktorite. UNIX ka gjithashtu skedaret karakter dhe bllok. Skedaret e rregullt mbajne informacionin e perdoruesit. Direktorite jane skedare sistemi qe mbajne strukturen e sistemit te skedareve. Skedaret e karakterit lidhen perdoren per input/output dhe perdore ne paisjet seriale si psh printera ose ne rrjete. Skedaret bllok perdoren per disqet. Cdo sistem shfrytezimi duhet te njohe te pakten nje tip skedari, skedarin e ekzekutueshem. Ne UNIX ndertimi i programit behej ne shell. Prapashtesa e skedareve eshte e detyrueshmene menyre qe sistemi i shfrytezimit te tregonte se nga cili burim merrej programi. Aksesimi i skedareve Ne sistemet e vjeter i vetmi lloj aksesimi i skedareve ishte aksesimi sekuencial. Me kete lloj aksesimi, proceset mund te lexojne te gjithe rekordet ne nje skedar ne baze te rendit, duke nisur nga i pari deri te rekordi qe do lexohet. Skedari sekuencial mund te demtohet, keshtu qe eshte mire te mos lexohen shpesh. Keto lloj skedaresh jane te perdorshem kryesisht ne shiritat magnetike. Kur disku hyri ne perdorim si memorje sekondare, do behej e mundur leximi i nje rekordi pa pase nevoje qe me pare te lexonim te dhenat e tjera parardhese. Skedare te tille quhen skedare me akses te rastit. Keto lloj skedaresh perdoren shpesh sot, sidomos ne bazat e te dhenave, ku nuk duhet qe per te caktuar nje vend ne avion te shetisim me pare te gjithe vendet e tjere. Per te nise leximin ne keto skedare perdoren dy metoda. E para eshte qe cdo veprim leximi jep pozicionin ne skedar, aty ku duhet lexuar e dhena. Ne metoden e dyte, nje veprim seek siguron percaktimin e pozicionit qe duhet lexuar. Pas nje veprimi seek, nje skedar mund te lexohet sekuencialisht nga pozicioni aktual. Ne sistemet e shfrytezimit moderne nuk bejne dallimin mes tipeve te ndryshem te skedareve. Te gjithe skedaret jane automatikisht me akses te rastit. Atributet e skedareve Cdo skedar ka emrin dhe te dhenat. Gjithashtu ai ka dhe informacionin qe ia shoqeron sistemi i shfrytezimit, si psh oren kur eshte krijuar si dhe madhesine e tij. Keto informacione shetse mudn ti quajme dhe atribute. Lista a atributeve varion nga sistemi ne sistem. Ne figure jepet lista e disa atributeve. Asnje sistem shfrytezimi nuk i permban keto, por ama secili prej tyre eshte nje atribut ne nje sistem. Protection Tregon se kush mund te aksesoje skedarin dhe ne c’menyre Password Kur duhet nje password per te aksesuar skedarin Creator Id i personit qe krijoi skedarin Owner Perdoruesi aktual Read-Only Vlera 1 tregon se eshte vetem i lexueshem Hidden flag Vlera 1 tregon se eshte i fshehur System flag Vlera 1 tregon se skedari eshte per skedaret e sistemit Archive flag Vlera 1 tregon se skedari duhet te jete ASCII /binary flag Vlera 1 tregon qe nje skedar eshte binar

Page 72: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

72

Random access flag Vlera 1 tregon skedar me akses te rastit Temporary flag Vlera 1 tregon se ne perfundim te procesit skedari duhet fshire Lock flag Vlera 1 tregon per nje skedar te kycur Record length Tregon numrin e byteve te record Key position Tregon offset te celesit brenda secilit record Creation time Tregon kohen e krijimit Time of last access Tregon kohen se kur eshte aksesur heren e fundit Time of last change Kohen e modifikimit te fundit Current size Numrin e biteve ne skedar Maximum size Numrin e biteve se me sa mund te rritet skedari Kater atributet e para kane lidhje me mbrojtjen e skedareve, tregojne se kush mund ta aksesoje ate. Jane parashikuar te gjitha llojet e akesesimeve. Flags (flamujt) jane bite qe tregojne ose mundesojne nje cilesi te vecante. Psh, skedaret hidden nuk mund te shihen nga peroruesi, por gjithsesi ekzistojne ne disk. Veprimet me skedaret Sisteme te ndryshem mundesojne disa veprime per te marre dhe per te ruajtur te dhenat. Le te shohim disa veprime qe mundesojne disa system calls: 1-Create. Skedari krijohet pa te dhena. Qellimi i kesaj thirrjeje eshte njoftimi i krijimit te skedareve dhe per te percaktuar disa atribute. 2-Delete. Kur nje skedar nuk duhet me, ai do fshihet per te liruar diskun. Kjo eshte thirrja qe duhet bere ne kete rast. 3-Open. Para se te perdoret nje skedar, nje proces duhet ta hape skedarin. Kjo thirrje sistemi lejon sistemin te marre atributet . 4-Close. Kur ka mbaruar aksesi per ne skedar, atributet dhe adresat e diskut nuk duhen me. Per kete skedari mund te mbyllet dhe per te liruar tabelen e brendshme. 5- Read. Te dhenat duhen lexuar nga skedari. Thirresi duhet te specifikoje se sa te dhena duhen si dhe duhet siguruar bufferi per ti vendosur keto te dhena. 6- Write. Te dhenat shkruhen ne nje skedar. Ky shkrim mundesohet ne pozicionin aktual ne skedar. Nqs shkruajme ne fund te skedarit, atehere madhesia e skedarit do rritet. Nqs shkruajme ne mes te skedarit, atehere te dhenat mbishkruhen dhe humbasin pergjithnje. 7-Append. Kjo thirrje sistemi eshte nje forme e kufizuar e shkrimit. Me kete thirrje ne mund te shtojme te dhena vetem ne fund te skedarit. Disa sisteme mundesojne kete thirrje jo ne menyre direkte, por me ane te thirrjeve tjera. 8- Seek. Per skedaret me akses te rastit, kjo metode sherben per te specifikuar se nga ku do merren te dhenat. Nje thirrje e tille pozicionon shenjuesin ne nje vend te caktuar ne skedar. Kjo thirrje ndiqet nga nje thirrje leximi ose shkrimi. 9- Get attributes. Shpesh here sistemi duhet te marre te dhena mbi skedarin. 10-Set attributes. Disa atribute percaktohen nga perdoruesi dhe mund te modifikohen pasi eshte krijuar skedari. Kjo mund te realizohet nga kjo thirrje skedari. Shumica e flags perfshihen ne kete kategori. 11- Rename. Shpesh ndodh qe nje perdorues ka nevoje te modifikoje emrin e skedarit ekzistues. Kjo gje realizohet me kete thirrje sistemi. Shpesh behet dhe kopjimi i skedarit me nje emer te ri, dhe nuk kemi fare nevoje per riemerim. Direktorite Direktorite perdoren per te mbajtur shenim rreth skedareve. Per shume sisteme shfrytezimi keto direktori jane vete skedar.

Page 73: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

73

Sistemet e direktorive nje niveleshe eshte menyra me e thjeshte e sistemit te direktorive. Ne kete sistem eshte vetem nje direktori qe permban te gjithe skedaret. Kjo shpesh quhet dhe direktoria rrenje. Ky sistem ishte shume i perdorur ne kompjuterat e vjeter, sepse ne to kishim vetem nje perdorues.

Ne figure jepet nje shembull i nje direktorie te vetme te nje sistemi. Kjo direktori permban kater skedare. Ne figure jepet perdoruesi qe zoteron skedarin, dhe jo emri i skedarit. Avantazhi i kesaj skeme eshte thjeshtesia dhe mundesia per ti marre shpejt skedaret. Kjo e fundit kuptohet qarte, ka vetem nje vend ku mund te jene skedaret!

Problemi i kesaj skeme eshte pasja e nje direktorie ne nje sistem me shume perdoruesa. Keto mund te perdorin emra te njejte per skedare te ndryshem. Psh, perdoruesi A krijon nje skedar dokumenta,nqs edhe perdoruesi B krijon me vone nje skedar me po te njejtin emer, ky i fundit do mbivendoset mbi skedarin e perdoruesit A. Prandaj kjo skeme nuk perdoret ne rastet kur kemi shume perdorues. Sistemet e direktorive me dy nivele

Per te shmangur problemet qe shkaktohen kur

kemi disa perdorues qe duan te njejtin emer per skedare te ndryshem, eshte me mire qe tu caktojme secilit nga nje direktori me vete. Vec n ekete menyre emrat jane te panvarur dhe nuk ka probleme nese i njejti emer perdoret per dy skedare ne direktori te ndryshme. Ky sistem jepet ne figure.

Sistemet hierarkike te direktorive

Sistemi me dy nivele hierarkike eliminon konfliktin e emrave mes perdoruesve, por nuk eshte i mjaftueshem per perdoruesat me nje numer te madh skedaresh. Sistemi dynivelesh nuk mjafton as per nje kompjuter personal kur perdoruesi do ti grupoje skedaret qe kane lidhje logjike. Ne kete rast ajo qe kerkohet eshte nje hierarki, nje peme direktorish. Kjo tregohet dhe ne figure.

Direktorite A Bdhe C permbajne direktorite rrenje qe i perkasin perdoruesve te vecante. Emrat e adresave te skedareve Kur nje file system eshte i organizuar si nje jierarki direktorish, duhen specifikuar menyrat e emertimit te skedareve. Zakonisht perdoren dy metoda. E para : cdo skedari i jepet nje emer me nje adrese absolute. Kjo konsiston ne tregimin e rrugekalimit nga rrenja deri ne direktorine ku ndodhet skedari. Ne UNIX pjeset e adresave ndahen me / kurse ne Windows me \. Menyra e dyte eshte ajo e adresave relative. Me kete lidhet dhe koncepti i direktorise se punes. Nje perdorues cakton nje direktori si direktori te punes. Ne kete rast te gjithe adresimet e skedareve nuk nisin nga direktoria rrenje por nga direktoria e punes. Disa programe duan te aksesojne nje skedar panvaresisht se cila eshte direktoria e punes. Ne kete rast adresimi duhet te jete gjithmone absolut, sepse programi nuk e di se cila eshte

Page 74: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

74

direktoria e punes ne momentin qe do jete ne ekzekutim e siper. Adresimi absolut funksionon gjithmone panvaresisht se cila eshte direktoria e punes. Shume sisteme shfrytezimi me file system hierarkial kane dy direktori te vecanta per cdo direktori. Direktoria “ . “ shenjon direktorine aktuale, kurse direktoria “..” shenjon direktorine prind te direktorise aktuale. Keto shenime mund ti perdorni gjate kalimit nga nje direktori ne tjetren. Veprimet me direktorite Le te shohim nje shmbull te funksionimit te direktorive. Shembulli tregon fuksionimin ne UNIX.

1) Create- Nje direktori krijohet. Ne kete moment ajo permban vetem dy nendirektori, ate “.” dhe “..”.

2) Delete- Nje direktori mund te fshihet. Ne UNIX vetem nje direktori boshe mund te fshihet. Direktoria quhet boshe kur ajo permban vetem direktorite “.” dhe “..”

3) Opendir-Direktoria mund te lexohet. Psh ne duam te shohim permbajtjen e direktoriese, cilet skedare permban ajo. Nje direktori duhet te hapet para se te lexohet permbajtja e saj, analoge me skedarin.

4) Closedir-Pasi nje direktori eshte lexuar, ajo duhet mbyllur per te liruar hapsiren e tabelave.

5) Readdir – Me pare leximi i direktorive me ane te thirrjes read. Readir gjithmone kthen rezultat ne nje format standart, panvaresisht se cila strukture direktorie po perdoret.

6) Rename- Direktoria, njelloj si skedari mund te riemertohet. 7) Link- Realizimi i nje linku ben te mundur paraqitjen e nje skedari sikur te ishte ne me

shume se ne nje direktori. Kjo thirrje sistemi percakton nje skedar dhe nje adrese dhe mundeson qe te behet nje lidhje mes ketij skedari ne adresen e dhene. Ne kete menyrei njejti skedar duket sikur eshte ne disa direktori. Ju keni pare ne Linux krijimin e linqeve.

8) Unlink- Kjo thirrje mundeson fshirjen e nje linku. Nqs skedari eshte prezent vetem ne nje direktori, atehere unlink do fshije skedarin nga file system. Nqs skedari eshte ne me shume se nje direktori, atehere largohet vetem nga pozicioni i percaktuar. Ai mbetet ne pozicionet e tjera.

Leksioni 18

Siguria

Sa me shume informacion te kemi ne kompjuter, aq me me rendesi behet siguria e tij. Per kete, qellim me vete per nje sistem shfrytezimi eshte dhe rritja e sigurise. Ne vazhdim po shohim disa ceshtje sigurie dhe mbrojtjeje qe aplikohet nga sistemi i shfrytezimit. Ambjenti i sigurt Termat “siguri” dhe “mbrojtje” perdoren shpesh te lidhura bashke. Per te shmangur ndonje keqkuptim mes ketyre termave, do perdorim termin “siguri” (security) kur i referohemi nje problemi te pergjithshem, dhe termin “mekanizem mbrojtjeje” (protection mechanism) per t’iu referuar nje mekanizmi te sistemit te shfrytezimit qe mbron kompjuterin. Se pari le te shohim sigurine. Kercenimet Nga ana e sigurise, sistemet kompjuterike duan te shmangin tre kercenime te pergjithshme. I pari eshte te dhenat konfidenciale. Kur te dhenat jane sekrete, ato duhet te mbeten te tilla. Nqs nje person zoteron te dhena vetem per nje grup njerezish, sistemi duhet te siguroje qe asnje person i paautorizuar te mos t’i marre keto te dhena.

Page 75: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

75

Qellimi i dyte ka te beje me integritetin e te dhenave. Persona te paautorizuar nuk duhet te mund te modifikojne te dhenat. Ne kete kontekst, modifikimi perfshin ndryshimin e te dhenave, fshirjen e te dhenave si dhe shtimin e te dhenave te tjera te rreme. Sistemi duhet te garantoje kete gje. Qellimi i trete eshte funksionimi i sistemit. Askush nuk duhet te prishe sistemin dhe te beje qe te mos funksionoje me. Nderhyrjet ne sistem Shumica e personave iu binden rregullave dhe ligjit. Atehere pse na duhet siguria e sistemit? Sepse ekzistojne, per fat te keq, edhe pak persona te tjere qe duan te nderhyjne per qellime te tyre personale. Kur perojektojme nje sistem te sigurt ndaj nderhyresve, duhet te mendojme mire rreth llojeve te nderhyresve. Disa kategori nderhyresish jane :

1) Nderhyres jo teknike, kureshtare te rastit. Shume persona qe kane nje kompjuter te lidhur ne rrjet te rrethuar nga kureshtare, kur nuk kane pengesa, hapin posten elektronike ose lexojne skedaret ne hard disk.

2) Profesioniste te informatikes, studente, programatore, staf teknik qe e konsideron si nje sfide personale thyerjen e sigurise.

3) Tentativa fitimprurese. Ka pase raste kur dhe vete programamtoret e nje banke jane perpjekur te vidhnin banken ku punonin. Skemat jane te tilla, ndryshim softi, mbajtja e nje perqindjeje ne interesin e vet, etj.

4) Spiunazhi komercial apo ushtarak. Ketu kemi te bejme me nje sulm serioz, qe mund te vijne nga nje vend i huaj, per plane biznesi apo politike, etj.

Eshte e qarte se ka dallim mes mbrojtjes se nje qeverie nga marrja e informacionit sekret,

nga mbrojtja e mesazheve gazmor te studenteve. Mbrojtja varet se kush eshte armiku. Me poshte do shohim gjithashtu problemin shume te perhapur te viruseve. Parimisht nje virus eshte nje pjese kodi qe riprodhon veten dhe shkakton nje dem. Gjithashtu programuesi i virusit eshte nje nderhyres.

Humbja aksidentale e te dhenave Nuk perjashtohet rasti i humbjes se te dhenave ne menyre aksidentale. Disa nga shkaqet jane:

1) Fatkeqesi natyrore : zjarri, permbytjet, por dhe minjte qe germojne ne shiritat magnetike.

2) Gabime ne hardware ose software : probleme ne CPU, disku qe nuk lexohet me, etj. 3) Gabimet e shkaktuar nga njerezit: te dhena qe jepen gabim, humbja e nje disku, etj

Shumica e ketyre gabimeve mund te shmangen duke bere ruajtje (backup) te te dhenave te

rendesishme. Shpesh me shume probleme lindin nga keto humbje aksidentale e te dhenave sesa nga sulmet qe vijne nga jashte. Sulmet nga brenda sistemit Trojan horses Nje Trojan horse ( kale Troje ) eshte nje program i cili permban kod per te realizuar nje veprim te padeshirueshem. Ky veprim mund te jete modifikimi, fshirja e skedareve te enkriptimit, kopjimi i tyre ne nje tjeter pozicion ku mund ti marre craker-i, ose dhe mund tia dergoje crackerit me e-mail ose FTP. Per te ekzekutuar Trojan Horse, projektuesi i saj duhet te kete dhe nje program, i cili kur nis ekzekutimin aktivizon Trojan Horse. Nje teknike e perdore eshte vendosja tij ne nje loje free ne internet, ne nje MP3, dicka qe terheq vemendjen dhe nxit vizitorin ta shkarkoje. Kur te ekzekutohet thirret procedura e Trojan Horse. Ceshtje projektimi ne lidhje me sigurine

Page 76: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

76

Eshte e qarte se nje sistem duhet te jete i sigurt. Njerezit jane perpjekur te arrijne kete por nuk kane pasur shume sukses. Me poshte po japim disa principe te perdorura per te arrite sigurine e duhur:

1) projektimi i sistemit duhet te jete publik. Supozojme se nerhyresit nuk dine se si funksionon sistemi. Kjo gje thjesht i genjen projektuesit sepse nderhyresit heret a vone do gjejne se si eshte i ndertuar sistemi. E sikur projektuesit te kishin hamendesuar se nderhyresit nuk e dineprojektimin, atehere siguria e sistemit do ishte varur pas kesaj hipoteze. Shpejt sistemi do kishte marre fund.

2) Sistemi nuk duhet te kontrolloje per lejet, dhe me pas te kuptoje se aksesi eshte i lejuar. Shume sisteme kontrolloje per kete te drejte aksesi ne momentin qe hapet skedari. Kjo do te thote se nje perdorues mund te hape nje skedar, ta mbaje hapur gjate, dhe te vazhdoje te kete akses. Ai mund edhe te ndryshoje lejet e aksesimit te skedarit dhe sigurine e tij. Kjo skeme nuk eshte e duhura.

3) Jepini secilit proces sa me pak privilegje. Nqs nje editor ka mundesi te aksesoje vetem skedarin qe do editoje, atehere editoret me Trojan Horse nuk do kene shume mundesi demtimi.

4) Mekanizmi i mbrojtjes duhet te jete i thjeshte, uniform dhe te jete i ndertuar ne shtresen me te ulet te sistemit. Ajo duhet te jete sa me afer sistemit, duke qene se nuk eshte nje tupar qe shtohet me vone.

5) Skema e zgjedhur duhet te jete psikologjikisht e pranueshme. Nqs perdoruesit shohin se mbrojtja e skedareve kerkon nje pune te madhe, ata nuk do ta bejne ate. Por ata do te ankohen shume nese dicka nuk shkon. Replika “eshte per fajin tend” nuk i pelqen askujt.

Ne kete liste mund te shtohet nje tjeter skeme e bazuar nga eksperienca : “ projekto sa me

thjesht”. Nqs sistemi eshte i thjeshte, elegant, i projektuar nga nje person i vetem, qe ka disa principe te thjeshta, nje sistem i tille ka shume shanse te jete i sigurt. Nqs projektimi eshte i ngaterruar, ateher dhe siguria eshte ne dyshim. Ju mund te projektoni nje sistem me shume veprime, por nje sistem i tille eshte nje sistem i madh. Nje sistem i madh eshte me shume mundesi nje sistem jo i sigurt.

Sulmet nga brenda sistemit Ne ditet e sotme keni degjuar aq shume per viruset saqe eshte bere nje problem per te gjithe ata qe kane nje kompjuter ose qe perdorin kompjuterin. Eshte gjithashtu problem per kompanite qe mbajne te dhena te rendesishme. Interneti sot eshte kaq i mbushur me informacione rreth viruseve, ju mund te gjeni shume materiale shtese pervec ketij leksioni. Po cfare eshte nje virus? Virus eshte nje program i cili mund te riprodhoje veten duke bashkangjitur kodin e tij nje programi tjeter. Edhe nga emri na kujton termin biologjik te riprodhimit te viruseve. Skenari i virusit Perderisa nje virus eshte thjesht nje program, ai mund te beje cdo gje qe ben nje program. Ai mund te shtype nje mesazh, mund te paraqese nje imazh ne ekran, mund te luaje muzike, ose mund te beje ndonje gje me te demshme. Ai mund te fshije ose mund te modifikoje ose te marre skedare. Nje virus mund te ekriptoje te gjithe skedaret e hardiskut, dhe te jape dikujt tjeter kodin e enkriptimit, dhe me pas te jape adresen ku mund ta merrni kodin ne kembim te nje shperblimi. Viruse me te keqinj mund te shkaterrojne edhe hardware-in e kompjuterit. Shume kompjutera moderne mbajne BIOS ne ROM, e cila mund te rishkruhet me ane te nje programi. Nje virus mund te shkruaje ne BIOS keshtu qe kompjuteri nuk mund te hapet me. Nje virus gjithashtu mund te leshohet me nje destinacion te caktuar. Nje kompani mund te leshoje nje virus qe kontrollon nese eshte duke u ekzekutuar nje program konkurent. Nqs nuk eshte administratori i sistemi i loguar, atehere ai nis punen duke zvogeluar cilesin e proceseve dhe duke prishur pune kompanise konkurente.

Page 77: Sisteme shfrytezimi Sidita Duli - Weebly4byte.weebly.com/uploads/9/5/3/0/9530316/sisteme...Sisteme shfrytezimi Sidita Duli 1 Leksioni 2 Historia e OS Gjate ketij leksioni do shihim

Sisteme shfrytezimi Sidita Duli

77

Si funksionojne viruset Nje virus i vendoset nje programi, i cili dergohet ndoshta ne internet. Njerezit qe shkarkojne kete program kane marre dhe virusin. Pasi istalohet virusi ne kompjuter, ai pushon derisa te ekzekutohet programi i infektuar. Pasi nis punen virusi nis te infektoje dhe programe te tjere. Llojet e viruseve Viruset companion nuk infektojne nje program, ata thjesht ekzekutohen kur duhet te niste ekzekutimin programi. Eshte dicka e ngjashme me shortcut qe perdoren ne Windows. Nje virus mund te ndryshoje target te ketij shortcut dhe te beje te shenjoje ne virus. Kur perdoruesi ben nje dubel klick ne ikone nis ekzekutimin virusi dhe jo programi origjinal. Viruset e programeve te ekzekutueshem jane viruse qe infektojne programet. Versioni me i thjeshte mbivendos vete programin e ekzekutueshem. Viruset e qendrueshem ne memorje qendrojne ne memorje gjate gjithe kohes. Nje virus i mencur mundet edhe te modifikoje harten e memrojes RAM dhe te beje qe sistemi te mendoje se virusi ka zene te gjithe memorjen. Nje virus tipik i qendrueshem ne memorje qenron ne vektorin e interrupteve, duke vendosur permbajtjen e tij ne nje variablen dhe vendos adresen e tij ne kete vektor. Me vone ben qe atij ti dergohet nje interrupt. Ai i ben qe te ekzekutohet per cdo thirrje sistemi. Natyrisht kjo gje behet qe te infektohen cdo program. Ai pret qe te ekzekutohet nje thirrje sistemi exec dhe me pas e di qe skedari ne vijim do jete nje skedar binar i ekzekutueshem dhe e infekton ate. Leksionet u pergatiten gjate vitit akademik 2007-08 Pedagogu Sidita Duli