Mäluhaldus operatsioonisüsteemis: külgnev, vahetusmäluping, Killustatus

⚡ Nutikas kokkuvõte

Mäluhaldus on operatsioonisüsteemi protsess, mis kontrollib ja koordineerib arvuti mälu, määrates töötavatele programmidele plokke jõudluse optimeerimiseks. See tracks iga mälupesa, liigutab protsesse põhimälu ja ketta vahel ning kaitseb protsesse üksteise eest.

  • 🧠 Määratlus: Mäluhaldus eraldab ja tracks mäluplokid programmide käitamiseks jõudluse maksimeerimiseks.
  • 🗂️ Tehnikad: Üksik külgnev, jaotatud, leheküljetud ja segmenteeritud jaotus haldab mälu erinevalt.
  • 🔄 Vahetamaping: Protsessid liiguvad ajutiselt põhimälu ja varumälu vahel, et edendada multiprogrammeerimist.
  • 📑 Lehekülg vs segmenteerimine: Lehekülgede puhul kasutatakse fikseeritud suurusega raame; segmenteerimisel muudetava pikkusega segmente.
  • 🧩 Killustatus: Sisemine ja väline fragmentatsioon raiskavad mälu väikesteks, kasutuskõlbmatuteks plokkideks.
  • 🔗 Laadimine ja linkimine: Dünaamiline laadimine ja linkimine säästavad mälu, laadides rutiine ainult vajadusel.

Mälu haldamine OS-is

Mis on mäluhaldus?

Mäluhaldus on arvutimälu juhtimise ja koordineerimise protsess, millega määratakse erinevatele töötavatele programmidele plokkideks tuntud osad, et optimeerida süsteemi üldist jõudlust.

See on operatsioonisüsteemi kõige olulisem funktsioon, mis haldab põhimälu. See aitab protsessidel põhimälu ja täitmisketta vahel edasi-tagasi liikuda. See aitab operatsioonisüsteemil säilitada track iga mälupesa kohta, olenemata sellest, kas see on eraldatud mõnele protsessile või jääb vabaks.

Miks kasutada mäluhaldust?

Mäluhalduse kasutamise põhjused on järgmised:

  • See võimaldab teil kontrollida, kui palju mälu tuleb eraldada protsessidele, mis otsustavad, milline protsessor peaks mis ajal mälu saama.
  • Tracks iga kord, kui laoseis vabaneb või jaotamata jääb, ja uuendab vastavalt olekut.
  • See eraldab ruumi rakendusrutiinidele.
  • Samuti tagab see, et need rakendused üksteist ei sega.
  • Aitab kaitsta erinevaid protsesse üksteise eest.
  • See paigutab programmid mällu, nii et mälu kasutatakse täies ulatuses.

Mälu haldamise tehnikad

Siin on mõned kõige olulisemad mälu haldamise tehnikad:

Üks külgnev jaotus

See on lihtsaim mäluhalduse tehnika. Selle meetodi puhul on igat tüüpi arvuti mälu, välja arvatud väike osa, mis on reserveeritud operatsioonisüsteemile, saadaval ühe rakenduse jaoks. Näiteks MS-DOS operatsioonisüsteem eraldab mälu sel viisil. Manussüsteem töötab samuti ühe rakenduse peal.

Partitsioneeritud jaotus

See jagab primaarmälu erinevateks mälupartitsioonideks, mis on enamasti külgnevad mälupiirkonnad. Iga partitsioon salvestab kogu konkreetse ülesande või töö kohta käiva teabe. See meetod seisneb partitsiooni eraldamises tööle selle käivitamisel ja selle vabastamises selle lõppemisel.

Lehendatud mälu haldamine

See meetod jagab arvuti põhimälu fikseeritud suurusega ühikuteks, mida nimetatakse leheraamideks. See riistvaramälu haldusüksus kaardistab lehed raamidesse, mis tuleks eraldada lehtede alusel.

Segmenteeritud mäluhaldus

Segmentmälu on ainus mäluhaldusmeetod, mis ei paku kasutaja programmile lineaarset ja külgnevat aadressiruumi.

Segmendid vajavad riistvaratuge segmenditabeli kujul. See sisaldab sektsiooni füüsilist aadressi mälus, suurust ja muid andmeid, nagu juurdepääsukaitse bitid ja olek.

Mis on vahetusprogrammping?

