Top Banner
Sisteme Shfrytezimi Pezrmbledhje leksionesh
92

Sisteme Shfrytezzimi...sisteme sot përdoren në server web që proçesojnë mijëra proçese në sekondë. Synimi ishte që të gjithë programet, përfshi këtu dhe sistemin e shfrytëzimit

Feb 01, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • Sisteme ShfrytezzimiPezrmbledhje leksionesh

  • Sidita Duli Sisteme Shfrytezzimi 2016Leksioni 1

    Sistemi i shfrytëzimitSistemi i shfrytëzimit është shtresa software që ka për detyrë të menaxhojë të gjitha paisjet

    dhe të sigurojë programet e përdoruesit me një ndërfaqe të thjeshtë.

    Nga figura më lart shihet se në shtresën eposhtme qëndron shtresa hardware e sistemit,studimi i së cilës i përket inxhinierisë elektronike.Vini re pozicionin që ka sistemi i shfrytëzimit nëkëtë skemë.

    Sistemi i shfrytëzimit zë pozicioninndërmjetës mes pjesës hardware dhe programeveqë mund të përdoren për programim, siç mund tëjete një editor i një gjuhe programimi, njëkompilator, etj, kurse në nivelin më të lartë në këtëskemë qëndrojnë programet e përdoruesit.

    Është e rëndësishme të kuptohet se këtoprograme nuk janë aspak pjesë e sistemit tëshfrytëzimit. Sistemi i shfrytëzimit është ajo pjesësoftware që ekzekutohet në kernel mode, e qëmbrohet nga hardware.

    Kompilatorët dhe editorët ekzekutohen nëuser mode. Nqs një përdorues nuk parapëlqen një

    kompilator ai mund ta modifikojë atë, por nuk mund të modifikojë një clock interrupt të njësistemi shfrytëzimi i cili mbështetet nga hardware-i, pikërisht që të mos ndodhë ky modifikim. Nëshumë sisteme ka programe të tillë që ekzekutohen në user mode por që ndihmojnë sistemin eshfrytëzimit, ose kryejnë funksione me rëndësi. Psh ekzistojnë programe që lejojnë përdoruesit tëndryshojnë passwordin. Një program i tillë nuk është pjesë e sistemit të shfrytëzimit dhe nukekzekutohet në kernel mode, por kryen një rol me rëndësi në mbrojtjen e sistemit.

    Në disa sisteme pjesë të sistemit të shfrytëzimit ekzekutohen në user mode, psh një filesystem. Në sisteme të tillë është e vështirë të përcaktohen kufinj të qartë. Çdo gjë që ekzekutohetnë kernel mode është pjesë e sistemit të shfrytëzimit, por disa programe që ekzekutohen dhe nëuser mode janë gjithashtu pjesë e tij, ose pjesë që lidhet ngushtë me të.

    Çfarë është OS ?Shpesh është e vështirë të përcaktosh me pak fjalë dhe në mënyrë precize se çfarë është një sistemshfrytëzimi. Arsyeja mund të jetë ngaqë sistemi i shfrytëzimit ka dy role kryesore të cilat nuk kanëlidhje me njëra tjetrën.1. Zgjerimi i makinës2. Menaxhimi i resurseve

    Zgjerimi i makinësArkitektura e një kompjuteri përbëhet nga bashkësia e instruksioneve të makinës, organizimi imemories, I/O, struktura e buseve. Për tu menaxhuar në nivelin e makinës është vështirë për tuprogramuar. Një programues më së shumti nuk preferon të arrijë të programojë në nivelin e njëhard disku. Një programues kërkon që të ketë të bëjë me diçka më të thjeshtë se kjo, me njëabsragim në një nivel të lartë. Në rastin e hardiskut mund të jetë një grumbull skedarësh të

    2

  • Sidita Duli Sisteme Shfrytezzimi 2016emërtuar. Kështu, një skedar hapet, modifikohet dhe këto modifikime mund të ruhen duke mosparë detaje të tjera të realizimit, të cilat i fshihen përdoruesit.

    Është sistemi i shfrytëzimit ai i cili i fsheh përdoruesit të vërtetën rreth realizimit nëhardware, dhe i prezanton një paraqitje të këndshme, të thjeshtë. Ashtu siç eliminon detajet rrethmënyrës se si mund të hapet e të modifikohet një skedar, ashtu fsheh shume detaje (jo të këndshmepër tu ditë gjithmonë) rreth menaxhimit të memories, interrupt-eve, etj. Funksioni i sistemit tëshfrytëzimit është të paraqesë për përdoruesin një makinë të zgjeruar ose virtuale e cila është më ethjeshtë për tu menaxhuar. Ne do e shohim mënyrën se si OS e realizon këtë gjë.

    OS si menaxher resurseshNga një këndvështrim krejt tjetër shohim sistemin e shfrytëzimit që menaxhon elementet përbërëstë një sistemi të madh kompleks. Kompjuterët e sotëm kanë proçesorë, memorje, timer-a, disqe,ndërfaqe rrjeti, printer, si dhe një sërë paisjesh tjera periferike.

    Detyra e OS është të mundësojë kontrollimin e të gjitha këtyre paisjeve, allokimin e tyrendërmjet të gjitha programeve që kërkojnë ti përdorin ato. Imagjinoni sikur tre programe tëkërkojnë të printojnë në të njëjtin printer në të njëjtën kohë. Rreshti i parë mund të jetë i programittë parë, më pas disa rreshta nga i dyti, e kështu do krijohej një kaos i vërtetë.

    OS mund të zgjidhë këtë problem në këtë mënyrë që materialin për printim të një programita kopjojë më parë në një hapësirë në disk, kur një program të ketë mbaruar, atëherë OS mund tëkopjojë këtë material nga disku në printer, në të njëjtën kohë një tjetër program lë materialin e tijnë disk për tu printuar.

    Ndarja e resurseve konsiston në dy dimensione : në kohë dhe në hapësirë. Kur një resurskërkohet nga dy program të ndryshëm në të njëjtën kohë, së pari njëri prej tyre e merr këtë resurs,dhe me pas e lëshon për ta marrë tjetri. Është detyra e sistemit të shfrytëzimit të vendosë se kush eka radhën për të marrë një resurs , dhe për sa kohe do ta mbajë atë. Shembull për një resurs qëkërkohet në disa pjesë (hapësira) është psh memorja qëndrore e cila normalisht ndahet mesprogrameve që janë në ekzekutim. Duke supozuar se ka memorje të mjaftueshme për të gjithëprogramet në ekzekutim, është më eficiente që të jenë disa programe në memorje njëherësh se satë jetë veç njëri.

    Organizimi i hapësirave të diskut si dhe mbajtja shënim se kush po përdor një pjesë tëcaktuar memorjeje është një detyrë e menaxhimit të resurseve të sistemit të shfrytëzimit.

    Historia e OSGjatë këtij leksioni do shohim se si kanë evoluar sistemet e shfrytëzimit ndër vite. Përderisasistemet e shfrytëzimit lidhen ngushtë me arkitekturën e kompjuterëve, duhen parë gjeneratat ekompjuterëve për të parë se si ishin sistemet e shfrytëzimit përkatëse. Kompjuteri i parë digitalështë projektuar nga Charles Babbage, matematicien anglez i cili synonte të krijonte një “motoranalitik”. Kjo ndodhi në fillimet e shekullit të 19-të. Kjo makinë nuk mund të funksiononte saktëpër shkak se teknologjia e kohës nuk e mbështeste. Kjo makinë nuk pati një sistem shfrytëzimi.Pas kësaj makine fshihet dhe software i parë. Ada Lovelace është programatorja e parë. Për nder tësaj është emërtuar gjuha e programimit Ada.

    Gjenerata e parë (1945-55), tubat vacuumGjenerata e parë i përket viteve të pas luftës së II botërore. Howard Aiken,John Von Neumann, JPresper Eckert, William Mauchley dhe Konrad Zuse patën sukses në ndërtimin e motorëvellogaritës. Këto makina të para ishin të ngadalta, me cikle që maten në sekonda. Pjesë të tyre ishintubat vakume. Këto makina ishin gjigante në madhësi, zinin komplet dhomën dhe përmbanindhjetëra mijëra tuba të tillë. Të gjitha programet shkruheshin në gjuhë makine. Sistemet eshfrytëzimit ende ishin të panjohura. Problemet që zgjidhnin këto makina ishin llogaritjematematikore të tilla si ndërtimi i tabelave të sinuseve e të logaritmeve.

    3

  • Sidita Duli Sisteme Shfrytezzimi 2016Gjenerata e dytë (1955-65) transistorët dhe sistemet batchNë këtë periudhë teknologjia kishte ecur drejt transistorëve dhe batch systems. Në këtë periudhëkompjuterët u bënë më të besueshëm dhe pati shitje të tyre. Për herë të parë u ndanë më veteprojektuesit, operatorët, programatorët dhe personeli mirëmbajtës. Këto makina quheshinmainframe dhe vendoseshin në dhoma me ajër të kontrolluar, në kushte të veçanta, me staf tëspecializuar që funksiononin me to.

    Vetëm agjensitë dhe koorpotatat e mëdha ose universitetet mund të blinin sisteme të tillëme çmime multimilion dollarësh. Të ekzekutosh një program në këto sisteme, një programatorduhet më parë të shkruajë programin në letër, dhe më pas ta kaloje atë në kartë. Këtë karte e sjellne dhomën e inputit, ia jep operatoreve dhe pret për pak kohe derisa të dale outputi.

    Kur kompjuteri mbaron detyrën që kishte nisur, një operator merr nga printeri daljen dhe ekalon në dhomën e outputit, që kur programatori ta marrë së bashku me outputet e tjerë. Shumëkohë humbet në këtë mënyrë nga koha e veprimit të kompjuterit ndërkohë që operatori kalon sanga njëra dhome ne tjetrën. Duke u nisur nga kjo, shume njerëz u përpoqën që të eliminonin këtëhumbje të panevojshme kohe. Zgjidhja ishte përdorimi i të ashtuquajturave batch systems. Siparim pune ata kishin grumbullimin e disa punëve së bashku nga dhoma e inputit dhe t’i lexoninmbi një shirit magnetik duke përdorë një kompjuter të vogël dhe jo të kushtueshëm që janë të mirënë leximin e të dhënave por jo në kalkulime numerike.

    Fig 1. Një batch system. a) Programatori sjell kartën në 1401 (b) 1401 lexon punën që duhet kryernga një shirit, (c) operatori kalon shiritin në 7094 (d) 7094 realizon veprimin (e) Operatori kalonshiritin në 1401 (f) 1401 printon outputin.

    Gjenerata e tretë (1965-1980) MultiprogramimiNë fillim të viteve 1960 shumica e prodhuesve të kompjuterëve kishin dy linja produkti totalisht tëndryshme. Njëra ishte e linja e përdorur për qëllime llogaritjesh numerike në shkencë dhe nëinxhinieri. Linja e dytë ishte ajo e kompjuterëve komerciale që përdoreshin në renditje dhe printimtë përdorur në banka dhe në kompani sigurimesh. Të mbash këto dy linja ishte shume ekushtueshme për kompanitë, dhe për më tepër shihej dukshëm se tendenca ishte dalja në treg elinjave të reja.

    Në këtë moment IBM prezantoi System/360, e cila ishte një seri makinash të cilit ishinkompatibël në software. Këto makina dallonin vetëm në çmim dhe në performancë, ku përfshihenmemorja maksimale, shpejtësia e proçesorit, numri i paisjeve I/O të lejuara, etj. Përderisa të gjithakëto makina kishin të njëjtën arkitekturë si dhe të njëjtën bashkësi instruksionesh, një program ishkruajtur në njërën nga këto makina mund të ekzekutohej në makinat e tjera të këtij lloji. 360ishin të afta të llogaritnin edhe veprime numerike edhe veprime komerciale.

    Linja 360 ishte e para linjë e cila përdorte qarqet e integruar, për këtë siguronin njëavantazh në çmim dhe në performancë në krahasim me makinat e gjeneratës së dytë, të cilët ishin

    4

  • Sidita Duli Sisteme Shfrytezzimi 2016të ndërtuar nga transistorë të veçuar. Ky ishte një sukses i kohës. Linja të tilla që rrjedhin nga këtosisteme sot përdoren në server web që proçesojnë mijëra proçese në sekondë.

    Synimi ishte që të gjithë programet, përfshi këtu dhe sistemin e shfrytëzimit OS/360, duhejtë funksiononin në të gjithë modelet, të të gjitha tipave e madhësive. Ky sistem shfrytëzimi duhejtë ishte efiçient për të gjitha llogaritjet dhe për të gjithë përdoruesit.

    Nuk kishte asnjë mënyrë që të shkruhej një program që të përmbushte të gjitha këtokërkesa konfliktuale. Rezultati ishte një sistem shfrytëzimi shumë kompleks. Ai konsistonte nëmiliona rreshta programi në gjuhën assembler. Këto rreshta natyrisht përmbanin mijëra gabime,dhe për këtë shtoheshin rreshta të tjerë për t’i korrigjuar dhe secili prej këtyre rreshtave riparontedisa gabime dhe shtonte disa të tjerë.

    Pavarësisht problemeve, sistemet e shfrytëzimit të gjeneratës së tretë sollën teknika të reja,prej të cilave më e rëndësishmja ishte ajo e multiprogramimit, e cila shmangte mundësinë që CPUtë rrinte gjatë pa punë. Zgjidhje për këtë ishte ndarja e memorjes në disa pjesë, me disa proçese nëkëto pjesë. Ndërkohe që njëra punë angazhonte një paisje I/O, një tjetër mund të përdorte CPU-në.

    Një tjetër tipar i rëndësishëm për makinat e kësaj gjenerate ishte aftësia për të lexuarproçeset prej kartave në disk sapo të sillen në dhomën e kompjuterit. Më pas sapo një proçes kryensistemi i shfrytëzimit mund të ngarkojë një tjetër punë nga disku dhe ta ekzekutojë. Gjithsesi, këtokompjuterë ishin ende sisteme batch. Koha që i duhej këtyre sistemeve për të ekzekutuar një punëdhe për të nxjerrë rezultatin ishte prej disa orësh. Një presje e vendosur gabim në këto programeshkaktojnë probleme në kompilim , dhe për këtë bënte që programuesi të humbiste punën e disaorëve.

    Dëshira për një përgjigje të shpejtë i hapi rrugën timesharing, një variant imultiprogramming. Në një sistem të tillë, nqs 2 përdorues janë të log-uar në sistem, 17 prej tëcilëve janë duke menduar ose duke folur, CPU i dedikohet punës së këtyre 3 punëve që duhenkryer.

    Gjenerata e katërt (1980-sot ) Personal Computers.Me zhvillimin e qarqeve me shkallë të lartë integrimi, çipet përmbanin mijëra transistorë në njëcentimetër katror. Duke qenë të lirë në çmim, minikompjuterat bënë të mundur që një departamentnë një kompani, në universitet, ose dhe një individ të kishte kompjuterin e tij personal.

    Në vitin 1974, kur Intel doli me variantin 8080, kërkohej një sistem shfrytëzimi që tatestonte atë. Në këtë kohë u krijua floppy disk 8 inch. Në vitet 1980, IBM projektoi IBM PC dhepo kërkonte një soft që ta ekzekutonte atë. Punonjës të IBM kontaktuan me Bill Gates për liçensënqë kishte për interpretuesin e Basic. Ata gjithashtu i kërkuan nëse njihte ndonjë sistem shfrytëzimiqë të funksiononte në PC. Gates iu sugjeroi të kontaktonin me kompaninë Digital Reseach, në atëkohë dominuese në botë për sistemet e shfrytëzimit. Vendimi më i keq në historinë e bizneseveishte kur Kidlall refuzoi të takonte personalisht përfaqësuesit e IBM, duke iu dërguar atyre njënëpunës të thjeshtë. Çështja u përkeqesua kur avokati i Digital Research nuk pranoi tënënshkruante kontratën me IBM. Atëherë IBM u rikthye të Bill Gates dhe i kërkoi atij nëse mundt’iu siguronte ndonjë sistem shfrytëzimi. Gates dinte që Seatle Computer Products kishin njësistem shfrytëzimi të përshtatshëm për ta, DOS ( Disk Operating System). Ai ua bleu këtë për50.000$. Gates i ofroi IBM paketën DOS/Basic. IBM kërkonte modifikime, atëherë Gates kërkoipersonin që shkroi DOS të modifikonte atë, dhe e punësoi në kompaninë e sapokrijuar të tijën,Microsoft. Modifikimet u riemëruan si MS-DOS dhe shpejt u bë mbizotëruese në treg.

    MS-DOS u përdor më vonë në 80386, dhe në 80486. Megjithëse versionet e tij të paraishin primitive, versionet e mëvonshme përmbanin shumë opsione shtesë të marra nga Unix. MS-DOS dhe të tjerë sisteme shfrytëzimi të asaj kohe bazoheshin në komandat që përdoruesishkruante nga tastiera. Kjo ndryshoi falë ndryshimeve të bëra nga Doug Engelbart i cili krijoi tëashtuquajturën GIU ( Graphical User Interface ), e cila përdor dritaret, ikonat, menytë dhe mousin.

    5

  • Sidita Duli Sisteme Shfrytezzimi 2016Steve Jobs, njëri nga krijuesit e kompjuterit Apple, pa një GUI dhe vendosi të ndërtonte një

    Apple me GUI. Ky projekt u quajt Lisa, por duke qenë shumë e shtrenjtë dështoi në treg. Përpjekjae dytë e Jobs ishte Apple Macintoch, cili ishte vërtet një sukses, jo vetëm se ishte i lirë, por dhesepse ishte user friendly, që do thotë se ishte krijuar për personat që nuk ia kishin idenë rrethkompjuterëve.

    Kur Microsoft vendosi të ndërtonte pasuesin e MS-DOS, u influencua nga suksesi iMachintosh. Ndërtoi një GUI që e quajti Windows, i cili bazën e kishte në MS-DOS. Gjatë viteve1985-1993 Windows ishte thjesht një ndërfaqe grafike e MS-DOS. Në vitin 1995 nisi versioni ipavarur i Windows 1995, i cili më pas u ndoq nga Windows 98. Të dy këto versione të Windowspërmbanin sasi të mëdha kodesh në assembler Intel 16 bit.

    Një tjetër sistem shfrytëzimi është Windows NT (shkurtim i New Technology), i cili ështëkompatibël me Windows 95 në një farë niveli, por është një sistem i plotë 32 bit. Microsoft priti seversioni i parë i NT do largonte MS-DOS dhe të gjithë versionet e mëparshme të Windowspërderisa ishte superior, por nuk ndodhi kështu. Versioni 5 i Windows NT u riemërua Windows2000. Qëllimi ishte që versioni 5 i Windows NT të ishte pasues i Windows 98, por nuk ndodhikështu, për këtë Microsoft prezantoi versionin e ri të Windows 98 të quajtur Windows Me( shkurtim i Millennium). Pas këtij, versioni i fundit i suksesshëm është Windows XP ( shkurtim iExperience) me dy edicionet, Professional dhe Home Edition.

    Një tjetër sistem shfrytëzimi i fuqishëm është Unix, dhe degëzimet e tij. Unix është ifavorshëm në Workstation dhe në serverët e rrjeteve. Në kompjuterë me bazë Pentium, Linuxështë bërë një alternativë kundrejt Windows.

    Pavarësisht faktit që shumë përdorues të Unix, sidomos ata me shumë eksperiencëpreferojnë një ndërfaqe të bazuar në komanda, thuajse të gjithë sistemet e Unix mbështesin njësistem të ndërtuar mbi dritare dhe që quhet X Windows. Ky sistem përmban menaxhimin edritareve, krijimi i userave. Një ndërfaqe GUI e quajtur Motif lejon që Unix të ngjasojë meMacintoch ose me Microsoft Windows.

    Një zhvillim i rrjeteve gjatë viteve 1980 çuan në evolumin e network operating systemsdhe distributed operating systems. Në një sistem shfrytëzimi të tillë përdoruesit janë në dijeni tëshumë kompjuterëve dhe që mund të log-ojnë në një makinë në rrjet, mund të kopjojnë skedarënga një makinë në një tjetër. Secila makinë ekzekuton sistemin lokal të shfrytëzimit dhe kapërdoruesit e vet.

    Network operating systems në thelb nuk janë të ndryshëm nga sistemet një-proçesorësh.Duket natyrisht që këto sisteme kanë nevojë për network interface controller dhe softe që ekomandojnë atë.

    Një distributed operating system ngjason për përdoruesit si një sistem tradicional, edhe pseështë i përbërë nga shumë proçesorë. Përdoruesit nuk duhet të jenë në dijeni se ku do ekzekutohenprogramet e tyre ose se ku janë të vendosur skedarët e tyre. Me të gjitha këto merret në mënyrëefiçiente sistemi i shfrytëzimit. Distributed operating systems të mirëfilltë kërkojnë më tepër seshtesë kodi të një sistemi një-proçesor, sepse sistemet e shpërndarë dhe ato të përqendruarndryshojnë në shumë aspekte kritike. Psh sistemet e shpërndarë (distributed systems ) lejojnë qëaplikacionet të ekzekutohen në disa proçesorë në të njëjtën kohë. Për këtë kërkojnë algoritme mëkomplekse skedulimi, në mënyrë që të përmirësojnë paralelizmin.

    6

  • Sidita Duli Sisteme Shfrytezzimi 2016Leksioni 2

    Pjesët hardware të kompjuteritNjë sistem shfrytëzimi është i lidhur ngushtë me pjesët hardware të kompjuterit në të cilëtekzekutohet. Për këtë arsye po shohim pjesët kryesore të ndërtimit të kompjuterit.

    Një pamje kryesore të ndërtimit të kompjuterit mund të përmblidhet në figurën emëposhtme. CPU, memorja dhe paisjet I/O janë të gjitha të lidhura në një sistem bus për tëkomunikuar me njëri-tjetrin. Kompjuterët personalë modernë kanë një strukturë me të komplikuarbusesh.

    ProçesorëtTruri i kompjuterit është CPU. Ai e merr instruksionin nga memorja, e dekodon për të përcaktuartipin dhe operandat dhe e ekzekuton atë. Më pas vazhdon me instruksionin tjetër. Në këtë mënyrëekzekutohen programet.

    Çdo CPU ka një bashkësi të caktuar instruksionesh që mund të ekzekutojë. Për këtë njëPentium nuk mund të ekzekutojë programet e SPARC dhe një SPARC nuk mund të ekzekutojë njëprogram të Pentium. Kjo për faktin se aksesimi i memorjes për të marrë një instruksion ose një tëdhënë kërkon më tepër kohë se ekzekutimi i instruksionit. Të gjithë CPU-të përmbajnë disaregjistra që kanë për detyrë të ruajnë dhe dhëna të përkohshme. Për këtë në bashkësinë einstruksioneve ndodhen dhe instruksione që realizojnë ngarkimin e një fjalë memorjeje në njërinprej këtyre regjistrave, ose të ruajnë vlerën e një regjistri të tillë në memorje. Instruksione të tjerëkombinojnë veprime mes dy regjistrave, qelizave të memorjes, ose të dyja prej tyre. Veprime tëtilla mund të jenë veprimi add, si dhe veprime të tjera të këtij lloji.

    Përveç regjistrave që mbajnë rezultate dhe të dhëna të përkohshme, ekzistojnë dhe regjistraspecialë që programatori mund t’i shohë. Njëri prej këtyre regjistrave është dhe program counter.Ky regjistër përmban adresën e memorjes të instruksionit të ardhshëm që do merret nga memorja.Pasi instruksioni merret nga memorja, program counter ndryshon vlerën duke shënjuar të adresa einstruksionit pasardhës.

    Një tjetër regjistër i veçantë është stack pointer. Ky regjistër shënjon në fillimin e “turrës”së memorjes. Kjo turrë përmban të gjitha proçedurat që janë thirrë por që nuk janë ekzekutuarende. Në këto të dhëna për proçedurën ndodhen parametrat hyrës, variablat lokal, dhe variablat epërkohshëm që nuk janë ruajtur në regjistra.

    Regjistër tjetër është dhe PSW (Program Status Word). Ky regjistër përmban bite qëpërmbajnë informacion rreth prioritetit të CPU-së, faktin nëse programi po ekzekutohet në usermode ose në kernel mode dhe disa bite të tjerë kontrolli. Ky regjistër luan një rol kryesor në sistemcalls dhe I/O.

    Sistemi i shfrytëzimit duhet të kontrollojë secilin prej këtyre regjistrave. Gjatë kohës sëpunës së CPU-së, sistemi i shfrytëzimit shpesh ndalon një ekzekutimin e një programi për të

    7

  • Sidita Duli Sisteme Shfrytezzimi 2016vazhduar me një program tjetër. Çdo herë që një program ndalohet, sistemi i shfrytëzimit i ruanvlerat e të gjithë regjistrave sepse vlerat që ato përmbajnë duhet kur ai program të rifillojë punën.

    Projektuesit e CPU-së kanë ndryshuar modelin e marrjes, dekodimit dhe të ekzekutimit tënjë instruksioni të vetëm në një moment të caktuar. Sot shumë CPU ekzekutojnë disa instruksionenjëherësh. Psh një CPU mund të ketë njësi të ndryshme të marrjes, dekodimit dhe të ekzekutimit,për këtë ndërkohë që ai ekzekuton instruksionin e n-të, ai mund të dekodojë instruksionin e n+1dhe të marrë instruksionin e n+2.

    Shumë CPU ekzekutojnë programet në dy mënyra, në kernel mode dhe në user mode. Njëbit në regjistrin PSW paraqet këtë gjë. Gjatë ekzekutimit në kernel mode, CPU mund të ekzekutojëçdo instruksion në bashkësinë e tij të instruksioneve dhe përdor çdo karakteristike të hardware-it tëtij. Sistemi i shfrytëzimit ekzekutohet në kernel mode dhe ka akses në të gjithë hardware-in.Ndërkohë, një program i përdoruesit ekzekutohet në user mode, dhe ka mundësi të ekzekutojëvetëm një nënbashkësi të instruksioneve. Në përgjithësi, të gjithë instruksionet që përfshijnëveprimet I/O si dhe memorjen e mbrojtur nuk mundësohen në user mode. Sigurisht nuk lejohetndryshimi i vlerës së PSW.

    Për të marrë shërbime nga sistemi i shfrytëzimit një programit në user mode i duhet të bëjënjë system call. Një instruksion kalon kontrollin nga user mode në kernel mode dhe nis sistemi ishfrytëzimit nis punën. Kur puna mbaron, kontrolli i kalon përsëri programit të përdoruesit nëinstruksionin që bëri thirrjen e system call.

    Memorja Një komponent tjetër i rëndësishëm është memorja. Një memorje ideale do ishte shumë e shpejtë,tepër e madhe dhe shumë e lirë. Asnjë teknologji e kohës nuk i plotëson të treja këto kushtenjëherësh. Sistemi i memorjes konsiderohet një hierarki si në figurën më poshtë :

    Në majë të kësaj piramide qëndrojnë regjistrat e CPU-së. Ata janë të përbërë me të njëjtinmaterial me CPU-në dhe për këtë janë të shpejtë sa memorja, pra mund të aksesohen shpejt.Kapaciteti i tyre është 32 X 32 bit për CPU me 32 bit, dhe 64 X 64 bit për një CPU me 64 bit. Nëtë dyja rastet kapaciteti shkon më pak se 1 KB.

    Një nivel më poshtë është memorja Cache, shumica e së cilës kontrollohet nga hardware.Memorja qëndrore është e ndarë në rreshta cache zakonisht me përmbajtje 64 bytes. Rreshti i parëka adresat 0-63, rreshti i dytë ka adresat 64-127, etj. Rreshtat që përdoren me shpesh mbahen mepranë CPU-së në mënyrë që të akseksohen më shpejt. Kur programi ka nevojë të lexojë një fjalëmemorjeje, pjesa hardware që kontrollon memorjen cache verifikon nëse kjo fjalë gjendet nëmemorjen cache. Memorjet cache janë të kufizuar në madhësi dhe kanë kosto të lartë. Disa makinakanë dy ose dhe tre nivele të memorjes cache, secila më e ngadaltë dhe më e madhe separaardhësja.

    8

  • Sidita Duli Sisteme Shfrytezzimi 2016Në nivelin tjetër ndodhet memorja qëndrore, e cila shpesh quhet dhe RAM ( Random

    Access Memory). Në ditët e sotme madhësia e saj po rritet shumë shpejt, dhe normalisht ështëqindra megabytes.

    Një nivel më poshtë në hierarkinë e memorjes qëndron disku magnetik (hard disku). Këtodisqe janë më të lirë se RAM, në një madhësi dy rende më pak, dhe gjithashtu dy rende më tëmëdhenj. Problemi është vetëm të aksesimi i të dhënave kryhet në dy rende më pak se memorjaqëndrore. Kjo ngadalësi është nga ndërtimi i diskut.

    Shtresa e fundit në hierarkinë e memorjes është shiriti magnetik. Ky shirit shpesh përdoretpër backup, ose për të ruajtur të dhëna që janë në sasi shumë të mëdha. Për të aksesuar në një shirittë tillë, së pari duhet vendosur shiriti në lexuesin e tij, më pas shiriti duhet të çohet në pozicionin ekërkuar. E gjitha kjo mund të kërkojë disa minuta. Avantazhi kryesor i këtyre shiritave është faktiqë është shumë i lirë për bit, dhe që mund të ndahet nga kompjuteri dhe mund të vendoset nëvende të mbrojtura nga zjarret dhe nga fatkeqësitë natyrore, gjë kjo shumë e rëndësishme për tëruajtur të dhëna me rëndësi.

    Hierarkia e paraqitur më lart është tipike, por në disa raste ka disa shtresa që mungojnë osedisa të ndryshime të tjera. Gjithsesi, në të gjitha këto raste sa më tepër që të ulemi në hierarki kohae askesimit rritet së tepërmi, kapaciteti rritet gjithashtu dhe kostoja për bit ulet.

    RAM është memorje e tillë që humbet informacionin kur fiket kompjuteri. Ndryshe ngakjo, ROM (Read Only Memory) është programuar e tillë që nuk mund të ndryshohet pasi ështëshkruar. Ajo është një memorje e shpejtë dhe jo e kushtueshme. Në shumë kompjuterë proçesi iboot-imit kryhet nga ROM. Shpesh kërkohet që në memorje të qëndrojnë disa programe njëherësh. Nqs një programështë bllokuar në pritje të leximit në disk, një tjetër program mund të përdorë CPU-në, duke dhënënë këtë mënyrë një përdorim me eficient të CPU-së. Por me dy programe në memorjen kryesoremund të kemi këto probleme :1. Si t’i mbrojmë programet nga njëri-tjetri dhe kernel nga të dy këto programe.2. Si mund t’i marrësh këto programe.

    Problemi i parë dallohet qartë, i dyti është më delikat. Kur një program kompilohet dhelidhet, kompilatori dhe linker-i nuk e di se në cilën pjesë të memorjes fizike do të ngarkohet kur tëekzekutohet. Për këtë ata supozojnë gjithmonë se ai do nisë nga adresa zero. Ai vendosinstruksionin e parë në këtë pozicion. Supozoni se instruksioni i parë merr një fjalë nga adresa10.000 e memorjes. Supozoni se komplet programi dhe të dhënat e tij ngarkohen në adresën50.000. Kur ekzekutohet instruksioni i parë ai do nuk do ekzekutohet për shkak ai referencon nëfjalën me adresën 10.000 në vend të fjalës me adresë 60.000. Për të zgjidhë këtë problem, ne naduhet ose të rivendosim programit gjatë kohës së ekzekutimit, duke gjetë të gjitha adresat dheduke i modifikuar ato, ose mund të rivendosim gjatë kohës së ekzekutimit.

    Zgjidhja paraqitet në figurën (a) më poshtë. Shohim që kemi kompjuterin e paisur me dyregjistra speciale, regjistri bazë dhe regjistri limit. Kur ekzekutohet një program, regjistri bazëshënjon në fillim të tekstit të programit, kurse regjistri limit tregon se sa të gjerë janë teksti iprogramit dhe të dhënat e tij. Kur merret një instruksion nga memorja, hardware kontrollon për tëparë nëse program counter është më i vogël se regjistri limit, e nëse po, ia shton atë regjistrit bazëdhe dërgon shumën në memorje. Në mënyrë të ngjashme kur programi kërkon të marrë të dhënanga një adresë e caktuar (psh nga adresa 10.000) hardware automatikisht ia shton përmbajtjen eregjistrit bazë (psh 50.000) kësaj adrese dhe dërgon shumën (60.000) në memorje. Regjistri bazëpengon që një program të shënjojë në një pjesë të memorjes që ndodhet më poshtë këtij regjistri.Regjistri limit pengon që një program të shënjojë në një pjesë të memorjes sipër tij. Për këtë kjoskemë zgjidh të dyja problemet, të mbrojtjes dhe të rimarrjes të programeve dhe me një kosto të dyregjistrave të rinj, dhe të një rritjeje të vogël të ciklit për të mundësuar kontrollimit e limitit dhepër të realizuar shtimin.

    9

  • Sidita Duli Sisteme Shfrytezzimi 2016Adresa e gjeneruar nga programi quhet adresë virtuale, kurse adresa e përdorë nga

    memorja quhet adresë fizike. Paisja që realizon këtë kontroll dhe konvertimin quhet MMU(memory management unit). Ajo është e pozicionuar në një chip të CPU-së ose afër saj, porlogjikisht është mes CPU-së dhe memorjes.

    Një MMU më të sofistikuar kemi në fig (b) më poshtë. Këtu MMU është e përbërë nga dyçifte regjistrash bazë dhe limit, një për tekstin e programit dhe një për të dhënat. Program counterdhe të gjithë shënjuesit e tjerë të tekstit të programit përdorin çiftin e parë të referencave, kurse përtë shënjuar të dhënat përdorin çiftin e dytë. Për këtë, ne mundemi të kemi shumë përdorues qëndajnë të njëjtin program kur ky i fundit ndodhet vetëm një herë në memorje. Kur programi 1është në ekzekutim, katër regjistrat marrin vlerat siç tregohet në pjesën e majtë të figurës. Kurprogrami 2 është në ekzekutim, këto regjistra marrin vlera siç paraqiten në pjesën e djathtë tëfigurës.

    Memorja cache fsheh ngadalësinë e memorjes. Kur një program është ekzekutuar për pakkohë, memorja cache është e mbushur me rreshtat e këtij programi, duke dhënë kështu njëperformance të mirë. Gjithsesi, kur sistemi i shfrytëzimit kalon nga një program tek një tjetër,memorja cache vazhdon të jetë plot me rreshtat prej programit të parë. Këto rreshta updatohen njënga një nga memorja fizike.

    Paisjet I/OMemorja nuk është resursi i vetëm që duhet të menaxhoje sistemi i shfrytëzimit. Një paisje I/O nëpërgjithësi konsiston në dy pjesë : një controller dhe vetë paisja. Kontrolleri është një chip ose njëbashkësi chipesh që kontrollojnë fizikisht paisjen. Ai pranon komanda nga sistemi i shfrytëzimitdhe i realizon këto komanda.

    Në shumë raste kontrolli i paisjes është shumë i ndërlikuar, kështu që puna e kontrolleritështë të paraqesë një ndërfaqe të thjeshtë për sistemin e shfrytëzimit.

    10

  • Sidita Duli Sisteme Shfrytezzimi 2016Pjesa tjetër është vete paisja, e cila ka një ndërfaqe të thjeshtë sepse ato nuk kanë një detyrë

    të ndërlikuar. Këto paisje duhet të jenë standarte, psh çdo disk kontroller IDE mund të trajtojë çdodisk IDE ( IDE është shkurtim i Integrated Drive Electronics dhe është tipi standart i diskut nëproçesorët pentium dhe në disa lloje të tjerë proçesorësh). Përderisa ndërfaqja e paisjes fshihet paskontrollerit, gjithçka që sheh sistemi i shfrytëzimit është ndërfaqja e kontrollerit e cila mund të jetëkrejt ndryshe nga ndërfaqja e nga ndërfaqja e paisjes.

    Duke qenë se secili tip i kontrollerit është i ndryshëm, software të ndryshëm nevojiten përtë kontrolluar secilin nga këto tipe kontrollerash. Software-i që i ndërvepron me kontrollerin quhetnjë device driver. Secili kontroller mbështet një driver për çdo sistem shfrytëzimi që suporton, pshnjë scanner paiset me driverat e Windows 98, Windows 2000 dhe Unix .

    Një driver, që të përdoret, duhet të vendoset në sistemin e shfrytëzimit dhe të ekzekutohetnë kernel mode. Teorikisht një driver mund të ekzekutohet dhe jashtë kernel-it, por kjo kërkonmundësinë që një driver nga user mode të aksesojë një paisje në mënyrë të kontrolluar.

    Ekzistojnë tre mënyra që një driver mund të vendoset në kernel. Mënyra e parë është tërilidhet kernel me driver-in e ri dhe më pas të bëhet një boot-im të ri sistemit. Shumë sisteme nëUnix funksionojnë në këtë mënyrë. Mënyra e dytë është të ndërhyhet në skedarët e sistemit tëshfrytëzimit duke i treguar që ka nevojë për një driver të ri dhe më pas të bëjë një boot-imsistemit. Në momentin e boot-imit, sistemi i shfrytëzimit gjen driverin e kërkuar dhe e ngarkonatë. Në këtë mënyrë funksionon Windows. Mënyra e tretë është e tillë që sistemi i shfrytëzimitndërkohë që është në ekzekutim është i aftë të pranojë driver-at e rinj dhe t’i instalojë ata pa pasënevojë të bëjë një boot-im të ri. Kjo mënyrë po përhapet më shpejt. Paisje të tilla si Usb dhe paisjetIEEE 1394 ngarkohen në këtë mënyrë.

    Çdo kontroller ka një sasi regjistrash që përdoren për të komunikuar me to. Për tëaktivizuar një kontroller, driver-i merr një komandë nga sistemi i shfrytëzimit dhe e përkthen atënë vlera që do shkruhen në regjistrat e paisjeve.

    Inputi dhe outputi mund të realizohen në tre mënyra të ndryshme. Në mënyrën më tëthjeshtë, një program kryen një sistem call, të cilën kernel-i e përkthen në një thirrje proçedure përnjë driver të caktuar. Më pas driver-i nis proçesin e I/O dhe kryen një cikël që zgjat për aq kohë saduhet të realizohet proçesi I/O. Kur ky proçes ka mbaruar, driver-i vendos të dhënat që duhet dhesistemi i shfrytëzimit i kalon kontrollin programin që kreu këtë sistem call. Kjo mënyrë quhet dhebusy waiting dhe ka disavantazhin që bllokon CPU-në derisa të mbarojë punë paisja.

    Metoda e dytë është e tillë që një driver nis punën e paisjes dhe kërkon për një interrupt kurpaisja të mbarojë punën. Në këtë moment sistemi i shfrytëzimit bllokon programin dhe kryenndonjë pune tjetër. Kur kontrolleri sheh që puna e paisjes ka kryer, atëherë ai jep një interrupt përtë treguar realizimin e punës. Sistem bus

    Me zhvillimin e memorjeve dhe të proçesorëve, u pa që ishte e pamundur që një bus ivetëm të përballonte “trafikun” e të dhënave që qarkullonin shpejt mes përbërësve të ndryshëm nënjë kompjuter. Për këtë u shtuan bus-e të tjerë shtesë, si për paisje I/O të shpejta ashtu dhe përtrafikun mes CPU-së dhe memorjes. Për këtë sistem bus në një Pentium ka pamje të ngjashme meatë të figurës më poshtë :

    11

  • Sidita Duli Sisteme Shfrytezzimi 2016

    Ky sistem ka tetë bus-e : cache, local, memory, PCI, SCSI, USB, IDE, dhe ISA. Secili prej këtyrebus-eve ka një shkallë të ndryshme transferimi të dhënash si dhe një funksion të ndryshëm.

    Dy linjat e para ishin PCI (Peripheral Component Interconnent) dhe ISA (Industry StandartArchitecture). Më pas një sistemi të tillë iu shtuan tre bus-e, IDE, USB dhe SCSI. Bus-i IDEpërdoret për të lidhë paisje periferike, si psh disqe dhe CD-ROM me sistemin. Bus-i USB(Universal Serial Bus) u krijua për të lidhë paisje I/O të ngadalta, siç është tastjera ose mousi. USBështë një bus qëndror dhe mund të trajtojë një ngarkesë prej 1.5 MB/sec. Të gjitha paisjet USBmund ndajnë një USB device driver dhe për këtë është e panevojshme instalimi i driver-ave të rinjpër çdo USB device. Pra, paisjet USB i shtohen kompjuterit pa pasë nevojë të bëhet një boot-imsistemit. Linja SCSI (Small Computer System Interface) është një bus me performancë të lartë dhepërdoret për disqe të shpejtë, scanner-a dhe paisje të tjera me sasi të mëdha informacioni tëtransferuar në sekondë. Mund të transmetojë deri në mbi 160MB/sec. Një tjetër linjë bus që nukështë paraqitur në figurën më lart është dhe linja IEEE 1394.

    Paisjet e ashtuquajtura plug and play bëjnë që sistemi automatikisht të mbledhëinformacion rreth paisjeve I/O, të caktojë nivelet e interrupteve dhe të tregojë numrat secilës kartë.Në Pentium kjo funksionon kështu : çdo Pentium ka një motherboard në të cilin është një programi quajtur BIOS (Basic Input Output System). BIOS përmban software nivele të ulta I/O, këtupërfshihen proçedura që lexojnë tastjeren, afishojnë në ekran, dhe gjëra të tjera si këto. Sot BIOSndodhet në një memorje flash Ram, e cila mund të updatohet nga sistemi i shfrytëzimit nëmomentin kur në BIOS gjenden viruse.

    Kur kompjuterit i bëhet boot-im nis BIOS. Së pari ai kontrollon se sa memorje RAM ka tëinstaluar në të dhe nëse tastjera dhe paisje të tjera periferike janë të instaluara saktë. Më pas nisskanimi i linjave bus ISA dhe PCI për të kontrolluar paisjet që janë lidhur me këto linja. Disa ngakëto paisje janë të projektuara para se të krijohej sistemi plug and play dhe kanë një nivel tëfiksuar nivelesh të interrupteve dhe adresave I/O. BIOS më pas përcakton paisjen e boot-imit duketentuar të boot-ojë nga një listë paisjesh që janë në memorje. Përdoruesi mund të ndryshoje këtëlistë duke hyrë në konfiguracionin e BIOS pas boot-imit. Zakonisht bëhet një përpjekje të boot-ohet nga floppy disk, nqs kjo përpjekje dështon, atëherë provohet të boot-ohet nga CD-ROM. Nqs

    12

  • Sidita Duli Sisteme Shfrytezzimi 2016dhe kjo dështon atëherë sistemi boot-on nga hard disku. Sektori i parë nga paisja e boot-imitlexohet në memorje dhe ekzekutohet. Ky sektor normalisht përmban një program i cili kontrollonpartition table në fund të çdo sektori të boot-imit dhe përcakton se cila partition është aktive. Mëpas lexohet një boot-im sekondar nga ky partition. Ky boot-im sekondar lexon sistemin eshfrytëzimit nga active partition dhe nis ekzekutimin e sistemit të shfrytëzimit.

    Sistemi i shfrytëzimit merr nga BIOS informacion rreth konfigurimit. Sistemi ishfrytëzimit kontrollon për çdo paisje nëse ka apo jo një driver përkatës. Nëse nuk ka një driverpër një paisje të caktuar, atëherë i kërkon përdoruesit të ndërfusë një disketë ose disk që përmbannjë driver të lejuar nga prodhuesi përkatës i paisjes. Pasi të gjitha paisjet të kenë driverat përkatëssistemi i shfrytëzimit i ngarkon ato në kernel. Më pas sistemi i shfrytëzimit inicializon tabelat e tij,krijon në proçeset në background dhe nis një ndërfaqe grafike.

    Koncepte të një sistemi shfrytëzimiProçesi Një koncept bazë i përbashkët në të gjithë sistemet e shfrytëzimit është proçesi. Në thelb njëproçes është një program në ekzekutim. Çdo proçesi i bashkëngjitet zona e adresave të tij që ështënjë pjesë memorjeje në të cilën proçesi mund të shkruajë ose të lexojë. Në këtë zonë adresashndodhet programi i ekzekutueshëm, të dhënat e programit dhe një stack i programit. Gjithashtu menjë proçes lidhen dhe një bashkësi regjistrash, duke përfshirë këtu një program counter, stackpointer dhe të tjerë regjistra që përmbajnë informacionin e nevojshëm për të ekzekutuarprogramin.

    Sistemi i shfrytëzimit herë pas herë vendos të ndalojë përkohësisht ekzekutimin e njëproçesi dhe të ekzekutojë një tjetër proçes. Proçesi i parë ristartohet ekzaktsisht në të njëjtëngjendje që kishte kur u ndalua, që do të thotë se i gjithë informacioni rreth proçesit duhet të ruhetnë mënyrë eksplicite diku menjëherë sa të ndalohet proçesi. Në shumë sisteme shfrytëzimi i gjithëinformacioni rreth një proçesi ruhet në një tabelë. Kjo tabelë quhet tabelë e proçesit (proçess table)dhe në të nuk ruhen veç përmbajtja e vetë proçesit si dhe zona e adresave të tij. Kjo tabelë ështënjë array ose listë strukturash dhe përmbajnë nga një element për çdo proçes që ekzistonmomentalisht. System call janë çelësi i menaxhimit të proçeseve dhe merren me krijimin dhepërfundimin e proçeseve.

    Një proçes mund të krijojë një ose më tepër proçese të tjera. Këtyre iu referohemi siproçese fëmijë, dhe këto gjithashtu mund të krijojnë proçese të tjera, duke krijuar në këtë mënyrënjë strukturë në formë peme me proçese. Disa prej këtyre proçeseve iu duhet të komunikojnë përtë realizuar një punë, dhe në kapitujt në vijim do sqarojmë gjithashtu dhe komunikimin mesproçeseve.

    Ndodh që duhet çuar informacion një proçesi në ekzekutim. Psh një proçes që është dukekomunikuar me një tjetër proçes në një kompjuter tjetër e realizon këtë komunikim duke dërguarnjë mesazh të një proçesi tjetër në rrjet. Duhet kujdesur që të mos ketë mundësi që të humbasë njëmesazh ose një përgjigje mesazhi. Për këtë një dërgues mund t’i kërkojë sistemit të tij tëshfrytëzimit që pas një numri të caktuar sekondash ai ta informojë që të ritransmetojë mesazhin.Pasi të ketë përcaktuar këtë timer, programi mund të vazhdojë me një tjetër detyrë.

    Kur të ketë kaluar numri i përcaktuar i sekondave, sistemi i shfrytëzimit i dërgon proçesitnjë sinjal alarmi. Sinjali bën që proçesi të ndërpresë përkohësisht atë që po bënte, të ruajë regjistratnë stack dhe të ekzekutojë një proçedurë të veçantë që trajton problemin për të cilin informoisinjali, në këtë rast të përpiqet të ridërgojë mesazhin e humbur. Kur kjo realizohet, proçesi indërprerë nis tamam aty u shkëput prej sinjalit. Sinjalet janë pjesë software analoge me interruptinhardware dhe mund të gjenerohen për disa arsye. Deadlock ( bllokimet )Kur dy ose më shumë proçese janë në ndërveprim, ato mund të përfshihen në një situatë nga e cilanuk mund të dalin. Një situatë e tillë quhet bllokim ( deadlock ).

    13

  • Sidita Duli Sisteme Shfrytezzimi 2016Deadlock mund të na kujtojë një shembull të mirë nga jeta reale e jona, bllokimet në trafik,

    kur secila makinë do të kalojë dhe të presë në udhëkryq, por asnjëra nuk mund të kalojë rrugën,pasi është bllokuar në trafik. Proçeset në një kompjuter mund të kenë të njëjtin fat. Psh njëkompjuter mund të lexojë të dhëna nga një CD-ROM dhe nga një shirit magnetik. Në një momentjanë dy proçese, i pari kërkon të lexojë të dhënat nga një CD kurse i dyti po lexon të dhëna nga njëshirit magnetik. Më pas proçesi i parë kërkon të lexojë dhe nga shiriti, dhe për këtë pezullohet derisa proçesi i dytë ta lëshojë shiritin. Në të njëjtën kohë proçesi i dytë kërkon të lexojë të dhëna nganjë CD dhe pezullohet gjithashtu për të njëjtën arsye. Në këtë rast kemi një deadlock nga i cili nukmund të dalim.

    Menaxhimi i memorjes Çdo kompjuter ka një memorje qëndrore të cilën e përdor për të ekzekutuar programe. Në njësistem shfrytëzimi të thjeshtë në memorjen qëndrore mund të jetë vetëm një program. Për tëekzekutuar një program të dytë i pari duhet të largohet nga memorja dhe i dyti zë vend nëmemorje.

    Sistemet e shfrytëzimit më të sofistikuar lejojnë që disa programe të jenë në memorjenqëndrore në të njëjtën kohë. Për të realizuar saktë këtë gjë duhet të ekzistojë një mekanizëmmbrojtjeje për këto dy programe dhe kjo mbrojtje duhet të jetë në hardware dhe të mundësohet ngasistemi i shfrytëzimit.

    Një tjetër çështje me rëndësi për sa i përket memorjes është dhe menaxhimi i zonave tëproçeseve ( address space ) të memorjes. Çdo proçes ka një bashkësi adresash që mund të përdorë.Në rastin më të thjeshtë sasia e adresave që ka një proçes është më e vogël se sasia totale eadresave të memorjes qëndrore. Në këtë mënyrë një proçes mund të mbushë një pjesë në memorjetë mjaftueshme për ta mbajtur. Shumë kompjuterë kanë adresa nga 32 deri në 64 duke dhënë njëzonë adresash nga 232 deri në 264. Teknika e memorjes virtuale mundëson që një pjesë e adresavetë proçesit të jenë në memorjen qëndrore kurse një pjesë tjetër qëndron në disk.

    Input / OutputTë gjithë kompjuterët kanë paisje fizike që mundësojnë marrje dhe transmetim të dhënash.Ekzistojnë shumë lloje paisjesh të tilla, siç janë tastjera, printeri, monitori dhe i takon sistemit tëshfrytëzimit të menaxhojë këto paisje. Disa nga software-t I/O janë të pavarur nga paisja, që do tëthotë se aplikohen në të shumë ose nga të gjitha paisjet I/O në mënyrë të njëjtë. Të tjerë software,siç janë device driver, janë specifike për çdo device.

    SkedarëtNjë tjetër koncept i cili mundësohet nga sistemi i shfrytëzimit është dhe file system (sistemi iskedarëve). Një detyrë bazë e sistemit të shfrytëzimit është fshehja e veçorive të disqeve dhe tëpaisjeve I/O dhe t’i prezantojë përdoruesit një pamje të këndshme, një model të abstraguar tëskedarëve. Për të krijuar, për të fshirë dhe për të shkruar në skedarë aktivizohen system calls.

    Sistemi i shfrytëzimit duhet të ketë konceptin e direktorisë, në mënyrë që të sigurojë njëorganizim dhe grupim të skedarëve. Përsëri nevojiten system call për të krijuar dhe për të fshirëdirektori. System call gjithashtu nevojiten për të vendosur një skedar në një direktori ose për tëfshirë një skedar nga një direktori. Direktoritë mund të përmbajnë nëndirektori duke krijuar kështunjë strukturë hierarkike në formën e një peme.

    Thamë që dhe proçeset dhe direktoritë janë në një strukturë hierarkike në formë peme, porngjashmëria ndalon këtu, sepse hierarkia e proçeseve nuk është shumë e thellë ( zakonisht jo meshumë se tre nivele ) kurse një strukturë skedarësh zakonisht mund të jetë me tre, katër ose me mëshumë nivele. Hierarkia e proçeseve zgjat pak, maksimumi disa minuta, kurse hierarkia eskedarëve zgjat ndoshta dhe me vite. Gjithashtu ndryshojnë problemet e mbrojtjes dhe të aksesit.

    14

  • Sidita Duli Sisteme Shfrytezzimi 2016Zakonisht vetëm një proçes prind mund të kontrollojë dhe të aksesojë një proçes fëmijë, kurse kymekanizëm të skedarët mundëson që një grup i gjerë përdoruesish mund të aksesojnë një skedar.

    Direktoria që ndodhet në majë të hierarkisë quhet ndryshe direktori rrënjë. Çdo skedarbrenda një direktorie mund të specifikohet me anë të një adrese (rrugëkalimi) që nis nga direktoriarrënjë. Rrugëkalimi absolut konsiston në listën e direktorive që duhen kaluar për të shkuar tëskedari nga direktoria rrënjë. Direktoritë në këtë rrugëkalim ndahen me slash ( / ) në UNIX dhe mebackslash në Windows ( \ ). Psh rrugëkalimi në UNIX /Fakulteti/Informatike/OS/Leksioni5 në Windows paraqitet \Fakulteti\Informatike\OS\Leksioni5Simboli / në fillim tregon se kemi nisur nga direktoria rrënjë.

    Në çdo moment, çdo proçes ka një direktori të punës. Kështu, nqs direktoria e punës doishte /Fakulteti/Informatika, atëherë ne mund të specifikojmë skedarin Leksioni5 dhe merrugëkalimin OS/Leksioni5.

    Një teknikë me rëndësi e përdorë në UNIX është dhe montimi i sistemit të skedarëve(mounted file system). Çdo personal kompjuter ka një ose disa floppy disk drive në të cilën mundtë vendosen disa disketa. Një mënyrë elegante për të vepruar me paisje të tilla, qoftë dhe me njëCD-ROM, UNIX mundëson që file system i këtyre paisjeve të montohen në pemën e direktorive.

    Në figurën me lart, file system i floppy nuk mund të përdoret, sepse nuk ka asnjë mënyrë për tëspecifikuar emrat e skedarëve. UNIX nuk lejon që emrat e driverit t’i vendoset para emrit tëskedarit për ta specifikuar atë. Një system call për montimin lejon që file system i floppy tëbashkëngjitet me file system të rrënjës.

    Në këtë rast, pas montimit të floppy-t në direktorinë b, mund të aksesohen skedarët x dhe y.

    Siguria Kompjuterët përmbajnë një sasi të madhe informacioni i cili duhet të jetë konfidencial, siç mund tëjetë posta elektronike, plane biznesi, etj. Sistemi i shfrytëzimit e ka për detyrë të menaxhojësigurinë e këtyre skedarëve në mënyrë që vetëm personat e autorizuar të askesojnë skedarë tëndryshëm. Në sistemin UNIX, skedarët janë të mbrojtur dhe kjo paraqitet me këtë skemë. Trefusha përcaktojnë mbrojtjen për pronarin (owner), tre fusha përcaktojnë mbrojtjen për grupin epronarit (owner’s group) , dhe tre fusha përcaktohen për çdo përdorues tjetër (everyone else). Çdofushë përmban një bit për aksesimin në lexim, një bit për aksesimin në shkrim, dhe një bit përaksesimin në ekzekutim. Këto tre bite njihen si rwx ( read, write, execute). Psh rwxr-x—x

    15

  • Sidita Duli Sisteme Shfrytezzimi 2016nënkupton që pronari mund të lexojë, të shkruajë dhe të ekzekutojë skedarin, një anëtar i grupitmund të lexojë ose të ekzekutojë skedarin, çdo kush tjetër mundet vetëm të ekzekutojë skedarin.

    Llojet e sistemeve të shfrytëzimitNë këtë leksion po paraqesim shtatë llojet kryesore të sistemeve të shfrytëzimit. Lloje të ndryshmesistemesh janë zhvilluar përkrah zhvillimit të paisjeve kompjuterike.

    Mainframe operating systemsMainframe janë kompjuterët gjigande të cilët ende gjenden në përdorim në qendrat e të dhënave.Këto kompjuterë dallojnë nga kompjuterët personale nga kapaciteti I/O i tyre. Është diçka jo epazakontë që një mainframe të ketë 1000 disqe dhe të dhëna të ruajtura që kapin madhësinë mijëragigabajt. Mainframe të tillë përdoren dhe si serverë në botën e Web, gjithashtu dhe në biznese mesasi të madhe transaksionesh.

    Sistemet e shfrytëzimit për mainframe kryesisht realizojnë një proçes në një moment tëcaktuar dhe shumica e këtyre proçeseve kërkojnë ndërveprimin e I/O. Kryesisht ofrohen tre tipeshërbimesh : batch, transaction proçessing dhe timesharing. Një sistem batch është i tillë qëproçeson një punë rutinë e cila nuk ka nevojën e ndërveprimit të përdoruesit. Në magazinat eshitjeve ose në kompanitë e sigurimeve shumë proçese janë të tilla. Sistemet e transactionproçessing trajtojnë një numër të madh kërkesash, psh kontrolli i veprimeve në një bankë, ose nërezervimet në një kompani ajrore. Secila prej këtyre punëve është e vogël por sistemit i duhet tëproçesojë mijëra të tilla në sekondë. Të tilla sisteme lejojnë shumë përdorues të ekzekutojnë punënë një moment të caktuar, siç mund të jetë ndërveprimi dhe marrja e të dhënave nga një database.Një sistem shfrytëzimi mainframe mundëson të gjitha këto. Sisteme të tillë mund të jenë OS/390,variant i OS/360.

    Server operating systemsNjë nivel më poshtë janë sistemet e shfrytëzimit për serverët. Serverët mund të jenë kompjuterëpersonale, Workstation ose mainframe. Ata mund t’u shërbejnë disa përdoruesve në rrjet dhelejojnë që përdorues të ndryshëm të ndajnë të dhënat dhe paisjet në rrjet. Serverët mundësojnëprintime, file service ose Web service. Serverë të shumtë suportojnë klientët në Web dhe trajtojnëtë gjithë kërkesat e shumta që vijnë nga përdoruesit e internetit. Sisteme shfrytëzimit tipike përserverë janë Unix dhe Windows 2000. Linux gjithashtu po përdoret si sistem i tillë.

    Sistemet e shfrytëzimit multiproçesorëNjë mënyrë e mirë për të shfrytëzuar më mirë fuqinë e kompjuterit është të lidhësh shumëproçesorë në një sistem të vetëm. Këto sisteme quhen sisteme paralele, multi kompjuterë ose multiproçesorë. Këto sisteme kanë nevojë për një sistem shfrytëzimi të veçantë. Shumë prej këtyresistemeve kanë origjinën në sistemet e shfrytëzimit të serverëve me opsione shtesë përkomunikimin dhe lidhjen.

    Sisteme shfrytëzimi për kompjuterë personalëKjo kategori sistemesh ka për qëllim të krijojë një ndërfaqe të mirë për një përdorues të vetëm.Shembuj sistemesh të tillë janë versionet e Windows, Macintoch dhe Linux. Këto sisteme janë aqtë njohur saqë shumë njerëz nuk dinë që ekzistojnë dhe sisteme të tjerë përveç këtyre.

    Sistemet e shfrytëzimit të real-time.Këto sisteme karakterizohen nga rëndësia që i japin faktorit kohë. Psh në shumë proçese nëindustri , veprime të ndryshme duhet të kryhen në mënyrë precize në një moment të caktuar dhenqs kryhet më herët se më vonë dështon proçesi. Në këto raste kemi të bëjmë me sistem hard real

    16

  • Sidita Duli Sisteme Shfrytezzimi 2016time. Sistemi soft real time mund të tolerojë afatin kohor. Sisteme digitale ose multimediale janë tëtillë. Sisteme shfrytëzimi real time janë VxWorks dhe QNX.

    Sisteme shfrytëzimi embeddedShembull sistemi embedded është një palmtop. Një kompjuter palmtop ose PDA (pesonal digitalassistant) është një kompjuter i vogël i cili mund të kryejë një numër të vogël veprimesh siç mundtë jetë një libër adresash elektronik ose një axhende elekronike. Sisteme të tillë kanëkarakteristikat e një sistemi real time por gjithashtu kanë madhësi dhe kufizime në fuqi që i bënato të veçantë. Shembuj sistemesh shfrytëzimi për to janë PalmOS dhe Windows CE.

    Sisteme shfrytëzimi të Smart CardSistemet shfrytëzimi më të vegjël ekzekutohen në smart card të cilat janë paisje në madhësinë enjë karte krediti dhe që përmbajnë një chip CPU. Ata kanë disa kufizime në fuqi llogaritëse dhe nëmemorje. Disa prej tyre kanë mundësi vetëm të llogaritin pagesën elekronike. Disa prej këtyresistemeve janë të programuar në Java, që do të thotë se memorja e tyre mban një interpretues tëmakinës virtuale të Java dhe në të mund të ekzekutohen applete.

    17

  • Sidita Duli Sisteme Shfrytezzimi 2016Leksioni 3

    Proçeset Koncepti qëndror në çdo sistem shfrytëzimi është procesi. Procesi përkufizohet si një abstragim injë programi në ekzekutim.

    Të gjithë kompjuterët modernë mund të kryejnë disa punë në të njëjtën kohë. Njëkompjuter në të njëjtën kohë mund të ekzekutojë një program, mund të lexojë nga një diskgjithashtu dhe mund të printojë. Në një sistem multiprogramming ( shumë programesh ) CPU-jakalon nga një program në tjetrin dhe ekzekuton secilin nga këto programe për qindra milisekonda.Në çdo moment të caktuar CPU-ja ekzekuton vetëm një program, për një kohëzgjatje prej 1sekonde, por duke ekzekutuar shumë programe në intervale të shkurtra i jep përdoruesit iluzionin eparalelizmit.

    Për njerëzit është e vështirë të konceptohen aktivitetet paralele dhe të shumëfishta. Për tëkrijuar këtë model projektuesit e sistemeve të shfrytëzimit janë marrë me vite. Po shohim mëposhtë ndërtimin e këtij modeli.

    Modeli i proçesitNë bazë të këtij modeli, të gjithë programet në kompjuter janë të organizuar në disa proçesesekuenciale, ose thjesht në proçese. Një proçes është një program në ekzekutim i cili përmban dhevlerat e program counter , regjistrave dhe variablave. Çdo proçes konceptohet sikur ka një CPUvirtuale të vetën. Natyrisht që në realitet ekziston vetëm një CPU reale e cila kalon kontrollin nganjëri proçes në tjetrin. Por për të kuptuar sistemin është më thjeshtë të mendojmë sikur ekzistojnëdisa proçese që ekzekutohen në paralel sesa të mendojmë CPU-në që kalon nga programi nëprogram. Ky kalim i shpejtë i kontrollit nga njëri program në tjetrin quhet multiprogramming.

    Në fig a) më poshtë kemi një kompjuter me katër programe në memorje. Në fig b) kemikatër proçese, secili me rrjedhën e vet të kontrollit dhe duke u ekzekutuar në mënyrë të pavarurnga proçeset e tjerë. Sigurisht që në realitet ekziston vetëm një program counter. Në këtë mënyrëkur ekzekutohet secili proçes, program counteri i tij logjik ngarkohet në program counterin evetëm real. Në fig c) ne shohim rrjedhën e ekzekutimit në një interval kohe duke parë që të gjithëproçeset ekzekutohen por në çdo moment ekziston vetëm një proçes në ekzekutim.

    Diferenca mes një programi dhe një proçesi shpesh nuk dallohet qartë, por është erëndësishme. Këtu mund t’u ndihmojë një shembull. Mendoni sikur po përgatisni një ëmbëlsirëdhe për këtë ju merrni një recete gatimi e cila ju sugjeron të përdorni sasi të caktuara përbërësish.Për analogji kjo recetë është programi, pra algoritmi i paraqitur në një gjuhë programimi, ju vetëluani rolin e proçesorit, dhe përbërësit janë inputi. Proçesi është aktiviteti i gatimit të ëmbëlsirësdhe konsiston në leximin e recetës, marrja e përbërësve dhe pjekja e ëmbëlsirës.

    Ndërkohë që ju pjekni ëmbëlsirën, djali juaj vjen dhe ju tregon se duke luajtur ështëgërvishtur pak. Atëherë ju mbani shënim në recetë ( ruhet gjendja e proçesit ), hapni librin e

    18

  • Sidita Duli Sisteme Shfrytezzimi 2016ndihmës së shpejtë dhe nisni e lexoni udhëzimet në të. Njëlloj vepron dhe proçesori kur kalon nganjë proçes ( pjekja e ëmbëlsirës ) në një proçes tjetër me prioritet më të lartë ( dhënia e ndihmës sëshpejtë ). Secili prej këtyre proçeseve ka një program të ndryshëm ( receta e gatimi dhe libri indihmës së shpejtë ). Pasi keni mjekuar djalin, ju vazhdoni të gatuani ëmbëlsirën në momentin kue ndërpretë.

    Ideja e këtij shembulli është kjo : proçesi është një aktivitet. Programi i tij ka një input,output dhe një gjendje. Një proçesor mund të realizojë disa proçese në bazë të disa algoritmeve tëskedulimit që përcaktojnë se kur të ndërpritet një proçes dhe të kalohet të tjetri.

    Krijimi i një proçesiEkzistojnë katër ngjarje që shkaktojnë krijimin e një proçesi :1. Inicializimi i një proçesi2. Thirrja nga një proçes në ekzekutim i një thirrje sistemi për krijimin e një proçesi të ri.3. Kërkesa e përdoruesit për krijimin e një proçesi të ri4. Nisja e një batch job ( pune batch).Në momentin e boot-imit të sistemit të shfrytëzimit krijohen disa proçese. Disa prej tyrendërveprojnë me përdoruesin dhe realizojnë një punë të tyre. Disa proçese të tjerë janë proçese nëbackground të cilët nuk kanë lidhje me një përdorues, por kanë funksione të tjera specifike. Pshnjë proçes i tillë në background është ai i cili pret një e-mail që mund të vijë. Ky proçes ështëgjithë kohën pasiv por nis punën kur vjen një mail. Proçese të tillë në Windows ju mund ti shihninë Task Manager.

    Përveç proçeseve që krijohen gjatë kohës së boot-imit, të tjerë proçese shtohen më pas.Shpesh një proçes në ekzekutim mund të bëjë një thirrje sistemi për të krijuar një proçes të ri që tandihmojë në detyrën e tij. Duhet pasë parasysh që këto proçese janë të nevojshëm për të shpejtuarpunët. Gjithashtu ata janë të ndërlidhur dhe të pavarur njëkohësisht njëri me tjetrin.

    Për të nisur një program, përdoruesi jep një komandë ose klikon në një ikonë. Në këtëmoment nis një proçes i ri i cili ekzekuton këtë program. Në shumë sisteme me ndërfaqe grafikeçdo program i hapur jepet me anë të një dritareje. Përdoruesi me anë të mousit zgjedh se me cilinprogram do ndërveprojë.

    Rasti i fundit i krijimit të proçeseve aplikohet vetëm në sistemet batch në mainframetgjigande. Në këto sisteme përdoruesi mund të kryejë një punë dhe kur sistemi i shfrytëzimitvendos që ka resurse për të krijuar një tjetër punë, atëherë ai krijon një proçes të ri.

    Në të gjithë këto raste, një proçes i ri krijohet duke pasë një tjetër proçes që ekzekuton njëthirrje sistemi për të krijuar një proçes të ri. Ky proçes mund të jetë një proçes në ekzekutim, njëproçes sistemi i thirrur nga tastjera ose nga mousi. Ajo që realizon një proçes është ekzekutimi injë thirrje sistemi për të krijuar një proçes të ri. Kjo thirrje i tregon sistemit të shfrytëzimit qëduhet krijuar një proçes i ri si dhe i tregon se cili program të ekzekutohet në këtë proçes.

    Në UNIX ekziston vetëm një thirrje sistemi për të krijuar një proçes të ri. Kjo quhet forkdhe krijon një kopje ekzakte të proçesit. Pas këtij instruksioni fork të dy proçeset kanë të njëjtinimazh në memorje si dhe të njëjtët skedarë të hapur. Zakonisht në këtë moment proçesi fëmijëekzekuton execve për të ndryshuar imazhin e tij në memorje dhe për të ekzekutuar një tjetërprogram. Psh kur përdoruesi shkruan komandën sort atëherë ekzekutohet një thirrje fork për tëkrijuar një proçes të ri dhe me pas ky proçes ekzekuton komandën sort. Në Windows kjo ndodhkështu : bëhet një thirrje për një funksion CreateProçess e cila kryen krijimin e proçesit si dhengarkimin e programit të proçesi i sapokrijuar. Kjo thirrje ka 10 parametra, në të cilat përfshihenprogrami që do ekzekutohet, disa atribute të sigurisë, bite që tregojnë nëse trashëgohen skedarët ehapur, informacion rreth prioritetit, ndonjë specifikim rreth dritares së hapur, etj. PerveçCreateProçess, në Win32 ekzistojnë dhe rreth 100 funksione të tjerë që sinkronizojnë proçeset.

    Në Windows ashtu edhe në UNIX, pasi krijohet një proçes, proçesi prind dhe proçesifëmijë kanë zonat e ndryshme të adresave. Nqs njëri nga këto dy ndryshon një fjalë në zonën e

    19

  • Sidita Duli Sisteme Shfrytezzimi 2016adresave ndryshimi nuk i paraqitet tek proçesi tjetër. Gjithsesi është e mundur që një proçes isapokrijuar ndan me proçesin prind të njëjtat resurse, si psh skedarët e hapur.

    Përfundimi i një proçesi Çdo proçes mbaron pasi ka kryer punën e tij. Kjo gjë ndodh në një nga këto kushte : 1 ) Përfundim normal ( në mënyrë të vullnetshme )2 ) Dalje me gabim ( në mënyrë të vullnetshme )3 ) Gabim fatal ( në mënyrë të pavullnetshme )4 ) E komanduar nga një proçes tjetër ( në mënyrë të pavullnetshme )

    Shumë proçese mbarojnë sepse e kanë përfunduar detyrën e tyre. Psh kur një kompilator kakryer kompilimin e një programi atëherë kompilatori ekzekuton një thirrje sistemi për ti treguar sembaroi detyrën. Kjo thirrje në UNIX është exit kurse në Windows është ExitProçess.

    Në rastin e dytë proçesi mbaron për shkak të një gabimi. Psh kur përdoruesi përpiqet tëkompilojë një program në një skedar i cili nuk ekziston. Në këtë rast kompilatori përfundon dheshpesh në të tilla raste afishohen mesazhe që njoftojnë përdoruesin.

    Në rastin e tretë arsyeja e përfundimit është nga një gabim i gjeneruar nga vetë proçesi. Pshproçesi mund të tentoje të ekzekutojë një instruksion jo të rregullt, mund të tentojë të shënjojë nënjë vend joekzistent në memorje. Në të tilla raste në UNIX një proçes mund t’i kërkojë sistemit tëshfrytëzimit që të trajtojë vetë të tilla gabime dhe proçesi mund të ndërpritet por jo të ndalojë.

    Në rastin e katërt një proçes mund t’i bëjë një thirrje sistemi për të mbaruar një proçestjetër. Në UNIX kjo thirrje quhet kill. Për Win32 ky funksion është TerminateProçess. Në të dyjarastet proçesi që realizon thirrjen duhet të jetë i autorizuar për të realizuar këtë thirrje.

    Hierarkitë e proçeseveNë disa sisteme, kur një proçes krijon një proçes tjetër, këto dy proçese vazhdojnë të mbajnëlidhje. Nqs proçesi fëmijë krijon një proçes të ri, atëherë kemi të bëjmë me një hierarki të formuarnga këto proçese.

    Në UNIX një proçes dhe të gjithë proçeset fëmijë formojnë një grup proçesesh. Kur njëpërdorues i dërgon një mesazh prej tastjere, ky sinjali i shkon të gjithë anëtarëve të grupit ku bënpjesë proçesi. Secili proçes mund të aksesojnë këtë sinjal në mënyrë individuale, ta injorojnë atëose ta trajtojnë me veprimin në mënyrën default.

    Në UNIX një proçes i veçante i quajtur init i cili kur nis ekzekutimin lexon nga një skedarse sa terminale janë në sistem. Më pas krijon nga një proçes për secilin terminal. Këto proçesepresin derisa një përdorues të log-ojë. Nëse log-imi realizohet me sukses atëherë mund të jepenkomanda për të nisë programe të ndryshme. Për këtë mund të themi se çdo proçes i sistemit ipërket një peme të vetme, asaj që nis me një proçes init.

    Në Windows gjërat ndodhin ndryshe. Këtu nuk ekziston koncepti i hierarkisë së proçesevedhe të gjithë proçeset janë të barabarta. Vetëm një moment duket sikur kemi një hierarkiproçesesh, kur krijohet një proçes i ri. Në këtë moment proçesit prind i jepet një mundësi kontrollipër proçesin fëmijë të tij.

    Gjendjet e një proçesiMegjithëse një proçes është i pavarur, gjithsesi ai ka ndërveprim me proçeset e tjera. Rezultati injë proçesi mund të shërbejë si input për një proçes tjetër. Bllokimi i një proçesi ndodh sepseproçesi nuk mund të vazhdojë. Një arsye mund të jetë sepse proçesi kërkon një input që nuk ështëende i gatshëm, ose proçesi mund të jetë gati për ekzekutim por sistemi i shfrytëzimit vendos tijapë proçesorin një tjetër proçesi. Këto dy kushte janë totalisht të ndryshme. Në rastin e parëndërprerja ka lidhje me problemin në fjalë, psh ju nuk mund të proçesoni komandën e dhënë ngapërdoruesi kur përdoruesi ende nuk e ka dhënë atë. Rasti i dytë është një teknikë e sistemit të

    20

  • Sidita Duli Sisteme Shfrytezzimi 2016bllokojë proçesin. Në figurën më poshtë shohim diagramën e gjendjeve në të cilën mund tëndodhet një proçes.

    Një proçes mund të jetë në këto tre gjendje : 1 ) Duke u ekzekutuar, që do të thotë duke përdorëCPU-në. 2 ) Gati për ekzekutim, që do të thotë indërprerë përkohësisht nga një proçes tjetër. 3 ) Ibllokuar që do të thotë se është e pamundur tëekzekutohet në varësi të një kushti që vjen nga jashtë

    proçesit. Dy gjendjet e para janë të ngjashme. Në të dyja këto raste proçesi mund të ekzekutohet,vetëm se të rasti i dytë përkohësisht CPU-ja nuk është e gatshme për të. Në gjendjen e tretë proçesinuk mund të ekzekutohet edhe sikur CPU-ja është e lirshme.

    Kalimet e shënuara me numra në figurë tregojnë kalimet që mund të bëhen mes tregjendjeve të ndryshme. Transaksioni 1 ndodh kur një proçes zbulon që nuk mund të vazhdojë. Nëdisa sisteme proçesi ekzekuton një thirrje që mund të jetë block ose pause. Në UNIX kur njëproçes kupton se nuk ka input në dispozicion atëherë kalon automatikisht në gjendjen blocked.

    Transaksionet 2 dhe 3 shaktohen nga skeduluesi i proçeseve. Transaksioni 2 ndodh kurskeduluesi vendos që proçesi që po ekzekutohet është ekzekutuar për shumë kohë dhe i takon njëproçesi tjetër të ketë në dispozicion CPU-në. Transaksioni 3 ndodh kur të gjithë proçeset kanë pasëkohën e tyre për ekzekutim dhe e ka radhën përsëri proçesi i parë për ekzekutim. Transaksioni 4ndodh kur mundësohet një ngjarje e jashtme për të cilën por priste proçesi. Nqs nuk poekzekutohet asnjë instruksion tjetër atëherë proçesi nis të ekzekutohet, përndryshe ai pret në njëgjendje gati derisa të ketë radhën për të pasë kontrollin e CPU-së.

    Implementimi i proçeseve Sistemi i shfrytëzimit implementon modelin e proçesit duke përdorë një tabelë e cila quhet tabelë eproçeseve. Kjo tabelë përmban shënjues dhe ka nga një element për proçes. Këto elementepërmbajnë informacione rreth gjendjes së proçesit, program counter-in e tij, alokimin e memorjes,gjendjen e skedarëve, informacione rreth skedulimit dhe çdo gjë tjetër që duhet ruajtur kur proçesikalon nga një gjendje në tjetrën.

    Menaxhimi i proçeseve Menaxhimi i memorjes Menaxhimi i skedarëveRegjistrat Shënjues tek pjesa e tekstit Direktoria rrënjeNumëruesi i programit Shënjues tek pjesa e të dhënave Direktoria e punësGjendja e programit Shënjues tek pjesa e “turrës” Përshkrim i skedaritShënjues tek “turra” Identifikues i përdoruesitGjendja e proçesit Identifikues i grupitPrioriteti Parametrat e skedulimitIdentifikuesi i proçesitProçesi prindGrupi i proçesitSinjalet Koha kur nis proçesiKoha e përdorimit të CPU-seKoha e CPU-se për proçeset fëmijëKoha për alarmin e ardhshëm

    21

  • Sidita Duli Sisteme Shfrytezzimi 2016Çdo paisje I/O përmban në memorje një strukturë që quhet vektor i ndërprerjeve ( interrupt vector)i cili përmban adresat e proçedurave të ndërprera. Psh nqs proçesi 3 është duke u ekzekutuar dhenë këtë moment ndodh një ndërprerje nga disku. Program counter ( numëruesi i programit ) iproçesit 3, gjendja e këtij programi si dhe disa regjistra të tjerë të tij vendosen në këtë turrë. Nëkëtë moment kalohet në adresën e specifikuar nga vektori i ndërprerjeve të diskut. Këto i realizonhardware, kurse pjesa që vjen më pas realizohet nga software, nga një proçedurë e ndërprerjeve.

    22

  • Sidita Duli Sisteme Shfrytezzimi 2016Leksioni 4Thread-ed

    Modeli i threadModeli i proçesit bazohet në dy koncepte, në grupimin e resurseve dhe në ekzekutimin. Shpeshështë më e vlefshme të ndahen këto koncepte. Kjo është ajo që realizon një thread.

    Një këndvështrim për proçeset është grupimi i resurseve që kanë lidhje. Një proçes ka njëzonë adresash që përmban të dhënat dhe tekstin e programit si dhe resurset e tjera. Këtu përfshihenskedarët e hapur, proçeset fëmijë të proçesit, alarmet, si dhe informacione të tjera. Të gjitha këtoduke i bashkuar në formën e një proçesi mund të menaxhohen më mirë.

    Koncepti tjetër i një proçesi ka të bëjë me një thread ( fije ) ekzekutimit. Një thread ka njënumërues programi që tregon se cili instruksion e ka radhën të ekzekutohet. Një thread gjithashtuka dhe regjistra që mbajnë vlerat e variablave të nevojshëm. Ai ka gjithashtu një turrë që tregonproçedurat e pathirrura që nuk kanë përfunduar ende. Një thread ekzekutohet brenda një proçesi.Megjithatë thread-i dhe proçesi janë koncepte të ndryshme. Proçeset përdoren për të grupuarresurset kurse thread-ed janë entitetet e planifikuara për ekzekutimin në CPU.

    Ajo që thread i shton modelit të proçesit është lejimi i disa ekzekutimeve në të njëjtinmoment në të njëjtin proçes dhe me pavarësi të madhe nga njeri-tjetri. Duke pasë disa thread qëekzekutohen në paralel në të njëjtin proçes është njëlloj sikur të kemi disa proçese paralele qëekzekutohen në kompjuter. Por në këtë krahasim kemi dhe dallime. Thread-ed paralele kanë tëpërbashkët zonën e adresave, skedarët e hapur dhe resurset e tjera. Proçeset paralele kanë tëpërbashkët memorjen fizike, disqet printerët si dhe periferikët e tjerë. Termi multithreadingpërdoret për të përshkruar situatën e disa thread-eve në të njëjtin proçes.

    Në figurë shohim këto dy situata. Në figurën a) kemi tre proçese ku secili prej tyre kazonën e vet të adresave dhe një thread të vetëm. Në figurën b) kemi një proçes të vetëm me trethread.

    Thread-ed në një proçesekzekutohen me radhë, nëmënyrë analoge si proçeset.Duke kaluar nga një threadtek tjetri na jepet ideja ethread-eve paralele. Në njëproçes me tre thread-e nënjë proçes, këto thread-eduken përsëri paralele,

    secila me një CPU me shpejtësi sa një e treta e shpejtësisë reale të CPU-së.Thread-et paralele të një proçesi nuk janë aq të pavarur sa proçeset paralele. Të gjithë

    thread-ed e një proçesi kanë ekzaktësisht të njëjtën zonë adresash, që do të thotë se kanë variablaglobal të përbashkët. Çdo thread, duke pasë mundësi të aksesojë çdo qelizë memorjeje në këtëzonë adresash, mund të lexojë, të shkruajë madje dhe të fshijë “turrën” e një thread-i tjetër. Pra nukekziston një mbrojtje e një thread-i nga thread-et e tjerë të të njëjtit proçes. Kjo gjë ka dy arsye:është e pamundur të realizohet , nuk është e nevojshme të realizohet.

    Proçese të ndryshme mund të jenë të përdorshëm për disa përdorues, kurse një proçes ështëgjithmonë pronë e një përdoruesi të vetëm. Kjo do të thotë se thread-ed e një proçesibashkëpunojnë dhe nuk janë në kundërshtim të njëri-tjetrit. Në tabelën e mëposhtme paraqiten elementët që janë të përbashkët për thread-ed dhe për proçeset.Elementet e kolonës së pare janë veçori të proçesit dhe jo të thread-eve. Psh një skedar i hapur nganjë thread mund të shikohet dhe nga thread-ed e tjerë të të njëjtit proçes. Kjo për shkak se njësia e

    23

  • Sidita Duli Sisteme Shfrytezzimi 2016menaxhimit të resurseve është proçesi dhe jo thread-i. Thread-ed krijohen të tilla që të kenë tëpërbashkët këto resurse në mënyrë që të bashkëpunojnë së bashku brenda një proçesi.

    Njëlloj si proçeset, dhe thread-edjanë në njërën nga këto gjendje :në ekzekutim, i bllokuar, gati përekzekutim, i përfunduar. Njëthread në ekzekutim është aktivdhe ka CPU-në në dispozicion.Një thread i bllokuar pret që tëplotësohet kushti përekzekutimin e tij. Psh kur njëthread realizon një thirrje sistemipër leximin nga tastjera, atëherëai qëndron i bllokuar deri sapërdoruesi të shtypë në tastjerëkomandën. Një thread gati për

    ekzekutim është në pritje të CPU-se deri sa të vijnë radha e tij për tu ekzekutuar. Duhet theksuar se secili thread ka turrën e vet të procedurave. Kjo turrë përmban si

    elemente procedurat e thirrura por të papërfunduara. Secili element përmban variablat lokale tëprocedurës, dhe adresën ku duhet kthyer kur të përfundojë.

    Në një proçes gjithçka nis me një thread të vetëm. Ky thread ka aftësinë të krijojë thread-etë tjerë duke thirrur një procedure që realizon pikërisht këtë gjë, psh thread_create. Një parametërqë ka kjo procedurë është emri i procedurës që do ekzekutojë thread-i i ri. Është e mundur por jo edomosdoshme të përcaktohet zona e adresave të thread-id të ri. Kur një thread ka përfunduarpunën e tij, ai mund të dalë duke thirrë një procedurë të tillë si thread_exit. Në disa thread-esistemi, një thread mund të presë të mbarojë një thread tjetër duke thirrë procedurën thread_wait.

    Një tjetër procedurë e përdorur është dhe thread_yield. Kjo procedurë mundëson thread-intë lëshojë vetë CPU-në një thread-i tjetër. Kjo procedurë është e rëndësishme për faktin se përthread-ed, ndryshe nga proçeset, nuk ekziston një clock interrupt për të përcaktuar radhën eekzekutimit. Për këtë është mirë që një thread të lëshojë vetë kontrollin e CPU-se për ta rimarreme vonë.

    Modeli i thread, përveç avantazheve që paraqet, sjell dhe disa probleme në programim.Psh, shqyrtojmë efektin e thirrjes fork në UNIX. Kjo thirrje krijon një kopje të proçesit. Ky proçeska disa thread-e, atëherë a do ti ketë dhe proçesi fëmijë këto thread-e ? Nqs jo, atëherë proçesi nukdo funksionoje mirë, sepse janë këto thread që kryejnë funksionimin e sakte. Por nqs proçesifëmijë ka të njëjtat thread si proçesi prind, atëherë cfare ndodh nqs një thread i proçesit prind ështëbllokuar në një thirrje leximi? Kjo thirrje mund të jetë psh lexim nga tastjera. Në këtë situatë të dythread-ed do jenë të bllokuar, ai i proçesit prind dhe ai i proçesit fëmijë, apo vetëm thread-i nëproçesin prind.

    Një tjetër problem lidhet me faktin që thread-ed kanë të njëjtat të dhëna të përbashkëta.Cfare do ndodhë nqs një thread mbyll një skedar ndërkohë që një tjetër thread po lexon prej këtijskedari? Mendoni si do ishte situata kur dy thread-e kërkojnë më tepër memorje njëherësh. Cilitthread do ti lëshohej kjo hapësire memorjeje? Këto probleme janë të zgjidhshme në mënyrë të tillëqë modeli i multithreading të funksionojë saktë.

    Përdorimi i thread-eveTani është e nevojshme të sqarojmë arsyen e përdorimit të thread-eve. Thread-ed përdoren përfaktin se shpesh shumë aktivitete ndodhin paralelisht. Programimi bëhet më i thjeshtë duke eshpërbëre një aplikacion në shumë thread-e sekuenciale që ekzekutohen thuajse në paralel. Në

    24

    Elementet e nje proçesi Elementet e nje thread-i

    Zona e adresave Program counter

    Variablat global Regjistrat

    Skedaret e hapur Turra e procedurave

    Proçeset femije Gjendja

    Alarmet

    Sinjalet

    Informacion shtese

  • Sidita Duli Sisteme Shfrytezzimi 2016fakt, këtë arsye e kemi dhënë për të pasë disa proçese në paralel. Por me thread-e ne mund tështojmë një element tjetër: mundësinë që entitete paralele të kenë një zonë adresash të përbashkët.Kjo është e rëndësishme për disa aplikacione të cilat nuk mund të funksionojnë me proçeseparalele.

    Një argument i dytë për të implementuar thread-ed është fakti se thread-ed janë më tëthjeshtë për tu krijuar dhe për tu fshirë. Kjo ndodh për arsyen sepse thread-ed nuk lidhen meresurset, për këtë krijimi i tyre shkon deri në 100 herë më shpejt se krijimi i një proçesi. Ky ështënjë argument i fuqishëm në ato raste kur numri i thread-eve ndryshon dinamikisht shumë shpejt.

    Arsye tjetër lidhet me performancen, gjithashtu me faktin se thread-ed janë me vlere dhenë sistemet me shumë proçesorë, aty ku paralelizmi është diçka që ekziston realisht.

    Tani le të shohim si shembull një editor teksti. Shumica e editoreve paraqesin në ekrandokumentin që po formatohet ashtu siç do printohet në fletë. Supozoni se përdoruesi po shkruannjë libër. Për autorin është më e thjeshte të mbajë të tërë librin në një skedar të vetëm sepse në këtëmënyrë thjeshtohet shumë kërkimi. Një tjetër mundësi është që libri të ndahet në kapituj, dhe njëkapitull është një skedar me vete. Por kjo mënyrë kërkon që çdo editim të bëhet në mënyrëindividuale për çdo kapitull, psh nëse në minutën e fundit kërkohet të zëvendësohet një fjale menjë tjetër, kjo duhet të behet për çdo kapitull. Nqs libri ndodhet në një skedar të vetëm kjo gjërealizohet me një komande të vetme.

    Tani supozoni se autori fshin një rresht në faqen e parë. Më pas ai kërkon të lexojë dhe njëherë faqen 600. Për këtë ai jep komandën që të çon direkt të faqja 600. Në këtë moment editorivonon pak të shkojë tek kjo faqe derisa të proçesojë të gjitha faqet me rradhë, dhe kjo vonese nuk ipëlqen përdoruesit.

    Në këtë situatë thread-ed mund të ndihmojnë. Supozoni se një editor është pjese e njëprogrami me dy thread-e. Një thread ndërvepron me përdoruesin kurse tjetri kryen veprimet e tjeratë fshehura. Sapo përdoruesi fshin një fjali, thread-i ndërveprues i kërkon thread-id të formatimit tëriformatojë librin. Në këtë moment në sfond kryhet riformatimi, ndërkohë që thread-i indërveprimit pret komandat nga tastjera dhe nga mousi. Me shumë mundësi mund të jetë me fat qëpërdoruesi të kërkojë të shkojë të faqja 600 pak pasi është riformatuar teksti, duke paraqitë në këtëmënyrë menjëherë faqen e kërkuar.

    Jemi që jemi pse mos të shtojmë dhe një thread të tretë. Shumë editore teksti kanë aftësinëtë ruajnë herë pas here skedarin duke bërë që të mos humbasë puna e gjithë ditës nga njëndërprerje dritash. Thread-i i tretë mund të merret me këtë gjë pa pase ndikim në thread-ed e tjerë.Nqs programi është me një thread kur kemi një ruajtje në disk bllokohet për pak çaste tastjera dhemousi deri sa të mbarojë ruajtja. Me tre thread-ed që përmendëm me lart, njëri ndërvepron mepërdoruesin, tjetri riformaton dokumentin dhe i treti shkruan herë pas here përmbajtjen në disk.Është e qartë se sikur të kishim tre proçese nuk do ishte e njëjta gjë sepse të tre këto thread-e kanënevojë të ndërveprojnë me dokumentin, ndajnë një memorje të përbashkët dhe kanë akses tënjëkohshëm në dokumentin që po editohet.

    Implementimi i thread-eve në zonën e përdoruesit (user space)Ka dy mënyra për të implementuar thread-ed : në zonën e përdoruesit dhe në kernel. Ekzistongjithashtu një implementim i ndërmjetëm. Po përshkruajmë këto mënyra me avantazhet dhe medisavantazhet e tyre.

    Metoda e parë vendos thread-ed në zonën e përdoruesit dhe kernel nuk di asgjë rreth tyre.Një avantazh i dukshëm është mundësia që thread-ed në këtë mënyrë mund të implementohen nësisteme shfrytëzimi që nuk suportojnë thread-ed. Më parë të gjithë sistemet e shfrytëzimit ipërkisnin kësaj kategorie, por dhe tani ka të tillë. Të gjithë këto implementime kane një strukturetë ngjashme me figurën mëposhte :

    25

  • Sidita Duli Sisteme Shfrytezzimi 2016Thread-ed ekzekutohen me anë të disaprocedurave të tilla si : thread_create,thread_exit, thread_wait, thread_yield, porka dhe procedura të tjera. Në rastin kurthread-ed menaxhohen në zonën epërdoruesit çdo proçesi i duhet të ketë njëtabelë për thread-ed. Kjo tabelë ështëanaloge për tabelën e proçeseve në kernel,me dallimin se këtu ndodhen të dhënat përthread-ed. Kur një thread bën diçka qëmund të shakatojë bllokim në pritje që njëproçes të kryejë punën e tij, atëherë thirretnjë procedurë sistemi gjatë ekzekutimit.Kjo procedurë kontrollon nëse thread-imund të vendoset në gjendje të bllokuar.Nqs këtë rast atëherë ai ruan regjistrat e

    tabelës së thread-eve, kërkon në tabelë për një thread që mund të ekzekutohet dhe ringarkonregjistrat e makinës me vlerat e këtij thread-i që do ekzekutohet. Ky kalim nga një thread tek tjetrime një shpejtësi të një rendi më të lartë se bllokimi i kernelit është një argument i fortë propërdorimit të thread-eve në zonën e përdoruesit.

    Kur një thread për momentin përfundon së ekzekutuari, psh kur thërret thread_yield, kodi ithread_yield mund të ruajë informacion në tabelën e thread-eve. Për më tepër ajo mund të thërrasëskeduluesin të përgjedhë një thread tjetër për ekzekutim. Këto janë procedura lokale kështu që kjogjë është shume më eficiente dhe më e shpejte se një thirrje në kernel.

    Thread-ed e përdoruesit gjithashtu kanë avantazhin se lejojnë çdo proçes të ketë njëalgoritëm skedulimi të vetën. Por përveç këtyre avantazheve që përmendëm më lart kanë dhe disaprobleme. Së pari është problemi se si do implementohen thirrjet e sistemit që realizojnëbllokimin. Supozoni se një thread lexon prej tastierës. Atëherë lejimi i thread-id të bëjë një thirrjesistemi është e pamundur sepse kjo do ndalonte të gjitha tread-ed e tjera. Një nga qëllimet e pasjessë thread-eve është dhe lejimi i tyre të përdorë një thirrje sistemi, por të parandalohet që një threadi bllokuar të ndikojë tek të tjerët. Thirrjet e sistemit mund të modifikohen të mos jenë bllokues, porkjo do kërkonte ndryshime në sistemin e shfrytëzimit. Një zgjidhje e tillë nuk është e pëlqyeshmesepse ne kërkonim që ky implementim ti përshtatej sistemit ekzistues. Një zgjidhje tjetër do ishteqë të tregohej me përpara nëse kjo thirrje do ishte bllokuese. Në disa versione të UNIX ekzistonnjë thirrje sistemi që quhet select dhe që lejon thirrësin që të tregoje nëse procedura bllokon. Kjokërkon që të rishkruhen disa pjese të librarisë se sistemit, është një zgjidhje ineficiente dhe joelegante.

    Një tjetër problem vjen nga fakti se nqs një thread nis ekzekutimin asnjë thread tjetër e atijproçesi nuk ekzekutohet derisa thread-i në ekzekutim të lëshojë CPU-në. Brenda një proçesi nukka ndërprerje clock-u që të bëjë skedulimin. Një zgjidhje e mundshme e këtij problemi është qëçdo sekonde të bëhet një kërkesë sistemi për një sinjal. Ndërprerje periodike të shpeshta nuk janëgjithmonë të mundshme.

    Një tjetër argument kundër thread-eve të përdoruesit është dhe ajo që programuesi kërkonthread-e aty ku ato bllokohen herë pas here. Këto thread-e kërkojnë të bëjnë shpesh thirrje sistemi.Pasi është bllokuar kernel për të ekzekutuar këtë thirrje, është e vështirë që kernel të kalojë nëthread-in tjetër.

    Implementimi i thread-eve në kernel. Në këtë situate është kernel ai që menaxhon thread-ed. Një skeme për këtë rast paraqitet në figurënmeposhte.

    26

  • Sidita Duli Sisteme Shfrytezzimi 2016 Në këtë model nuk ekziston një tabelë thread-esh përçdo proçes, por është kernel ai që ka një tabele thread-esh që mban informacionet e duhura për thread-ed në