Muistinsuojaus suorittimelta: miten se toimii?

Ohjelmat eivät lopeta pyyntöjä muistiin jatkuvasti, koska ne lähettävät laitteiston paitsi tietojen käsittelyyn, muuttamiseen, uusien tietojen luomiseen, olemassa olevien poistamiseen ja niin edelleen. Mutta on muistin osia, joita jos ohjelma käyttää, se voi päätyä sekoittamaan järjestelmän yleisen toiminnan. Kutsumme tätä muistin suojaamiseksi.

Tietyssä kehitysvaiheessa prosessorit alkoivat toteuttaa muistin suojausjärjestelmiä, jotka erottivat osoitteen RAM useisiin osiin. Sen ymmärtämiseksi sinun tarvitsee vain kuvitella, että kaupungissa on yksinomaan käytettävä naapurusto ja poliisivoimat, jotka estävät pääsyn kyseiseen naapurustoon niille, jotka eivät voi käyttää sitä, ja kansalaisilla on etuoikeus käyttää kaikkia käyttöjärjestelmän prosesseja. .

Muistin suojaus suorittimelta

Miksi muistisuojaus on tarpeen?

Muistinsuojaus tuli tarpeelliseksi PC-suorittimissa heti, kun oli tarpeen luoda moniajo-ympäristöjä, joissa useat ohjelmat jakavat muistin käytön eri vuoroissa. Laskennan alkuvuodet olivat yhden tehtävän ohjelmia, jotka suorittivat myös käyttöjärjestelmät itse samanaikaisesti, erityisesti 8- ja 16-bittisissä MOS 6502- ja Z80A-pohjaisissa kotitietokoneissa.

Proteccion Memoria Guru -meditaatio

Kuuluisa tapaus muistisuojan puutteesta prosessori Meillä on se klassisessa Commodore Amigassa, jonka standardin 68K mukaisissa versioissa oli jatkuvasti kaatumisia johtuen monitoimisen käyttöjärjestelmän suorittamisesta suorittimella ilman muistisuojausta, kuten tapahtui omena Macintosh saman prosessorin alla.

Nykyään kaikissa suorittimissa on muistisuojaus, ja niiden on suoritettava erittäin monimutkaisia ​​moniajo-käyttöjärjestelmiä, joissa samanaikaisten prosessien määrä on tuhansia.

Kuinka muistisuojaus toimii?

Sivutaulukko

Nykyaikaisissa suorittimissa muistisuojaus suoritetaan samalla prosessorilla kehittäjien päänsäryn säästämiseksi. Jokainen keskusyksikkö on tallentanut ns. Sivutaulukon rekisterisarjaan, mikä ilmoittaa sille, kuinka järjestelmän muisti on järjestetty. Sivutaulukkoa ei käytetä vain virtuaalisen muuntamiseen fyysisiin muistiosoitteisiin, vaan myös sitä, mikä muistin osa on sovellusten käytettävissä ja mikä ei.

Kun sovellus käyttää muistin osaa, jota sen ei ole sallittu tehdä, CPU tuottaa sitten keskeytyksen, joka antaa käyttöjärjestelmän hallinnan. Sieltä riippuu siitä, miten ratkaisu on toteutettu ohjelmistotasolla. Käyttöjärjestelmä voi päättää sulkea ohjelman ja kaikki sen prosessit kokonaan yksipuolisesti.

On otettava huomioon, että sivutaulukossa ei ole vain tietoa muistijärjestelystä, sen etuoikeutetuista pääsyosista, vaan myös RAM-tilanne kaikkina aikoina. Sen hallinta tapahtuu käyttöjärjestelmän ytimen ketjulla, joka vastaa eri resurssien osoittamisesta aktiivisille ohjelmille joko suorittimen suorittamisajan tai muistin käytön muodossa.

Veto-ohjelmat

Binario -järjestelmä

Koko nykyisen suorittimen näkemä RAM on jaettu sivuille eikä muistiosoitteille. Muistinhallintayksikkö kääntää ne fyysisiin muistiosoitteisiin. Mutta mitä tapahtuu, kun osa ohjelmasta suorittaa laittoman pääsyn muistiin? Olemme selittäneet prosessia aiemmin, mutta välttääksemme CPU: n pääsyn järjettömään silmukkaan, tehtävä on merkitä virtuaaliseen osoitteeseen bitin läpi, että tallennettu binääri ei ole ohjelma, vaan data.

