Sistemet Operative

Sisteme Operative

Sisteme Operative janë një softuer i cili menaxhon harduerin e një kompjuteri. Një sistem kompjuterik mund të ndahet në katër pjesë: Hardueri, sistemi operativ, programet aplikative dhe shfrytëzuesit.

Hardueri: Njësia qendrore përpunuese, memoria dhe paisjet hyrëse-dalëse.
Programet aplikative:

Si programet për përpunimin e teksteve, për llogaritje, kompajllerët dhe web faqet.
Një program kontrolli menaxhon ekzekutimin e programeve të shfrytëzuesit për të parandaluar gabimet dhe përdorimin jo të duhur të kompjuterit. Sisteme Operative
Sistemi operativ është programi që ekzekutohet gjatë tërë kohës në kompjuter, zakonisht i njohur si kernel.
Krahas kernelit, janë edhe dy lloje të softuerëve: programet e sistemit, që janë pjesë e sistemit operativ,.por që nuk janë domosdoshmërisht pjesë e kernelit, dhe programet aplikative, që përfshijnë të gjitha programet që nuk janë pjesë e sistemit operativ.

Që një kompjuter të mund të punojë – për shembull, kur të lëshohet në punë ose ristartohet.– kompjuteri ka nevojë për një program fillestar që të fillojë punën. Programi fillues, i njohur si programi bootstrap, zakonisht është i thjeshtë. Zakonisht ruhet brenda harduerit në firmware.

Multiprogramimi Sisteme Operative

Multiprogramimi e rrit përdorimin e CPU-së, duke i bërë të lumtur edhe shfrytëzuesit, me organizimin e ekzekutimit të programeve, ashtu që CPU në çdo kohë ka një program për ekzekutim. Në një sistem me multiprogramim, një program që është duke u ekzekutuar njihet si proces. Sisteme Operative
Multitasking është një zgjerim i natyrshëm i multiprogramimit. Në sistemet me multitasking, CPU ekzekuton shumë procese duke kaluar nëpër to, por kalimi bëhet shpesh, duke i ofruar shfrytëzuesit një kohë reagimi të shkurtër.
Në një sistem multiprogramimi, sistemi operativ duhet të sigurojë një kohë reagimi të arsyeshme. Një metodë e zakonshme për të bërë këtë është memoria virtuale, një teknikë që lejon ekzekutimin e një procesi që nuk është i vendosur plotësisht në memorien DRAM.

Sistemi operativ është përgjegjës për këto aktivitete në lidhje me menaxhimin e proceseve:

  • Krijimi dhe fshirja e proceseve të shfrytëzuesit dhe të sistemit.
  • Planifikimi për ekzekutim të proceseve dhe thredave në CPU.
  • Ndalja e përkohshme dhe vazhdimi i proceseve. Sisteme Operative
  • Ofrimi i mekanizmave për sinkronizim të proceseve.
  • Ofrimi i mekanizmave për komunikim në mes të proceseve.

Sistemi operativ është përgjegjës për këto aktivitete në lidhje me menaxhimin e memories:

  • Mbajtja e shënimeve se cilat pjesë të memories janë duke u përdorur në momentin e caktuar dhe cili proces është duke i përdorur ato. Sisteme Operative
  • Dhënia dhe marrja e hapësirës së memories sipas nevojës.
  • Marrja e vendimit se cilat procese (ose pjesë të proceseve) dhe të dhëna duhet të vendosen dhe të largohen nga memoria.

Sistemi operativ është përgjegjës për këto aktivitete në lidhje me menaxhimin e fajleve:

  • Krijimi dhe fshirja e fajleve.
  • Krijimi dhe fshirja e direktoriumeve për organizimin e fajleve.
  • Përkrahja e komandave elementare për punë me fajle dhe direktoriume.
  • Pasqyrimi (vendosja) i fajleve në memoriet me kapacitet të madh.
  • Ruajtja e një kopjeje të fajllave në memorie që i ruajnë të dhënat edhe pas ndërprerjes së furnizimit me elektricitet.

Sistemi operativ është përgjegjës për këto aktivitete në lidhje me menaxhimin e pajisjeve me madhësi të madhe: Sisteme Operative

  • Vendosja dhe largimi në sistem.
  • Menaxhimi i hapësirës së lirë.
  • Planifikimi i përdorimit të diskut.
  • Ndarja e diskut në pjesë.
  • Mbrojtja.

Nënsistemi i hyrje/daljes përbëhet nga disa pjesë:

  • Pjesa për menaxhim të memories që përfshin baferimin, keshimin dhe spooling.
  • Një interfejs i përgjithshëm për drajverin e pajisjes. Sisteme Operative
  • Drajverë për pajisje harduerike të caktuara.

Mbrojtja mund të përmirësojë besueshmërinë duke gjetur gabime të fshehura në interfejset në mes të nënsistemeve. Gjetja e hershme e gabimeve në interfejs (pikat e kontaktit) shpesh mund të parandalojë infektimin e një nënsistemi të shëndoshë nga një nënsistem tjetër i cili është duke dështuar.
Mbrojtja dhe siguria kërkojnë që sistemi të jetë në gjendje të dallojë shfrytëzuesit e tij. Shumica e sistemeve operative mirëmbajnë një listë të emrave të shfrytëzuesve dhe identifikuesin e shfrytëzuesit (user ID). Në zhargonin e Windows-it, kjo është një ID e sigurisë (security ID – SID).

  1. Virtualizmi: është një teknologji që mundëson të fshehim harduerin e një kompjuteri në disa ambiente të ndryshme të ekzekutimit, duke krijuar në atë mënyrë iluzion që secili ambient punon në kompjuterin e vet.
  2. Emulimi: përfshin simulimin e harduerit të një kompjuteri përmes softuerit, zakonisht përdoret kur CPU burimor është tjetër prej CPU-së target.

Një pjesë e shërbimeve të sistemit operativ ofron funksione që ndihmojnë shfrytëzuesin: 

