Dlaczego nie jest możliwa pełna ochrona pamięci w systemie AmigaOS?

Ochrona taka jest możliwa, ale oznacza zerwanie kompatybilności wstecz. Oznacza to, że wszystkie do tej pory napisane programy przestałyby działać. Dlaczego tak się dzieje? Do tej pory założeniem AmigaOS jest wspólna przestrzeń adresowa dla wszystkich pracujących procesów. Z tego założenia korzystają nie tylko programy, ale i sam system.

W systemie z pełną ochroną pamięci (np. Linux, czy Windows NT/2000/XP/2003) każdy proces ma swoją odrębną przestrzeń adresową i nie ma dostępu do pamięci innych procesów. Rozdzielenie pamięci procesów jest wspomagane sprzętowo, przez układ MMU procesora. Jedynym procesem, który ma dostęp do całej pamięci jest kernel systemu operacyjnego. Jeżeli więc procesy chcą komunikować się ze sobą, to system musi skopiować dane z pamięci procesu A do pamięci procesu B i powiadomić ten drugi, że dane są dostępne.

W AmigaOS natomiast każdy proces może drugiemu zajrzeć do jego pamięci, przez co wystarczy, że procesy przekazują sobie adresy danych, które chcą sobie przekazać. Rola systemu operacyjnego polega tylko na powiadamianiu procesów o nadejściu wiadomości. Zaletą tego rozwiązania jest szybkość, wadą - możliwość wzajemnego uszkadzania sobie pamięci przez procesy (błędnie napisany proces może, pisząc po pamięci innych procesów, nie tylko zawiesić je, ale też zawiesić cały system operacyjny).

Jakie jest wyjście z tej sytuacji? Można albo zerwać z kompatybilnością (co spowoduje, że będziemy mieli AmigaOS z ochroną pamięci, ale bez oprogramowania), albo wybrać rozwiązanie pośrednie - dwa rodzaje procesów. Stare aplikacje, "przyzwyczajone" do braku ochrony pamięci pracowałyby wszystkie razem w jednej przestrzeni adresowej, wraz z niezbędnym im fragmentem systemu. Nowe "superaplikacje" dostawałyby własne, niezależne przestrzenie adresowe. Zaletą takiego rozwiązania jest to, że - co prawda - stare aplikacje mogłyby zawieszać się wzajemnie, ale nie mogłyby zawiesić "superaplikacji" ani całego systemu. Wadą jest to, że właściwie na komputerze pracowałyby dwa niezależne kernele (jeden dla starych programów, drugi dla nowych), oraz mocno utrudniona komunikacja między starymi a nowymi aplikacjami. Możliwe jest też rozwiązanie polegające na tym, że każda stara aplikacja dostawałaby swoją kopię emulacji starego systemu w oddzielnej przestrzeni adresowej. W tym przypadku nawet stare aplikacje nie mogłyby się wzajemnie wieszać. Odbyłoby się to kosztem znacznego zwiększenia zapotrzebowania na pamięć (każda aplikacja dostaje kopię emulacji starego OS-a), oraz spowolnieniem pracy starych aplikacji wielowątkowych (każdy wątek dostawałby oddzielną przestrzeń adresową, chyba żeby system wykrywał odpalanie wątków i umieszczał je we wspólnej pamięci).

Jak widać sprawa nie jest prosta i wprowadzenie ochrony pamięci musi zaowocować zmniejszeniem kompatybilności z istniejącyjm oprogramowaniem, oraz znaczącym spowolnieniem działania systemu i programów.
  • Szukaj w dziale

  • Menu PPA.pl

  • Amiga Friendship #3

  • Forum

Infinity Music Player ... (408) »
Zapowiedzi nowych gier... (5763) »
PiStorm32 Amiga 1200 (664) »
Materiały wideo związa... (483) »
Szukam programu (baza ... (26) 
Mój blog z podsumowani... (18) 
Wyskakujące certyfikat... (6) 
Muzyczne plumkanie (3) 
HEX PISTONS 3 (8) 
Głosowanie na buga (do... (32) »
  • Imprezy

kalendarz imprez

Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem