33

Можно ли одновременно загружать две ОС одновременно?

Например: в настоящее время у меня двойная загрузка Ubuntu 11.04 и Windows 7. Ubuntu работает на одном жестком диске 500 ГБ, Windows 7 работает на зеркале RAID 1 1 ТБ. Для переключения между двумя ОС требуется перезагрузка. Можно ли переключаться между двумя ОС без перезагрузки?

ПРИМЕЧАНИЕ: я полностью осведомлен о возможностях VirtualBox и VMWare Player - я использую оба. Пожалуйста, не отвечайте "Используйте виртуализацию!""

РЕДАКТИРОВАТЬ: Если это невозможно, вы можете поделиться, почему это невозможно? Мне не кажется, что это будет так сложно. Имейте в виду, что мое видение не обременено знаниями!

9 ответов9

35

Большинство, если не все, основные операционные системы ожидают эксклюзивного доступа к низкоуровневой функциональности главного компьютера (например, аппаратному обеспечению, портам и т.д.) И не имеют никакой концепции совместного использования с чем-либо еще - просто не будет работать - таким образом, чтобы попытаться запустить две ОС одновременно в одной и той же системе, требуется некий прозрачный арбитр для защиты операционных систем друг от друга - иными словами, приложение для виртуализации.

14

Похоже, вы отказываетесь от Hyper-V и Xen (так называемых «железных» гипервизоров), даже если они ближе всего к тому, о чем вы, похоже, просите. Да, это виртуализация, но не так, как VirtualBox.

Представьте, что что-то вроде VirtualBox было собственной операционной системой, поэтому вы могли установить крошечную ОС VirtualBox, а затем запускать Windows и Ubuntu бок о бок как виртуальные машины поверх ОС VirtualBox. Ну, это в основном то, что делают Hyper-V или Xen. Это всего лишь тонкий слой виртуализации между аппаратным обеспечением и гостевыми операционными системами, и он настолько близок, насколько это возможно, к непосредственному запуску их рядом с существующим оборудованием и существующими операционными системами.

Вам не нужен отдельный сервер для любого из них, вы просто установите гипервизор, как если бы это была первая операционная система на компьютере, а затем добавили Windows и Ubuntu в качестве виртуальных машин под гипервизором.

И Xen, и Hyper-V будут использовать Ubuntu и Windows в качестве гостевых операционных систем, хотя это может быть не поддерживаемая конфигурация. Xen более Linuxy, а Hyper-V - продукт MS, поэтому я бы посоветовал выбрать гипервизор в зависимости от того, какая ОС вам удобнее.

8

Самое близкое, что вы можете сделать ... это использовать спящий режим. К сожалению, операционные системы достаточно чужды друг другу, поэтому невозможно одновременно запускать обе ОС без реализации виртуализации. Честно говоря, виртуализация не так плоха, как вы думаете больше ... особенно, когда вы используете платформу виртуализации, которая поддерживает расширения "VT". Гостевые ОС получают возможность напрямую взаимодействовать с оборудованием и имеют гораздо лучшее отображение памяти и тому подобное. Я фактически установил гостевую ОС, установленную непосредственно на SSD ... и она работала быстрее, чем хост-ОС.

7

Вот простая и короткая причина, по которой ответ «нет»: какое программное обеспечение будет контролировать ваше оборудование?

Если OS 1 делает это, значит, вы не используете OS 2. Если OS 2 делает это, значит, вы не используете OS 1. Если они оба сделают это, то какое-то другое программное обеспечение должно будет обеспечить их общий доступ к физическому оборудованию, и это виртуализация (которую вы исключили).

2

Вещи, которые приходят на ум:
- Управление памятью (RAM и кеш)
- Управление процессами (выполнение потоков процессов)

Таким образом, вам, вероятно, понадобится человек, занимающийся промежуточным использованием памяти и процессами между двумя ОС.

Это была бы другая ОС / прошивка.
Так что, если кто-то реализовал это, то os будет реализовывать это, вы можете получить 3, а не 2 Oss, работающих одновременно.

