Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #28638

GC z uzyciem SLAT

From Sebastian Biały <heby@poczta.onet.pl>
Newsgroups pl.comp.programming
Subject GC z uzyciem SLAT
Date 2016-06-07 22:34 +0200
Organization ATMAN - ATM S.A.
Message-ID <nj7b48$1in$1@node2.news.atman.pl> (permalink)

Show all headers | View raw


Cześć.

Taka ciekawostka:

http://www.scs.stanford.edu/~dm/home/papers/belay:dune.pdf

Mozna tam doczytać o tym że wykorzystując cechy cpu takie jak pagetables 
można przyspieszyć GC (acz dokumenty na które się powołuja jakoś 
niespecjalnie są o tym ;).

OK, moje pytanie jest nieco z boku. Wyobraźmy sobie że chcemy napisać 
bardzo prosty Hypervisior którego jedynym zadaniem jest zarzadzanie 
pamięcią w taki sposób:

fizyczna -> wirtualna -> wirtualna#2

Współcześnie dostepne sa mechanizmy SLAT[1] na procesorach Intela i AMD 
które de facto pozwalają wirtualizować wirtualną pamięć. Potrzebne to do 
dużych hypervisorów.

A moje pytanie jest następujące: czy ktoś wie czy mozna wykorzystać SLAT 
będąc zwykłym procesem w przestrzeni usera do wirtualizacji *własnej* 
pamięci? Wyobrażam sobie to tak że mój proces startuje, hypervisor 
dostarcza hyper_alloc, hyper_free i od tej pory reszta kodu korzystając 
z nich przechodzi przez SLAT.

Cele sa dwa:
a) coś na kształt natychmiastowego GC w osobnym watku (hypervisor 
zabiera pamięć, deallokuje ją w systemie asynchronicznie jednocześnie 
zapewniając natychmiastowy czysty page z innego miejsca)

b) save/restore - skoro mam kontrolę nad adresami pamięci virtualna#2 to 
w zasadzie możliwe bylo by zapisanie tej pamięci ze wskaźnikami a 
nastepnie odczytanie w inne miejsce (randomizm allokacji systemu 
operacyjnego) i przekonfigurowanie SLAT aby stały się znowu walidne.

Czytam o SLAT i jest malo informacji. Ponieważ Win8 ma wbudowany 
hypervisor który wymaga SLAT i jakoś jest obsługiwany to pewnie to jest 
możliwe. Jednak podstawowe pytanie brzmi: czy program w userspace może 
używać SLAT bez sterowników, trybów administratora itp?

PS. Tak, wiem że nie da się przekazywać pointerów z virtualna#2 do api 
systemu operacyjnego ale tak się sklada że algorytm (czysto 
obliczeniowy) mieli wyłacznie pamięć i plik (którego interfejs do r/w 
zapewnia mój hypervisor). Ewentualnie czy ktoś zna jakieś źrodło 
informacji o SLAT z poziomu pisania hypervisorów :) ?

[1] https://en.wikipedia.org/wiki/Second_Level_Address_Translation

Back to pl.comp.programming | Previous | Next | Find similar | Unroll thread


Thread

GC z uzyciem SLAT Sebastian Biały <heby@poczta.onet.pl> - 2016-06-07 22:34 +0200

csiph-web