Muistinhallinta käyttöjärjestelmässä: Yhtenäinen, swapping, Pirstaloituminen

⚡ Älykäs yhteenveto

Muistinhallinta on käyttöjärjestelmän prosessi, joka ohjaa ja koordinoi tietokoneen muistia ja määrittää lohkoja käynnissä oleville ohjelmille suorituskyvyn optimoimiseksi. tractunnistaa jokaisen muistipaikan, siirtää prosesseja päämuistin ja levyn välillä ja suojaa prosesseja toisiltaan.

  • 🧠 Määritelmä: Muistin hallinta varaa ja tracks muistilohkot ohjelmien suorittamiseen suorituskyvyn maksimoimiseksi.
  • 🗂️ Tekniikat: Yksittäinen vierekkäinen, osioitu, sivutettu ja segmentoitu allokointi hallitsevat muistia eri tavalla.
  • 🔄 Vaihtaaping: Prosessit siirtyvät tilapäisesti päämuistin ja taustamuistin välillä tehostaakseen moniohjelmointia.
  • 📑 Sivutus vs. segmentointi: Sivutus käyttää kiinteän kokoisia kehyksiä; segmentointi käyttää vaihtelevan pituisia segmenttejä.
  • 🧩 Hajanaisuus: Sisäinen ja ulkoinen pirstoutuminen tuhlaa muistia pieninä, käyttökelvottomina lohkoina.
  • 🔗 Lataus ja linkittäminen: Dynaaminen lataus ja linkitys säästävät muistia lataamalla rutiineja vain tarvittaessa.

Muistinhallinta käyttöjärjestelmässä

Mitä on muistinhallinta?

Muistinhallinta on prosessi, jolla ohjataan ja koordinoidaan tietokoneen muistia, jakamalla lohkoiksi kutsuttuja osia eri käynnissä oleville ohjelmille järjestelmän yleisen suorituskyvyn optimoimiseksi.

Se on käyttöjärjestelmän tärkein toiminto, joka hallitsee ensisijaista muistia. Se auttaa prosesseja liikkumaan edestakaisin päämuistin ja suorituslevyn välillä. Se auttaa käyttöjärjestelmää pysymään track jokaisesta muistipaikasta riippumatta siitä, onko se varattu jollekin prosessille vai pysyykö se vapaana.

Miksi käyttää muistinhallintaa?

Tässä on syitä muistinhallinnan käyttöön:

  • Sen avulla voit tarkistaa, kuinka paljon muistia on varattava prosesseille, jotka päättävät, mikä prosessori saa muistia mihin aikaan.
  • Tracks aina, kun varastoa vapautetaan tai kohdennetaan, ja päivittää tilan vastaavasti.
  • Se varaa tilaa sovellusrutiineille.
  • Se varmistaa myös, että nämä sovellukset eivät häiritse toisiaan.
  • Auttaa suojaamaan eri prosesseja toisiltaan.
  • Se sijoittaa ohjelmat muistiin niin, että muistia käytetään täysimääräisesti.

Muistinhallintatekniikat

Tässä on joitakin tärkeimmistä muistinhallintatekniikoista:

Yksi vierekkäinen allokaatio

Se on helpoin muistinhallintatekniikka. Tässä menetelmässä kaikki tietokoneen muistityypit, lukuun ottamatta pientä osaa, joka on varattu käyttöjärjestelmälle, ovat käytettävissä yhdelle sovellukselle. Esimerkiksi MS-DOS-käyttöjärjestelmä varaa muistia tällä tavalla. Myös sulautettu järjestelmä toimii yhdellä sovelluksella.

Osioitu allokointi

Se jakaa päämuistin useisiin muistiosioihin, jotka ovat enimmäkseen yhtenäisiä muistialueita. Jokainen osio tallentaa kaikki tiedot tiettyä tehtävää tai työtä varten. Tässä menetelmässä osio varataan työlle sen käynnistyessä ja se vapautetaan sen päättyessä.

Sivutetun muistin hallinta

Tämä menetelmä jakaa tietokoneen päämuistin kiinteän kokoisiin yksiköihin, joita kutsutaan sivukehyksiksi. Tämä laitteiston muistinhallintayksikkö kartoittaa sivut kehyksiksi, jotka tulee allokoida sivukohtaisesti.

Segmentoitu muistinhallinta

Segmentoitu muisti on ainoa muistinhallintamenetelmä, joka ei tarjoa käyttäjän ohjelmalle lineaarista ja yhtenäistä osoiteavaruutta.

Segmentit tarvitsevat laitteistotuen segmenttitaulukon muodossa. Se sisältää muistissa olevan osan fyysisen osoitteen, koon ja muita tietoja, kuten pääsysuojabitit ja tilan.

Mikä on swap-palveluping?

