Jaka jest różnica między systemem operacyjnym "swap" a "page"? [zamknięte]

zamknięte. to pytanie jest off-topic . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Update the question so it ' s on-topic dla przepełnienia stosu.

Zamknięte 11 lat temu .

Popraw to pytanie

Jaka jest różnica między tymi 2 terminami w systemie operacyjnym: swap i page?

Author: Shog9, 2009-11-06

6 answers

Pomimo historycznej wymiany tych dwóch terminów, wskazują one różne rzeczy. Są to obie metody zarządzania przenoszeniem danych w pamięci do innego urządzenia pamięci masowej, zwanego zapasowym magazynem (często dyskiem twardym), ale używają różnych metod.

Swapowanie polega na przeniesieniu całego zbioru danych procesu w pamięci do zakresu miejsca w magazynie kopii zapasowej, często do pliku swap lub partycji wymiany. Proces przechodzi od bycia w pamięci do wymiany całkowicie; nie ma pomiędzy. Oczywiście proces będzie musiał być całkowicie bezczynny, aby wymiana była w ogóle warta zachodu. Zaletą tego jest to, że jest stosunkowo prosty do uchwycenia, a pamięć dla programu jest zawsze przydzielana sąsiadująco, minusem jest to, że wydajność na maszynie może stać się absolutnie fatalna, gdy system kończy się w stanie, w którym rzeczy są stale wymieniane. Algorytm polega również na wielokrotnym zamianie danych, które nie będą wykorzystywane w / align = "left" /

Stronicowanie próbuje rozwiązać ten problem, pobierając pamięć fizyczną i rzeźbiąc ją w rzeczy zwane "ramkami" o określonej wielkości. Zajmuje również przestrzeń pamięci każdego uruchomionego procesu i rzeźbi ją na strony( które są tego samego rozmiaru co ramki); jest to nazywana fizyczną przestrzenią adresową, ze względu na konieczność użycia adresów fizycznych, aby uzyskać dostęp do każdego bloku pamięci.

Każdy program jest prezentowany przez system operacyjny i wspierany przez nowoczesne hardware, co sprawia, że footprinty pamięci programów wyglądają jak pojedynczy przylegający blok bardzo dużej ilości pamięci; jest to nazywane logiczną przestrzenią adresową.

Jednak każda strona tego sąsiedniego bloku może znajdować się w pamięci lub w magazynie zapasowym. System operacyjny określa, gdzie znajduje się każda strona, konsultując coś, co nazywa się "tabelą stron". Jeśli stwierdzi, że strona, o którą prosił program, znajduje się gdzieś w pamięci, po prostu przejdzie do tej strony pamięci i pobierze dane / align = "left" /

Jeśli stwierdzi, że strona nie jest w pamięci; powoduje to "błąd strony". System operacyjny zawiesi proces podczas ładowania żądanej strony ze sklepu zapasowego i może z kolei przenieść inną stronę z pamięci do sklepu zapasowego, aby zrobić miejsce, w oparciu o jakiś algorytm zastępczy. Magazyn kopii zapasowej może być nazywany plikiem stron lub nadal może być nazywany plikiem swap lub partycją swap, co prowadzi do nieporozumień co do tego, który system jest używany. Czy jest to oddzielna partycja, czy tylko plik, zależy od systemu operacyjnego.

Istnieją pewne części pamięci, które nie podlegają wysyłaniu wezwań. Jednym z nich jest sam kod stronicowania oraz części jądra, które obsługują takie rzeczy jak błędy stron. Niektóre systemy operacyjne, takie jak MacOS, określają tę pamięć jako "przewodową".

Współczesny sprzęt ma kilka urządzeń, które pozwalają systemowi operacyjnemu na znacznie skuteczniejszą obsługę stronicowania. Najczęstszym z nich jest bufor Lookaside Translation, czyli TLB. To przechowuje rodzaj pamięci podręcznej tabeli stron sprzętowych, dzięki czemu za każdym razem, gdy program musi wykonać logiczny adres do tłumaczenia adresu fizycznego, nie musi za każdym razem pytać systemu operacyjnego.

Nowoczesne systemy operacyjne również wykorzystują stronicowanie, leniwie ładując części uruchomionych procesów. Na przykład, jeśli uruchomisz program Microsoft Word, zamiast ładować cały program do pamięci, system operacyjny załaduje tylko te części programu, których potrzebuje pamięci i będzie chwytać Inne części programu tylko wtedy, gdy ich potrzebuje. Ma to również kompromis między śladem pamięci, prędkością rozruchu i częstym opóźnieniem w programie, ponieważ nowe części muszą być ładowane.

W każdym razie, może więcej niż szukasz, ale mam nadzieję, że interesujące.

 68
Author: Ed Carrel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-18 12:56:56

Zamiana i przywoływanie są pojęciami ortogonalnymi. W przypadku stronicowania pamięć (fizyczna) jest podzielona na małe bloki zwane "ramkami", a pamięć (logiczna) każdego programu jest podzielona na bloki zwane "stronami". Strony i ramki mają ten sam rozmiar; każda strona jest następnie mapowana do ramki. Mapowanie to odbywa się za pomocą tabel stron. Stronicowanie rozwiązuje problemy fragmentacji, które były obecne we wcześniejszych systemach zarządzania pamięcią.

Z zamianą, części pamięci, które nie są używane są zapisywane na dysk; umożliwia to uruchamianie kilku programów, których całkowite zużycie pamięci jest większe niż ilość pamięci fizycznej. Gdy program wysyła żądanie części pamięci, która została zapisana na dysk, ta część musi zostać załadowana do pamięci. Aby zrobić miejsce dla niego, na dysk musi być zapisana inna część (w rzeczywistości dwie części zamieniają się miejscami-stąd nazwa). To "rozszerzenie" pamięci fizycznej jest ogólnie znane jako"pamięć wirtualna".

Nowoczesne systemy wykorzystują zarówno stronicowanie i wymiana, A strony są tym, co jest wymieniane w pamięci i z pamięci.

 22
Author: oggy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-06 17:20:37

Zobacz: stronicowanie i zamiana

Kwestia zamiany i przywoływania jest często źle rozumiany. Zamiana i paging to dwa zupełnie różne rzeczy.

Zamiana była pierwszą zastosowaną technologią w systemie Unix V jako pamięć fizyczna zapełnia się procesami jest problem. Co się dzieje, gdy system nie ma pamięci RAM? It " szlifuje zatrzymać się"!

Ochrona i poprawność zarządzanie pamięcią RAM jest bardzo ważne ponieważ Procesor może pracować tylko z danych w pamięci RAM, po załadowaniu z dysku twardego przez jądro. Co? dzieje się, gdy numer montażowy i wielkość procesów przekracza fizyczne pamięć? Aby umożliwić zaistnienie sytuacji, a ponieważ tylko jeden proces może kiedykolwiek wykonać w dowolnym czasie (na UniProcessor system), tylko tak naprawdę, że proces musi być w pamięci RAM. Jednakże organizowanie, które byłoby niezwykle zasobochłonne, gdyż wiele uruchomione procesy są zaplanowane do wykonaj na procesor bardzo często (patrz sekcja "Scheduler")

Aby rozwiązać te problemy jądro reklamuje abstrakcyjne wykorzystanie pamięci do aplikacje reklamowe wirtualne przestrzeń adresowa do nich znacznie przekracza pamięć fizyczna. Wniosek może wystarczy poprosić o więcej pamięci i kernel może to przyznać.

Pojedynczy proces mógł przydzielić 100MB pamięci, mimo że może tylko 64mb pamięci RAM w systemie. Na proces nie będzie musiał mieć dostępu do całe 100mb w tym samym czasie jest to gdzie pojawia się pamięć wirtualna. [...]

 3
Author: Nick Dandoulakis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-06 17:21:15

Swap w Linuksie jest partycją używaną w pamięci wirtualnej. Zawiera strony, które są blokami pamięci, które mogą być wymieniane w I Z Prawdziwej pamięci.

 2
Author: Matt Phillips,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-06 17:19:21

Strona jest blokiem pamięci zarządzanym przez system operacyjny. W Linuksie możesz sprawdzić przydział jądra dla twojej wersji systemu operacyjnego, wpisując

$ getconf PAGESIZE 4096

4KB to dość powszechny przydział.

Podczas gdy strona odnosi się do przydziału rozmiaru, swap odnosi się do "poruszania się". Jeśli chcesz poznać szczegóły, spróbuj zajrzeć do All about Linux swap space.

 2
Author: Don Wakefield,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-06 17:19:29

Po prostu inne określenia dla prawie tego samego. Oba odnoszą się do obszaru pamięci wirtualnej, który jest (zwykle) przechowywany na dysku twardym.

*nix, et al. nazwij to " swap" Wywołania systemu Windows To plik pagefile

W Linuksie, etc, przestrzeń wymiany jest zazwyczaj oddzielną partycją. W systemie windows jest to zazwyczaj plik przechowywany w systemie plików systemu operacyjnego, gdzieś.

 0
Author: Josh Wright,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-06 17:11:54