Distribúcia RAM v operačných systémoch. Funkcie operačného systému na správu pamäte. Nástroje na správu pamäte

Potreby používateľov najlepšie uspokojí výpočtové prostredie, ktoré podporuje modulárne programovanie a flexibilné využitie údajov. Je potrebné zabezpečiť efektívnu a systematickú kontrolu umiestňovania dát v pamäťovom zariadení riadiacimi programami operačného systému. Na základe uvedených požiadaviek musí operačný systém vykonávať takéto funkcie.

Procesná izolácia. Operačný systém musí zabezpečiť, aby žiadny nezávislý proces nemohol zmeniť obsah pamäte pridelenej inému procesu a naopak.

Automatické umiestnenie a správa. Programy musia byť dynamicky alokované v pamäti podľa určitých požiadaviek. Prideľovanie pamäte by malo byť pre programátora transparentné. Programátor tak bude zbavený potreby monitorovať obmedzenia spojené s konečnou pamäťou a operačný systém zlepší efektivitu výpočtového systému tým, že úlohám pridelí len také množstvo pamäte, ktoré potrebuje.

Podpora modulárneho programovania. Programátor musí byť schopný definovať programové moduly, ako aj ich dynamicky vytvárať, ničiť a meniť ich veľkosť.

Bezpečnosť a kontrola prístupu. Keď je pamäť zdieľaná na každej hierarchickej úrovni, existuje šanca, že jeden program bude pristupovať k pamäťovému priestoru iného programu. Táto funkcia môže byť potrebná, ak je zabudovaná do princípu fungovania tejto aplikácie. Na druhej strane je to hrozba pre integritu programov a samotného operačného systému. Operačný systém musí sledovať, ako môžu rôzni používatelia pristupovať k rôznym oblastiam pamäte.

Dlhodobé skladovanie. Mnohé aplikácie vyžadujú prostriedky na uchovanie informácií dlhší čas po vypnutí počítača.
Operačné systémy zvyčajne spĺňajú tieto požiadavky pomocou virtuálnej pamäte a súborových systémov. Súborový systém poskytuje dlhodobé ukladanie informácií umiestnených v pomenovaných objektoch nazývaných súbory. Súbor je široko používaná dátová štruktúra, ku ktorej pristupuje a je chránená operačným systémom.

Virtuálna pamäť je zariadenie, ktoré umožňuje programátorom premýšľať o pamäti z logického hľadiska bez toho, aby sa museli starať o dostatok fyzickej pamäte. Princípy práce s virtuálnou pamäťou boli vyvinuté tak, aby v hlavnej pamäti mohli byť súčasne vykonávané úlohy viacerých používateľov, ktoré sa vykonávajú paralelne. Pri tejto organizácii procesov nie je žiadne oneskorenie medzi ich vykonaním: akonáhle je jeden z procesov zapísaný do pomocného úložného zariadenia, načíta sa ďalší proces. Vzhľadom na rozdiely v množstve pamäte potrebnej pre rôzne procesy, keď procesor prepína z jedného procesu na druhý, je ťažké ich kompaktne umiestniť do hlavnej pamäte. Preto boli vyvinuté stránkovacie systémy, v ktorých je proces rozdelený do blokov pevnej veľkosti nazývaných stránky. Program pristupuje k pamäťovému slovu pomocou virtuálnej adresy, ktorá pozostáva z čísla stránky a offsetu vzhľadom na jej začiatok. Stránky toho istého procesu môžu byť rozptýlené v hlavnej pamäti. Pagingový systém poskytuje dynamické mapovanie medzi virtuálnou adresou používanou programom a skutočnou adresou alebo fyzickou adresou hlavnej pamäte.

Ďalším logickým vývojom v tomto smere (vzhľadom na dostupnosť hardvéru, ktorý umožňuje dynamické mapovanie) bolo odstránenie požiadavky, aby všetky stránky procesu boli v hlavnej pamäti súčasne; stačí, že sú všetky uložené na disku. Kým je proces spustený, v hlavnej pamäti sú len niektoré jeho stránky. Ak program pristúpi na stránku, ktorá sa tam nenachádza, hardvér správy pamäte to zistí a zariadi načítanie chýbajúcich stránok. Toto usporiadanie sa nazýva virtuálna pamäť; je to znázornené na obr. 2.9.

Ryža. 2.9. Koncept virtuálnej pamäte

Hardvér procesora spolu s operačným systémom poskytuje používateľovi „virtuálny procesor“, ktorý má prístup k virtuálnej pamäti. Toto úložisko môže byť organizované ako lineárny adresný priestor alebo ako množina segmentov, čo sú súvislé bloky s premenlivou dĺžkou. Pomocou každej z týchto metód organizácie môžete pomocou nástrojov programovacieho jazyka pristupovať k bunkám virtuálnej pamäte, ktoré obsahujú program a jeho údaje. Na izoláciu procesov od seba je možné každému z nich prideliť vlastnú pamäťovú oblasť, ktorá sa neprekrýva s pamäťovou oblasťou iného procesu. Využitie zdieľanej pamäte je možné riadiť čiastočným prekrytím častí dvoch oblastí virtuálnej pamäte. Súbory sa vytvárajú na energeticky nezávislom úložnom zariadení. Aby s nimi programy mohli pracovať, je možné súbory alebo ich fragmenty skopírovať do virtuálnej pamäte.
Ryža. 2.10 vysvetľuje koncept adresovania v dizajne virtuálnej pamäte. Úložisko pozostáva z hlavnej pamäte, ktorá je otvorená priamemu prístupu cez strojové inštrukcie, ako aj z pomalšej pomocnej pamäte, ku ktorej sa pristupuje nepriamo načítaním blokov do hlavnej pamäte. Medzi procesorom a pamäťou je hardvér na preklad adries. Programy pristupujú k pamäťovým bunkám pomocou virtuálnych adries, ktoré sa pri prístupe konvertujú na skutočné adresy v hlavnej pamäti. Ak sa pristupuje k virtuálnej adrese, ktorá nie je načítaná do hlavnej pamäte, potom jeden z blokov reálnej pamäte vymení miesto s požadovaným blokom, ktorý sa nachádza v pomocnej pamäti. Počas tejto výmeny musí byť pozastavený proces, ktorý pristupoval k tejto adrese. Úloha vyvinúť mechanizmus prekladu adries, ktorý nevyžaduje veľké dodatočné zdroje, a stratégiu ukladania údajov, ktorá minimalizuje presun údajov medzi rôznymi úrovňami pamäte, spočíva na vývojárovi operačného systému.

