2010-09-12 10 views
6

Być może brakuje mi czegoś, ale nie jest to piaskownica i wirtualizacja dokładnie taka sama koncepcja, tj. Oddzielająca pamięć dla aplikacji działających równolegle. Więc zastanawiam się, dlaczego mają różne nazwy, czy są jakieś różnice w sposobie ich zatrudniania?Piaskownica a wirtualizacja

Dziękujemy, Simon

Odpowiedz

1

Sandboxing oznacza izolację tylko, gdy wirtualizacja zwykle oznacza symulację jakiegoś sprzętu (maszyny wirtualnej). Wirtualizacja może się zdarzyć z naszym bez sandboxingu.

7

Pojęcia te dotyczą różnych problemów: Kiedy wirtualizujemy, jesteśmy ukrywającymi fizyczne ograniczenia maszyny (). Z drugiej strony piaskownica ustawia sztuczne limity na dostęp przez maszynę. Rozważ pamięć jako reprezentatywną analogię.

Wirtualizacja pamięci polega na umożliwieniu każdemu programowi dostępu do każdego adresu w przestrzeni 32- lub 64-bitowej, nawet jeśli nie ma tak dużo fizycznej pamięci RAM.

Piaskownica z pamięcią ma uniemożliwić programowi przeglądanie danych innego użytkownika, nawet jeśli mogą one zajmować komórki pamięci w pamięci.

Te dwie koncepcje są z pewnością związane ze wspólną implementacją pamięci wirtualnej. Jest to jednak wygodny artefakt implementacji, ponieważ tabela stron sprzętowych jest dostępna tylko dla jądra.

Zastanów się, jak zaimplementować je osobno, na komputerze z procesorem x86: Można wyizolować pamięć programów za pomocą tabel stron bez konieczności wymiany na dysk (sandboxing bez wirtualizacji). Alternatywnie można zaimplementować pełną pamięć wirtualną, ale także zapewnić dostęp na poziomie aplikacji do tabeli stron sprzętowych, aby mogli zobaczyć, co chcieli (wirtualizacja bez piaskownicy).

+0

Jak porównać te dwie koncepcje z wtyczkami przeglądarki internetowej i przeglądarkami lokalnymi? Uważam, że wtyczki do przeglądarek mają inną heurystykę niż VM i sandboxing dla ich pamięci i dostępu. – RBT

0

Piaskownica ogranicza dostęp do określonego programu. Wirtualizacja to mechanizm, który może pomóc w tym, ale piaskownica jest realizowana również za pomocą innych mechanizmów, podobnie jak wirtualizacja ma zastosowanie poza piaskownicą. Sandboxing to "co", wirtualizacja to "jak".

3

W rzeczywistości istnieją 3 koncepcje, które tutaj mieszają. Przede wszystkim jest to, co zapewnia system operacyjny, a to, co robi, oddziela przestrzeń pamięci dla aplikacji działających równolegle. I nazywa się virtual memory.

W systemach Virtual memory system operacyjny mapuje adres pamięci widziany przez aplikacje na rzeczywistą pamięć fizyczną. W ten sposób przestrzeń pamięci dla aplikacji może zostać oddzielona, ​​aby nigdy się nie zderzyć.

Drugą metodą jest piaskownica. Jest to dowolna technika, którą ty, programista, używasz do uruchamiania niezaufanego kodu. Jeśli ty, programista, piszesz system operacyjny, to z twojego punktu widzenia system pamięci wirtualnej, który piszesz, jest mechanizmem sandboxingu. Jeśli ty, programista, piszesz przeglądarkę internetową, sam system pamięci wirtualnej nie jest mechanizmem sandboxingu (widzisz inne perspektywy). Zamiast tego jest to mechanizm pionowy do wdrożenia piaskownicy dla wtyczek do przeglądarek. Google Chrome jest przykładem programu, który wykorzystuje mechanizm pamięci wirtualnej systemu operacyjnego do implementacji mechanizmu piaskownicy.

Ale pamięć wirtualna nie jest jedynym sposobem na wdrożenie piaskownicy.Na przykład język programowania tcl umożliwia tworzenie instancji tłumaczeń niewolniczych za pomocą polecenia interp. Interpreter niewolnik jest często używany do implementacji piaskownicy, ponieważ działa on w oddzielnej przestrzeni globalnej. Z punktu widzenia systemu operacyjnego dwaj tłumacze działają w tej samej przestrzeni pamięci w jednym procesie. Ale ponieważ na poziomie C dwaj tłumacze nigdy nie dzielą struktur danych (chyba że są wyraźnie zaprogramowani), są skutecznie rozdzielani.

Trzecią koncepcją jest wirtualizacja. Które jest ponownie oddzielone od piaskownicy z pamięcią wirtualną i. Podczas gdy pamięć wirtualna jest mechanizmem, który z punktu widzenia OS, piaskownice przetwarzają się nawzajem, wirtualizacja jest mechanizmem oddzielającym systemy operacyjne od siebie nawzajem. Przykład oprogramowania, które to robi, to: Vmware, Parallels Desktop, Xen i kernel virtual machine.

Powiązane problemy