Kas ir virtuālā atmiņa? Definīcija, darbības princips un piemēri

Uzzini, kas ir virtuālā atmiņa: definīcija, darbības princips un piemēri. Skaidri skaidrojumi, priekšrocības, trūkumi un praktiski piemēri ikdienas un iegulto sistēmu kontekstā.

Autors: Leandro Alegsa

Virtuālā atmiņa ir atmiņas pārvaldības koncepcija un tehnika, kas ļauj lietojumprogrammām darboties tā, it kā tām būtu pieejams liels, nepārtraukts atmiņas apgabals, pat ja fiziskā operatīvā atmiņa (RAM) ir ierobežota. Tā ir plaši izmantota datoros un ir viena no mūsdienu tehnoloģijas pamatiespējām, kas nodrošina vairākuzdevumu darbību un atmiņas izolāciju. Programmatūra, kas darbojas uz aparatūras (centrālā procesora, grafiskās kartes u. c.), izmanto šo mehānismu, lai efektīvāk pārvaldītu datora atmiņu un sistēmas resursus.

Mūsdienu datori spēj palaist vairākas lietojumprogrammas vienlaikus — to sauc par daudzuzdevumu vai vairākprocesu darbību (daudzprocesoru darbību). Tomēr tas nenozīmē, ka katrai programmai ir pieejami atsevišķi procesori vai neierobežota operatīvā atmiņa. Virtuālā atmiņa ļauj katrai programmai redzēt savu, loģisku atmiņas bloku (virtuālo adreses telpu), kam faktiski var atbilst dažādas fiziskās atmiņas daļas vai pat dati diskā.

Kā tas darbojas — pamati

Katram procesam tiek piešķirta sava virtuālā adreses telpa. Aparatūrā ir īpašs atmiņas pārvaldības bloks — MMU (Memory Management Unit) — kas veic tulkojumu starp virtuālajām adresēm, ko redz lietojumprogramma, un fiziskajām adresēm RAM. Daļu šī darba veic arī modernās operētājsistēmas, kas uztur tablo (lapu tabulas) un pieņem lēmumus par to, kuri virtuālie bloki ir jāglabā RAM un kuri — diskā.

Parasti atmiņa tiek dalīta nelielos blokos, ko sauc par lapām (page). Kad programma mēģina piekļūt lapai, kas nav pašlaik ielādēta sistēmas atmiņā, notiek lapas kļūda (page fault). Operētājsistēma aptur procesu, ielādē attiecīgo lapu no diska (swap vai backing store) uz RAM un atjauno lapu tabulu. Ja RAM vietas nav, kāda cita lapa jāpārvieto uz disku — šo procesu sauc par swap vai lapu pārlādi. Lapu pārrakstīšana uz disku un no diska ir daudz lēnāka nekā piekļuve RAM, tāpēc biežas pārlādes var smagi ietekmēt veiktspēju.

Galvenie jēdzieni

  • Virtuālā adreses telpa — loģiskā atmiņa, ko redz process.
  • Fiziskā atmiņa — faktiskā RAM, kur glabājas aktīvās lapas.
  • Swap/backing store — vieta diskā, kur glabā neaktīvās lapas.
  • MMU — aparatūras vienība, kas veic adreses tulkošanu; ātrumu palielina TLB (Translation Lookaside Buffer) kešatmiņa, kas saglabā nesenos tulkojumus.
  • Lapu izmērs — parasti 4 KB, bet pastāv arī lielākas (huge pages) sistēmās.

Tehniskās variācijas

Ir divi galvenie pieejas varianti: lapu sistēmas (paging) un segmentācija. Modernās operētājsistēmas parasti izmanto lapu mehānismu (vai tā kombināciju ar segmentāciju), jo tas vienkāršo atmiņas pārvaldību un aizsardzību. Lapu aizvietošanas algoritmi (piem., LRU — Least Recently Used) nosaka, kuras lapas pārvietot uz disku, ja nepieciešams brīvot vietu RAM.

Priekšrocības

  • Procesu izolācija — viena procesa kļūda neietekmē citas procesu atmiņu.
  • Ērta atmiņas pārvaldība — programmas var izmantot lielāku loģisko atmiņu nekā fiziski pieejama RAM (overcommit).
  • Atbalsts koplietojamām bibliotēkām un memory-mapped failiem — daudzas programmas var koplietot vienas lapas RAM, samazinot kopējo atmiņas patēriņu.
  • Efektīva atmiņas izmantošana — neaktīvas lapas var tikt pārvietotas uz disku, atbrīvojot RAM aktīvākām vajadzībām.

Trūkumi un ierobežojumi

  • Ja sistēma sāk bieži pārlādēt lapas (thrashing), veiktspēja samazinās strauji.
  • Reakcijas laiks kļūst mazāk prognozējams — īpaši svarīgi real‑time un iegultajās sistēmās, kur nepieciešama noteikta un nemainīga aizture.
  • Swap darbības uz lēna diska vai bieža rakstīšana var veicināt cietā diska/SSD nolietošanos.