Princípy správy pamäte

Jednou z hlavných funkcií operačného systému je efektívna správa pamäte. RAM alebo hlavná pamäť alebo pamäť s náhodným prístupom (Random Access Memory, RAM) je pomerne drahý zdroj. Prístupová doba RAM je len niekoľko cyklov procesora, takže práca s dátami v pamäti zaisťuje maximálny výkon. Bohužiaľ, tento zdroj je zvyčajne obmedzený. Vo väčšej miere to platí pre univerzálny multitaskingový operačný systém, ktorým je UNIX. Dáta, ktoré sa nedajú nájsť v RAM, sa teda nachádzajú na sekundárnych úložných zariadeniach, prípadne v sekundárnej pamäti, ktorej úlohu zvyčajne plnia diskové jednotky. Čas prístupu k sekundárnej pamäti je o niekoľko rádov dlhší ako čas prístupu k RAM a vyžaduje si aktívnu asistenciu operačného systému. Podsystém správy pamäte UNIX je zodpovedný za spravodlivú a efektívnu distribúciu zdrojov zdieľanej pamäte medzi procesmi a za výmenu údajov medzi hlavnou a sekundárnou pamäťou. Niektoré operácie vykonáva hardvérovo jednotka správy pamäte (MMU) procesora pod kontrolou operačného systému, čím sa dosahuje požadovaný výkon.

Primitívna správa pamäte výrazne znižuje funkčnosť operačného systému. Takéto systémy spravidla umožňujú nahrať jednu úlohu na vopred určené miesto v RAM a preniesť na ňu riadenie. V tomto prípade úloha dostane všetky počítačové zdroje, ktoré má k dispozícii (samozrejme ich zdieľa s operačným systémom) a adresy používané úlohou sú fyzické adresy RAM. Tento spôsob spustenia a spustenia jedného programu je zďaleka najrýchlejší a vyžaduje minimálnu réžiu.

Tento prístup sa často používa v špecializovaných mikroprocesorových systémoch, ale je prakticky nepoužiteľný vo všeobecných operačných systémoch, ako je UNIX. Môžeme sformulovať množstvo schopností, ktoré by mal poskytovať subsystém správy pamäte moderného multitaskingového operačného systému:

Vykonávajte úlohy, ktoré sú väčšie ako veľkosť pamäte RAM.

Vykonajte úlohy, ktoré sú čiastočne načítané do pamäte, aby sa minimalizoval čas ich spustenia.

Umiestnite viacero úloh do pamäte súčasne, aby ste zvýšili efektivitu procesora.

Umiestnenie úlohy na ľubovoľné miesto v pamäti RAM.

Umiestnenie úlohy do niekoľkých rôznych častí pamäte RAM.

Zdieľanie rovnakých pamäťových oblastí medzi viacerými úlohami. Napríklad viaceré procesy spustené rovnakým programom môžu zdieľať segment kódu.

Všetky tieto funkcie sú implementované v moderných verziách UNIXu pomocou tzv. virtuálna pamäť, o ktorej bude reč v ďalšej podkapitole. Virtuálna pamäť nie je „zadarmo“ a zvyšuje réžiu operačného systému: dátové štruktúry správy pamäte sú umiestnené v RAM, čím sa znižuje jej veľkosť; Správa virtuálnej pamäte procesov môže vyžadovať I/O operácie náročné na zdroje; V prípade systému s priemernou záťažou sa asi 7 % času procesora vynakladá na podsystém správy pamäte. Preto výkon operačného systému ako celku do značnej miery závisí od efektívnosti implementácie a prevádzky tohto podsystému.

Z knihy Internal Structure of Microsoft Windows (Kap. 5-7) autora Russinovič Mark

KAPITOLA 7 Správa pamäte V tejto kapitole sa dozviete, ako sa virtuálna pamäť implementuje v systéme Microsoft Windows a ako sa spravuje časť virtuálnej pamäte, ktorá sa nachádza vo fyzickej pamäti. Popíšeme si aj vnútornú štruktúru správcu pamäte a jej súčasti, vrátane

Z knihy Architektúra operačného systému UNIX autor Bach Maurice J

KAPITOLA 9. ALGORITHMY SPRÁVY PAMÄTE Algoritmus plánovania času CPU diskutovaný v predchádzajúcej kapitole do veľkej miery závisí od zvolenej stratégie správy pamäte. Proces možno vykonať, ak je aspoň čiastočne prítomný v

Z knihy The Standard Template Library (STL) Guide od Li Meng

Primitívy spracovania pamäte Na získanie typického ukazovateľa na neinicializovanú vyrovnávaciu pamäť danej veľkosti je definovaná nasledujúca funkcia: template ‹class T›inline T* allocate(ptrdiff_t n, T*); // n ›= 0Veľkosť (v bajtoch) distribuovanej vyrovnávacej pamäte nie je menšia ako n*sizeof(T).Pre

Z knihy Win2K FAQ (v. 6.0) autor Shashkov Alexey

(3.21) Ako zrýchliť prácu s pamäťou? Na zrýchlenie pamäťového subsystému W2k je možné upraviť niekoľko hodnôt registra. Buďte však opatrní, pretože nesprávne hodnoty môžu viesť k nefunkčnosti systému. Niektoré hodnoty registra môžete zmeniť v

Z knihy DIY Linux server autora

18.1.3. Správa pamäte Správa pamäte sa vykonáva pomocou parametra mem: mem=Určuje množstvo pamäte nainštalovanej v počítači. Napríklad: mem=16384K alebo mem=16M. Niekedy je potrebné špecifikovať množstvo pamäte RAM, ktoré sa líši od skutočne k dispozícii. Napríklad máte čipset Intel 810 s

Z knihy WinXP FAQ (Často kladené otázky o Windows XP) autor Shashkov Alexey

3.10. Ako zrýchliť prácu s pamäťou? Môžete upraviť niekoľko hodnôt registra, aby ste urýchlili pamäťový subsystém XP. Buďte však opatrní, pretože nesprávne hodnoty môžu viesť k nefunkčnosti systému. Niektoré hodnoty registra môžete zmeniť v