Sillä tavalla, että kun keskusyksikkö palaa näihin virtuaalimuistiosoitteisiin, se ei enää tee niin kuin se olisi ohjelma, vaan tietojoukkona, jonka se jättää huomiotta. Ilmeisesti jos on ohjelma, jolla on hyppykäsky tähän muistiosoitteeseen, tapahtuu virhe, mutta RAM-muistia yrittävää koodia ei enää suoriteta.

Bitti ei Suorita

Tätä x86-suorittimien bittiä kutsutaan Ei-Suorita- tai NX-bitiksi. Tämä on hyvin yksinkertainen turvatoimenpide, jonka käyttöjärjestelmä voi käsitellä, mutta se ei ole ainoa, jonka käyttöjärjestelmän on estettävä virheellisen koodin suorittaminen. Vaikka suojausmekanismi ei aina toimi ja on muitakin mekanismeja, joiden avulla keskusyksikkö hämärtää suojatun muistin sovelluksiin.

Esimerkiksi käyttöjärjestelmä määrittää itselleen yksinoikeusbitin kaikille säikeilleen. Kun sovellukselle, jolla ei ole sen oikeuksia, määritetään pääsy suojattuun RAM-muistiin muuttamalla käyttöbittiä, käyttöjärjestelmä palauttaa kyseisen bitin manipuloimalla osiota, joka vastaa sivutaulukon sovelluksia

Kuinka CPU saa sivutaulukon?

BIOS

Ensimmäinen tietokoneella suoritettava ohjelma, riippumatta siitä, missä muodossa se on, on käyttöjärjestelmä. Jotkut monimutkaisemmat järjestelmät lataavat esikatselujärjestelmän, joka käynnistää laitteiston ja välittää todistuksen käyttöjärjestelmälle peitetyllä tavalla. Tämä prosessi ei riipu laitteistosta, mutta kaikilla laitteilla on muistiosoite siitä, mistä se alkaa, ja sieltä se kulkee muistin läpi yhteen tai toiseen suuntaan riippuen siitä, onko kyseessä Big Endian vai Little Endian CPU.

Siksi näissä muistiosoitteissa on oltava tieto tietokoneen käynnistämiseksi, joka on nykyään UEFI, mutta alussa se oli BIOS. Mikä toimii käyttöjärjestelmän avaavana toimintana. Mutta mistä käyttöjärjestelmä saa RAM-tilanteen? No, se tekee niin käyttämällä kahta taulukkoa, jotka on tallennettu emolevy piirisarja nimeltä ACPI-taulukot.

piirisarja integroitu

ACPI on ensimmäinen mekanismi, joka vastaa oheislaitteiden muistihakemusten hallinnasta ja myös RAM-muistin organisoinnista. Tätä varten se toimittaa käyttöjärjestelmälle kaksi taulukkoa, joilla on sama toiminto. Nämä taulukot ovat:

  • RSDT (juurijärjestelmän kuvaustaulukko).
  • XSDT (laajennettu juurijärjestelmän kuvaajataulukko).

Jos käyttöjärjestelmä on 32 bittiä, se antaa sinulle RSDT: n, jos se on 64 bittiä XSDT. Sieltä käyttöjärjestelmällä on jo kaikki tarvitsemansa muistin hallintaan prosessorilla.

Käyttöjärjestelmä on hallitsija

Windows

Muistiosoitteessa on joukko bittejä, joita sovellukset eivät voi käyttää ja joihin pääsy on kokonaan kielletty. Todellisuudessa laitteistoresursseja eivät pyydä itse sovellukset, vaan käyttöjärjestelmä. Mikään sovellus ei voi koskettaa bittiä, joka estää pääsyn suojattuun muistiin ilman käyttöjärjestelmän lupaa.

Tämä aiheuttaa sarjan ongelmia muistin saatavuudessa virtualisoiduissa järjestelmissä, mikä johtaa siihen, että virtuaalimuistin osoitukseen on lisättävä lisäbittejä, mikä paljastaa keskusyksikölle erityisen käyttöoikeustason virtuaalikoneessa ajettaville sovelluksille .

Tätä varten CPU: n ei tarvitse olla vain varustettu tällä mahdollisuudella, vaan se vaikuttaa myös tapaan, jolla käyttöjärjestelmä on organisoitu. Pilvipohjaiset käyttöjärjestelmät käyttävät yleensä hypervisoria, joka vastaa eri virtuaalikoneiden RAM-muistin käytön hallinnasta.