РЕДАКТИРОВАТЬ-
Добавление того, что управлял портами

Этот «человек посередине» по сути станет вашей хост-ОС, а другие ОС виртуализируются, и вы вернетесь к тому, что, как вы уже знали, было решением.

2

Все операционные системы, о которых я знаю, требуют полного контроля над компьютерным оборудованием.

Это теоретически возможно, хотя. Обе ОС должны быть разработаны для:

  • Запускается как ведущий (полный контроль над оборудованием) и ведомый (запрашивает ресурсы у основной ОС)
  • Отказ от управления оборудованием по запросу из другой ОС

Если оба эти условия будут выполнены, можно будет запускать две ОС одновременно без какой-либо виртуализации. Это было бы сродни двум ОС, использующим совместную многозадачность. Конечно, кооперативная многозадачность была почти заброшена из-за проблемы плохо написанных приложений, отказывающихся передавать контроль. Возможно, две правильно написанные ОС будут играть хорошо. Опять же, что будет стимулом?

1

Позвольте мне обратиться к части "почему".

Одной из причин современной ОС является возможность одновременного запуска нескольких программ (процессов) в системе. Если вы хотите сделать это безопасно, должно произойти следующее:

  • Вы, вероятно, (если у вас нет особых потребностей) не хотите разделять оперативную память в системе фиксированным образом - например, 256 МБ фиксированных на процесс - ограничивает вас до 8 процессов в системе 2 ГБ. Вам бы хотелось, чтобы каждый процесс мог "запрашивать" память и возвращать ее по завершении.

  • Вы также не хотите распределять устройства ввода-вывода фиксированным образом среди устройств. Как правило, вы хотите, чтобы какое-то или все оборудование, например, память, было общим ресурсом или, по крайней мере, только временно исключалось для определенных процессов в определенное время. Это требует, чтобы все процессы не пытались выполнять ввод-вывод самостоятельно, а "проходили" через что-то, чтобы планировать и координировать ввод-вывод. Планирование важно, так как большинство операций ввода-вывода намного медленнее, чем ЦП, поэтому вы можете заставить ЦП работать для других процессов, пока он ожидает ввода-вывода даже в одноядерной системе.

Чтобы сделать вышеупомянутое правильно, нужно воспользоваться несколькими аппаратными функциями процессора. Одним из них является MMU, другой защищенный режим. Могут ли две ОС совместно использовать эти аппаратные функции для запуска двух или более ОС?

Конечно, но в оборудовании нет ничего, что могло бы помешать одной ОС топтать память других ОС. Если процессор находится в режиме ядра (у него только один режим ядра), любой код может делать все что угодно. На 100% возможно выполнение кода из одной ОС поверх кода или данных другой ОС. И мы знаем, что операционные системы имели уязвимости в прошлом и будут иметь больше в будущем. Так что это очень плохо для безопасности.

Теперь, разве не круто, если бы вы могли поместить еще один "слой" поверх этого и иметь необходимую аппаратную поддержку для нескольких ОС? Это именно то, что делают функции аппаратной виртуализации, они устанавливают аппаратный барьер между несколькими запущенными ОС, и для них существует "интерфейс" верхнего уровня, называемый гипервизором. Вы можете иметь только один гипервизор. И да, процессы, выполняемые в любой из ОС, должны выполнять три уровня для ввода / вывода (процесс - локальное ядро - гипервизор)

0

Нет другого пути, кроме виртуализации. Мне трудно получить точную информацию о том, какие гостевые системы будут работать для разных гипервизоров. http://en.wikipedia.org/wiki/Hypervisor Должно быть хорошее начало, чтобы получить некоторую информацию, и Xen, возможно, стоит попробовать, хотя я бы подождал, пока кто-то определенно подтвердит или опровергнет, поддерживает ли он гостей Windows 7.

0

Я знаю, что вы сказали, нет виртуализации, но что-то вроде сервера MS Hyper V может соответствовать вашим потребностям

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .