Article View: pl.comp.os.advocacy
Article #2877Re: Używanie narzędzi M$ przez studentów
From: Jaroslaw Lis
Date: Sat, 17 Jan 1998 03:47
Date: Sat, 17 Jan 1998 03:47
231 lines
11335 bytes
11335 bytes
Piotr Trzcionkowski <ZmieńNa_trzcionk@us.edu.pl> wrote: : 15 Jan 1998 13:26:53 GMT, "Jaroslaw Lis" <lis@papuga.ict.pwr.wroc.pl> : >Czesciowo sie mylisz. W Unix'ach od lat sa sposoby otwarcia pliku : >takie ze udaje on pamiec. Otwarcie zwraca Ci adres pamieci pod ktorym : >plik "jest", a jak zaczynasz czytac ten obszar pamieci, to dopiero : >wtedy swapper dba o to zeby program odczytal prawidlowe dane. : Są też zwykłe funkcje do binarnego czytania pliku :-) Sa. Ale to nie G95, ze musisz korzystac z najgorszego mozliwego rozwiazania. : >Tyle ze jesli to czysty plik tekstowy, to najpierw wypadaloby go : >"przeskanowac" celem np zapamietania indeksow. Co troche zmniejsza : >wydajnosc. : No jasne tylko żadnemu autorowi to do głowy nie przyszło. A gdyby : przyszło to musiałby napisać kod wykorzystywany wyłącznie przez niego : bo przecież nie skłoni innych autorów do używania tego rozwiązania. : Czyli nie dość, że straci kupę czasu to jeszcze wyprodukuje kolejne KB : kodu, który gdzieś musi się podziać. Biorac pod uwage ze struktura tych plikow jest zwykle podobna - sa biblioteki do tego i mozna je wspoluzywac :-) : >: Teraz opiszę jak to wygląda w Windows. Zamiast plików tekstowych są : >: binarne. Cechą plików binarnych jest możliwość skakania po nich. : >: Wymaga to oczywiście pewnej organizacji jednak pozwala na : >: skonstruowanie czegoś takiego jak windowsowe zasoby. Zasoby to różnego : >: rodzaju dane czy to ciągi, czy np. bitmapy, które są połączone z : >: plikiem wykonywalnym, lecz nie są wczytywane do pamięci wraz z : >: uruchomieniem programu. Dopiero jawne odwołanie się w kodzie programu : >: do zasobu powoduje, że znajdzie się on w pamięci fizycznej. Czyli : >: jeśli program wyświetla okienko z zapytaniem to tylko wtedy. : > : >Jesli wspominasz o bitmapach, to i pod unixami sa one zazwyczaj "binarne", : >i jesli sa w osobnych plikach to efekt jest dokladnie ten sam. : Otóż nie. Specyfiką zasobów jest możliwość ich wielokrotnego : wykorzystania, czyli np. dwa programy korzystają ze wspólnych lub : jeden program w wielu miejscach przy czym w pamięci znajduje się tylko : jeden egzemplarz. Chyba pomyliles strony :-) Jak myslisz - po co jest katalog /usr/share pod Unixami? Jak chcesz dzielic wspoluzywac zasoby miedzy programami, jesli sa one w EXE kazdego z nich? : Oczywiście z plikami na dysku też możnaby to zrobić, : np. poprzez mapowanie w pamięci, ale najczęściej się tego nie robi bo : trzeba to oprogramować. Tymczasem obsługa zasobów w Win jest już : wbudowana. Cale "oprogramowanie" sprowadza sie do tego zeby uzyc mmap :-) : >Jesli myslisz o "text table", to masz troche racji, ale: : >1) Windows chyba i tak musi ten fragment przeskanowac zeby znalezc : > indeksy poszczegolnych tekstow. : Nie. Są sortowane, więc nie trzeba ich dodatkowo indeksować. Sortowane, czy jest tablica z offsetami? Samo sortowanie nic nie daje. Ja w programie pisze "komunikat nr 1517" i chce szybko miec adres tego 1517. : >2) komunikaty sa rozrzucone, a blok wczytywany z dysku zwykle spory : > wiec kilkanascie uzywanych czesto komunikatow to bedzie pewnie : > koniecznosc zaladowania kilkudziesieciu KB - czyli polowy pliku : Zależy o czym mówimy, zasoby są wyodrębnionym kawałkiem i jeśli nawet : są czytane stronami i nieszczęśliwie wykorzystują połowę to nadal : druga jest zaoszczędzona. Teraz odnieś to do 300KB zasobów tekstowych : NC. Popatrz na ekran tego programu i przyznaj, że jak jakieś 10KB jest : wykorzystane to jest dobrze. Moze troche wiecej, ale tym bardziej - przeczytac, wyekstrachowac informacje, zapamietac - i nie przejmowac sie tymi zajetymi 10KB :-) : >3) czasy takie ze wczytanie calych 300KB do pamieci trwa 50ms, : > a wczytanie 4KB - 30ms. To co sie bardziej oplaca ? : Tylko, że chodzi o zasoby, które prędzej czy później kończą się. Kiedy : się skończą już nic nie pomoże! Swap. Przeciez mamy swap :-) : >4) jak bardzo,bardzo potrzebujesz wersje polska to przy pliku tekstowym : > poprawisz te komunikaty sam. Przypliku binarnym ... tez, o ile : > masz program do poprawiania. : Problem tkwi przede wszystkim w chęciach. Swego czasu rzuciłem hasło, : że mogę zlinkować NC jak ktoś przetłumaczy to. ... i wszyscy się : zmyli. Bo ty bys chcial gotowe. A tu chodzi o sytuacje przymusowa - np. jest piatek godz 20, a bank MUSI od poniedzialku godzina 8.00 byc operatywny. : >5) mimo ze jest "string table" w resourcach, to nie wszystkie komunikaty : > programow MS sie tam mieszcza. : Napisz do MS, co mnie to To po co zachwalasz? : >6) jak juz wspominalismy - grep szybciej przeszukuje pliki tekstowe, niz : > regedit binarne :-) : Tylko, że jak już wspominałem wyszukanie wybranego klucza grep robi : wielokrotnie wolniej niż regedit (oczywiście w cudzysłowiu bo on : trochę do czego innego jest). Weź chłopie zastanów się co gadasz a nie : powtarzaj w kółko jednego argumentu. Twój pomiar był kompletnie : bezsensowny i dobrze o tym wiesz. A jak nie wiesz to się dowiedz :-) Az tak bardzo bezsensowny to on nie byl - ile juz ja sie naczekalem zeby np wykasowac wszystkie pozostalosci po faxie w registry. : >7) stosowanie funkcji alokujacych i zwalniajacych zasoby jawnie - wydluza : > program i zwalnia pamiec. Chyba lepiej bedzie jak zrobi to : > automatycznie swapper systemowy - w razie potrzeby. : Otóż nie. Zasoby mają taką właściwość, że nawet jeśli są zwolnione, : leżą w pamięci póki jej nie braknie, wtedy dopiero system wymiata to : co jest najrzadziej używane. Zasoby wykorzystywane często, będą leżały : w pamięci. Dokładając współdzielenie można się spodziewać znacznego : zysku. Ale zrozum ze w obu przypadkach masz to samo. W jednym programy otworzyly kilka plikow przez mmap, w drugim zaladowaly dll z zasobami. Tylko ze w tym drugim jeszcze co raz program wywoluje procedure alokacji i zwolnienia zasobu - tylko dlatego ze kiedys MS tak sobie wymyslil i teraz glupio sie wycofac. A po co to robic skoro sam piszesz ze procedura zwalniania nic nie robi? : Też system alokuje na różne sposoby 150MB podczas gdy mam tylko : 32MB z czego ok. 8MB jest zablokowanych. 5 razy więcej pamięci niż : fizycznej ! Ja bym sie chetnie tylko dowidzial po co ten system alokuje 150MB, jesli ja mu jeszcze nie kazalem nic zrobic :-) : >: Z tego też powodu plików używanych w systemie windows nie : >: da się modyfikować, kiedy są "uruchomione". : > : >Tu za przeproszeniem programistow z MS nalezy odeslac na kurs unixa. : >Tu od samego poczatku mozesz sobie pliki kasowac, zakladac, zmieniac : >nazwy, nie bacza na rownolegle dzialajace programy - a wszystko : >ciagle dziala, w dodatku z pewnym sensem :-) : Po co, np. tak miałoby to wyglądać? Zeby nie miec glupich problemow, ze do zainstalowania jest 20 serwis packow, ale pomiedzy kazdym trzeba system resetowac, bo podmienianego pliku nie mozna skasowac gdyz "jest uzywany". Starenki unix mial to od zawsze dobrze - plik uzywany, a skasowac sie da. A program nadal chodzi :-) : >A nie - program sie wysypal, pliku skasowac nie moge, bo winda : >mysli ze program ciagle dziala, no coz - troche dziala bo : >"program nie odpowiada i nie moge go zakonczyc" :-) : On tylko przestał obsługiwać kolejkę komunikatów. Nadal można go zabić : jak robi się to pod unixami. Są programy nie używające w ogóle : kolejki. TO zabicie nie zawsze chce dzialac w systemach MS :-) : >: W taki to właśnie sposób : >: da się oszczędzić ogromne ilości pamięci i nigdy całe 300KB nie : >: znajduje się w pamięci tylko jakiś skromny procent. : > : >I to bezczelnie piszesz o systemie ktoremu pamieci nigdy za duzo :-) : >64MB - swapuje, 128MB - swapuje, : A to już kwestia programów. Uruchom sobie jakiegoś Office'a na Linuxie : i zobaczymy jak będzie pracował. Jakiego programu - sam system na dzien dobry wszystko zzera :-) : >: Jak widać Linux "może się schować" ze swoimi pliczkami tekstowymi. : >: ZAWSZE będzie zżerał więcej zasobów (rozumianych ogólnie). : > : >Czy "zawsze" to bym sie spieral, ale za to zyskujemy elastycznosc - : >a osobiscie uwazam to za wazniejsze. Zasoby szybko tanieja :-) : Co nie zmienia faktu, że Kloczek ma zwidy odnośnie tego konkretnego : przykładu. Smiem twierdzic ze nie ma. Zalezy jeszcze jak to konkretnie zrobiono. [np - plik jest z komentarzami, ale te komentarze same sie zapisuja, wiec siedza w programie :-)] : >Ktorem Windows? Win32? byc moze. : Win95/nt. : >Ale to co piszesz jest od Win 3.0 - wybacz, najbardziej udziwnione : >zarzadzanie pamiecia ktore zdarzylo mi sie zobaczyc... : Niestety to co było w <=3.1 już funkcjonuje inaczej. Przede wszystkim : płaski model pamięci pozbawiony ograniczeń DPMI. Oczywiście nadal : zachowuje kompatybilność wsteczną. Za cholere nie rozumiem o jakich ograniczeniach wspominasz, z ktorych wynikalby pomysl ze blok pamieci najpierw sie alokuje, potem lokuje, do tego dochodza tajemnicze opcje ktore nie maja sensu, do tego dochodzi smiesznie ustalany domyslny rozmiar swapfile i jeszcze smieszniejszy komunikat "Windows zalozy dyz plik wymiany, ale obsluzy tylko tyle ile podal jako maksymalny rozmiar", do tego dochodza tajne parametry ktore system pozwalal sobie dodac dla sterowania swapperem. A jesli mowa o Win95/NT - mam taki objaw, ze po zapuszczeniu procesu ktory czyta sekwencyjnie dlugi pliki - cyklicznie przystaje co pare sekund rownolegly proces obliczeniowy. A przeciez jako czesto uzywany i krotki - pamiec nie powinna mu byc odbierana na potrzeby cache. Ba - na poczatku to dostaje po chwili komunikat ze mam za malo pamieci! No fakt - swapa mam malego, ale wypadaloby by ze 32MB ram i 10MB swap powinny starczyc do odpalenia dwoch okienek dosowych, w ktorych - w jednym liczy sie malutki programik [moze z 60KB ma], a w drugim kopiujemy pliczek [200MB] do nul. Ale coz - cache zabiera pamiec, chce wiecej, wiecej - i swapa nie starcza. Co prawda mam drugi - ale cos nie moge Neandertal Technology zmusic do uzywania go bez komunikatu :-) J.
Technical Details
Message-ID:
<69p9lf$gs1$19@okapi.ict.pwr.wroc.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!uw.edu.pl!ict.pwr.wroc.pl!lisReferences:
<69g437$9md$1@sunrise.pg.gda.pl> <35251cc3.481832191@zeus.polsl.gliwice.pl> <34BCECBE.4019@krysia.uni.lodz.pl> <69j1lq$a6b$2@newsfeed.onet.pl> <69jane$2m8$1@sunrise.pg.gda.pl> <34fd7c93.571909582@zeus.polsl.gliwice.pl> <69l2qt$6h9$13@okapi.ict.pwr.wroc.pl> <34c24e06.625536479@zeus.polsl.gliwice.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!uw.edu.pl!ict.pwr.wroc.pl!lis From: "Jaroslaw Lis" <lis@papuga.ict.pwr.wroc.pl> Newsgroups: pl.comp.os.advocacy Subject: Re: Używanie narzędzi M$ przez studentów Date: 17 Jan 1998 03:47:59 GMT Organization: Technical University of Wroclaw, Poland Lines: 231 Message-ID: <69p9lf$gs1$19@okapi.ict.pwr.wroc.pl> References: <69g437$9md$1@sunrise.pg.gda.pl> <35251cc3.481832191@zeus.polsl.gliwice.pl> <34BCECBE.4019@krysia.uni.lodz.pl> <69j1lq$a6b$2@newsfeed.onet.pl> <69jane$2m8$1@sunrise.pg.gda.pl> <34fd7c93.571909582@zeus.polsl.gliwice.pl> <69l2qt$6h9$13@okapi.ict.pwr.wroc.pl> <34c24e06.625536479@zeus.polsl.gliwice.pl> NNTP-Posting-Host: okapi.ict.pwr.wroc.pl Mime-Version: 1.0 X-Newsreader: TIN [UNIX 1.3 unoff BETA 970304; sun4m SunOS 5.4] Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit