Re: W czym Windows 8 jest lepszy?

Autor: Radosław Sokół <Radoslaw.Sokol_at_grush.one.pl>
Data: Mon, 12 Nov 2012 22:30:49 +0100
Message-ID: <k7rpqc$7q1$1@node1.news.atman.pl>
Content-Type: text/plain; charset=UTF-8; format=flowed

W dniu 12.11.2012 22:02, Latet pisze:
> No właśnie o to mi chodzi. Dlaczego po 4 KiB, a nie np. po 4 MB. Przecież byłoby w sumie o niebo szybciej.

Bo strony 4 MiB byłyby koszmarnie nieekonomiczne.

Żeby wczytać jakiś jeden podprogram z końca pliku .exe
chciałbyś wczytywać cały blok 4 MiB?

W ten sposób nawet komputer z 4 GiB pamięci szybko by
"wymiękł" i zaczął beznadziejnie przerzucać strony z i
do dysku.

Kiedyś już było coś w tym stylu -- Windows w trybie
Real i Standard oraz OS/2 1.x wymieniały całe segmenty
<= 64 KiB. Wiesz, ile czasu tracili programiści na opty-
malizację rozłożenia podprogramów w segmentach i ile
pamięci się traciło w scenariuszach wielozadaniowych?

> Marzy mi się też takie coś: priorytet dostępu do dysku ma ostatni z włączonych przez usera programów/procesów/zadań. W praktyce mogłoby to sprawić wrażenie szybszego działania systemu. Wszak każdy zna
> sytuacje, w których jakiś wcześniej odpalonty program coś tam na dysku robi i robi (choćby kopiowanie jakiegoś wielkiego folderu), a odpalony później (bo użytkownik nie chce bezczynnie czekać na
> zakończenie działania tego pierwszego) wczytuje się przez to 20x dłużej niż normalnie (bo tamten pierwszy cały czas korzysta z dysku).

Właśnie wymyśliłeś przepis na cudownego wirusa DoSującego
system :) Uruchamiałby co chwilę nowy proces wczytujący duży
plik.

Wybacz, ale jedyną sensowną opcją, by system działał spraw-
nie, jest zapewnienie procesom w pełni sprawiedliwego po-
działu zasobów. Ewentualnie, mniej zasobów mogą dostać te
procesy, które *zadeklarują*, że ich nie potrzebują.

W Twoim scenariuszu ("[...] wcześniej odpalonty program coś
tam na dysku robi i robi [...]") po prostu tenże program
powinien zostać *dobrze napisany* i w momencie rozpoczynania
długotrwałej operacji dyskowej zmniejszać priorytet I/O na
klasę "idle", sygnalizując w ten sposób systemowi, że jego
żądania I/O są mało istotne wobec bieżących potrzeb.

Poza tym wracamy do tego samego: gdyby programy byłyby mniej-
sze, uruchomienie kolejnej aplikacji wymagałoby wczytania
nie 5 000, ale 500 stron pamięci.

> Dlaczego nie można zrobić tak, że ręczne wywołanie czegokolwiek przez usera (np. przez kliknięcie ikonki) oznacza "wstrzymaj na chwilę wsztystko inne i możliwie szybko załaduj to, co user właśnie
> wskazał".

Bo wtedy szlag by trafił całą wielozadaniowość, przetwarzanie
w tle, realizację zadań potencjalnie ważnych w stosunku do
(na przykład) uruchamiania jakichś pierdółek w stylu pasjansa.

Poza tym istnieją w systemie operacyjnym moduły, które w pew-
nym zakresie ograniczają te objawy, o których piszesz. Usługi
wstępnego ładowania do pamięci tworzą profile każdej aplikacji
i w momencie jej uruchamiania próbują *sekwencyjnie* wczytać
wszystkie strony, które są potrzebne podczas rozruchu procesu.
Niestety taka strategia a) nie zawsze jest skuteczna, bo
stron może być za dużo albo mogą się zmieniać przy każdym
uruchomieniu, b) jest nieekonomiczna, bo wczytywane jest też
trochę śmiecia, który niekoniecznie jest potrzebny zaraz w
pierwszych sekundach działania procesu.

-- 
|""""""""""""""""""""""""""""""""""""""""""""""""""""""""""|
| Radosław Sokół  |  http://www.grush.one.pl/              |
|                 |                                        |
\........................................................../
Received on Mon 12 Nov 2012 - 22:35:02 MET

To archiwum zosta³o wygenerowane przez hypermail 2.2.0 : Mon 12 Nov 2012 - 22:42:01 MET