Piemēri un pielietojums

Virtuālā atmiņa ir sastopama gandrīz visās modernajās darbvirsmas un serveru operētājsistēmās: Windows, Linux, macOS u. c. Tā nodrošina, ka programmas var darboties droši un efektīvi pat ar ierobežotu RAM. Tāpat virtuālā atmiņa ļauj realizēt funkcijas kā fork ar copy-on-write, kas būtiski uzlabo procesu izveides ātrumu un atmiņas ekonomiju serveru vidēs.

Kad virtuālo atmiņu nelietot

Dažas sistēmas, īpaši iegultās sistēmas un reāllaika lietojumprogrammas, izvairās no virtuālās atmiņas, jo tās nevar atļauties neprognozējamu kavēšanos, kas rodas, ja dati jāpārlādē no diska. Reāllaika sistēmās parasti izmanto deterministisku atmiņas pārvaldību bez swapping.

Kā uzlabot veiktspēju saistībā ar virtuālo atmiņu

  • Palielināt fizisko RAM, lai samazinātu swap nepieciešamību.
  • Izmantot ātrākus disku risinājumus (SSD) swap vietnēm, tomēr uzmanieties ar rakstīšanas slodzi.
  • Konfigurēt lapu izmērus un TLB optimizāciju atkarībā no lietojuma scenārija (piem., lietojumprogrammas ar lieliem datu bloku apjomiem var gūt labumu no lielākām lapām).
  • Uzraudzīt sistēmu un novērst thrashing, optimizējot lietojumprogrammu atmiņas lietojumu un izmantojot atmiņas profilēšanu.

Virtuālā atmiņa ir būtisks mūsdienu skaitļošanas pamatelements — tā sniedz elastību, drošību un efektivitāti, taču tās izmantošana prasa sapratni par kompromisiem starp veiktspēju un resursu pieejamību.

Programmai šķiet, ka tai ir liels saistīto adrešu diapazons, taču patiesībā tās daļas, ko tā pašlaik izmanto, ir izkaisītas pa galveno atmiņu, un neaktīvās daļas ir saglabātas diska failā.Zoom
Programmai šķiet, ka tai ir liels saistīto adrešu diapazons, taču patiesībā tās daļas, ko tā pašlaik izmanto, ir izkaisītas pa galveno atmiņu, un neaktīvās daļas ir saglabātas diska failā.

Jautājumi un atbildes

J: Kas ir virtuālā atmiņa?


A: Virtuālā atmiņa ir datora atmiņas pārvaldības veids, kas ļauj lietojumprogrammām piekļūt noteikta lieluma atmiņas blokam. Šis atmiņas bloks var nākt no dažādām atmiņas daļām, piemēram, no galvenās atmiņas vai diska.

J: Kā darbojas virtuālā atmiņa?


A: Virtuālā atmiņa darbojas, ļaujot procesora aritmētiski loģiskajam blokam veikt tulkojumus starp lietojumprogrammas un sistēmas resursiem. Daļu šī darba veic arī modernās operētājsistēmas. Ja lietojumprogramma mēģina piekļūt atmiņas blokam, kas neatrodas sistēmas atmiņā, tā tiek apturēta, un šis bloks tiek ielādēts sistēmas atmiņā.

J: Kādi ir piemēri datoriem, kuros neizmanto virtuālo Atmiņu?


A: Iegultās sistēmas ir viens no tādu datoru piemēriem, kas neizmanto virtuālo Atmiņu, jo tiem nepieciešams ātrs reakcijas laiks vai vienmēr nemainīgs reakcijas laiks. Izmantojot virtuālo Atmiņu, ir grūti paredzēt reakcijas laiku, tāpēc iegultajās sistēmās to neizmanto.

J: Kas ir daudzprocesoru apstrāde?


Atbilde: Daudzprocesoru darbība ir tad, ja dators var veikt vairākas darbības vienlaikus, vienlaicīgi darbinot vairākas lietojumprogrammas, kas kopīgi izmanto tā resursus.

J: Kas notiek, ja lietojumprogramma mēģina piekļūt atmiņas blokam, kas nav sistēmas atmiņā?


A: Ja lietojumprogramma mēģina piekļūt atmiņas blokam, kas neatrodas sistēmas atmiņā, tā tiks apturēta, un šis bloks tiks ielādēts sistēmas atmiņā.

J: Kas ir lapu izvietošana?


A.: Atvēršana attiecas uz to, kas notiek, kad tas, kas bija šajā sistēmas Atmiņas daļā, ir jāraksta atpakaļ uz diska, jo lietojumprogramma piekļūst citai daļai, kas sākotnēji tur nebija glabāta.


Meklēt
AlegsaOnline.com - 2020 / 2025 - License CC3