Vahetamaping on meetod, mille puhul protsess tuleks ajutiselt põhimälust tugisalvestusse vahetada. Hiljem tuuakse see edasiseks täitmiseks tagasi mällu.

Varusalvestusseade on kõvaketas või mõni muu teisene salvestusseade, mis peaks olema piisavalt suur, et mahutada kõigi kasutajate kõigi mälukujutiste koopiaid. See peab pakkuma ka otsest juurdepääsu nendele mälukujutistele.

Vahetamaping

Vahetuse eelisedping

Siin on vahetuse peamised eelised/plussidping:

  • See pakub suuremat multiprogrammeerimist.
  • Võimaldab dünaamilist ümberpaigutamist. Näiteks kui kasutatakse aadressi sidumist täitmisajal, saab protsesse vahetada erinevatesse asukohtadesse. Vastasel juhul tuleks kompileerimise ja laadimise ajal sidumise korral protsessid samasse asukohta teisaldada.
  • See aitab mälu paremini ära kasutada.
  • Minimaalne protsessori aja raiskamine valmimisel, seega saab seda hõlpsalt rakendada prioriteedipõhisele ajastamismeetodile selle jõudluse parandamiseks.

Mis on mälu eraldamine?

Mälu eraldamine on protsess, mille käigus arvutiprogrammidele määratakse mälu või ruum.

Siin on põhimälu jagatud kahte tüüpi partitsioonideks:

  1. Vähe mälu - Operaasjade süsteem asub seda tüüpi mälus.
  2. Kõrge mälu – Kasutajaprotsesse hoitakse kõrges mälus.

Sektsioonide eraldamine

Mälu on jagatud erinevateks plokkideks või partitsioonideks. Iga protsess jaotatakse vastavalt vajadusele. Partitsioonide eraldamine on ideaalne meetod sisemise killustumise vältimiseks.

Allpool on toodud erinevad partitsioonide jaotamise skeemid:

  • Esimene sobivus: Seda tüüpi sobituse korral eraldatakse partitsioon, mis on põhimälu algusest peale esimene piisav plokk.
  • Parim sobivus: See eraldab protsessi partitsioonile, mis on vabade partitsioonide seast piisava väikseim.
  • Halvim sobivus: See eraldab protsessi partitsioonile, mis on põhimälus piisavalt suur vabalt saadaolev partitsioon.
  • Järgmine sobivus: See sarnaneb enamasti esimese sobitusega (First Fit), kuid see sobitus otsib esimest piisavat partitsiooni viimasest eraldamispunktist.

Mis on piipar?

Leheküljendus on salvestusmehhanism, mis võimaldab operatsioonisüsteemil protsesse teisesest salvestusruumist põhimällu lehtede kujul hankida. Leheküljendusmeetodi puhul jagatakse põhimälu väikesteks fikseeritud suurusega füüsilise mälu plokkideks, mida nimetatakse kaadriteks. Kaadri suurus peaks olema sama mis lehe suurus, et põhimälu maksimaalselt ära kasutada ja vältida välist fragmentatsiooni. Piipar kasutatakse andmetele kiiremaks juurdepääsuks ja see on loogiline kontseptsioon.

Mis on killustatus?

Protsessid salvestatakse mällu ja eemaldatakse sealt, mis loob vabu mäluruume, mis on teiste protsesside jaoks liiga väikesed.

Mõne aja pärast ei ole neid protsesse enam võimalik mäluplokkidele eraldada nende väikese suuruse tõttu ja mäluplokid jäävad alati kasutamata. Seda nimetatakse fragmentatsiooniks. Seda tüüpi probleem tekib dünaamilise mälujaotuse süsteemis, kui vabad plokid on üsna väikesed, mistõttu nad ei suuda ühtegi päringut täita.

Fragmenteerimismeetodid on kahte tüüpi:

  1. Väline killustatus
  2. Sisemine killustatus
  • Välist killustumist saab vähendada mälu sisu ümberkorraldamisega, et paigutada kogu vaba mälu ühte plokki.
  • Sisemist killustatust saab vähendada, määrates väikseima partitsiooni, mis on siiski piisavalt hea kogu protsessi läbiviimiseks.

Mis on segmenteerimine?

Segmenteerimismeetod toimib peaaegu sarnaselt lehekülgimise meetodiga. Ainus erinevus nende kahe vahel on see, et segmendid on muutuva pikkusega, samas kui lehekülgimise meetodis on lehed alati fikseeritud suurusega.