1. Interfejsi i shfrytëzuesit: Pothuajse të gjitha sistemet operative kanë një interfejs të shfrytëzuesit, i cili ka forma të ndryshme; mund të jetë interfejs me ekran me prekje, por është edhe një mundësi tjetër, interfejs përmes komandave.
 2. Ekzekutimi i programit: Sistemi duhet patjetër të jetë në gjendje të vendosë një program në DRAM dhe ta ekzekutojë atë.
 3. Operacionet e hyrjes/daljes: Një program që është duke u ekzekutuar mund të ketë nevojë për H/D që mund të përfshijë një fajll ose një paisje për H/D.
 4. Puna me sistemin e fajllave: Është e qartë se programet kanë nevojë të lexojnë dhe të shkruajnë fajlla dhe direktoriume. Programet kanë po ashtu nevojë të krijojnë dhe fshijnë fajlla përmes emrit të tyre, të kërkojnë për ndonjë fajll të caktuar dhe të listojnë informatat e fajllit.
 5. Komunikimet: Komunikimet mund të bëhen përmes memories së përbashkët, ku dy ose më shumë procese lexojnë dhe shkruajnë në një pjesë të përbashkët të memories, ose përmes bartjes së mesazheve, ku paketa e informacionit me një format të paracaktuar bartet në mes të proceseve nga sistemi operativ. Sisteme Operative

 6. Gjetja e gabimeve: Sistemi operativ ka nevojë që vazhdimisht të gjejë dhe të përmirësojë gabimet. Gabimet paraqiten në CPU dhe në harduer të memories, në paisje H/D dhe në program të shfrytëzuesit. Për secilin lloj të gabimit, sistemi operativ duhet të ndërmarrë veprimin e duhur për të siguruar përdorim të rregullt dhe konsistent të kompjuterit.

 7. Ndarja e resurseve: Në kohën kur disa procese janë duke u ekzekutuar, secilit duhet t’i ndahen resurset. Sistemi operativ menaxhon resurse të ndryshme, disa mund të kenë një kod special të ndarjes ndërkohë që disa të tjera mund të kenë një kode më të përgjithshëm të marrjes dhe lirimit.

 8. Logimi: Duhet të mbahen shënime të cilat resurse të kompjuterit përdorin cilat programe dhe për sa kohë; kjo mbajtje e shënimeve mund të përdoret për pagesa ose thjesht për të mbledhur statistikat e përdorimit.

 9. Mbrojtja dhe siguria: Mbrojtja siguron që të gjitha qasjet në resurset e kompjuterit bëhen në mënyrë të kontrolluar. Siguria e sistemit nga palët jashtë kompjuterit është po ashtu me rëndësi.

Thirrjet sistemore Sisteme Operative

Thirrjet sistemore mund të ndahen në gjashtë kategori kryesore: kontroll i procesit, menaxhim i fajleve, menaxhim i pajisjeve, mirëmbajtje e informacionit, komunikime dhe mbrojtje.

  • Kontroll procesi
    1. Krijo procesin, përfundo procesin
    2. Vendos në memorie, ekzekuto
    3. Lexo atributet e procesit, vendos atributet e procesit
    4. Ngjarje e pritjes, ngjarje e sinjalit
    5. Dhënia dhe lirimi i memories
  • Menaxhimi i fajleve
    1. Krijo fajllin, fshij fajlin
    2. Hape, mbylle
    3. Lexo, shkruaj, rivendose
    4. Lexo atributet e fajllit, vendos atributet e fajlit
  • Menaxhimi i pajisjeve
    1. Merr në shfrytëzim pajisjen, liro pajisjen
    2. Lexo, shkruaj, rivendose
    3. Lexo atributet e pajisjes, vendos atributet e pajisjes
    4. Vendos ose largo pajisjet prej sistemit
  • Mirëmbajtja e informacionit
    1. Lexo kohën ose datën, vendos kohën ose datën
    2. Lexo të dhënat e sistemit, vendos të dhënat e sistemit
    3. Lexo atributet e procesit, fajllit ose pajisjes
    4. Vendos atributet e procesit, fajllit ose pajisjes
  • Komunikimet
    1. Krijo, fshij lidhjen e komunikimit
    2. Dërgo, prano mesazhet
    3. Bart informacionin e statusit
    4. Shto ose largo pajisjet në distancë
  • Mbrojtja
    1. Lexo të drejtat mbi fajllin
    2. Vendos të drejtat mbi fajllin

Përmbajtja e memories së programit shkruhet në një fajl të veçantë në disk dhe mund të kontrollohet nga një debugger, një program i sistemit i dizajnuar për të ndihmuar programuesin në gjetjen dhe përmirësimin e gabimeve logjike ose bugs për të përcaktuar rrënjët e problemit.

Duhet të jemi në gjendje të krijojmë fajlla përmes “Create( )” dhe t’i fshijmë ato përmes “Delete( )”. Pas krijimit të fajllit, kemi nevojë të hapim fajllin përmes “Open( )” dhe ta përdorim atë. Fajlli mund ta lexojmë përmes “Read”, të shkruajmë përmes “Write( )”, ta lëvizim përmes “Reposition( )” dhe në fund ta mbyllim përmes “Close( )”. Sisteme Operative

Kur paisja të jetë marrë në shfrytëzim, i njëjti proces shkon si te menaxhimi i fajllave. Ngjashmëria në mes të paisjeve H/D dhe fajllave është aq e madhe sa që shumë sisteme operative i bashkojnë të dy në një strukturë të kombinuar “fajll-paisje”.

Janë dy mënyra të zakonshme të komunikimit në mes të proceseve: modeli me shkëmbim të mesazheve dhe modeli me memorie të përbashkët.

Në modelin me shkëmbim të mesazheve, proceset komunikuese shkëmbejnë mesazhet me njëri-tjetrin për të bartur informacionin. Mesazhet mund të shkëmbehen direkt ose me anë të një kutie postare të përbashkët.

Në modelin me memorie të përbashkët, proceset përdorin thirrjet “shared_memory_create( )” dhe “shared_memory_attach( )” për të krijuar dhe marrë qasje në pjesët e memories të proceseve tjera. Sisteme Operative

