Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.programming > #28638
| 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) |
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
GC z uzyciem SLAT Sebastian Biały <heby@poczta.onet.pl> - 2016-06-07 22:34 +0200
csiph-web