ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Segmentace - Wikipedie, otevřená encyklopedie

Segmentace

Z Wikipedie, otevřené encyklopedie

Možná hledáte: segmentaci organismů čili článkování.

Segmentace je adresovací technika operační paměti, která umožňuje zobrazit virtuální paměťový prostor (tzv. virtuální paměť) do fyzického adresového prostoru operační paměti. Mapování adresového prostoru se provádí po segmentech, které mohou mít různou velikost (často zarovnanou na alespoň 4 byte a menší, než je velikost virtuální paměti). Segment obvykle není náhodně vybranou částí paměti, ale má nějaký význam - například segment obsahující kód programu, segment obsahující kód knihovny, segment obsahující zásobník procesu.

Obsah

[editovat] Segmentace procesorů 80286+

Segmentace v chráněném módu na procesorech x86 od Intel 80286 výše vykazuje znaky připomínající reálný mód. Segmentace je povinná a pokud je zapnuto stránkování, provádí se před ním, tedy virtuální adresa se segmentací překládá na lineární adresu, která se stránkováním překládá na fyzickou adresu.

Virtuální adresa se skládá ze dvou částí: selektor segmentu a offset. Selektor obsahuje tři příznakové bity a index do tabulky GDT (global descriptor table) nebo LDT (local descriptor table). Selektor je uložen v segmentovém registru, kromě něj obsahuje segmentový registr i „cache“ příslušného řádku z GDT nebo LDT (zvaného descriptor) pro rychlejší vyhodnocování (k této cache nelze programově přistupovat, proto se říká že se nachází v neviditelné části registru).

[editovat] Selektor

  • Horních 13 bitů selektoru je indexem do tabulky deskriptorů.
  • Další bit určuje zda se bude hledat v GDT nebo LDT.
  • Dva poslední nejnižší bity určují úroveň oprávnění segmetu.

Když se segmentový registr naplní selektorem nahraje se do jeho neviditelné části deskriptor na který daný selektor v tabulce ukazoval.

[editovat] Deskriptor

  • 32 bitová báze (Počáteční adresa daného segmentu), rozdělená na dolních 24 bitů a horních 8 bitů (Intel 80286 neměl horní část).
  • 20-bitový limit segmentu
  • Příznaky:
    • bit „Granularity“ (značí se G)
      Pokud je G=0 20-bitový limit se počítá po bajtech, tzn.:Limit = 20 bitů = 1048575*bajt =+- 1 MB segment bude mít tedy limit 1MB.
      Pokud bude G=1 tak se limit počítá po 4 KB, tzn.:Limit = 20 bitů = 1048575*Kb =+- 4096 MB segment bude tedy mít limit 4GB.
    • typ segmentu (kódový, datový, systémový)
    • přístupová práva segmentu (READ/WRITE/EXECUTE - kombinace WRITE a EXECUTE je ovšem nenastavitelná).

[editovat] Tabulky deskriptorů

Tabulek deskriptorů může být více. Kromě IDT, která se používá pro interrupty a se segmentací nesouvisí, existuje však pouze jedna kořenová nazvána GDT.Její přímá adresa a limit(limit velikosti tabulky) je v registru GDTR.Je to jedinná přímo viditelná přímá adresa v celém systému.Jinak se adresuje jedinně přes selektory a deskriptory. V GTD se nachází globální segmety kódové(.code) i datové (.data) a rovněž deskritpor popisující tabulky LDT.Například každý proces může mít svou vlastní tabulku LDT. Dalším deskriptorem v tabulce GDT je TSS (Task State Segment). Do TSS se ukládájí obsahy registrů procesu při přepínání kontextu u multitaskingu. Je to jakási pomyslná záloha běžícího procesu. Existuje ještě deskriptor brány.Ten se používá pokud chce nějaký méně privilegovaný prces přistoupit k paměti s vyššími privilégii. Číslo 0 znamená nejvyšší privilégia a 3 nejnižší privilégia. Např.: Jádro OS běží jako ring 0 a uživatelské programy pod ring 3.

V tabulce LDT příslušného procesu jsou uložené deskriptory daného procesu,který tabulku vlastní. Je to jednoduché,pokud chcete přeložit logickou adresu na lineární je třeba nahrát do segmentového registru příslušný selektor,kterým se budeme odkazovat v tabulce (LDT/GDT) najdeme si příslušnou 32-bitovou bázovou adresu segmentu,který se snažíme zaadresovat. Naše bázová adresa se sečte s adresou efektivní (představte si jako offset v poli) a tím vzniká adresa linární. Pokud je daný offset větší než je limit segmentu procesor vyvolá výjimku (druh přerušení), na kterou operační systém obvykle reaguje hlášením chyby aplikaci (v systémech UNIXového typu signálem SIGSEGV) a v případě neošetření ukončením aplikace.

[editovat] Související články



aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -