¿Es posible iniciar dos sistemas operativos al mismo tiempo?

36

¿Es posible iniciar dos sistemas operativos al mismo tiempo?

Por ejemplo : actualmente estoy iniciando dual Ubuntu 11.04 y Windows 7. Ubuntu se está ejecutando en un solo disco duro de 500 gb, Windows 7 se está ejecutando en 1TB RAID 1 espejo. Para cambiar entre los dos sistemas operativos, se requiere un reinicio. ¿Es posible cambiar entre los dos sistemas operativos sin reiniciar?

NOTA : Soy plenamente consciente de las capacidades de VirtualBox y VMWare Player: uso ambas. Por favor, no responda "¡Use la virtualización!"

EDITAR: Si esto no es posible, ¿puede compartir por qué no es posible? Para mí, no parece que sea tan difícil. ¡Tenga en cuenta que mi visión no está afectada por el conocimiento!

James Hill
fuente
En un mainframe con memoria particionada ...
Fiasco Labs

Respuestas:

36

La mayoría, si no todos, los sistemas operativos convencionales esperan tener acceso exclusivo a la funcionalidad de bajo nivel de la computadora host (por ejemplo: hardware, puertos, etc.) y no tienen ningún concepto de compartir con nada más, simplemente no funcionará. Por lo tanto, intentar ejecutar dos sistemas operativos simultáneamente en el mismo sistema requiere algún tipo de árbitro transparente para proteger los sistemas operativos entre sí, en otras palabras, una aplicación de virtualización.

Linker3000
fuente
La aplicación de virtualización parece ser el consenso. ¿Hay alguna opción gratuita o de código abierto que recomendaría?
James Hill
2
Realmente depende de lo que intente hacer, ya que algunas aplicaciones de VM son mejores en algunas cosas que otras, pero en general: elija su sistema operativo predeterminado principal (es decir, arranque en Ubuntu o Windows) y luego instale Virtualbox, VM Player (mis dos favoritos) o su aplicación VM favorita y luego instale el otro sistema operativo como una máquina virtual en ese entorno.
Linker3000
podrías crear una distribución de ubuntu basada en colinux. Colinux ejecuta el kernel de Linux como un proceso en Windows, por lo que no es realmente virtualización. en cierto sentido, lo que se hizo la pregunta original es posible, simplemente no se ha hecho todavía.
Jay R. Wren
Sin embargo, algunos han sido portados para ejecutarse en sistemas operativos, a diferencia del hardware real: UserModeLinux es el contraejemplo perfecto. colinux (como lo mencionó @Jay) es otro ejemplo de un sistema operativo "portado" a otro.
nuevo123456
15

Parece que está descartando Hyper-V y Xen (los llamados hipervisores "de metal desnudo") a pesar de que están más cerca de lo que parece estar pidiendo. Sí, es virtualización, pero no de la misma manera que funciona VirtualBox.

Imagine que algo como VirtualBox era su propio sistema operativo, por lo que podría instalar un pequeño SO VirtualBox y luego ejecutar Windows y Ubuntu lado a lado como máquinas virtuales en la parte superior del SO VirtualBox. Bueno, eso es esencialmente lo que hacen Hyper-V o Xen. Es solo una delgada capa de virtualización entre el hardware y los sistemas operativos invitados, y está lo más cerca posible de ejecutarlos directamente junto con el hardware y los sistemas operativos existentes.

Usted no necesita un servidor independiente para ninguno de estos, usted acaba de instalar el hipervisor como si fuera el primer sistema operativo de la máquina, y luego agrega Windows y Ubuntu como máquinas virtuales bajo el hipervisor.

Tanto Xen como Hyper-V ejecutarán Ubuntu y Windows como sistemas operativos invitados, aunque puede que no sea una configuración compatible. Xen es más Linuxy e Hyper-V es un producto de MS, por lo que sugeriría elegir el hipervisor según el sistema operativo con el que se sienta más cómodo.

Kevin
fuente
8