Zakonisht, thirrjet sistemore që ofrojnë mbrojtje përfshijnë “set_permission ( )” dhe “get_permission ( )”, të cilat punojnë me konfigurimet në lidhje me të drejtat e përdorimit të resurseve si fajllat dhe disqet. Thirrjet sistemore “allow_user ( )” dhe “deny_user ( )” përcaktojnë nëse ndonjë shfrytëzues i caktuar mund ose nuk mund t’i lejohet qasja në resurse të caktuara.

Shërbimet e sistemit, të njohura edhe si “system utilities”, ofrojnë një ambient të përshtatshëm për zhvillimin dhe ekzekutimin e programit.

Menaxhimi i fajleve:

Informacioni i statusit:
Ndryshimi i fajllave: Sisteme Operative
Përkrahja për gjuhë programimi:
Vendosja e programit në memorie dhe ekzekutim:
Komunikimet: Sisteme Operative
Shërbimet në prapavijë:
Linkeri bën kombinimin e disa fajllave në një fajll të vetëm, ndërsa “Loaderi” përdoret për të vendosur në memorie fajllin binar të ekzekutueshëm, dhe procesi mund te jete ne njeren prej ketyre gjendjve:

  1. New (i sapo krijuar): Procesi është krijuar, por ende nuk ka filluar ekzekutimin.
  2. Running (duke u ekzekutuar): Instruksionet janë duke u ekzekutuar në CPU.
  3. Waiting (në pritje): Procesi është duke pritur që të ndodhi një ngjarje, si përfundimi i një operacioni I/O ose pranimi i një sinjali.
  4. Ready (gati): Procesi është në pritje për të marrë CPU-në dhe për të vazhduar ekzekutimin.
  5. Terminated (i përfunduar): Procesi ka përfunduar ekzekutimin dhe është larguar nga sistemi.

Multiprogramimi dhe Planifikimi: Qëllimi i multiprogramimit është që në çdo moment të ketë një proces që është duke ekzekutuar, duke rritur shfrytëzimin e CPU-së. Kjo realizohet përmes ndarjes së kohës për CPU-në, që i mundëson disa proceseve të ndajnë të njëjtën bërthamë CPU-je. Shkalla e multiprogramimit është numri i proceseve që janë të pranishme në memorien kryesore në një kohë të caktuar. Sisteme Operative

Proceset që lidhen me H/D: Një proces që ka shumë kërkesa për pajisjet H/D kalon shumë kohë duke bërë operacione I/O dhe pak kohë duke ekzekutuar llogaritje. Në krahasim, një proces që është më i lidhur me CPU-në ka më pak kërkesa për H/D dhe përdor më shumë kohë për llogaritje.

Ndarja e Proceseve dhe Kalimi i Ngjarjeve: Kur një proces është duke u ekzekutuar dhe kërkon H/D, ai kalon në listën e pritjes për H/D. Po ashtu, një proces mund të krijojë një proces të ri (fëmijë) dhe të presë përfundimin e tij. Kur koha e procesit përfundon ose një ndërprerje ndodh, procesi kalon në gjendjen gati.

Swapping është një metodë që përdoret kur memoria është e mbushur dhe kërkohet hapësirë për procese të tjera. Ky proces i ndërrimit të vendit mund të rrisë ose zvogëlojë shkallën e multiprogramimit në varësi të nevojave të sistemit.

Ndërrimi i Kontekstit: Kur ndodh një ndërprerje, sistemi duhet të ruajë gjendjen (vlerat e regjistrave) të procesit që është duke u ekzekutuar për të mundësuar kthimin në këtë proces pas përfundimit të punës së ekzekutuar. Ky proces quhet ndërrim i kontekstit (context switch).

Komunikimi mes Proceseve: Sisteme Operative

  • Komunikimi direkt kërkon që një proces të specifikojë një tjetër proces për dërgimin ose pranimin e mesazheve.
  • Komunikimi indirekt përdor kutia postare ose portet për dërgimin dhe marrjen e mesazheve.
  • Komunikimi mund të jetë sinkron ose asinkron, dhe mund të përdorë bufër automatik ose bufër eksplicit për menaxhimin e mesazheve. Sisteme Operative

Paralelizmi dhe Konkurenca:

  • Konkurenca nënkupton që më shumë se një detyrë mund të ekzekutohet në të njëjtën kohë, duke e ndihmuar sistemin të bëjë progres.
  • Paralelizmi i mundëson një sistemi të ekzekutojë më shumë se një detyrë në të njëjtën kohë.

Paralelizmi me Detyra dhe me Të Dhëna:

  • Paralelizmi me të dhëna shpërndan pjesë të të dhënave në disa bërthama dhe ekzekuton të njëjtin operacion në secilën.
  • Paralelizmi me detyra shpërndan detyra të ndryshme mes bërthamave.

Libraritë për Thread: Sisteme Operative

  • Pthreads për POSIX, që është një standard i shfrytëzuesit për thread.
  • Windows Thread për menaxhimin e thread në sistemet Windows.
  • Java Thread API për krijimin dhe menaxhimin e thread-ve në programet Java.

Dispatcher dhe Koha e Ndërprerjes (Dispatch Delay): Dispatcher është përgjegjës për kalimin e kontrollit nga një proces në një tjetër në CPU. Koha që merr dispatcher për të ndaluar një proces dhe për të filluar ekzekutimin e një tjetri quhet dispatch delay.

Algoritmet e Planifikimit të CPU-së:

  • FCFS (First-Come, First-Served) është një nga algoritmet më të thjeshta që jep përparësi procesit që kërkon CPU-në i pari.
  • SJF (Shortest Job First) preferon procesin që ka një kohë të shkurtër për ekzekutim.
  • Round-Robin (RR) është një variacion i FCFS që mundëson ndërprerjen e proceseve dhe ndarjen e kohës ndërmjet disa proceseve.
  • Planifikimi sipas prioritetit i jep përparësi proceseve me prioritet të lartë. Por kjo mund të krijojë probleme të bllokimit të përjetshëm për procese me prioritet të ulët, që mund të zgjidhen me aging (rritje e gradualshme e prioritetit). Sisteme Operative

