Можно ли одновременно загружать две ОС одновременно?
Например В настоящее время у меня двойная загрузка Ubuntu 11.04 и Windows 7. Ubuntu работает на одном жестком диске емкостью 500 ГБ, Windows 7 работает на зеркале RAID 1 1 ТБ. Для переключения между двумя ОС требуется перезагрузка. Можно ли переключаться между двумя ОС без перезагрузки?
НОТА Я полностью осведомлен о возможностях VirtualBox и VMWare Player - я использую оба. Пожалуйста, не отвечайте "Используйте виртуализацию!"
РЕДАКТИРОВАТЬ: Если это невозможно, вы можете поделиться, почему это невозможно? Мне не кажется, что это будет так сложно. Имейте в виду, что мое видение не обременено знаниями!
windows-7
ubuntu
multi-boot
James Hill
источник
источник
Ответы:
Большинство, если не все, основные операционные системы ожидают эксклюзивного доступа к низкоуровневой функциональности главного компьютера (например, аппаратному обеспечению, портам и т. Д.) И не имеют никакой концепции совместного использования с чем-либо еще - просто не будет работать - таким образом, чтобы попытаться запустить две ОС одновременно в одной и той же системе, требуется некий прозрачный арбитр для защиты операционных систем друг от друга - иными словами, приложение для виртуализации.
источник
Похоже, вы отказываетесь от Hyper-V и Xen (так называемых «железных» гипервизоров), даже если они ближе всего к тому, о чем вы, похоже, просите. Да, это виртуализация, но не так, как VirtualBox.
Представьте, что что-то вроде VirtualBox было собственной операционной системой, поэтому вы могли установить крошечную ОС VirtualBox, а затем запускать Windows и Ubuntu бок о бок как виртуальные машины поверх ОС VirtualBox. Ну, это в основном то, что делают Hyper-V или Xen. Это всего лишь тонкий слой виртуализации между аппаратным обеспечением и гостевыми операционными системами, и он настолько близок, насколько это возможно, к непосредственному запуску их рядом с существующим оборудованием и существующими операционными системами.
Вы не для каждого из них требуется отдельный сервер, вы просто установите гипервизор, как если бы он был первой операционной системой на компьютере, а затем добавили Windows и Ubuntu в качестве виртуальных машин под гипервизором.
И Xen, и Hyper-V будут использовать Ubuntu и Windows в качестве гостевых операционных систем, хотя это может быть не поддерживаемая конфигурация. Xen более Linuxy, а Hyper-V - продукт MS, поэтому я бы посоветовал выбрать гипервизор для любой ОС, с которой вам удобнее.
источник
Самое близкое, что вы можете сделать ... это использовать спящий режим. К сожалению, операционные системы достаточно чужды друг другу, поэтому невозможно одновременно запускать обе ОС без реализации виртуализации. Честно говоря, виртуализация не так плоха, как вы думаете больше ... особенно, когда вы используете платформу виртуализации, которая поддерживает расширения "VT". Гостевые ОС получают возможность напрямую взаимодействовать с аппаратным обеспечением и имеют гораздо лучшее отображение памяти & amp; например. Я фактически установил гостевую ОС, установленную непосредственно на SSD ... и она работала быстрее, чем хост-ОС.
источник
Вот простая и короткая причина, по которой ответ «нет»: какое программное обеспечение будет контролировать ваше оборудование?
Если ОС 1 делает это, значит, вы не используете ОС 2. Если ОС 2 делает это, значит, вы не используете ОС 1. Если они оба делают это, то какое-то другое программное обеспечение должно было бы обеспечить их общий доступ к физическому оборудованию и это виртуализация (которую вы исключили).
источник
Вещи, которые приходят на ум:
- Управление памятью (RAM и кеш)
- Управление процессами (выполнение потоков процессов)
Таким образом, вам, вероятно, понадобится человек, занимающийся промежуточным использованием памяти и процессами между двумя ОС.
Это была бы другая ОС / прошивка.
Так что, если кто-то реализовал это, то os будет реализовывать это, вы можете получить 3, а не 2 Oss, работающих одновременно.
РЕДАКТИРОВАТЬ-
Добавление того, что управлял портами
Этот «человек посередине» по сути станет вашей хост-ОС, а другие ОС виртуализируются, и вы вернетесь к тому, что, как вы уже знали, было решением.
источник
Все операционные системы, о которых я знаю, требуют полного контроля над компьютерным оборудованием.
Это теоретически возможно, хотя. Обе ОС должны быть разработаны для:
Если оба эти условия будут выполнены, можно будет запускать две ОС одновременно без какой-либо виртуализации. Это было бы сродни двум ОС, использующим кооперативная многозадачность , Конечно, кооперативная многозадачность была почти заброшена из-за проблемы плохо написанных приложений, отказывающихся передавать контроль. Возможно, две правильно написанные ОС будут играть хорошо. Опять же, что будет стимулом?
источник
Позвольте мне обратиться к части «почему».
Одной из причин современной ОС является возможность одновременного запуска в системе нескольких программ (процессов) Если вы хотите сделать это безопасно, должно произойти следующее:
Вы, вероятно, (если у вас нет особых потребностей) не хотите разделять оперативную память в системе фиксированным образом - например, 256 МБ фиксированных на процесс - ограничивает вас до 8 процессов в системе 2 ГБ. Вам бы хотелось, чтобы каждый процесс мог «запрашивать» память и возвращать ее по завершении.
Вы также не хотите распределять устройства ввода-вывода фиксированным образом среди устройств. Как правило, вы хотите, чтобы какое-то или все оборудование, например, память, было общим ресурсом или, по крайней мере, только временно исключалось для определенных процессов в определенное время. Это требует, чтобы все процессы не пытались выполнять ввод-вывод самостоятельно, а «проходили» через что-то, чтобы планировать и координировать ввод-вывод. Планирование важно, так как большинство операций ввода-вывода намного медленнее, чем ЦП, поэтому вы можете заставить ЦП работать для других процессов, пока он ожидает ввода-вывода даже в одноядерной системе.
Чтобы сделать вышеупомянутое правильно, нужно воспользоваться несколькими аппаратными функциями процессора. Одним из них является MMU, другой защищенный режим. Могут ли две ОС совместно использовать эти аппаратные функции для запуска двух или более ОС?
Конечно, но в оборудовании нет ничего, что могло бы помешать одной ОС топать память других ОС. Если процессор находится в режиме ядра (он имеет только один режим ядра), любой код может делать все что угодно. На 100% возможно выполнение кода из одной ОС поверх кода или данных другой ОС. И мы знаем, что операционные системы имели уязвимости в прошлом и будут иметь больше в будущем. Так что это очень плохо для безопасности.
Теперь, разве не круто, если бы вы могли поместить еще один «слой» поверх этого и иметь необходимую аппаратную поддержку для нескольких ОС? Это именно то, что делают функции аппаратной виртуализации, они устанавливают аппаратный барьер между несколькими запущенными ОС, и для них существует «интерфейс» верхнего уровня, называемый гипервизором. Вы можете иметь только один гипервизор. И да, процессы, выполняемые в любой из ОС, должны выполнять три уровня для ввода / вывода (процесс - локальное ядро - гипервизор)
источник
Я знаю, что вы сказали, нет виртуализации, но что-то вроде сервера MS Hyper V может соответствовать вашим потребностям
источник
Нет другого пути, кроме виртуализации. Мне трудно получить точную информацию о том, какие гостевые системы будут работать для разных гипервизоров. http://en.wikipedia.org/wiki/Hypervisor Должно быть хорошее начало для получения некоторой информации, и Xen, возможно, стоит попробовать, хотя я бы подождал, пока кто-нибудь определенно подтвердит или опровергнет, поддерживает ли он гостевые системы Windows 7.
источник