Vaihtaaping on menetelmä, jossa prosessi tulisi siirtää väliaikaisesti päämuistista taustamuistiin. Se tuodaan myöhemmin takaisin muistiin jatkuvaa suoritusta varten.

Taustatallennuslaite on kiintolevy tai muu toissijainen tallennuslaite, jonka tulisi olla riittävän suuri kaikkien käyttäjien kaikkien muistikuvien kopioiden tallentamiseen. Sen on myös kyettävä tarjoamaan suora pääsy näihin muistikuviin.

Vaihtaaping

Swapin edutping

Tässä ovat swapin tärkeimmät edut/hyvät puoletping:

  • Se tarjoaa korkeamman asteen moniohjelmointia.
  • Sallii dynaamisen uudelleensijoittamisen. Jos esimerkiksi käytetään suoritusaikaista osoitesidontaa, prosessit voidaan vaihtaa eri sijainteihin. Muussa tapauksessa käännös- ja latausaikaisten sidontojen tapauksessa prosessit tulisi siirtää samaan sijaintiin.
  • Se auttaa käyttämään muistia paremmin.
  • Minimaalinen prosessoriajan hukka valmistuttua, joten sitä voidaan helposti soveltaa prioriteettipohjaiseen ajoitusmenetelmään sen suorituskyvyn parantamiseksi.

Mikä on muistin allokointi?

Muistin allokointi on prosessi, jolla tietokoneohjelmille osoitetaan muistia tai tilaa.

Tässä päämuisti on jaettu kahteen osioon:

  1. Muisti vähissä - Operating-järjestelmä sijaitsee tämän tyyppisessä muistissa.
  2. Korkea muisti – Käyttäjäprosesseja säilytetään korkeassa muistissa.

Osion allokointi

Muisti on jaettu eri lohkoihin tai osioihin. Jokainen prosessi allokoidaan tarpeen mukaan. Osioiden allokointi on ihanteellinen tapa välttää sisäinen pirstoutuminen.

Alla on lueteltu erilaiset osioiden allokointijärjestelmät:

  • Ensimmäinen sovitus: Tällaisessa sovituksessa allokoidaan osio, joka on ensimmäinen riittävä lohko päämuistin alusta.
  • Parhaiten sopiva: Se allokoi prosessin osiolle, joka on vapaiden osioiden joukossa pienin riittävä osio.
  • Huonoin istuvuus: Se allokoi prosessin osiolle, joka on riittävän suuri vapaasti käytettävissä oleva osio päämuistissa.
  • Seuraava sovitus: Se on enimmäkseen samanlainen kuin ensimmäinen sovitus, mutta tämä sovitus etsii ensimmäistä riittävää osiota viimeisestä allokointipisteestä.

Mikä on sivutus?

Sivutus on tallennusmekanismi, jonka avulla käyttöjärjestelmä voi hakea prosesseja toissijaisesta tallennustilasta päämuistiin sivujen muodossa. Sivutusmenetelmässä päämuisti jaetaan pieniin kiinteän kokoisiin fyysisen muistin lohkoihin, joita kutsutaan kehyksiksi. Kehyksen koko tulisi pitää samana kuin sivun koko, jotta päämuistia voidaan hyödyntää mahdollisimman tehokkaasti ja välttää ulkoista pirstoutumista. Hakulaite käytetään tiedon nopeampaan käyttöön, ja se on looginen käsite.

Mitä on pirstoutuminen?

Prosesseja tallennetaan muistiin ja poistetaan muistista, mikä luo vapaata muistitilaa, joka on liian pieni muiden prosessien käytettäväksi.

Jonkin ajan kuluttua näitä prosesseja ei voida enää allokoida muistilohkoille niiden pienen koon vuoksi, ja muistilohkot pysyvät aina käyttämättöminä. Tätä kutsutaan fragmentoitumiseksi. Tämän tyyppinen ongelma esiintyy dynaamisessa muistin allokointijärjestelmässä, kun vapaat lohkot ovat melko pieniä, eivätkä ne pysty täyttämään yhtäkään pyyntöä.

Kahden tyyppisiä fragmentointimenetelmiä ovat:

  1. Ulkoinen sirpaloituminen
  2. Sisäinen pirstoutuminen
  • Ulkoista pirstoutumista voidaan vähentää järjestämällä muistin sisältö uudelleen sijoittamalla kaikki vapaa muisti yhteen lohkoon.
  • Sisäistä pirstoutumista voidaan vähentää varaamalla pienin osio, joka on silti riittävän hyvä koko prosessin suorittamiseen.

Mikä on segmentointi?

Segmentointimenetelmä toimii lähes samalla tavalla kuin sivutus. Ainoa ero näiden kahden välillä on, että segmentit ovat vaihtelevan pituisia, kun taas sivutusmenetelmässä sivut ovat aina kiinteän kokoisia.

Ohjelmasegmentti sisältää ohjelman päätoiminnon, tietorakenteet, aputoiminnot jne. Käyttöjärjestelmä ylläpitää segmenttikarttataulukkoa kaikille prosesseille. Se sisältää myös luettelon vapaista muistilohkoista sekä niiden koon, segmenttien numerot ja muistipaikat päämuistissa tai virtuaalimuistin.

Mikä on dynaaminen lataus?

Dynaaminen lataus on ohjelman rutiini, jota ei ladata ennen kuin ohjelma kutsuu sitä. Kaikki rutiinit tulisi sijoittaa levylle uudelleensijoitettavassa latausmuodossa. Pääohjelma ladataan muistiin ja suoritetaan. Dynaaminen lataus parantaa myös muistitilan käyttöä.

Mitä on dynaaminen linkitys?

Linkittäminen on menetelmä, jonka avulla käyttöjärjestelmä voi kerätä ja yhdistää erilaisia ​​koodi- ja datamoduuleja yhdeksi suoritettavaksi tiedostoksi. Tiedosto voidaan ladata muistiin ja suorittaa. Käyttöjärjestelmä voi linkittää järjestelmätason kirjastoja ohjelmaksi, joka yhdistää kirjastot latausaikana. Dynaamisessa linkitysmenetelmässä kirjastot linkitetään suorituksen aikana, joten ohjelmakoodin koko voi pysyä pienenä.

Ero staattisen ja dynaamisen latauksen välillä

Staattinen lataus Dynaaminen lataus
Staattista latausta käytetään, kun haluat ladata ohjelmasi staattisesti. Tällöin koko ohjelma linkitetään ja käännetään käännöksen yhteydessä ilman ulkoisia moduuleja tai ohjelmariippuvuuksia. Dynaamisesti ladatussa ohjelmassa viitteet annetaan ja lataus tehdään suorituksen aikana.
Lataushetkellä koko ohjelma ladataan muistiin ja sen suorittaminen alkaa. Kirjaston rutiinit ladataan muistiin vain silloin, kun niitä tarvitaan ohjelmassa.

Ero staattisen ja dynaamisen linkityksen välillä

Tässä ovat tärkeimmät erot staattisen ja dynaamisen linkityksen välillä:

Staattinen linkitys Dynaaminen linkitys
Staattista linkitystä käytetään yhdistämään kaikki muut ohjelman tarvitsemat moduulit yhdeksi suoritettavaksi koodiksi. Tämä auttaa käyttöjärjestelmää estämään ajonaikaiset riippuvuudet. Dynaamista linkitystä käytettäessä varsinaista moduulia tai kirjastoa ei tarvitse linkittää ohjelmaan. Sen sijaan käytetään viittausta dynaamiseen moduuliin, joka annetaan kääntämisen ja linkityksen yhteydessä.

UKK

Sivutus jakaa muistin kiinteän kokoisiin kehyksiin ja on ohjelmoijalle näkymätön, kun taas segmentointi jakaa muistin vaihtelevan pituisiin segmentteihin ohjelman loogisen rakenteen perusteella. Sivutus voi aiheuttaa sisäistä pirstoutumista; segmentointi voi aiheuttaa ulkoista pirstoutumista.

Sisäinen fragmentointi on varatun lohkon sisällä hukkaan heitettyä tilaa, kun prosessi käyttää vähemmän kuin lohkon koko. Ulkoinen fragmentointi on vapaan muistin jakamista pieniin hajanaisiin lohkoihin, jotka yhdessä ovat riittävän suuria, mutta eivät pysty täyttämään pyyntöä.

Looginen (virtuaalinen) osoite luodaan suorittimen toimesta ohjelman suorituksen aikana. Fyysinen osoite on todellinen sijainti keskusmuistissa. Muistinhallintayksikkö (MMU) muuntaa loogiset osoitteet fyysisiksi osoitteiksi suorituksen aikana.

Tekoäly voi ennustaa, mitä sivuja ohjelma tarvitsee seuraavaksi, ja esilataa ne, mikä parantaa välimuistin ja sivujen korvaamisen päätöksiä. Se auttaa myös havaitsemaan muistivuotoja ja säätämään allokointikäytäntöjä dynaamisesti, mikä vähentää swap-tilaa.ping ja parantaen järjestelmän yleistä suorituskykyä.

Kyllä. Tekoäly voi oppia allokointimalleja ja valita lohkokokoja tai pakkausajoituksia, jotka minimoivat fragmentoitumisen. Ennustamalla allokaatioiden elinkaaren se ryhmittelee samankaltaiset objektit yhteen, mikä vähentää hajallaan olevaa vapaata tilaa ja kalliin muistin pakkauksen tarvetta.

Tiivistä tämä viesti seuraavasti: