[#2] architektura - IBM Integrated Analytics System
Memory on Mac
1. Zarządzanie
pamięcią, pamięć
operacyjna, pamięć
wirtualna w systemach
Mac OS
2. Pamięć operacyjna
Pamięć operacyjna - pamięć o dostępie swobodnym,
umieszczona na płycie głównej komputera jest pamięcią
przechowywującą tymczasowe informacje, wykorzystywane w
trakcie działania systemu operacyjnego oraz programów. Dla
systemów komputerowych jednoprocesorowych lub systemów
SMP pamięć operacyjna to jedyny rodzaj pamięci bezpośrednio
dostępnej dla procesora, wszystkie inne rodzaje pamięci muszą
być obsługiwane jako urządzenia zewnętrzne. Dla systemów
komputerowych o architekturze NUMA lub ASMP pamięć
operacyjna poszczególnych procesorów lub węzłów może być
dostępna dla pozostałych procesorów lub węzłów wyłącznie
przez urządzenia zewnętrzne lub porty. Po wyłączeniu zasilania
komputera najczęściej jej zawartość ginie bezpowrotnie, jest
więc pamięcią tymczasową. Ilość dostępnej pamięci operacyjnej
może w znaczącym stopniu wpłynąć na wydajność systemu
komputerowego w szczególności kiedy system operacyjny z
powodu wyczerpania pamięci operacyjnej musi wykorzystywać
pamięć wirtualną umiejscowioną na znacząco wolniejszych
urządzeniach takich jak dyski twarde. W starszych systemach
komputerowych jako pamięć operacyjną wykorzystywano także
pamięć o dostępie cyklicznym: bębnową i na akustycznych
liniach opóźniających, np. rtęciową. Wykorzystywano również
zarzucone obecnie typy pamięci RAM, inne niż
półprzewodnikowe, np. ferrytową.
3. Uruchamianie systemu
Macintosh
Kiedy system operacyjny Macintosh
uruchamia się, dzieli dostępną pamięć RAM
na dwie znaczące części. Pierwszą część
począwszy od najniższego bajtu
adresowanej pamięci (adres 0) system
rezerwuję dla samego siebie(System
partycji). Pozostała reszta jest dostępna dla
aplikacji lub pozostałych elementów
oprogramowania. Począwszy od Mac OS
7.0, gdzie mamy do czynienia z
MultiFinderem 5.0 możemy otwierać wiele
aplikacji na raz. System przypisuje każdej
aplikacji fragment pamięci znany jako
patrycja aplikacji. Podsumowując aplikacja
korzysta jedynie z pamięci zawartej w jej
własnej partycji aplikacji.
Obok schemat organizacji pamięci dla
kilku aplikacji
4. System partition
Główną część partycji systemowej stanowi obszar znany jako System
heap. Kopiec zarezerwowany jest wyłącznie do użytku przez system
operacyjny i inne komponenty oprogramowania systemowego, które ładują
się przy starcie systemu.
System zmiennych globalnych: Najniższa cześć pamięci jest zajęta
przez zbiór zmiennych globalnych o nazwie System global variables.
System operacyjny używa tych zmiennych do utrzymania informacji o
działającym środowisku. Np. the Ticks global variable zawiera liczbę
tyknięć(16/s), które upłynęły od uruchomienia systemu. ApplZone –
pierwszy bajt aktywnej aplikacji na partycji. ApplLimit – adres ostatniego
bajtu danej aplikacji. CurrentA5 zawiera adres granicy pomiędzy
parametrami aplikacji a zmiennymi globalnymi aktywnej aplikacji.
5. Application Partition
Kiedy aplikacja jest uruchamiana,
system operacyjny przydziela dla niej
partycje pamięci o nazwie aplikacji oraz dzieli
partycje na 3 części
Application stack(stos)
Application heap(kopiec)
Application global variables and A5 world
6. Application stack and heap
Stos jest obszarem pamięci w partycji aplikacji, które mogą rosnąć lub
kurczyć się na jednym końcu, podczas gdy drugi koniec pozostaje stały.
Oznacza to że przestrzeń na stosie jest zawsze alokowana i zwalniania w
LIFO.
Kopiec jest obszarem pamięci w którym przestrzeń jest dynamicznie
alokowania i zwalniana na żądanie. Kopiec zawiera praktycznie wszystkie
elementy które nie są przydzielone na stosie. Kopiec zawiera np. fragmenty
kodu aplikacji, oraz jego zasoby które są aktualnie załadowane do pamięci.
W kopcu mieszczą się również takie elementy jak okna, rekordy, dane
dokumentów itd. Mamy tutaj do czynienia z fragmentacja kopca (zajęte
miejsca w sposób nie uporządkowany) oraz z prasowaniu kopca (łączeniu
kilku wolnych bloków w jeden)
7. Application A5 world
Zmienne globalne są
przechowywane w górnej części
pamięci. Partycja aplikacji znana
jako A5 world zawiera 4 rodzaje
danych.
Application global variables
Application QuickDraw global variables
Application parameters
Application’s jump table
8. Application A5 world
Każdy z tych elementów ma stały rozmiar, chociaż rozmiary
zmiennych globalnych i tabela skoku może się różnić od aplikacji.
Do globalnego systemu zmiennych CurrentA5 wskazuje na pogranicze
aktualnych zmiennych globalnych aplikacji oraz jego parametry. Ta granica
jest ważna ponieważ System używa jej aby uzyskać dostęp do
następujących informacji z aplikacji: zmiennych
globalnych, QuickDraw, parametrach aplikacji i tabeli skoku.
W QuickDraw aplikacja przechowuje informacje na temat portu
graficznego
Tabela skoku zawiera wpis dla każdej aplikacji procedur. Menedżer
segmentu korzysta z tabeli skoku aby określić adres jakiegokolwiek
zewnętrznego odwołania procedury wywołanego przez segment kodu
Parametry aplikacji są przechowywane w 32 bajtowej pamięci
umieszczonej nad zmiennymi globalnymi. Są przeznaczone do użytku przez
system operacyjny. Pierwsze długie słowo to wskaźnik do QuickDraw
9. Temporary memory
W wielozadaniowym środowisku
Macintosh, każda aplikacja jest
ograniczona do partycji pamięci.
Wielkość partycji pamięci stawia
pewne ograniczenia na rozmiar
kopca aplikacji a co za tym idzie
na wielkość buforów i innych
struktur danych z których
aplikacja korzysta. Ogólnie
ujmując można określić rozmiar
partycji aplikacji aby pomieściła
wszystkie potrzebne jej zasoby.
Czasami aplikacja może poprosić
o dodatkowy przydział pamięci.
10. Virtual memory
Pamięć wirtualna jest techniką zarządzania pamięcią, która pozwala
programowi używania przestrzeni adresowej pamięci nie koniecznie
przywiązanej do komputera (np. RAM) Zwykle chodzi tutaj o dysk twardy.
Począwszy od wersji Mac Os 7.0 użytkownicy mogą skorzystać z opcji
zmiany systemu korzystającego z pamięci wirtualnej, przez co maszyny
posiadają logiczna przestrzeń adresową, która rozciąga się poza granice
dostępnej pamięci fizycznej
Mimo, że pamięć wirtualna skutecznie zwiększa wydajność pamięci to
dostęp do dysku jest znacznie wolniejszy niż pamięci fizycznej.
11. Addressing Modes
Na odpowiednio wyposażonych komputerach Macintosh, system
operacyjny obsługuje 32-bitowe adresowanie, wcześniejsze wersje systemu
wykorzystywały jedynie 24-bitowe adresowanie. Dzięki nowemu
adresowaniu maksymalna przestrzeń adresowa programu wynosi 1GB
12. Mac OS X nowy spojrzenie na
świat
W Mac OS X przydział pamięci jest troszeczkę inny niż w poprzednich
wersjach. Wszystkie programy mogą korzystać z nieograniczonej ilości
pamięci, która jest przeznaczona do stosowania w miarę potrzeb. System
hojnie przydziela programom całą pamięć RAM, a nawet te części które nie
mogą być obecnie użyte. To może zawyżać kwotę rzeczywistej pamięci
RAM używanej przez system. Gdy RAM jest potrzebna, system zamienia
nie potrzebne bądź nie używane strony. Gdy zachodzi potrzeba dodatkowej
pamięci, system sam przydziela pamięć wirtualną.
Mac OS 10.4(Tiger) minimalna ilość RAM wynosi 256MB, jednak
zalecane jest 512MB
Mac OS 10.5(Leopard) wymaga co najmniej 512MB. Jednak
użytkownicy mogą się przekonać że do płynnej pracy potrzeba 1GB RAMU.