Z knihy Idioms and Styles C++ od Machmutova Alberta

Krok 18 – Správa pamäte. Tejto téme sa už nedá nijako vyhnúť. Je to príliš dôležité. Dlho som sa tomu nechcel venovať, ale vzalo ma to. V správe pamäte je jedným z najväčších problémov (pre mňa) to, že autori kníh o C++ na tomto mieste majú

Z knihy Základy objektovo-orientovaného programovania od Meyera Bertranda

Krok 19 – Správa pamäte. Pokračovanie 1. Boh: "Vymazal som všetok život. Nič som však nezničil. Jednoducho som vo Mne znova spojil časti Seba. Na mojej planéte bolo veľa ľudí s bláznivými očami, ktorí klebetili o splynutí so Mnou. Tak splynuli. “ Carmody: „To je pre nich

Z knihy Systémové programovanie v prostredí Windows od Harta Johnsona M

Problém správy pamäte v OO modeli Zhrnutím predchádzajúcej analýzy definujeme originály a podľa toho aj dosiahnuteľné objekty: Definícia: počiatočné, dosiahnuteľné a nedosiahnuteľné objekty V každom okamihu vykonávania systému existuje množina originálov.

Z knihy Implementácia SAP R/3: Príručka pre manažérov a inžinierov od Kale Vivek

Automatická správa pamäte Žiadny z diskutovaných prístupov nie je úplne uspokojivý. Všeobecné riešenie problému správy pamäte si vyžaduje serióznu prácu na úrovni implementácie

Z knihy Linux: Kompletný sprievodca autora Kolisničenko Denis Nikolajevič

Architektúra systému správy pamäte vo Win32 a Win64 Win32 (v tomto prípade sa rozdiely medzi Win32 a Win64 stanú významnými) je API pre 32-bitové operačné systémy rodiny Windows. "32-bit" sa pri adresovaní pamäte prejavuje tak, že ukazovatele (LPSTR, LPDWORD atď.) sú 4-bajtové

Z knihy Operačný systém UNIX autora Robachevsky Andrey M.

Prehľad metód správy pamäte OS sa stará o všetky detaily mapovania virtuálnej pamäte na fyzickú, prehadzovania stránok a mechanizmov stránkovania dopytu a ďalších aspektov. Tieto otázky sú podrobne diskutované

Z knihy Popis jazyka PascalABC.NET autora Tím RuBoard

Zásady a princípy projektového manažmentu Zásady a princípy projektového manažmentu by mali byť dokončené a oznámené všetkým účastníkom projektu čo najskôr Stratégia projektu Ako je uvedené v časti „Informácie ako nový zdroj“ v kapitole 1, implementácia

Z knihy autora