Lo más cercano que podrías hacer ... es hacer uso de la hibernación. Desafortunadamente, los sistemas operativos son lo suficientemente extraños entre sí que no hay forma de que ambos SO se ejecuten al mismo tiempo sin implementar la virtualización. Honestamente, la virtualización ya no es tan mala como piensas ... especialmente cuando estás usando una plataforma de virtualización que admite las extensiones "VT". Los sistemas operativos invitados tienen la capacidad de comunicarse directamente con el hardware y tienen un mapeo de memoria mucho mejor. De hecho, he configurado un sistema operativo invitado instalado directamente en un SSD ... y se ejecutó más rápido que el sistema operativo host.

TheCompWiz
fuente
No tengo ningún problema con la virtualización, uso VirtualBox en cada computadora que tengo. ¿Puedes explicar las extensiones de VT que mencionaste un poco más? FYI: esto es para uso doméstico, así que estoy buscando una forma barata (leer: libre / de código abierto) de hacerlo.
James Hill
VT = virtualización de hardware. Básicamente, la CPU tiene algunas extensiones adicionales (a veces requiere estar habilitado en el BIOS) diseñadas para facilitar la ejecución de sistemas operativos en paralelo. VirtualBox puede hacer esto ... pero si está atascado con la virtualización de software, no funcionará bien. A veces se denomina VT-x, VT, AMD-V, virtualización de hardware o una miríada de nombres adicionales.
TheCompWiz
¿VMWare tiene esta criatura de extensiones "VT" de la que hablas? en caso afirmativo, ¿debe habilitarse explícitamente?
MasterMastic
VT es una función de procesador. Es una cuestión de clima o no su CPU tiene los bits incorporados o no ... y también si la placa base tiene soporte para ello. (las extensiones de procesador pueden deshabilitarse en muchos BIOS) Por lo general, está habilitado de manera predeterminada ... pero puede deshabilitarse. Mi portátil HP lo tenía apagado ... pero mis servidores supermicro lo tienen encendido.
TheCompWiz
7

Aquí está la razón simple y breve por la que la respuesta es 'no': ¿Qué software controlaría su hardware?

Si OS 1 lo hace, entonces no está ejecutando OS 2. Si OS 2 lo hace, entonces no está ejecutando OS 1. Si ambos lo hacen, entonces algún otro software tendría que mediar su acceso compartido al hardware físico. , y eso es virtualización (que descartó).

David Schwartz
fuente
8
A menos que OS 1 sea OS / 2. Entonces su OS / 2 en ejecución como OS 1.: D
Kenneth Cochran
Eso es simplemente deformado ... Recordando un sistema operativo ordenado creado por una compañía que no podía salir de una bolsa de papel mojada.
Fiasco Labs
2

Las cosas que vienen a la mente son:
- Administración de memoria (ram y caché)
- Administración de procesos (subprocesos en ejecución)

Por lo tanto, es probable que necesite un hombre en el medio haciendo malabares con el uso de la memoria y los procesos entre los dos sistemas operativos.

Ese sería otro sistema operativo / firmware.
Entonces, si alguien lo ha implementado o lo implementará, puede terminar con 3 en lugar de 2 Oss ejecutándose simultáneamente

EDITAR:
agregando lo que escribió linker3000: gestión de puertos

Este 'hombre en el medio' se convertirá esencialmente en su sistema operativo host y los otros sistemas operativos virtualizados, lo que lo llevará de regreso a lo que ya sabía que era una solución

Shekhar
fuente
2

Todos los sistemas operativos que conozco exigen un control total del hardware de la computadora.

Sin embargo, es teóricamente posible. Ambos sistemas operativos deberían estar diseñados para:

  • Ejecutar como maestro (control total de hardware) y como esclavo (solicita recursos del sistema operativo maestro)
  • Renunciar al control del hardware a petición de otro sistema operativo