Programmi segment sisaldab programmi põhifunktsiooni, andmestruktuure, utiliidi funktsioone jne. OS haldab kõigi protsesside jaoks segmendikaardi tabelit. See sisaldab ka vabade mäluplokkide loendit koos nende suuruse, segmentide numbrite ja mälukohtadega põhimälus või virtuaalmälu.

Mis on dünaamiline laadimine?

Dünaamiline laadimine on programmi rutiin, mida ei laadita enne, kui programm seda kutsub. Kõik rutiinid peaksid olema kettal ümberpaigutatavas laadimisvormingus. Põhiprogramm laaditakse mällu ja käivitatakse. Dünaamiline laadimine tagab ka parema mälumahu kasutamise.

Mis on dünaamiline linkimine?

Linkimine on meetod, mis aitab operatsioonisüsteemil koguda ja ühendada erinevaid koodi- ja andmemooduleid ühte käivitatavasse faili. Faili saab laadida mällu ja käivitada. Operatsioonisüsteem saab süsteemitasemel teeke linkida programmiks, mis ühendab teegid laadimise ajal. Dünaamilise linkimise meetodi puhul lingitakse teegid käivitamise ajal, seega võib programmikoodi suurus jääda väikeseks.

Staatilise ja dünaamilise laadimise erinevus

Staatiline laadimine Dünaamiline laadimine
Staatilist laadimist kasutatakse siis, kui soovite oma programmi staatiliselt laadida. Seejärel lingitakse ja kompileeritakse kogu programm kompileerimise ajal ilma väliste moodulite või programmisõltuvusteta. Dünaamiliselt laaditud programmis antakse viited ja laadimine toimub käivitamise ajal.
Laadimise ajal laaditakse kogu programm mällu ja alustab selle täitmist. Teegi rutiinid laaditakse mällu ainult siis, kui need on programmis vajalikud.

Staatilise ja dünaamilise linkimise erinevus

Siin on peamised erinevused staatilise ja dünaamilise linkimise vahel:

Staatiline linkimine Dünaamiline linkimine
Staatilisi linke kasutatakse kõigi teiste programmi jaoks vajalike moodulite ühendamiseks üheks käivitatavaks koodiks. See aitab operatsioonisüsteemil vältida igasugust käitusaegset sõltuvust. Dünaamilise linkimise korral ei pea see moodulit või teeki programmiga linkima. Selle asemel kasutatakse viidet dünaamilisele moodulile, mis esitati kompileerimise ja linkimise ajal.

KKK

Lehekülgede jagamine jagab mälu fikseeritud suurusega kaadriteks ja on programmeerijale nähtamatu, segmenteerimine aga jagab mälu muutuva pikkusega segmentideks, lähtudes programmi loogilisest struktuurist. Lehekülgede jagamine võib põhjustada sisemist fragmenteerimist; segmenteerimine võib põhjustada välist fragmenteerimist.

Sisemine fragmenteerimine on raisatud ruum eraldatud plokis, kui protsess kasutab vähem kui ploki suurus. Väline fragmenteerimine on vaba mälu jagamine väikesteks hajutatud plokkideks, mis koos on piisavalt suured, kuid ei suuda päringut rahuldada.

Programmi käivitamise ajal genereerib protsessor loogilise (virtuaalse) aadressi. Füüsiline aadress on tegelik asukoht põhimälus. Mäluhaldusüksus (MMU) teisendab loogilised aadressid käitusajal füüsilisteks aadressideks.

Tehisintellekt suudab ennustada, milliseid lehti programm järgmisena vajab, ja need eelnevalt hankida, parandades vahemälu ja lehtede asendamise otsuseid. See aitab tuvastada ka mälulekkeid ja häälestada dünaamiliselt jaotuspoliitikaid, vähendades swapiping ja parandades süsteemi üldist jõudlust.

Jah. Tehisintellekt suudab õppida jaotusmustreid ja valida plokkide suurusi või tihendamise ajastuse, mis minimeerivad killustumist. Ennustades, kui kaua jaotused kestavad, grupeerib see sarnased objektid kokku, vähendades hajutatud vaba ruumi ja vajadust kuluka mälu tihendamise järele.

Võta see postitus kokku järgmiselt: