Песочница действует как прокси. Вместо того, чтобы приложение или ОС запускались непосредственно на CPU, песочница может видеть, что приложение хочет сделать, и перехватывать инструкции, чтобы заставить их делать что-то еще. Это может быть использовано для предотвращения того, чтобы он делал то, что не должен, или мешал другим приложениям.
Например, предположим, что программа A хочет создать файл с именем document.txt
Обычно этот файл создается непосредственно на жестком диске. Но что, если программа B также хочет использовать document.txt
для чего-то еще?
Внутри песочницы жесткого диска на самом деле не существует. Все, что есть, это интерфейс, который притворяется жестким диском. Приложение может читать из него, и приложение может записывать в него, и с точки зрения приложения кажется, что это единственная программа, использующая document.txt
.
Но поскольку песочница может видеть и перехватывать все, что делает приложение, данные, которые программа A записывает в document.txt
безопасно хранятся в песочнице в специальном файле, который зарезервирован только для программы A. Когда программа A читает из document.txt
песочница подает ему данные из специального файла программы А.
ВМ похожа, но на более низком уровне и в большем масштабе. В тех случаях, когда изолированная программная среда приложения изменяет интерфейсы, которые приложение использует для взаимодействия с хостом, виртуальная машина способна выполнять изолированную программную среду для всей ОС, которая, как ожидается, будет иметь все свое собственное оборудование. Это требует виртуализации видеокарты, памяти, процессора, жестких дисков, USB-устройств, работы в сети и всего остального. Однако, поскольку виртуальная машина получает возможность отслеживать и перехватывать все, что пытается сделать ОС, она может устанавливать и применять искусственные ограничения, которые предотвращают конфликты.
Проще думать об этом так:
Обычно Windows говорит компьютеру, что делать. Если Windows находится внутри виртуальной машины как "гостевая операционная система", Guest-Windows сообщает виртуальной машине, что делать, и если виртуальная машина считает, что все в порядке, виртуальная машина перевернется и скажет компьютеру сделать то же самое. Если виртуальной машине не нравится то, что пыталась сделать Guest-Windows, она заблокирует это. Из-за того, как это реализовано, Guest-Windows не знает наверняка, работает ли она на виртуальной машине или нет, и поскольку виртуальная машина всегда имеет полный контроль, Guest-Windows должна жить в соответствии с правилами, установленными виртуальной машиной.