Si se cumplen ambas condiciones, sería posible ejecutar dos sistemas operativos simultáneamente sin ningún tipo de virtualización. Sería similar a dos sistemas operativos que utilizan la multitarea cooperativa . Por supuesto, la multitarea cooperativa ha sido abandonada debido a la cuestión de las aplicaciones mal escritas que se niegan a ceder el control. Quizás dos sistemas operativos correctamente escritos jugarían bien. Entonces, de nuevo, ¿cuál sería el incentivo?

Kenneth Cochran
fuente
1

Permítanme abordar la parte del "por qué".

Una de las razones para un SO moderno es permitir que múltiples programas (procesos) se ejecuten al mismo tiempo en un sistema. Si desea hacer esto de manera segura, debe suceder lo siguiente:

  • Probablemente (a menos que tenga necesidades especiales) no quiera dividir la RAM en el sistema de manera fija, por ejemplo, 256 MB fijos por proceso, lo limita a 8 procesos en un sistema de 2 GB. Le gustaría que cada proceso pueda "pedir" memoria y devolverla cuando haya terminado.

  • Tampoco desea dividir los dispositivos de E / S de manera fija entre los dispositivos. Por lo general, desea que parte o todo el hardware, como la memoria, sea un recurso compartido, o al menos solo temporalmente exclusivo para procesos específicos en momentos específicos. Esto requiere que todos los procesos no intenten hacer E / S por su cuenta, sino que "atraviesen" algo para programar y coordinar las E / S. La programación es importante ya que la mayoría de E / S es mucho más lenta que la CPU, por lo que puede hacer que la CPU trabaje para otros procesos mientras espera E / S incluso en un sistema de un solo núcleo.

Para hacer lo correcto arriba, uno necesita aprovechar varias características de hardware de la CPU. Uno de ellos es la MMU, el otro es el modo protegido. ¿Podrían dos sistemas operativos compartir estas características de hardware de forma cooperativa para ejecutar dos o más sistemas operativos?

Claro, pero no hay nada en el hardware capaz de evitar que un sistema operativo pisotee la memoria de los demás sistemas operativos. Si la CPU está en modo kernel (solo tiene un modo kernel), cualquier código puede hacer cualquier cosa. Es 100% posible que el código de un sistema operativo se ejecute sobre el código o los datos del otro sistema operativo. Y sabemos que los sistemas operativos han tenido vulnerabilidades en el pasado y tendrán más en el futuro. Entonces es muy malo para la seguridad.

Ahora, ¿no sería genial si pudieras poner otra "capa" sobre esto y tener ese soporte de hardware necesario para múltiples sistemas operativos? Eso es exactamente lo que hacen las funciones de virtualización de hardware, ponen una barrera de hardware entre múltiples sistemas operativos en ejecución, y hay una "interfaz" de nivel superior para ellos llamada hipervisor. Solo puede tener un hipervisor. Y sí, los procesos que se ejecutan en cualquiera de los sistemas operativos deben pasar por tres capas para hacer E / S (proceso - núcleo local - hipervisor)

LawrenceC
fuente
0

Sé que dijiste que no hay virtualización, pero algo como el servidor MS Hyper V puede satisfacer tus necesidades

Akash
fuente
Hyper-V requeriría una segunda máquina para actuar como servidor. Si tuviera una segunda máquina que fuera tan poderosa, la pondría al lado de mi otra torre y las iniciaría con diferentes sistemas operativos :). Además, por lo que entiendo, la configuración costaría no menos de $ 2k.
James Hill
Creo que puedes ejecutar Hyper V en una sola máquina ..
Akash
2
la V en hyper-v es para virtualización. Si la restricción no es virtualización, Hyper-V no es una solución.
Jay R. Wren
0

No hay otra forma que la virtualización. Me resulta difícil obtener información definitiva sobre qué sistemas invitados funcionarán para los diferentes hipervisores. http://en.wikipedia.org/wiki/Hypervisor Debería ser un buen comienzo para obtener información y Xen podría valer la pena, aunque esperaría a que alguien confirme o niegue definitivamente si es compatible con los invitados de Windows 7.

Nornagest
fuente