Wstęp

Na początku, kiedy pojawiły się pierwsze komputery, programy, które uruchamiane były przez użytkowników potrafiły zawiesić całą maszynę. Działo się to dlatego, że wszystko pracowało w tym samym trybie, na tym samym poziomie.

Rozwiązaniem problemu okazało się podzielenie pracy komputera na dwa tryby - tryb użytkownika (user mode) oraz tryb jądra (kernel mode).

Normalnie proces działa w trybie użytkownika. Aby proces wykonał funkcję systemową, np. operację na pliku, niezbędne jest przejście procesu do trybu jądra, czyli przełączenie procesora w tryb uprzywilejowany za pomocą funkcji systemowej lub przerwania.

Takie podejście ma niewątpliwie wiele zalet, które poznawaliśmy w trakcie tego kursu. Ma jednak również trochę wad:

  1. Tylko jeden proces ma bezpośredni dostęp do sprzętu. Czyli może działać tylko jedno jądro (jeden system operacyjny).
    Wszystko inne może działać tylko w trybie użytkownika. Nie ma możliwości uruchomić na maszynie, na której działa jakieś jądro drugiego jądra, ani innego programu, który wymaga bezpośredniej komunikacji ze sprzętem (np. programu do niskopoziomowych testów, programu diagnostycznego).
  2. Nie można podejmować żadnych działań, które zakłócą pracę jądra (np. update, debuggowanie systemu).
  3. Nie można bezpiecznie uruchamiać "podejrzanych" aplikacji. (błąd w działaniu jądra powoduje krach systemu)
  4. Nie można łatwo "udawać" innej niż rzeczywista konfiguracji sprzętowej. (na przykład wiele procesorów, wiele dysków).

 

spis treści

Co to jest wirtualizacja?