23.2.2. Funkcie na prácu s pamäťou Funkcie na prácu s pamäťou knižnice Glib vykonávajú rovnaké akcie ako zodpovedajúce funkcie jazyka C. Tu sú ich prototypy: gpointer g_malloc(veľkosť gulong); gpointer g_realloc(gpointer mem, veľkosť gulong); void g_free(gpointer

Z knihy autora

Správa pamäte procesov Dá sa povedať, že každý proces v operačnom systéme UNIX beží na vlastnom virtuálnom počítači, kde všetky zdroje patria výlučne tomuto procesu. Subsystém správy pamäte to poskytuje

Funkcie OS pre správu pamäte v multiprogramovom systéme sú:

· sledovanie voľná a použitá pamäť,

· pridelenie pamäť pre procesy a uvoľnenie pamäte pri ukončení procesov,

· vytláčanie kódy a dáta procesov z RAM na disk (úplný alebo čiastočný), keď veľkosť hlavnej pamäte nestačí na uloženie všetkých procesov v nej a ich vrátenie do RAM, keď sa v nej uvoľní miesto,

· nastavenie adries programy do určitej oblasti fyzickej pamäte.

Okrem prvotného prideľovania pamäte procesom pri ich vytváraní sa OS musí zaoberať aj dynamickou alokáciou pamäte, t.j. splniť požiadavky aplikácie na dodatočnú pamäť za behu. Keď už aplikácia nepotrebuje ďalšiu pamäť, môže ju vrátiť do systému. Výsledkom pridelenia pamäte náhodnej dĺžky v náhodných časoch z oblasti zdieľanej pamäte je fragmentácia a v dôsledku toho k jeho neefektívnemu využívaniu. Preto defragmentácia Pamäť je tiež funkciou operačného systému.

Keď je operačný systém spustený, často musí vytvárať nové štruktúry informácií o službách, ako sú deskriptory procesov a vlákien, rôzne tabuľky prideľovania zdrojov, vyrovnávacie pamäte používané procesmi na výmenu údajov, synchronizáciu objektov atď. Všetky tieto systémové objekty vyžadujú pamäť. V niektorých operačných systémoch je vopred (počas inštalácie) rezervované určité pevné množstvo pamäte pre potreby systému. Iné operačné systémy používajú flexibilnejší prístup, v ktorom je pamäť dynamicky prideľovaná pre systémové účely. V tomto prípade si rôzne podsystémy OS vytvárajú svoje vlastné tabuľky, objekty, štruktúry atď. odboč podsystém správy pamäte so žiadosťami.

Ochrana pamäte je ďalšou dôležitou úlohou OS, ktorou je zabrániť spustenému procesu zapisovať alebo čítať dáta z pamäťovej oblasti pridelenej inému procesu. Túto funkciu OS zvyčajne implementujú softvérové ​​moduly OS v úzkej interakcii s hardvérom.

Typy adries

Na identifikáciu premenných a príkazov sa používajú symbolické názvy (návestia), virtuálne adresy a fyzické adresy (obrázok 2.7).

· Symbolické mená pridelené používateľom pri písaní programu v algoritmickom jazyku alebo v jazyku symbolických inštancií.

· Virtuálne adresy vyvíja prekladač, ktorý preloží program do strojového jazyka. Keďže pri preklade vo všeobecnom prípade nie je známe, kde sa program nahrá do pamäte RAM, prekladač priraďuje premenným a príkazom virtuálne (podmienené) adresy, zvyčajne za predpokladu, že program bude umiestnený od adresy nula.

· Fyzické adresy zodpovedajú počtu buniek RAM, kde sa premenné a príkazy skutočne nachádzajú alebo budú nachádzať. Prechod z virtuálnych adries na fyzické je možné uskutočniť dvoma spôsobmi.

Volá sa množina virtuálnych adries procesu virtuálny adresný priestor. Každý proces má svoj vlastný virtuálny adresný priestor, ale rozsah možných adries virtuálneho priestoru je rovnaký pre všetky procesy. Každý proces má však svoj vlastný virtuálny adresný priestor – prekladateľ priraďuje virtuálne adresy premenným a kódom pre každý program nezávisle. Zhoda virtuálnych adries premenných a príkazov rôznych procesov nevedie ku konfliktom, pretože v prípade, že sú tieto premenné súčasne prítomné v operačnom systéme, OS ich mapuje na rôzne fyzické adresy.

Maximálna veľkosť virtuálneho adresného priestoru je obmedzená veľkosťou adresového bitu, ktorá je vlastná danej architektúre počítača a spravidla sa nezhoduje s množstvom fyzickej pamäte dostupnej v počítači.

Rôzne operačné systémy používajú rôzne spôsoby štruktúry virtuálneho adresného priestoru (VAS). V niektorých operačných systémoch je VAP procesu, ako je fyzická pamäť, prezentovaný ako nepretržitý lineárne sekvencie virtuálnych adries. V tomto prípade je virtuálna adresa jedno číslo predstavujúce posun vzhľadom na začiatok VAP. Tento typ adresy sa nazýva lineárna virtuálna adresa.

V iných operačných systémoch je VAP rozdelený na časti nazývané segmenty (sekcie, oblasti atď.). V tomto prípade je možné okrem lineárnej adresy použiť aj virtuálnu adresu, ktorá je párčísla (n, m), kde n definuje segment a m je posun v rámci segmentu.

Existujú aj zložitejšie spôsoby štruktúrovania VAP, keď je virtuálna adresa tvorená tromi alebo dokonca viacerými číslami.

Úlohou OS je mapovať jednotlivé VAP všetkých súčasne bežiacich procesov do spoločnej fyzickej pamäte. V tomto prípade OS zobrazuje buď celý VAP, alebo len jeho určitú časť. Postup pri prevode virtuálnych adries na fyzické by mal byť pre používateľa a programátora čo najtransparentnejší.

Existujú dva zásadne odlišné prístupy k prevodu virtuálnych adries na fyzické.

Ryža. 2.7. Typy adries

IN prvý prípad nahradenie virtuálnych adries fyzickými sa vykonáva špeciálnym systémovým programom - presúvaním nakladač. Pohyblivý zavádzač na základe počiatočných údajov, ktoré má o počiatočnej adrese fyzickej pamäte, do ktorej sa má program nahrať, a informácií poskytnutých prekladačom o konštantách programu závislých od adresy, načíta program, pričom kombinuje s nahradením virtuálnych adries fyzickými.

Druhý spôsob spočíva v tom, že program sa do pamäte načíta nezmenený vo virtuálnych adresách, pričom operačný systém zaznamenáva posun skutočného umiestnenia programového kódu voči virtuálnemu adresnému priestoru. Počas vykonávania programu sa pri každom prístupe k RAM virtuálna adresa skonvertuje na fyzickú adresu.. Druhá metóda je flexibilnejšia; umožňuje presúvať program počas jeho vykonávania, zatiaľ čo pohyblivý zavádzač pevne viaže program na oblasť pamäte, ktorá mu bola pôvodne pridelená. Použitie pohyblivého bootloadera však znižuje réžiu, pretože každá virtuálna adresa sa preloží iba raz pri zavádzaní a v druhom prípade pri každom prístupe k danej adrese.

V niektorých prípadoch (zvyčajne v špecializovaných systémoch), keď je vopred presne známe, v ktorej oblasti pamäte RAM bude program vykonaný, prekladateľ vytvorí spustiteľný kód okamžite na fyzických adresách.

2. Metódy prideľovania pamäte bez použitia miesta na disku




Ryža. 2.8. Klasifikácia metód alokácie pamäte

Všetky metódy správy pamäte možno rozdeliť do dvoch tried: metódy využívajúce pohyb procesov medzi RAM a diskom a metódy, ktoré ju nepoužívajú (obrázok 2.8). Začnime s poslednou, jednoduchšou triedou metód.

2.1. Prideľovanie pamäte pevnými oddielmi

Najjednoduchší spôsob, ako spravovať RAM, je rozdeliť ju na niekoľko sekcií s pevnou veľkosťou. Operátor to môže vykonať manuálne počas spúšťania systému alebo počas jeho generovania. Ďalšia úloha prijatá na vykonanie sa umiestni buď do všeobecného frontu (obrázok 2.9a) alebo do frontu do určitej sekcie (obrázok 2.9b).

Subsystém správy pamäte v tomto prípade vykonáva nasledovné: úlohy:

· porovnanie veľkosti programu prijatého na spustenie a voľných oddielov, vyberie vhodný oddiel,



načíta program a nakonfiguruje adresy.

Ryža. 2.9. Pridelenie pamäte pevnými oddielmi:
a - so všeobecným frontom; b - so samostatnými frontami

V prípade zrejmého výhodu- jednoduchosť implementácie - táto metóda má významné chyba- tuhosť. Keďže v každej sekcii môže byť spustený iba jeden program, úroveň multiprogramovania je vopred obmedzená počtom sekcií bez ohľadu na veľkosť programov. Aj keď je program malý, zaberie celý oddiel, čo má za následok neefektívne využitie pamäte. Na druhej strane, aj keď kapacita RAM stroja umožňuje vykonávať určitý program, rozdelenie pamäte na partície mu to neumožňuje.

2.2. Prideľovanie pamäte variabilnými oddielmi

V tomto prípade nie je pamäť stroja vopred rozdelená na sekcie. Najprv je všetka pamäť voľná. Každej novo prichádzajúcej úlohe je pridelená pamäť, ktorú potrebuje. Ak nie je dostatok pamäte, úloha nebude prijatá na vykonanie a zostane vo fronte. Po dokončení úlohy sa pamäť uvoľní a do tohto priestoru je možné načítať inú úlohu. RAM je teda v ľubovoľnom časovom bode náhodná sekvencia obsadených a voľných oblastí (partícií) ľubovoľnej veľkosti.

Obrázok 2.10 zobrazuje stav pamäte v rôznych časových bodoch pri použití dynamickej alokácie. Takže v momente t 0 je v pamäti iba OS a v momente t 1 je pamäť rozdelená medzi 5 úloh a úloha P4 po dokončení opustí pamäť. Priestor uvoľnený po úlohe P4 je vyplnený úlohou P6, ktorá prišla v čase t3.

Úlohy operačného systému pri implementácii tejto metódy správy pamäte sú:

· udržiavanie tabuliek voľných a obsadených oblastí, ktoré uvádzajú počiatočné adresy a veľkosti pamäťových oblastí,

· keď príde nová úloha - analyzujte požiadavku, pozrite si tabuľku voľných oblastí a vyberte partíciu, ktorej veľkosť je dostatočná na umiestnenie prichádzajúcej úlohy,

· po splnení úlohy aktualizácia tabuliek voľných a obsadených oblastí.

Kód sa počas vykonávania nepohybuje, čo znamená, že jednorazové úpravy adresy je možné vykonať pomocou pohyblivého zavádzača. možno vykonať podľa rôznych pravidiel, ako napríklad „prvý oddiel, ktorý má dostatočnú veľkosť“ alebo „oddiel, ktorý má najmenšiu dostatočnú veľkosť“ alebo „oddiel, ktorý má najväčšiu dostatočnú veľkosť“. Všetky tieto pravidlá majú svoje výhody a nevýhody.



Výber sekcie pre novo prijatú úlohu možno vykonať podľa rôznych pravidiel, ako napríklad „prvý oddiel, ktorý má dostatočnú veľkosť“ alebo „oddiel, ktorý má najmenšiu dostatočnú veľkosť“ alebo „oddiel, ktorý má najväčšiu dostatočnú veľkosť“. Všetky tieto pravidlá majú svoje výhody a nevýhody.

Ryža. 2.10. Prideľovanie pamäte dynamickými oddielmi

V porovnaní s metódou prideľovania pamäte s pevným oddielom má táto metóda oveľa väčšiu flexibilitu, ale je vo svojej podstate veľmi vážna. chyba - fragmentácia pamäte. Fragmentácia- ide o prítomnosť veľkého počtu nesúvislých oblastí voľnej pamäte veľmi malej veľkosti (fragmenty). Také malé, že žiadny z novoprichádzajúcich programov sa nezmestí do žiadnej sekcie, hoci celková veľkosť fragmentov môže byť významná, ďaleko presahujúca požadované množstvo pamäte.

2.3. Pohyblivé sekcie



Jednou z metód boja proti fragmentácii je presunúť všetky obsadené oblasti smerom k vyšším alebo nižším adresám, takže všetka voľná pamäť tvorí jednu voľnú oblasť (obrázok 2.11). Okrem funkcií, ktoré OS vykonáva pri prideľovaní pamäte do variabilných partícií, musí v tomto prípade z času na čas kopírovať obsah partícií z jedného pamäťového miesta na druhé, pričom upravuje tabuľky voľných a obsadených oblastí. Tento postup sa nazýva „kompresia“.

Ryža. 2.11. Prideľovanie pamäte presúvaním oddielov

Kompresiu je možné vykonať buď vždy, keď je úloha dokončená, alebo iba vtedy, keď neexistuje žiadna voľná oblasť dostatočnej veľkosti pre novo prichádzajúcu úlohu. V prvom prípade je potrebná menšia výpočtová práca pri nastavovaní tabuliek a v druhom sa postup kompresie vykonáva menej často. Keďže programy sa pri vykonávaní pohybujú okolo pamäte RAM, konverzia adries z virtuálnej na fyzickú formu sa musí vykonávať dynamickým spôsobom.

Hoci kompresný postup vedie k efektívnejšiemu využitiu pamäte, môže byť časovo náročný, čo často prevyšuje výhody tejto metódy.

V tomto prípade pamäť označuje hlavnú pamäť počítača. V jednoprogramových operačných systémoch je hlavná pamäť rozdelená na dve časti. Jedna časť je pre operačný systém (rezidentný monitor, jadro) a druhá je pre aktuálne spustený program. V operačných systémoch s viacerými programami musí byť „používateľská“ časť pamäte – najdôležitejší zdroj výpočtového systému – distribuovaná tak, aby vyhovovala niekoľkým procesom, vrátane procesov OS. Túto úlohu prideľovania dynamicky vykonáva operačný systém pomocou špeciálneho podsystému správy pamäte ( správa pamäte). Efektívna správa pamäte je životne dôležitá pre multitaskingové systémy. Ak je v pamäti malý počet procesov, procesy strávia značnú časť času čakaním na I/O a zaťaženie procesora bude nízke.

V skorých operačných systémoch bola správa pamäte jednoducho záležitosťou načítania programu a jeho údajov z nejakého externého úložného zariadenia (diernej pásky, magnetickej pásky alebo magnetického disku) do pamäte RAM. V tomto prípade bola pamäť zdieľaná medzi programom a OS. Zapnuté ryža. 6.3 Sú zobrazené tri varianty takejto schémy. Prvý model sa predtým používal na sálových počítačoch a minipočítačoch. Druhý dizajn sa teraz používa na niektorých vreckových počítačoch a vstavaných systémoch; tretí vzor bol typický pre skoré osobné počítače MS-DOS.

Ryža. 6.3. Možnosti prideľovania pamäte

S príchodom multiprogramovania sa úlohy OS súvisiace s distribúciou dostupnej pamäte medzi niekoľko súčasne spustených programov výrazne skomplikovali.

Funkcie OS na správu pamäte v multiprogramových systémoch sú:

  • sledovanie (účtovanie) voľnej a použitej pamäte;
  • originálne a dynamická alokácia pamäte aplikačné procesy a samotný operačný systém a uvoľnenie pamäte po dokončení procesov;
  • nastavenie adries programov do určitej oblasti fyzickej pamäte;
  • úplné alebo čiastočné premiestnenie kódov a dát procesov z OP na disk, keď veľkosť OP nepostačuje na umiestnenie všetkých procesov a ich vrátenie do OP;
  • ochrana pamäte pridelenej procesu pred možným rušením iných procesov;
  • defragmentácia pamäte.

Uvedené funkcie nevyžadujú špeciálne vysvetlenie, zastavíme sa len pri úlohe prevodu adries programu pri jeho načítaní do OP.

Na identifikáciu premenných a príkazov v rôznych fázach životného cyklu programu, symbolické názvy, virtuálne (matematické, podmienené, logické - všetky synonymá) a fyzické adresy ( ryža. 6.4).

Ryža. 6.4. Typy adries

Symbolické názvy priraďuje používateľ pri písaní programov v algoritmickom jazyku alebo v jazyku symbolických inštrukcií. Virtuálne adresy generuje prekladač, ktorý preloží program do strojového jazyka. Keďže počas prekladu nie je známe, kde sa program nahrá do RAM, prekladač priraďuje premenným a príkazom virtuálne (podmienené) adresy, pričom štandardne predpokladá, že počiatočná adresa programu bude adresa nula.

Fyzické adresy zodpovedajú počtu buniek RAM, kde budú skutočne umiestnené premenné a príkazy.

Kolekcia virtuálnych adries procesu sa nazýva priestor virtuálnych adries. Rozsah adries virtuálneho priestoru pre všetky procesy je rovnaký a je určený veľkosťou bitovej adresy procesora (pre Pentium je adresný priestor 2 32 bajtov, s rozsahom adries od 0000,0000 16 do FFFF.FFFF 16).

Existujú dva zásadne odlišné prístupy k prevodu virtuálnych adries na fyzické. V prvom prípade sa táto konverzia vykoná raz pre každý proces, keď sa program na začiatku načíta do pamäte. Konverziu vykoná pohyblivý zavádzač na základe údajov, ktoré má o počiatočnej adrese fyzickej pamäte, do ktorej sa má program nahrať, ako aj informácií poskytnutých prekladačom o prvkoch programu citlivých na adresu.

Druhý spôsob je, že sa program načíta do pamäte na virtuálnych adresách. Počas vykonávania programu, pri každom prístupe k pamäti, operačný systém konvertuje virtuálne adresy na fyzické adresy.

Pridelenie pamäte

Existuje množstvo základných problémov so správou pamäte, ktoré sa v rôznych operačných systémoch riešia odlišne. Napríklad, mala by byť každému procesu priradená jedna súvislá oblasť fyzickej pamäte alebo môže byť pamäť pridelená po častiach? Mali by segmenty programu načítané do pamäte zostať na jednom mieste počas vykonávania procesu alebo je možné ich z času na čas presunúť? Čo robiť, ak sa segmenty programu nezmestia do dostupnej pamäte? Ako znížiť náklady na systémové prostriedky na správu pamäte? Existuje množstvo ďalších rovnako zaujímavých problémov so správou pamäte [ 5 , 10 , 13 , 17 ].

Nižšie je uvedená klasifikácia metód alokácie pamäte, v ktorej sa rozlišujú dve triedy metód - s pohybom procesných segmentov medzi OP a VP (diskom) a bez pohybu, t.j. bez použitia externej pamäte ( ryža. 6.5). Táto klasifikácia zohľadňuje iba hlavné črty metód. Pre každú metódu je možné použiť niekoľko rôznych algoritmov na jej implementáciu.

Ryža. 6.5. Klasifikácia metód alokácie pamäte

Zapnuté ryža. 6.6 sú uvedené dva príklady pevnej distribúcie. Jednou z možností je použiť rovnako veľké priečky. V tomto prípade môže byť akýkoľvek proces, ktorého veľkosť nepresahuje veľkosť oddielu, načítaný do ľubovoľného dostupného oddielu. Ak sú všetky oddiely zaneprázdnené a neexistujú žiadne procesy v stave pripravenosti alebo spustenia, OS môže uvoľniť proces z ľubovoľného oddielu a načítať iný proces, čím udrží procesor zaneprázdnený.

Ryža. 6.6. Pevné možnosti prideľovania pamäte

Pri použití rovnako veľkých oddielov existujú dva problémy.

  1. Program môže byť príliš veľký na to, aby sa zmestil do oblasti. V tomto prípade musí programátor navrhnúť program, ktorý používa prekrytia tak, aby bola v danom čase potrebná iba jedna časť pamäte. Ak je potrebný modul, ktorý momentálne nie je v OP, používateľský program ho musí nahrať do programovej pamäte. V tomto prípade je teda správa pamäte z veľkej časti na programátorovi.
  2. Používanie OP je mimoriadne neefektívne. Akýkoľvek program, bez ohľadu na jeho veľkosť, zaberá celý oddiel. To môže zanechať veľké nevyužité oblasti pamäte. Tento jav nevyužitej pamäte sa nazýva vnútorná fragmentácia.

S týmito ťažkosťami možno bojovať (aj keď nie úplne odstrániť) použitím priečok rôznych veľkostí. V tomto prípade sa program do veľkosti 8 MB zaobíde bez prekryvov a malé partície môžu znížiť vnútornú fragmentáciu pri načítavaní malých programov.

V prípade, že oddiely majú rovnaký oddiel, umiestňovanie procesov je triviálne - do ľubovoľného voľného oddielu. Ak sú všetky oddiely obsadené procesmi, ktoré nie sú pripravené na okamžité spustenie, ktorýkoľvek z nich môže byť odstránený, aby sa uvoľnila pamäť pre nový proces.

Keď majú oddiely rôznu veľkosť, existujú dva možné prístupy k priraďovaniu procesov k pamäťovým oddielom. Najjednoduchším spôsobom je umiestniť každý proces na najmenšiu oblasť, do ktorej sa proces zmestí (v takom prípade špecifikácia používateľa špecifikuje veľkosť požadovanej pamäte). Pri tomto prístupe každý oddiel vyžaduje front plánovača, ktorý ukladá nezaťažené procesy určené pre tento pamäťový oddiel. Výhodou tejto metódy je možnosť rozložiť procesy medzi úseky OP tak, aby sa minimalizovala vnútorná fragmentácia.

Nevýhodou je, že oddelené fronty pre oddiely môžu viesť k neoptimálnemu prideľovaniu pamäte pre systém ako celok. Napríklad, ak v určitom okamihu neexistujú žiadne procesy s veľkosťou medzi 7 a 12 MB, potom bude oblasť s veľkosťou 12 MB prázdna, keď ju môžu použiť menšie procesy. Preto je vhodnejšie použiť jeden rad pre všetky procesy. V momente, keď je potrebné načítať proces do OP, sa vyberie najmenšia dostupná partícia, do ktorej sa proces zmestí.

Vo všeobecnosti možno poznamenať, že schémy s pevné úseky relatívne jednoduché, majú minimálne požiadavky na operačný systém; Réžia procesora pri prideľovaní pamäte je malá. Tieto schémy však majú vážne nevýhody.

  1. Počet oddielov určený v čase generovania systému obmedzuje počet aktívnych procesov (t. j. úroveň multiprogramovania).
  2. Keďže veľkosti oddielov sú prednastavené počas generovania systému, malé úlohy majú za následok neefektívne využitie pamäte. V prostrediach, kde sú vopred známe pamäťové nároky všetkých úloh, môže byť použitie diskutovanej schémy opodstatnené, ale vo väčšine prípadov je účinnosť tejto technológie extrémne nízka.

Na prekonanie ťažkostí spojených s pevnou alokáciou bol vyvinutý alternatívny prístup známy ako dynamická alokácia. Kedysi tento prístup aplikovala spoločnosť IBM v operačnom systéme pre sálové počítače v OS/MVT (multiprogramovanie s premenlivým počtom úloh - Multiprogramovanie S premenlivým počtom úloh). Neskôr bol rovnaký prístup k prideľovaniu pamäte použitý v OS počítačov ES [ 12 ] .

Dynamická alokácia vytvára premenlivý počet oddielov s premenlivou dĺžkou. Keď je proces umiestnený v hlavnej pamäti, je mu pridelené presne požadované množstvo pamäte. Ako príklad zvážte použitie 64 MB ( ryža. 6.7) Hlavná pamäť. Na začiatku je všetka pamäť prázdna okrem oblasti používanej operačným systémom. Prvé tri procesy sa načítajú do pamäte počnúc adresou, kde končí OS a využívajú toľko pamäte, koľko daný proces vyžaduje. Potom na konci OP zostáva voľná oblasť pamäte, príliš malá na to, aby sa do nej zmestil štvrtý proces. V určitom okamihu sú všetky procesy v pamäti neaktívne a operačný systém uvoľní druhý proces, po ktorom zostane dostatok pamäte na načítanie nového, štvrtého procesu.

Ryža. 6.7. Prípad použitia pamäte

Keďže proces 4 je menší ako proces 2, stále je k dispozícii určitá voľná pamäť. Potom, čo sa v určitom okamihu ukázalo, že všetky procesy sú neaktívne, ale proces 2 bol pripravený na prácu, v pamäti preň nie je voľné miesto a OS je nútený uvoľniť proces 1, aby sa uvoľnil potrebný priestor a miesto proces 2 v OP. Ako ukazuje tento príklad, táto metóda začína dobre, ale pokračuje zle. V konečnom dôsledku to vedie k veľkému množstvu malých voľných pamäťových priestorov, v ktorých nie je priestor na umiestnenie akéhokoľvek nového procesu. Tento jav sa nazýva vonkajšia fragmentácia, ktorá odráža skutočnosť, že pamäť mimo všetkých oddielov sa stáva veľmi fragmentovanou.

Jednou z metód na prekonanie vonkajšej fragmentácie je zhutňovanie procesov v OP. To sa deje presunutím všetkých obsadených oblastí tak, aby všetka voľná pamäť tvorila jednu voľnú oblasť. Okrem funkcií, ktoré OS vykonáva pri prideľovaní pamäte dynamickým oddielom, musí v tomto prípade z času na čas kopírovať obsah oddielov z jedného miesta na druhé, pričom upravuje tabuľky voľných a obsadených oblastí. Tento postup sa nazýva zhutňovanie alebo stláčanie.

Uveďme si v tomto prípade funkcie operačného systému pre správu pamäte.

  1. Presunie všetky obsadené sekcie smerom k vysokým alebo nízkym adresám zakaždým, keď sa proces ukončí, alebo pre novovytvorený proces, ak neexistuje dostatočne veľký oddiel.
  2. Oprava tabuliek voľných a obsadených plôch.
  3. Zmena adries príkazov a údajov, ku ktorým pristupujú procesy, keď sa pohybujú v pamäti pomocou relatívne adresovanie.
  4. Hardvérová podpora pre proces dynamickej konverzie relatívnych adries na absolútne adresy hlavnej pamäte.
  5. Ochrana pamäte pridelenej procesu pred vzájomným vplyvom iných procesov.

Zhutnenie je možné vykonať buď pri každom ukončení procesu, alebo len vtedy, keď neexistuje žiadna voľná oblasť dostatočnej veľkosti pre novovytvorený proces. V prvom prípade je potrebná menšia výpočtová práca pri úprave tabuliek voľných a obsadených oblastí a v druhom sa postup kompresie vykonáva menej často.

Keďže sa program počas behu pohybuje okolo pamäte RAM, v tomto prípade nie je možné konfigurovať adresy pomocou pohyblivého zavádzača. Tu je vhodnejší dynamický preklad adries. Výhody prideľovania pamäte premiestniteľnými partíciami sú efektívne využitie RAM, eliminácia internej a externej fragmentácie, nevýhodou je dodatočná réžia OS.

Pri použití pevnej schémy prideľovania bude proces vždy priradený k rovnakej sekcii pamäte potom, čo je odstránená a potom načítaná do pamäte. To umožňuje použitie jednoduchého zavádzača, ktorý po načítaní procesu nahradí všetky relatívne referencie absolútnymi adresami pamäte určenými na základe základnej adresy načítaného procesu.

Situácia sa skomplikuje, ak sú veľkosti oddielov rovnaké (alebo nerovnaké) a existuje jeden rad procesov – proces môže počas behu zaberať rôzne oddiely. Rovnaká situácia je možná pri dynamickej distribúcii. V týchto prípadoch nie je umiestnenie príkazov a údajov, ku ktorým proces pristupuje, pevné a mení sa vždy, keď sa proces vyloží, načíta alebo presunie. Na vyriešenie tohto problému programy používajú relatívne adresy. To znamená, že všetky odkazy na pamäť v procese zavádzania sú relatívne k začiatku tohto programu. Na správne fungovanie programu je teda potrebný hardvérový mechanizmus, ktorý by pri vykonávaní príkazu pristupujúceho k pamäti preložil relatívne adresy na fyzické.

Bežne používaná metóda prekladu je znázornená v ryža. 6.8. Keď proces vstúpi do bežiaceho stavu, špeciálny register procesov nazývaný základný register sa načíta so štartovacou adresou procesu v hlavnej pamäti. Okrem toho sa používa register „bounds“, ktorý obsahuje adresu poslednej bunky programu. Tieto hodnoty sa zapisujú do registrov pri načítaní programu do hlavnej pamäte. Keď sa proces vykonáva, relatívne adresy v inštrukciách spracováva procesor v dvoch fázach. Najprv sa hodnota základného registra pripočíta k relatívnej adrese, aby sa získala absolútna adresa. Výsledná absolútna adresa sa potom porovná s hodnotou v hraničnom registri. Ak prijatá absolútna adresa patrí danému procesu, príkaz možno vykonať. V opačnom prípade sa vygeneruje prerušenie zodpovedajúce tejto chybe.

Pamäť tu znamená RAM.

Hlavné funkcie operačného systému pre správu pamäte:

1. sledovanie voľnej a použitej pamäte

2. pridelenie pamäte procesom a uvoľnenie pamäte po ich ukončení

3. vysťahovanie procesných kódov a dát z OP na pevný disk, keď veľkosť OP nestačí na všetky procesy a vrátenie týchto procesov do OP, keď sa uvoľní miesto

4. nastavenie adries programov do určitej oblasti fyzickej pamäte

Taktiež sa OS musí vysporiadať s dynamickou alokáciou pamäte, t.j. splniť požiadavky aplikácií na dodatočnú pamäť počas ich spustenia.

Ďalšou dôležitou funkciou OS je defragmentácia pamäte, pretože... Prideľovanie pamäte náhodnej dĺžky v náhodnom čase z celkovej pamäte vedie k fragmentácii, ktorá výrazne spomaľuje systém.

Dôležitá je aj ochrana pamäte, ktorú implementujú softvérové ​​moduly OS v úzkej interakcii s hardvérom. Spočíva v zabránení bežiacemu procesu zapisovať alebo čítať dáta z pamäte určenej pre iný proces.

ETAPY VÝVOJA POČÍTAČA A OS, CHARAKTERIZUJTE KAŽDÚ ETAPU

Pretože OS sa objavil a vyvinul počas konštrukcie počítača, potom sú tieto udalosti navzájom historicky spojené. Existujú štyri hlavné fázy:

1. Prvá generácia (1945-1955)

Ako relé boli použité elektrónky. Ovládanie hlavných funkcií sa uskutočňovalo prepojením patch panelov pomocou vodičov. O prítomnosti OS sa nehovorilo.

S vydaním diernych štítkov bolo možné písať a čítať programy.

2. Druhá generácia (1955-65)

Vzhľad tranzistora zvýšil spoľahlivosť prevádzky stroja a objavila sa možnosť dlhodobej prevádzky. Objemné a drahé počítače, ktoré sa objavili, sa nazývali hlavné rámy. Objavili sa systémy na dávkové spracovanie informácií a efektívne využitie počítačového času (zbieranie veľkého množstva diernych štítkov a ich príprava na lacnom počítači a vykonávanie výpočtov na drahšom počítači).



Programovanie v jazykoch Fortran a Assembler

3. Tretia generácia (1965-1980)

Použitie malých integrovaných obvodov, ktoré poskytujú cenové a kvalitatívne výhody. Najdôležitejším vývojom bolo využitie multitaskingu.

4. Štvrtá generácia (1980 – súčasnosť)

Došlo k prudkému rastu vo vývoji technickej aj softvérovej stránky počítačov. Najdôležitejším úspechom sa stal nástup kremíkového čipu (procesora) a diskových jednotiek. Došlo k progresii od OS s textovým rozhraním k OS s modernou, plnohodnotnou grafikou. Výpočtový výkon a efektívnosť počítačov sa stále viac zvyšuje.

SEKCIA I POČÍTAČOVÁ ARCHITEKTÚRA

1 Všeobecná bloková schéma počítača. Typy a triedy počítačov. Zariadenie osobných počítačov.

2 Koncepcia viacstrojových a viacprocesorových výpočtových systémov.

3 Typy zariadení na ukladanie informácií. Virtuálna pamäť. Zálohovanie.

4 Systémový softvér.

5 Typy operačných systémov. Operačné systémy pre osobné počítače.

6 Typy diskových jednotiek. Fyzické a logické chyby.

7 Druhy a účel aplikačného softvéru (textové editory, grafické procesory, utility, programovacie systémy).

8 Periférne zariadenia pre osobné počítače.

9 Dátové siete. Globálne a lokálne. Zariadenia potrebné na vytvorenie lokálnej siete (káble, konektory, spínacie zariadenia, smerovače).

10 Softvérové ​​sieťové protokoly. Model OSI (úroveň hardvéru, úroveň prenosu, úroveň používateľa). Podrobnosti o protokoloch transportnej vrstvy na príklade NetBEUI, IPX/SPX a TCP/IP.

11 Základné internetové služby. Webové stránky (HTTP), prenos súborov (FTP), e-mail (SMTP, POP3), vzdialená správa zdrojov (Telnet, SSH). Domain Name System (DNS).

12 Bezpečnosť informácií. Heslo a biometrické autentifikačné systémy. Neoprávnený prístup k údajom.

13 Útoky na sieťové odmietnutie služby (DOS, DDOS),

14 Útoky na „rozrušenie zásobníka“.

15 Počítačové vírusy, programy trójskych koní

OPERAČNÉ SYSTÉMY

16 OS v reálnom čase, popis a účel.

17 Základné funkcie OS, uveďte popis.

18 Definícia plánovania. Hlavné ciele

19 Popis algoritmu založeného na prioritách. Vedúci graf

20 Pojem proces a tok. Priestor virtuálnych adries

21 Popis algoritmu založeného na kvantizácii. Vedúci graf

22 Definícia odoslania. Hlavné ciele

23 Preemptívne a nepreemptívne plánovacie algoritmy . Uveďte výhody a nevýhody

24 Definícia swapovej a virtuálnej pamäte. Výhody a nevýhody

25 Koncepcie dôvernosti, integrity a dostupnosti údajov

26 Základy algoritmu symetrického šifrovania. Príklad

27 Základy asymetrického šifrovania. Príklad

28 Základné prístupy k vytvoreniu zálohy registra

29 funkcií operačného systému na správu pamäte

30 Etapy vývoja počítačov a OS, charakterizujte jednotlivé etapy