Multiprocesori dhe Balancimi i Ngarkesës: Në sistemet multiprocesor, mund të kemi shumë bërthama CPU-je që ekzekutojnë procese paralelisht. Balancimi i ngarkesës mund të realizohet përmes metodave si push migration dhe pull migration, që shpërndajnë ngarkesën përmes procesorëve.

Konkurenca dhe Paralelizmi në Sistemet e Shumë Bërthamave: Sisteme Operative

  • Sistemet NUMA dhe multiprocesorët heterogjen janë sisteme të avancuara që mundësojnë ekzekutimin efikas të detyrave në shumë bërthama CPU-je.
  • Multiprocesimi simetrik (SMP) ofron mundësinë që çdo procesor të jetë vetë-planifikues, duke siguruar efikasitet të lartë dhe ekuilibër të ngarkesës në procesorët e ndryshëm.
  • Push migration është një detyrë që, në mënyrë periodike, kontrollon ngarkesën në secilin procesor dhe, nëse gjen ndonjë çështje të balancimit të ngarkesës, e shpërndan ngarkesën duke lëvizur thredat nga procesorët e mbingarkuar në ata me më pak ngarkesë. Sisteme Operative
  • Pull migration paraqitet kur një procesor që nuk është duke kryer ndonjë punë të dobishme nxjerr një detyrë që është në pritje nga një procesor i ngarkuar.Disa procese u qasen dhe përdorin në mënyrë konkurente të dhënat e njëjta dhe rezultati varet nga radha e caktuar sipas të cilës ndodh qasja, kjo quhet race condition. Për t’u mbrojtur nga race condition, duhet të sigurohemi që vetëm një proces në një kohë mund të përdorë variablën count.Mënyra se si një arkitekturë e kompjuterit përcakton se çfarë garantimi të memories do të ofrojë për programet aplikative njihet si modeli i memories. Në përgjithësi, një model i memories bën pjesë në njërën prej dy kategorive:
    1. Të renditura fort, ku një ndryshim në memorie në një procesor shihet menjëherë nga të gjithë procesorët.
    2. Të renditura dobët, ku ndryshimet në memorie në një procesor mund të mos shihen menjëherë nga procesorët tjerë.

    Çdo proces ka një segment të kodit, të quajtur pjesa kritike, në të cilën procesi mund të jetë duke u qasur dhe ndryshuar të dhënat e përbashkëta me së paku një proces tjetër.

    Variabla atomike ofron operacione atomike në tipe bazë të të dhënave, si integer dhe boolean.

    1. Virtualizmi: Është një teknologji që mundëson të fshehim harduerin e një kompjuteri në disa ambiente të ndryshme të ekzekutimit,.duke krijuar në atë mënyrë iluzion që secili ambient punon në kompjuterin e vet.
    2. Emulimi: Përfshin simulimin e harduerit të një kompjuteri përmes softuerit, zakonisht përdoret kur CPU burimor është tjetër prej CPU-së target.

      Mutex lock përdoret për të mbrojtur pjesën kritike dhe në atë mënyrë parandalohet race condition.

      Vlera e një semafori numerues mund të jetë brenda një rangu të pakufizuar.
      Vlera e një semafori binar mund të jetë vetëm mes 0 dhe 1.Një objekt në gjendjen i sinjalizuar është në dispozicion dhe një thred nuk do të bllokohet kur të marrë objektin. Sisteme Operative
      Një objekt në gjendjen jo i sinjalizuar nuk është në dispozicion dhe një thred do të bllokohet kur të tentoje të marrë objektin.Një objekt i pjesës kritike është një mutex i mënyrës së shfrytëzuesit që shpesh mund të merret dhe lirohet pa intervenimin e kernelit.Në mënyrën normale të punës, një thred mund të përdorë një resurs vetëm sipas kësaj radhe:

      1. Kërkojë. Thredi kërkon resursin. Nëse kërkesa nuk mund të plotësohet menjëherë (për shembull, nëse një mutex lock është aktualisht duke u mbajtur prej një thredi tjetër), atëherë thredi kërkues duhet patjetër të presë derisa mund të marrë resursin.
      2. Përdorë. Thredi mund të veprojë mbi resursin.
      3. Lirojë. Thredi e liron resursin. Sisteme Operative

      Deadlock (Bllokimi i plotë) mund të ndodhë nëse në një sistem plotësohen në të njëjtën kohë katër kushtet në vijim:

      1. Perjashtimi reciprok: Se paku një resurs duhet patjetër të mbahet si jo i përbashkët (vetëm një thred në një kohë mund të përdorë resursin).
      2. Mbajtja dhe pritja: Një thred duhet patjetër të jetë duke mbajtur se paku një resurs dhe duke pritur për të marrë resurse shtesë.
      3. Pa preemption: Resurset nuk mund të bëhen preempted; resursi duhet të lirohet vullnetarisht nga thredi që është duke u mbajtur pasi ai thred të ketë përfunduar punën e tij.
      4. Pritja rrethore: Një bashkësi e thredave në pritje duhet patjetër të ekzistojë, ashtu që T0 është duke pritur për një resurs të mbajtur nga T1, Tn-1 është duke pritur për një resurs të mbajtur nga Tn dhe Tn është duke pritur për një resurs të mbajtur nga T0, etj. Sisteme Operative

      Parandalimi i deadlock ofron një bashkësi metodash për të siguruar që së paku njëri prej kushteve të nevojshme nuk mund të plotësohet.
      Shmangia e deadlock kërkon që sistemit operativ t’i jepen informata shtesë sa i përket asaj se cilat resurse do të kërkojë dhe përdorë një thred gjatë ekzistencës së tij.

      Regjistri bazë mban adresën fizike më të vogël të lejuar, ndërsa regjistri i kufirit specifikon madhësinë e rangut.
      Zakonisht, lidhja e instruksioneve dhe të dhënave me adresa të memories mund të bëhet në cilindo hap gjatë rrugës: Sisteme Operative

      Gjatë kompajlimit: Nëse dihet gjatë kompajlimit ku do të vendoset procesi në memorie, atëherë mund të gjenerohet kod absolut. • Gjatë vendosjes në memorien kryesore: Nëse nuk dihet gjatë kompajlimit se ku do të vendoset në memorie procesi, atëherë kompajleri duhet patjetër të gjenerojë kod të zhvendosshem. • Gjatë ekzekutimit: Nëse gjatë ekzekutimit procesi mund të lëvizet nga një segment i memories në një tjetër, atëherë lidhja duhet patjetër të shtyhet derisa të vijë radha e ekzekutimit. Sisteme Operative

      Një adresë e gjeneruar nga CPU zakonisht njihet si adresa logjike, kurse një adresë që shihet nga njësia e memories zakonisht njihet si adresa fizike.
      Bashkësia e të gjitha adresave të gjeneruara nga një program është një hapësirë logjike e adresave, ndërsa bashkësia e të gjitha adresave fizike që i takojnë këtyre adresave logjike është një hapësirë fizike e adresave.

      Për të arritur përdorim më të mirë të hapësirës në memorie, mund të përdorim vendosjen në mënyrë dinamike në memorie. Përmes vendosjes dinamike, një funksion nuk vendoset në memorie derisa të thirret për ekzekutim.

      Libraritë që mund të lidhen në mënyrë dinamike janë librari të sistemit që lidhen në programet e shfrytëzuesit kur të ekzekutohen programet.

      Përmes dhënies në vazhdim të memories, çdo proces vendoset në një pjesë të vetme të memories që është në vazhdim të pjesës në të cilën ndodhet procesi tjetër më radhë.
      Sistemi operativ mban një tabelë që tregon se cilat pjesë të memories janë në dispozicion dhe cilat janë të zëna. Krejt memoria është në dispozicion për proceset e shfrytëzuesit dhe trajtohet si një bllok i madh i memories në dispozicion, si një vrimë. Sisteme Operative

      Blloqet e memories në dispozicion formojnë një bashkësi të vrimave të madhësive të ndryshme të shpërndara në memorie. Kur një proces arrin dhe ka nevojë për memorie, sistemi kërkon në bashkësi për një vrimë që është mjaftueshëm e madhe për këtë proces. Nëse vrima është e madhe, ajo ndahet në dy pjesë. Njëra pjesë i jepet procesit, ndërsa pjesa tjetër i kthehet bashkësisë së vrimave. Kur një proces përfundon, ai e liron bllokun e tij të memories, i cili pastaj vendoset prapa në bashkësinë e vrimave.

      Strategjitë e përshtatjes së parë, përshtatjes më të mirë dhe përshtatjes më të keqe janë ato që përdoren zakonisht për përzgjedhjen e një vrime të lirë nga bashkësia e vrimave të lira në dispozicion:

      1. Përshtatja e parë: Dhënia e vrimës së parë që është mjaftueshëm e madhe. Kërkimi mund të fillojë nga fillimi i bashkësisë së vrimave ose në vendin ku ka përfunduar kërkimi i mëparshëm për përshtatjen e parë. Kërkimi mund të ndalet kur të gjendet një vrimë e lirë që është mjaftueshëm e madhe. Sisteme Operative
      2. Përshtatja më e mirë: Dhënia e vrimës më të vogël që është mjaftueshëm e madhe. Duhet patjetër të kërkojmë krejt listën, përveç nëse lista është e renditur sipas madhësisë. Kjo strategji jep vrimën më të vogël që ka mbetur.
      3. Përshtatja më e keqe: Dhënia e vrimës më të madhe. Përsëri, duhet patjetër të kërkohet krejt lista, përveç nëse është e renditur sipas madhësisë. Kjo strategji jep vrimën më të madhe që ka mbetur, që mund të jetë më e dobishme se vrima më e vogël e mbetur nga qasja e përshtatjes më të mirë. Sisteme Operative

      Strategjia e përshtatjes së parë dhe përshtatjes më të mirë të dhënies së memories vuajnë nga fragmentimi i jashtëm. Fragmentimi i jashtëm ekziston kur hapësira e përgjithshme e memories është e mjaftueshme për të plotësuar një kërkesë, por hapësirat në dispozicion nuk janë në vazhdim; memoria fragmentohet në një numër të madh të vrimave të vogla.

      Një zgjidhje për problemin e fragmentimit të jashtëm është kompaksimi, që ka si qëllim.që pjesët e memories të renditen ashtu që memoria e lirë të vendoset në një bllok të madh.

      Paging është një skemë për menaxhimin e memories që lejon që hapësira.fizike e adresave të një procesi të jetë jo e vazhdueshme.
      Metoda bazë për implementim përfshin ndarjen e memories fizike në blloqe të quajtura frames dhe. ndarjen e memories logjike në blloqe të madhësisë së njëjtë të quajtura pages.

      Çdo adresë e gjeneruar prej CPU-së ndahet në dy pjesë: numër të faqes dhe një offset të faqes. Tabela e faqes përmban adresën bazë të secilës kornizë në memorien fizike dhe offseti është vendi që referencohet brenda kornizës.
      Tabela e faqeve ruhet në memorien kryesore dhe një regjister bazë i tabelës së faqes tregon kah tabela e faqeve.

      Një bit shtesë shtohet zakonisht në secilin rresht në tabelën e faqeve: një bit valid ose invalid. Kur biti ka vlerën valid, faqja është në hapësirën logjike të adresave të procesit dhe është një faqe legale;.kur biti ka vlerën invalid, faqja nuk është në hapësirën logjike të adresave të procesit.
      Disa sisteme ofrojnë harduer në formën e një regjistri të gjatësisë së tabelës.së faqeve për të treguar madhësinë e tabelës së faqeve. Sisteme Operative

      Një përparësi e paging është mundësia e përdorimit të përbashkët të kodit, një gjë që është veçanërisht e rëndësishme në një ambient me shumë procese.

      Memoria virtuale përfshin ndarjen e memories logjike që shihet prej zhvilluesve nga memoria fizike. Kjo ndarje lejon një memorie virtuale shumë të madhe të ofrohet për programuesit kur vetëm një memorie e vogël fizike është në dispozicion. Memoria virtuale e bën më të lehtë punën e programimit, sepse programuesi nuk ka nevojë të brengoset për sasinë e memories fizike në dispozicion; ajo mund të koncentrohet te programimi i problemit që duhet të zgjidhet.

      Hapësira virtuale e adresave e një procesi i referohet pamjes logjike të asaj se si ruhet në memorie një proces.

      Swapping standard përfshin bartjen e plotë të proceseve në mes memories kryesore dhe një memorjeje më të madhe.
      Nëse përdorim të kaluarën e afërt si një përafrim të së ardhmes së afërt, atëherë mund të zëvendësojmë faqen që nuk është përdorur për një kohë të gjatë. Kjo qasje është algoritmi least recently used.

      Një proces bën thrashing nëse është duke shpenzuar më shumë kohë për paging sesa për ekzekutim.

      Minimumi i bashkësisë së punës është minimumi i numrit të faqeve që procesi garantohet të ketë në memorie. Nëse ka mjaftueshëm memorie në dispozicion, një procesi mund t’i jepen aq faqe sa maksimumi i bashkësisë së punës të tij. Përveç nëse një proces është konfiguruar me kufizime të rrepta të bashkësisë së punës, këto vlera mund të injorohen.

      Kurdo që një proces ka nevojë për H/D të diskut, ai bën një thirrje sistemore te sistemi operativ. Kërkesa specifikon disa informata:

      • Nëse operacioni është hyrje apo dalje. Sisteme Operative
      • Informata për fajllin e hapur që tregon fajllin mbi të cilin operohet.
      • Cila është adresa e memories për bartjen.
      • Sasia e të dhënave për bartje.

      Formatimi i nivelit të ulët e mbush pajisjen me një strukturë të veçantë të të dhënave për secilin vend të ruajtjes.

      Një fajll tekstual është një rresht i karaktereve të organizuara në rreshta. Një fajll burimor është një rresht i funksioneve, ku secili prej tyre është i organizuar si deklarime të shoqëruara me shprehje të ekzekutueshme. Një fajll i ekzekutueshëm është një rresht i kodit që loader mund ta sjellë në memorie dhe ta ekzekutojë.

      1. Krijimi i një fajlli: Janë të nevojshme dy hapa për krijimin e një fajlli. Së pari, duhet të ketë hapësirë në sistemin e fajllave. Së dyti një rresht me informata për fajllin e ri duhet patjetër të vendoset në një direktorium.
      2. Hapja e një fajlli: Në vend që të gjitha veprimet mbi fajll të specifikojnë një emër të fajllit, duke bërë që sistemi operativ të vlerësojë atë emër, të kontrollojë të drejtat mbi qasjen në fajll dhe ashtu me radhë, të gjitha veprimet përveç krijimit dhe fshirjes së fajllit kërkojnë hapjen e fajllit përmes (open). Nëse ka sukses, thirrja “open” kthen mundësinë e qasjes në fajll, që përdoret si një argument në thirrjet tjera. Sisteme Operative
      3. Shkruarja e një fajlli: Për të shkruar në një fajll, bëjmë një thirrje sistemore duke.specifikuar të drejtën mbi fajll dhe informacionin që duhet të shkruhet në fajll. Sistemi duhet patjetër të mbajë një “write pointer” te vendi në fajll ku do të bëhet shkruarja e radhës nëse është sekuenciale. “Write pointer” duhet patjetër të përditësohet sa herë që ndodhë një shkrim.
      4. Leximi i një fajlli: Për të lexuar prej një fajlli, përdorim thirrjen sistemore që specifikon të drejtat mbi fajll dhe ku duhet të vendoset blloku i radhës në fajll. Sistemi ka nevojë të mbajë një “read pointer” te vendi në fajll ku do të bëhet leximi i radhës.
      5. Ripozicionimi brenda një fajlli: Ripozicionimi brenda një fajlli nuk duhet të përfshijë ndonjë H/D. Ky veprim në fajll njihet edhe si “seek” në fajl.
      6. Fshirja e fajlit: Për fshirjen e një fajli kërkojmë në direktorium me emrin e fajlit. Pasi e gjejmë të dhënat përkatëse në direktorium, lirohet hapësira e fajllit, që të mund të përdoret nga fajlla të tjera, dhe fshihet ose shënohet si të lirë vendi në direktorium.
      7. Shkurtimi i një fajlli: Një shfrytëzues mund të ketë nevojë të fshijë përmbajtjet e një fajlli, por të mbajë atributet e tij. Në vend që të kërkohet që shfrytëzuesi të fshijë një fajll dhe pastaj të rikrijojë atë, ky funksion lejon që të gjitha atributet të mbeten të pandryshuara – me përjashtim të gjatësisë së fajllit. Fajlli pastaj mund të resetohet në gjatësinë zero dhe hapësira e tij të lirohet.

      Metoda më e thjeshtë e qasjes është qasja sekuenciale, ku informacioni në fajll përpunohet në radhë, rresht për rresht. Kjo mënyrë e qasjes është më e zakonshmja; editoret dhe kompajllerët zakonisht i qasen fajllave në këtë mënyrë. Një metodë tjetër është qasja direkte. Kjo metodë bazohet në një model disku të fajllit, pasi disqet lejojnë qasje të rastit në cilindo bllok të fajllit.

      Kur kemi parasysh një strukturë të caktuar të direktoriumit, duhet të mbajmë mend që veprimet që kryhen në një direktorium janë:

      • Kërkimi i një fajlli: Meqë fajllat kanë emra simbolikë dhe emrat e ngjashëm mund të tregojnë për një lidhje në mes fajllave, mund të kemi nevojë që të gjejmë të gjithë fajllat, emrat e të cilëve përputhen me një mostër të caktuar. Sisteme Operative
      • Krijimi i një fajlli: Fajlla të rinj duhet të krijohen dhe të shtohen në direktorium.
      • Fshirja e një fajlli: Kur një fajll nuk nevojitet më, duam të jemi në gjendje ta largojmë atë prej direktoriumit. Një fshirje lë një zbrazëtirë në strukturën e direktoriumit dhe sistemi i fajllave mund. të ketë një metodë për të defragmentuar strukturën e direktoriumit.
      • Listimi i përmbajtjes së një direktoriumi: Duhet të jemi në gjendje të listojmë fajllat në një. direktorium dhe përmbajtjet e dhënave të direktoriumit për secilin fajll në listë.
      • Riemërtimi i një fajlli: Meqë emri i një fajlli paraqet përmbajtjen e fajllit për shfrytëzuesit e tij, duhet patjetër të jemi në gjendje të ndërrojmë emrin kur përmbajtjet ose përdorimi i fajllit ndryshon.
      • Kalimi nëpër direktoriume: Mund të kemi nevojë të qasemi në çdo direktorium dhe çdo fajll brenda strukturës së direktoriumit. Është një ide e mirë të ruhen përmbajtjet dhe struktura e krejt sistemit të fajllave në intervale të rregullta; shpesh e bëjmë këtë duke kopjuar të gjithë fajllat në shirit magnetik. Nëse një fajll nuk është më në përdorim, fajlli mund të kopjohet në një pajisje tjetër. ruajtjeje dhe hapësira e diskut të atij fajlli të liruar mund të përdoret nga një fajll tjetër.

      Disa shembuj të sistemeve të fajllave janë:

      • tmpfs – një sistem “temporary” i fajllave që krijohet në një memorie kryesore dhe që përmbajtjet e tij fshihen nëse sistemi ristartohet ose dështon.
      • obfs – një sistem “virtual” i fajllave (një ndërfaqe te kerneli që duket si një sistem i fajllave) që u jep debuggers qasje në simbolet e kernelit.
      • ctfs – një sistem virtual i fajllave që mirëmban informacion të “kontratës” për të menaxhuar se cilat procese fillojnë kur të startohet sistemi dhe duhet patjetër të vazhdojnë ekzekutimin gjatë punës. Sisteme Operative
      • lofs – një sistem “loop back” i fajllave që lejon një sistem të fajllave të qaset në vend të një tjetri.
      • pocfs – një sistem virtual i fajllave që paraqet informacion për të gjitha proceset si një sistem i fajllave.
      • ufs, zfc – sistemet e fajllave për qëllime të përgjithshme.

      Drajverët e njësive paraqesin një ndërfaqe uniform të qasjes në pajisje për nën-sistemin e H/D, ngjashëm sikurse që thirrjet sistemore ofrojnë një ndërfaqe standarde në mes të aplikacionit dhe sistemit operativ.

      Pajisja komunikon me kompjuterin përmes një pike të lidhjes, ose porti, për shembull, një port serik. Nëse pajisjet përdorin bashkë një bashkësi të telave, lidhja quhet bus. Kur pajisja A ka një kabëll që kyçet në pajisjen B dhe pajisja B ka një kabëll që kyçet në pajisjen C dhe pajisja C kyçet në një port të kompjuterit, kjo lidhje njihet si daisy chain. Një daisy chain zakonisht punon si një bus.

      Një kontrollues është një bashkësi e çipave që mund të menaxhojë një port, bus ose një pajisje. Një kontrollues i portit serik është një kontrollues i thjeshtë i pajisjes. Është një çip i vetëm (ose pjesë e një çipi) në kompjuter që kontrollon sinjalet në telat e portit serik. Për dallim, një kontrollues i kanalit të fibrave nuk është i thjeshtë. Sisteme Operative

      Kontrolli i pajisjeve H/D zakonisht përbëhet prej katër regjistrave, të quajtur regjistra të gjendjes, kontrollit, data-in dhe data-out:

      • Regjistri data-in lexohet nga hosti për të marrë hyrjen.
      • Regjistri data-out shkruhet nga hosti për të dërguar daljen.
      • Regjistri i gjendjes përmban bitët që mund të lexohen nga hosti.
      • Regjistri i kontrollit mund të shkruhet nga hosti për të filluar një komandë ose për të ndryshuar mënyrën e pajisjes.

      Hardueri i CPU-së ka një tel të quajtur interrupt-request line, të cilin CPU e lexon pas ekzekutimit të çdo instruksioni. Kur CPU gjen që një kontrollues ka vendosur një sinjal në interrupt-request line, CPU e ruan gjendjen dhe fillon ekzekutimin e një interrupt-handler routine në një adresë fikse në memorie.

      Shpesh ndajnë menaxhimin e ndërprerjeve në mes first-level interupt handler (FLIH) dhe një second-level inteupt headler (SLIH). FLIH kryen ndërrimin e kontekstit, ruajtjen e gjendjes dhe vendosjen në listë të pritjes të një veprimi të trajtimit, përderisa SLIH i planifikuar ndaras kryen trajtimin e veprimit të kërkuar.

      • Rrjedha e karaktereve ose blloku: Një pajisje me rrjedhë të karaktereve bartë bajtët një nga një, përderisa një pajisje e bllokut bartë një bllok të bajtëve si një njësi.
      • Sinkron ose asinkron: Një pajisje sinkronë kryen bartje të të dhënave me kohë reagimi të. parashikueshme, në koordinim me aspekte të tjera të sistemit. Një pajisje asinkronë tregon kohë reagimi jo të rregullta ose të paparashikueshme, jo të koordinuara me ngjarje të tjera në sistem.
      • Të përbashkëta ose të dedikuara: Një pajisje me përdorim të përbashkët mund të përdoret në mënyrë.konkurruese nga disa procese ose threda; një pajisje e dedikuar nuk mund të përdoret nga

      më shumë se një proces në të njëjtën kohë.

      Multiprogramimi

      Multiprogramimi e rrit përdorimin e CPU-së, duke i bërë të lumtur edhe shfrytëzuesit, me organizimin e ekzekutimit të programeve, ashtu që CPU në çdo kohë ka një program për ekzekutim. Në një sistem me multiprogramim, një program që është duke u ekzekutuar njihet si proces.
      Multitasking është një zgjerim i natyrshëm i multiprogramimit. Në sistemet me multitasking, CPU ekzekuton shumë procese duke kaluar nëpër to, por kalimi bëhet shpesh, duke i ofruar shfrytëzuesit një kohë reagimi të shkurtër.
      Në një sistem multiprogramimi, sistemi operativ duhet të sigurojë një kohë reagimi të arsyeshme. Një metodë e zakonshme për të bërë këtë është memoria virtuale, një teknikë që lejon ekzekutimin e një procesi që nuk është i vendosur plotësisht në memorien DRAM.

      Nënsistemi i hyrje/daljes përbëhet nga disa pjesë:

      • Pjesa për menaxhim të memories që përfshin baferimin, keshimin dhe spooling.
      • Një interfejs i përgjithshëm për drajverin e pajisjes.
      • Drajverë për pajisje harduerike të caktuara.

      Mbrojtja mund të përmirësojë besueshmërinë duke gjetur gabime të fshehura në interfejset në mes të nënsistemeve. Gjetja e hershme e gabimeve në interfejs (pikat e kontaktit) shpesh mund të parandalojë infektimin.e një nënsistemi të shëndoshë nga një nënsistem tjetër i cili është duke dështuar.
      Mbrojtja dhe siguria kërkojnë që sistemi të jetë në gjendje të dallojë shfrytëzuesit e tij. Shumica e sistemeve operative mirëmbajnë një listë të emrave të shfrytëzuesve dhe identifikuesin e shfrytëzuesit (user ID). Në zhargonin e Windows-it, kjo është një ID e sigurisë (security ID – SID). Një pjesë e shërbimeve të sistemit operativ ofron funksione që ndihmojnë shfrytëzuesin:

  •  1. Interfejsi i shfrytëzuesit

  • Pothuajse të gjitha sistemet operative kanë një interfejs të shfrytëzuesit, i cili ka forma të ndryshme; mund të jetë interfejs me ekran me prekje, por është edhe një mundësi tjetër, interfejs përmes komandave.
     2. Ekzekutimi i programit
  • Sistemi duhet patjetër të jetë në gjendje të vendosë një program në DRAM dhe ta ekzekutojë atë.
     3. Operacionet e hyrjes/daljes

  • Një program që është duke u ekzekutuar mund të ketë nevojë për H/D që mund të përfshijë një fajll ose një paisje për H/D.
     4. Puna me sistemin e fajllave
  • Është e qartë se programet kanë nevojë të lexojnë dhe të shkruajnë fajlla dhe direktoriume. Programet kanë po ashtu nevojë të krijojnë dhe fshijnë fajlla përmes emrit të tyre,.të kërkojnë për ndonjë fajll të caktuar dhe të listojnë informatat e fajllit.
     5. Komunikimet
  • Komunikimet mund të bëhen përmes memories së përbashkët, ku dy ose më shumë procese lexojnë dhe shkruajnë në një pjesë të përbashkët të memories, ose përmes bartjes së mesazheve, ku paketa e informacionit me një format të paracaktuar bartet në mes të proceseve nga sistemi operativ.

     6. Gjetja e gabimeve

  • Sistemi operativ ka nevojë që vazhdimisht të gjejë dhe të përmirësojë gabimet. Gabimet paraqiten në CPU dhe në harduer të memories, në paisje H/D dhe në program të shfrytëzuesit. Për secilin lloj të gabimit, sistemi operativ duhet të ndërmarrë veprimin e duhur për të siguruar përdorim të rregullt dhe konsistent të kompjuterit. 7. Ndarja e resurseve
  • Në kohën kur disa procese janë duke u ekzekutuar, secilit duhet t’i ndahen resurset. Sistemi operativ menaxhon resurse të ndryshme, disa mund të kenë një kod special të ndarjes. ndërkohë që disa të tjera mund të kenë një kode më të përgjithshëm të marrjes dhe lirimit.

     8. Logimi

  • Duhet të mbahen shënime të cilat resurse të kompjuterit përdorin cilat programe dhe për sa kohë; kjo mbajtje e shënimeve mund të përdoret për pagesa ose thjesht për të mbledhur statistikat e përdorimit.

     9. Mbrojtja dhe siguria

  • Mbrojtja siguron që të gjitha qasjet në resurset e kompjuterit bëhen në mënyrë të kontrolluar. Siguria e sistemit nga palët jashtë kompjuterit është po ashtu me rëndësi.

    Konkurenca dhe Paralelizmi në Sistemet e Shumë Bërthamave:

    • Sistemet NUMA dhe multiprocesorët heterogjen janë sisteme të avancuara që mundësojnë ekzekutimin efikas të detyrave në shumë bërthama CPU-je.
    • Multiprocesimi simetrik (SMP) ofron mundësinë që çdo procesor të jetë vetë-planifikues,. duke siguruar efikasitet të lartë dhe ekuilibër të ngarkesës në procesorët e ndryshëm.
    • Push migration është një detyrë që, në mënyrë periodike, kontrollon ngarkesën në secilin procesor dhe, nëse gjen ndonjë çështje të balancimit.të ngarkesës, e shpërndan ngarkesën duke lëvizur thredat nga procesorët e mbingarkuar në ata me më pak ngarkesë.
  • Pull migration paraqitet kur një procesor që nuk është duke kryer ndonjë punë.të dobishme nxjerr një detyrë që është në pritje nga një procesor i ngarkuar.Disa procese u qasen dhe përdorin në mënyrë konkurente të dhënat e njëjta dhe rezultati varet nga radha e caktuar sipas të cilës ndodh qasja, kjo quhet race condition. Për t’u mbrojtur nga race condition, duhet të sigurohemi që vetëm një proces në një kohë mund të përdorë variablën count.Mënyra se si një arkitekturë e kompjuterit përcakton se çfarë garantimi të memories do të ofrojë për programet aplikative njihet si modeli i memories. Në përgjithësi, një model i memories bën pjesë në njërën prej dy kategorive:
    1. Të renditura fort, ku një ndryshim në memorie në një procesor shihet menjëherë nga të gjithë procesorët. Sisteme Operative
    2. Të renditura dobët, ku ndryshimet në memorie në një procesor mund të mos shihen menjëherë nga procesorët tjerë.

    Çdo proces ka një segment të kodit, të quajtur pjesa kritike, në të cilën procesi mund të jetë duke u. qasur dhe ndryshuar të dhënat e përbashkëta me së paku një proces tjetër.

Hosting / ServersProgramimSecurity