Czy możliwe jest podwójne uruchomienie dwóch systemów operacyjnych jednocześnie?
Na przykład : Obecnie uruchamiam podwójnie system Ubuntu 11.04 i Windows 7. Ubuntu działa na pojedynczym dysku twardym 500 GB, system Windows 7 działa na kopii lustrzanej RAID 1 o pojemności 1 TB. Aby przełączać się między dwoma systemami operacyjnymi, wymagane jest ponowne uruchomienie. Czy można przełączać się między dwoma systemami operacyjnymi bez ponownego uruchamiania?
UWAGA : Jestem w pełni świadomy możliwości VirtualBox i VMWare Player - używam obu. Proszę nie odpowiadać „Użyj wirtualizacji!”
EDYCJA: Jeśli nie jest to możliwe, możesz udostępnić, dlaczego nie jest to możliwe? Dla mnie nie wydaje się to takie trudne. Pamiętaj, że moja wizja nie jest obciążona wiedzą!
źródło
Odpowiedzi:
Większość, jeśli nie wszystkie, systemy operacyjne głównego nurtu oczekują wyłącznego dostępu do niskopoziomowej funkcjonalności komputera hosta (np. Sprzętu, portów itp.) I nie mają pojęcia o współużytkowaniu z niczym innym - to po prostu nie zadziała - więc próba uruchomienia dwóch systemów operacyjnych jednocześnie w tym samym systemie wymaga pewnej formy przejrzystego arbitra, aby chronić systemy operacyjne przed sobą - innymi słowy, aplikacja do wirtualizacji.
źródło
Wygląda na to, że lekceważysz Hyper-V i Xen (tak zwane hiperwizory „gołego metalu”), nawet jeśli są one najbliższe temu, o co się prosi. Tak, to wirtualizacja, ale nie w ten sam sposób, w jaki działa VirtualBox.
Wyobraź sobie, że coś takiego jak VirtualBox to jego własny system operacyjny, dzięki czemu można zainstalować mały system operacyjny VirtualBox, a następnie uruchomić system Windows i Ubuntu obok siebie jako maszyny wirtualne na systemie operacyjnym VirtualBox. Cóż, zasadniczo to robią Hyper-V lub Xen. To tylko cienka warstwa wirtualizacji między sprzętem a systemami operacyjnymi gościa, i jest tak blisko, jak można bezpośrednio uruchomić je obok siebie z istniejącym sprzętem i istniejącymi systemami operacyjnymi.
Państwo nie potrzebuje oddzielnego serwera dla jednego z nich, to po prostu zainstalować hypervisor, jak gdyby był to pierwszy system operacyjny na komputerze, a następnie dodać Windows i Ubuntu jako maszyn wirtualnych w ramach hypervisor.
Zarówno Xen, jak i Hyper-V będą działały jako systemy operacyjne Ubuntu i Windows, chociaż może to nie być obsługiwana konfiguracja. Xen jest bardziej Linuxowy, a Hyper-V to produkt MS, więc sugerowałbym wybranie hiperwizora w oparciu o system operacyjny, w którym czujesz się bardziej komfortowo.
źródło
Najbliższa rzecz, jaką możesz zrobić ... to skorzystać z hibernacji. Niestety systemy operacyjne są dla siebie na tyle obce, że nie ma możliwości, aby oba systemy działały w tym samym czasie bez wdrożenia wirtualizacji. Szczerze mówiąc, wirtualizacja nie jest już tak zła, jak myślisz ... szczególnie, gdy używasz platformy wirtualizacyjnej, która obsługuje rozszerzenia „VT”. Systemy operacyjne gościa mają możliwość bezpośredniej komunikacji ze sprzętem i mają znacznie lepsze mapowanie pamięci i tym podobne. Właściwie skonfigurowałem system gościa zainstalowany bezpośrednio na dysku SSD ... i działał szybciej niż system hosta.
źródło
Oto prosty, krótki powód, dla którego odpowiedź brzmi „nie”: jakie oprogramowanie kontroluje Twój sprzęt?
Jeśli system operacyjny OS 1 to robi, oznacza to, że system operacyjny nie działa 2. Jeśli system operacyjny OS2 to robi, system operacyjny nie działa 1. Jeśli oba systemy to robią, niektóre inne programy musiałyby pośredniczyć w dostępie do sprzętu fizycznego i to jest wirtualizacja (którą wykluczyłeś).
źródło
Przychodzą mi na myśl następujące rzeczy:
- Zarządzanie pamięcią (RAM i pamięć podręczna)
- Zarządzanie procesami (uruchomione wątki procesu)
Prawdopodobnie więc potrzebujesz człowieka w środku żonglującego zużyciem pamięci i procesami między dwoma systemami operacyjnymi.
To byłby kolejny os / firmware.
Więc jeśli ktoś go zaimplementował, OS go zaimplementuje, możesz skończyć z 3 zamiast 2 OS działającymi jednocześnie
EDYCJA -
Dodanie tego, co napisał linker3000: zarządzanie portami
Ten „człowiek pośrodku” stanie się w zasadzie hostem systemu operacyjnego, a inne systemy zostaną zwirtualizowane, prowadząc cię z powrotem do rozwiązania, o którym wiesz, że było rozwiązaniem
źródło
Wszystkie systemy operacyjne, o których wiem, wymagają całkowitej kontroli nad sprzętem komputerowym.
Jest to teoretycznie możliwe. Oba systemy operacyjne należy zaprojektować w taki sposób, aby:
Jeśli oba te warunki zostaną spełnione, możliwe byłoby jednoczesne uruchomienie dwóch systemów operacyjnych bez jakiejkolwiek wirtualizacji. Byłoby to podobne do dwóch systemów operacyjnych korzystających z wielozadaniowości kooperacyjnej . Oczywiście współpraca wielozadaniowa została prawie zaniechana ze względu na problem źle napisanych aplikacji odmawiających kontroli. Być może dwa poprawnie napisane systemy operacyjne byłyby fajne. Z drugiej strony jaka byłaby zachęta?
źródło
Pozwól, że odniosę się do części „dlaczego”.
Jednym z powodów nowoczesnego systemu operacyjnego jest umożliwienie jednoczesnego uruchamiania wielu programów (procesów) w systemie. Jeśli chcesz to zrobić bezpiecznie, muszą się zdarzyć następujące rzeczy:
Prawdopodobnie (chyba że masz specjalne potrzeby) nie chcesz dzielić pamięci RAM w systemie w ustalony sposób - np. 256 MB ustalonych na proces - ogranicza Cię do 8 procesów w systemie 2 GB. Chcesz, aby każdy proces mógł „poprosić” o pamięć i zwrócić ją, gdy zostanie zakończona.
Nie chcesz również dzielić urządzeń I / O w ustalony sposób między urządzeniami. Zazwyczaj chcesz, aby część lub całość sprzętu, na przykład pamięć, była zasobem współdzielonym lub przynajmniej tymczasowo wyłącznym dla określonych procesów w określonych porach. Wymaga to, aby wszystkie procesy nie próbowały same wykonywać operacji we / wy, ale „przechodziły” przez coś, aby zaplanować i koordynować operacje we / wy. Planowanie jest ważne, ponieważ większość operacji we / wy jest znacznie wolniejsza niż procesor, więc procesor może pracować dla innych procesów podczas oczekiwania na operacje we / wy nawet w systemie jednordzeniowym.
Aby wykonać powyższe prawo, należy skorzystać z kilku funkcji sprzętowych procesora. Jednym z nich jest MMU, drugim jest tryb chroniony. Czy dwa systemy operacyjne mogą współdzielić te funkcje sprzętowe w celu współpracy dwóch lub więcej systemów operacyjnych?
Jasne, ale w sprzęcie nie ma nic, co mogłoby powstrzymać jeden system operacyjny przed tupnięciem w pamięci innych systemów operacyjnych. Jeśli CPU jest w trybie jądra (ma tylko jeden tryb jądra), każdy kod może zrobić wszystko. W 100% możliwe jest, aby kod z jednego systemu operacyjnego działał na kodzie lub danych drugiego systemu operacyjnego. Wiemy, że systemy operacyjne miały w przeszłości luki, a w przyszłości będzie ich więcej. To bardzo źle wpływa na bezpieczeństwo.
Czy nie byłoby fajnie, gdybyś mógł nałożyć na to kolejną „warstwę” i potrzebowałby wsparcia sprzętowego dla wielu systemów operacyjnych? Właśnie to robią funkcje wirtualizacji sprzętu, stanowią barierę sprzętową między wieloma działającymi systemami operacyjnymi, a dla nich istnieje „interfejs” najwyższego poziomu, zwany hiperwizorem. Możesz mieć tylko jednego hiperwizora. I tak, procesy działające w jednym z systemów operacyjnych muszą przejść przez trzy warstwy, aby wykonać operacje we / wy (proces - lokalne jądro - hiperwizor)
źródło
Wiem, że nie powiedziałeś o wirtualizacji, ale coś takiego jak serwer MS Hyper V może pasować do twoich potrzeb
źródło
Nie ma innej drogi niż wirtualizacja. Trudno mi określić określone informacje, które systemy-goście będą działać dla różnych hiperwizorów. http://en.wikipedia.org/wiki/Hypervisor Powinien być dobry początek, aby uzyskać pewne informacje, a Xen może być warty wypróbowania, chociaż czekałbym, aż ktoś zdecydowanie potwierdzi lub zaprzeczy, jeśli obsługuje gości Windows 7.
źródło