Login lub e-mail Hasło   

Dlaczego opłaca się używać aplikacji zajmujących się zarządzaniem pamięcią RAM

Jak wiemy dane z pamięci RAM odczytują się kilkukrotnie szybciej niż z dysku (pliku wymiany). Gdy otwieramy nowy program, system operacyjny stara się znaleźć dla niego wolne mi...
Wyświetlenia: 4.017 Utworzony: 13/05/2006
Jak wiemy dane z pamięci RAM odczytują się kilkukrotnie szybciej niż z dysku (pliku wymiany). Gdy otwieramy nowy program, system operacyjny stara się znaleźć dla niego wolne miejsce w pamięci szybkiego dostępu (czyli w RAM'ie), a gdy go tam nie znajdzie, umieszcza aplikacje w pliku wymiany. Zasada działania programu do "czyszczenia" (ew. optymalizacji lub defragmentacji) RAM'u jest bardzo prosta. W skrócie można opisać ją w trzech etapach:
  1. Etap I - program kopiuje fragment pamięci RAM o wybranej wielkości do pliku stronicowania znajdującego się na dysku
  2. Etap II - program czyści (zeruje) skopiowany fragment w pamięci RAM
  3. Etap III - na tak przygotowany fragment pamięci RAM system kopiuje tylko potrzebne mu w tej chwili dane (np. biblioteki, fragmenty plików wykonywalnych .exe), nieużywane pozostawiając w pliku stronicowania.
Więc czy na pewno warto używać tego typu aplikacji i dlaczego?

Moja odpowiedź brzmi tak. Spotkałem się w pewnej książce dot. optymalizacji pracy z Windows XP z opinią ,że Microsoft zaopatrzył swój produkt w wydajny system zarządzania pamięcią, tak że to co jest mu potrzebne trzyma w pamięci, a to czego nie używa usuwa z niej. Owszem, jest to w pewnym sensie prawda, ale nie cała. Osoba pisząca tą książkę nie wzięła pod uwagę kilku czynników. W mojej argumentacji mogą paść niezrozumiałe dla części osób pojęcia, jednak postaram się wytłumaczyć to dosyć jasno.
Otóż system podczas uruchamiania jakiegoś programu (pliki .exe), kopiuje całą jego zawartość do pamięci RAM. W całym tym pliku znajduje się jego część, której nigdy nie będziemy używać (są to np. rzadko otwierane okna dialogowe - m.in.. zaawansowanej konfiguracji - lub bitmapy). Te dane zalegają w pamięci RAM, a przecież równie dobrze mogłyby zalegać w pliku stronicowania na naszym dysku (zwiększenie rozmiaru pliku stronicowania nie kosztuje przecież tyle co dokupienie nowej kości RAM).
Drugi mój argument przemawiający za używaniem narzędzi tego typu to fragmentacja pamięci RAM. Programy podczas swojej normalnej pracy rezerwują sobie często jakiś kawałek pamięci (często są to pokaźne rozmiary kilku MB). Ponieważ system musi gdzieś to wszystko upchnąć, często dane są porozrzucane (nie są ułożone po kolei), i ich odczyt trwa dłużej. Natomiast gdy system po "czyszczeniu" RAM'u przez Fast Ram Cleaner'a kopiuje tylko potrzebne mu dane z pliku wymiany, kopiuje je do pamięci po kolei.

Czy wszystkim na pewno to się przyda?

Nie, programów zajmujących się optymalizacją nie ma sensu używać gdy mamy komputer z dużą ilością RAM'u, i gdy często restartujemy naszą "maszynę". Jednak gdy sprzęt pracuje non-stop cały dzień, takie czyszczenie jest dla niego jak "ożywczy prysznic". Pozwala usunąć wszelkie śmieci z pamięci i ruszyć komputerowi do pracy z wolnym miejscem w pamięci RAM dla nowych danych. Naszej pamięci szczególnie szkodzą źle (choćby w pośpiechu) napisane aplikacje, które "nie sprzątają" po sobie. Czasami też programy świadomie niepotrzebnie zajmują zasoby naszego komputera. Przykładem tego, może być pakiet Office, który przy starcie systemu operacyjnego ładuje do pamięci swoje biblioteki, aby potem jego uruchamianie trwało krócej. Jeśli jednak rzadko korzystamy, pamięć jest marnotrawiona.

Słowniczek

Tutaj przytoczę pojęcia, które pomogą w zrozumieniu treści artykułu (jeżeli dalej nie rozumiesz jakiegoś wyrazu poszukaj w Googlach):

Pamięć RAM - pamięć, która może być odczytywana lub zapisywana przez komputer lub inne urządzenia. Informacje przechowywane w pamięci RAM są tracone po wyłączeniu komputera.

Pamięć Wirtualna - tymczasowy magazyn używany przez komputer do uruchamiania programów, które potrzebują pamięci większej niż pamięć RAM komputera. Na przykład programy mogą mieć dostęp do 4 gigabajtów pamięci wirtualnej na dysku twardym komputera, nawet jeżeli komputer jest wyposażony tylko w 32 megabajty pamięci RAM. Dane programu, które nie mogą być umieszczone w danej chwili w pamięci komputera, są zapisywane w plikach stronicowania.

Plik Stronnicowania (wymiany, swap) - plik ukryty na dysku twardym (może się nazywać np. pagefile.sys), używany przez system Windows do przechowywania części plików programów i danych, które są zbyt duże i nie mogą być umieszczone w całości w pamięci. Plik stronicowania i pamięć fizyczna (lub pamięć RAM) tworzą pamięć wirtualną. System Windows przenosi dane z pliku stronicowania do pamięci zgodnie z potrzebami oraz z pamięci do pliku stronicowania, aby zwolnić miejsce dla nowych danych. Plik stronicowania jest również nazywany plikiem wymiany.

Podobne artykuły



  toszcze  (www),  14/07/2006

Tak naprawdę 99% windowsowych aplikacji "oczyszczających" pamięć działa w taki sposób, że wypełnia pozostałą wolną pamięć (zarówno fizyczną, jak i wirtualną) "śmieciami", co powoduje uaktywnienie systemowego "odśmiecacza". Tyle.

To warto wiedzieć.

  rosly,  24/07/2008

Pozwolę sobie skomentować ten artykuł:

"Otóż system podczas uruchamiania jakiegoś programu (pliki .exe), kopiuje całą jego zawartość do pamięci RAM" - nie jest to prawda. Windows mapuje części pliku ELF do pamięci wirtualnej, to czy konkretna strona pliku znajdzie się w danej chwili w RAM zależy od tego czy będzie do niej odwołanie. Generalnie strony pamięci procesu nie znajdują się tylko w RAM lub pliku wymiany jak sugeruje artykuł.

"Drugi mój argument przemawiający za używaniem narzędzi tego typu to fragmentacja pamięci RAM. Programy podczas swojej normalnej pracy rezerwują sobie często jakiś kawałek pamięci (często są to pokaźne rozmiary kilku MB). Ponieważ system musi gdzieś to wszystko upchnąć, często dane są porozrzucane (nie są ułożone po kolei), i ich odczyt trwa dłużej. Natomiast gdy system po "czyszczeniu" RAM'u przez Fast Ram Cleaner'a kopiuje tylko potrzebne mu dane z pliku wymiany, kopiuje je do pamięci po kolei."
- Po pierwsze żaden proces z przestrzeni użytkownika nie możne ot tak sobie modyfikować pamięci innego procesu, a już na pewno decydować o tym które strony pamięci powędrują do SWAP. Aby coś takiego wykonać musiał by istnieć jakiś kod dołączany dynamicznie do jadra , wykonywany w trybie jadra, którego autor znal by budowę i zasadę działania jadra windows. Podejrzewam ze firma Microsoft nie rozpowszechnia takich informacji a pisanie takiego kodu bez dokumentacji jest niemożliwe.
Na pewno tez nie istnieje coś takiego jak defragmentacja pamięci procesu. Oczyszczanie pamięci proces możne wykonać wyłącznie na sobie, takimi założeniami kierują się języki programowania jak C# czy Java. Ich budowa opiera sie o allokowanie pamięci przez specjalne elementy opakowujące które są modyfikowane przez odsmiecacz pamięci. Na poziomie proces-jadro nie ma takiego mechanizmu. Jadro żongluje stronami pamięci w miarę potrzeb przerzucając stare (dawno nie używane) strony do SWAP w nadziei iz proces nie będzie ich w tej chwili potrzebował i robi to tylko wtedy gdy musi przywrócić inna aktualnie potrzebna stronę (lub inne przypadki allokacji nowych zasobów)

Programy które opisałeś działają w następujący sposób. Allokuja bardzo duzy obszar pamięci tak ze jadro musi niemal wszystkie strony przenieść do SWAP następnie program zwalnia ta pamięć. Wtedy system zaczyna znowu działać normalnie (pozwoliłem sobie nazwać tak dalsze działanie systemu ... klikasz w programy które używasz ... generalnie coś się dzieje) i jadro powolutku ściąga ze SWAP tylko te strony pamięci które są w tym momencie potrzebne. Przez chwile masz wrażenie ze system ma więcej wolnej pamięci bo wskaźnik w managerze zadań mówi ci ze ilość stron oznaczonych jako nie używane jest wysoka. Nie ma to żadnego znaczenia ponieważ ilekroć jakiś proces będzie odwoływał się do strony która leży w tym momencie na SWAP tylekroć będzie zachodził odczyt i wymiana strony.

Artykuł pisałem dość dawno (chyba nawet ok. 2004). Oczywiście zgadzam się z tym co piszesz.

Weź jednak też pod uwagę, że w artykule zastosowałem kilka uproszczeń (Twój opis jest bardzo dokładny, jednak przez to zawiły).

Niemniej wszystkim którzy chcą dowiedzieć się "jak to działa" polecam go przeczytać.

Edit: Ups, sorry, pezycisnelo mi się przypadkiem i komentarz się dodał.

Teoretycznie RAM nie używany w danej chwili przez żaden proces powinien być przez system używany do tworzenia buforów pamięci masowych, co spowoduje znaczne przyspieszenie wszystkich operacji I/O. Usprawni to pracę systemu znacznie bardziej niż duża ilość nie używanego DO NICZEGO RAM-u. Opisane tutaj porady moim zdaniem dobre były w czasach kiedy królował (na biurkach) Windows 98.

Również pozwolę sobie skomentować:

"Drugi mój argument przemawiający za używaniem narzędzi tego typu to fragmentacja pamięci RAM."
Fragmentacja pamięci nie ma znaczenia, to nie jest dysk twardy, gdzie przesunięcie głowicy jest kosztowne. Znaczenie może ewentualnie mieć fragmentacja przestrzeni adresowej, która potencjalnie może uniemożliwić zaalokowanie dużego obszaru pamięci, ale na to taka aplikacja nie pomoże.

Nigdy nie używałem tego typu aplikacji i trochę wątpię w ich skuteczność, gdyż kroki 1 i 2 zajmują czas, który nie wiadomo czy się potem zwróci. Mając sytuację wymagającą zaawansowanego zarządzania pamięcią, użyłbym linuksa z odpowiednim alokatorem pamięci (windows ma buddy - jeden z gorszych).
Ogólnie artykuł bardzo słaby :(.

  buri,  13/03/2009

Bawienie się czymś takim miało kiedyś sens, ale teraz?
Patrząc na optymalizacje pamięci w Windows 7 to nie ma to najmniejszego sensu. Już Vista umiała dobrze nią zarządzać, tylko ludzie nie wiedzieli ocb w tym i krzyczeli ile to ona ram zjada.

Kolejny argument przeciw to ilość pamięci w obecnych komputerach 2GB to już podstawa i minimum, które wystarcza w zupełności.
Ładowanie kolejnych programów do pamięci to też koelejne obciążenie przecież.

Kiedyś tak, teraz nie ma sensu.



Dodaj swoją opinię
W trosce o jakość komentarzy wymagamy od użytkowników, aby zalogowali się przed dodaniem komentarza. Jeżeli nie posiadasz jeszcze swojego konta, zarejestruj się. To tylko chwila, a uzyskasz dostęp do dodatkowych możliwości!
 
oferty.net
Szukasz najlepszego miejsca do zamieszczenia swojej oferty sprzedaży mieszkania, domu albo dział...
Autor
Artykuł
Dodatkowe informacje
Grupy
nasza-klasa.pl


O EIOBA
Artykuły
Odkrywaj
Publikuj
Społeczność
Statystyki
Użytkownicy online: 116
Zarejestrowani: 12.888
Komentarze: 22.008
Artykuły: 6.479
Książki
EIOBA Świat

© 2005 grupa EIOBA.