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

33

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

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

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

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

James Hill
источник
На мейнфрейме с разделенной памятью ...
Fiasco Labs

Ответы:

35

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

Linker3000
источник
Приложение виртуализации, кажется, консенсус. Есть ли какие-либо бесплатные или открытые варианты, которые вы бы порекомендовали?
James Hill
1
Это действительно зависит от того, что вы пытаетесь сделать, так как некоторые приложения виртуальной машины лучше в некоторых вещах, чем другие, но в целом: выберите свою основную ОС по умолчанию (т.е. загрузку в Ubuntu или Windows), а затем установите Virtualbox, VM Player (мои два faves) или ваше любимое приложение VM, а затем установите другую ОС в качестве виртуальной машины в этой среде.
Linker3000
Вы можете создать дистрибутив Ubuntu на основе Colinux. colinux запускает ядро ​​linux как процесс на windows, поэтому на самом деле это не виртуализация. в некотором смысле, то, что задал первоначальный вопрос, возможно, просто это еще не сделано.
Jay R. Wren
Тем не менее, некоторые из них были портированы для работы в операционных системах, в отличие от реального оборудования - UserModeLinux идеальный контрпример. CoLinux (как упомянуто @Jay) - еще один пример того, как операционная система «портирована» на другую.
new123456
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, поэтому я бы посоветовал выбрать гипервизор для любой ОС, с которой вам удобнее.

Kevin
источник
8

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

TheCompWiz
источник
У меня нет проблем с виртуализацией, я использую VirtualBox на каждом компьютере, который у меня есть. Можете ли вы объяснить расширения VT, которые вы упомянули немного больше? К вашему сведению - это для домашнего использования, поэтому я ищу дешевый (читай: бесплатный / открытый исходный) способ сделать это
James Hill
VT = аппаратная виртуализация. По сути, ЦП имеет некоторые дополнительные расширения (иногда требующие включения в BIOS), предназначенные для облегчения параллельной работы ОС. VirtualBox может сделать это ... но если вы застряли с виртуализацией программного обеспечения, она не будет работать хорошо. Иногда их называют VT-x, VT, AMD-V, аппаратная виртуализация или множество дополнительных имен.
TheCompWiz
У VMWare есть это существо с расширениями VT, о котором вы говорите? если это так, нужно ли его включать явно?
MasterMastic
VT это особенность процессора. Это зависит от погоды или нет, ваш процессор имеет встроенные биты или нет ... а также если материнская плата имеет поддержку для него. (расширения процессора могут быть отключены во многих BIOS). Обычно они включены по умолчанию ... но могут быть отключены. Мой ноутбук HP был выключен ... но мои серверы supermicro включили его.
TheCompWiz
7

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

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

David Schwartz
источник
8
Если OS 1 не является OS / 2. Тогда ваш OS / 2 работает как ОС 1.: D
Kenneth Cochran
@KennethCochran - Это заставило меня улыбнуться ;-)
Unsigned
Это просто деформировано ... Вспоминая аккуратную операционную систему, созданную компанией, которая не смогла выйти из влажного бумажного пакета.
Fiasco Labs
2

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

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

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

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

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

Shekhar
источник
2

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

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

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

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

Kenneth Cochran
источник
1

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

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

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

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

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

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

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

LawrenceC
источник
0

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

Akash
источник
Hyper-V потребуется вторая машина, чтобы действовать в качестве сервера. Если бы у меня была вторая мощная машина, я бы установил ее рядом с другой моей башней и запустил их обе с разными ОС :) Кроме того, насколько я понимаю, установка будет стоить не менее 2 тысяч долларов.
James Hill
Я думаю, что вы можете запустить Hyper V на одной машине ..
Akash
2
V в hyper-v предназначен для виртуализации. если ограничение не виртуализация, то Hyper-V не является решением.
Jay R. Wren
0

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

Nornagest
источник