Dostał odemnie 14MB, jak nie używa to jego strata :P
To niech odda :) mój drugi falcon ma tylko 4MB więc chętnie przygarnę :]
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
Nowa obudowa dla 800XL - zostało 36 dni Niewiele ponad miesiąc do końca kampanii.
Zmarł twórca języka BASIC Zmarł Thomas E. Kurtz twórca języka BASIC
Zmiana serwera atari.area Serwis przeszedł właśnie ważną aktualizację infrastruktury
4th Atari ASCII Compo - wyniki Dostępne są już wyniki tegorocznego ATASCII Compo.
thing neo 1.60 Olivier Landemarre wydał nową wersję desktopu Thing.
atari.area forum » Fabryka - 16/32bit » GrafX2 port Atari Falcon
Strony Poprzednia 1 2 3 Następna
Zaloguj się lub zarejestruj by napisać odpowiedź
Dostał odemnie 14MB, jak nie używa to jego strata :P
To niech odda :) mój drugi falcon ma tylko 4MB więc chętnie przygarnę :]
sqward, dzieki za pliki, na razie zauważyłem jeden problem. W okienku Zapis/Odczyt nie da się wyść poza katalog domowy GrafX2, brakuje tam opcji "<-PARENT DIRECTORY"
jaka jest zaleta UPXa i jak sie to ma do czasu uruchomienia aplikacji?
saulot: pod TOSem fragmentacja nie jest takim problemem, bo na raz działa tylko jeden program. Jak skończy działać, to cała pamięć jaką zaalokował jest zwracana systemowi (chyba że się zrobi TSRem). Pod MiNTem/MagiCem, jest to większy problem bo programów działa na raz wiele i to się kumuluje z czasem. Nie ma to też nic wspólnego z ochroną pamięci. Upx (i każdy inny paker) wpływa negatywnie (tj. potencjalnie zwiększa) na fragmentację pamięci.
AdamK: mi to wygląda na jakieś zabobony ;). Bo co robi upx, pakuje binarkę (obecnie mam współczynnik 49%) i rozpakowuje ją w locie w czasie wykonania. Fragmentacja pamięci jest zawsze jak jest dużo alokacji/dealokacji pamięci i tego nie da się uniknąć (po to ludzie piszą własne managery pamięci).
W okienku Zapis/Odczyt nie da się wyść poza katalog domowy GrafX2, brakuje tam opcji "<-PARENT DIRECTORY"
jaka jest zaleta UPXa i jak sie to ma do czasu uruchomienia aplikacji?
Tego buga poprawiłem w połowie, parent directory nie pojawia się pod tosem (pod mintem jest ok), bo podczas listowania katalogu nie jest wyświetlany katalog ".."(parent). Więc muszę po prostu trochę to zmodyfikować tj. przeszukać listę i sprawdzić czy jest '..' na liście, jak nie ma to dodać. Obecnie dodaję parenta "na pałę" co skutkuje podwójnym parent directory pod mintem.
Odnośnie upx'a to wszystko jest rozpakowywane w locie i czas jest prawie niezauważalny. Edytor Papyrus był nim pakowany. Tak jak wspomniałem w poprzednim poście na binarkach gcc mam współczynnik pakowania ~49%.
BTW udało mi się skompilować wersję bez warstw, no i trudno powiedzieć czy to coś przyśpiesza. Pozatym malowanie z FX'ami jest na standardowym falconie trochę wolne, może by się dało przerzucić te funkcjonalności na dsp?
saulot: to nie za żadne zabobony, tylko fakty. Managery pamięci maja sens jak masz pamięć wirtualną, gdzie fragmentacja na poziomie OS jest nieistotna, pozostaje jedynie na poziomie pojedynczego procesu.
AdamK: musiałbyś mi przedstawić coś bardziej przekonującego, bo to co piszesz zupełnie do mnie nie przemawia. Nie przytaczasz żadnych konkretów. Pisanie "UPX jest zły pod MiNTem, bo tak jest i już" nie jest żadnym faktem. Lepiej byś napisał dlaczego? Bo się uruchamia i alokuje/dealokuje pamięć jak inne programy, które mogą być odpalane pod systemem? :)
Powiem tak własny manager pamięci jest zawsze lepszy niż malloc czy cokolwiek innego. Pamięć wirtualna itp. nie ma tutaj nic do rzeczy. Przez manager pamięci rozumiem tutaj, że alokujesz duży blok(i) pamięci raz(to minimalizuje trochę fragmentację) i sam zarządzasz tym co się wewnątrz tego bloku dzieje i masz własne mechanizmy do śledzenia co tam jest robione. Nie bez powodu nikt np. w we współczesnych grach nie polega tylko na systemie operacyjnym (biorąc pod uwagę, że są np. różne rodzaje pamięci: fizyczna, wirtualna, na karcie graficznej itp). Na atari jest ST/TT ram i teraz jeszcze dochodzi pamięć na kartach graficznych PCI. IMHO bardziej cenne są zasoby systemowe tym bardziej taki manager pamięci jest potrzebny, więc nie zgodzę się, że manager pamięci jest potrzebny tylko jak jest pamięć wirtualna. Nikt o zdrowych zmysłach nie polega w 100% na OS'ie i bibliotece standardowej C.
Pozatym tak jak pisałem, zawsze jest reset jak pamięć się skończy (reset jest często praktykowany np. na konsolach :)).
UPX jak każdy paker exe, najpierw alokuje pamięć na rozpakowanie, rozpakowuje, a potem ewentualnie zwalnia miejsce spakowanych danych. To zwiększa fragmentację.
Managery pamięci bez pamięci wirtualnej nie mają większego sensu. Jeśli nie masz pamięci wirtualnej, to alokując 'nadmiarowe' fragmenty pamięci, powodujesz że staje się ona niedostępna, mimo że wcale nie musisz jej wykorzystać. Jeśli masz pamięć wirtualną to możesz sobie alokować niemal do woli, bo i tak naprawdę w tym wypadku decyduje dopiero sam faktyczny akt dostępu do pamięci, a pofragmentowac możesz co najwyżej swoją przestrzeń adresową, a nie całego systemu.
Reset przy braku pamięci też nie jest taka oczywista, o wiele lepszym rozwiązaniem, praktykowanym przez wiele systemów jest OOM killer.
Btw. Ile ma binarka GrafX2 po zestripowaniu?
UPX jak każdy paker exe, najpierw alokuje pamięć na rozpakowanie, rozpakowuje, a potem ewentualnie zwalnia miejsce spakowanych danych. To zwiększa fragmentację.
Czyli tak jak inny program alokujący dealokujący pamięć. Więc z tego można wywnioskować jedynie, że każdy program użytkownika robiąc alokację/dealokację zwiększa fragmentację pamięci. I tak jest to prawda :), no chyba, że robi alokacje dobrze i korzysta z własnego managera. Ale to nie oznacza, że upx czy inny paker jest zły, bo robi te same rzeczy co inne programy. Pozatym skąd wiesz, może ma jakiś własny manager pamięci, który minimalizuje fragmentację?
Managery pamięci bez pamięci wirtualnej nie mają większego sensu.
Jeśli nie masz pamięci wirtualnej, to alokując 'nadmiarowe' fragmenty pamięci, powodujesz że staje się ona niedostępna, mimo że wcale nie musisz jej wykorzystać.
Racja, ale po to to właśnie jest. Robisz alokację raz, albo w większych/równych blokach (w jednostkach kilku, kilkunastu bajtów w wielokrotności minimalnych minimalnych bloków w jakich pamięć jest przydzielana). Jak Ci się pamięć kończy to alokuje się następne bloki lub zwalnia. W razie potrzeby sam sobie tymi blokami wachlujesz, żeby zminimalizować dziury pomiędzy nimi (jak np. zwolnisz jeden blok w środku, to tak przykładowo piszę w dużym uproszczeniu).
Pozwolę sobie przytoczyć taką Wikipedię i cytat dotyczący fragmentacji zewnętrznej/wewnętrzej, który popiera moje twierdzenie (patrz zapis dot. memory poll):
Fragmentacja zewnętrzna pojawia w trakcie działania aplikacji, gdy dochodzi do szeregu przydzielania i zwalniania bloków pamięci o różnej wielkości, skutkiem czego po pewnym czasie bloki wolne i zajęte są przemieszane.
.... ciach
systemy operacyjne przydzielają aplikacjom strony (np. w procesorach x86 strona ma rozmiar 4kB), zaś wewnętrznie aplikacje zwykle alokują pamięć w jednostkach kilku, kilkunastu bajtów (np. w bibliotece GNU libc to 8 lub 16 bajtów). Ponieważ przydzielana jest pamięć o rozmiarze zaokrąglonym w górę do wielokrotności rozmiaru bloku, toteż nadwyżka po pierwsze nie jest używana przez aplikację, po drugie zaś zarządca pamięci nie może jej oddać innej aplikacji. Pamięć taka jest marnowana - np. plik o rozmiarze 1 bajta w istocie zajmie cały klaster, czyli kilka kB - i te kilka kB minus 1 bajt pozostanie niewykorzystane, podobnie jeśli program zażąda od systemu operacyjnego przydzielenia 1 bajta, otrzyma całą stronę.Fragmentacja zewnętrzna pojawia w trakcie działania aplikacji, gdy dochodzi do szeregu przydzielania i zwalniania bloków pamięci o różnej wielkości, skutkiem czego po pewnym czasie bloki wolne i zajęte są przemieszane.
Fragmentacja wewnętrzna jest czasami rozwiązywana na poziomie aplikacji poprzez zastosowanie specjalizowanych zarządców pamięci. Częstym rozwiązaniem są tzw. pule pamięci (ang. memory poll), które operują na blokach o rozmiarze ściśle wymaganym przez aplikację, co praktycznie eliminuje ten rodzaj fragmentacji.
Fragmentacja zewnętrzna w zarządzaniu pamięcią operacyjną może być wyeliminowana przez kompaktowanie pamięci, tj. przesuwanie zajętych bloków tak, żeby możliwie jak najwięcej wolnych bloków połączyło się w ciągłe obszary. Kompaktowanie jest możliwe tylko wtedy, gdy zarządca ma pełne informacje o pamięci i jej wykorzystaniu przez program - zwykle możliwe do zrealizowania w aplikacjach używających odśmiecania.
Jeśli masz pamięć wirtualną to możesz sobie alokować niemal do woli, bo i tak naprawdę w tym wypadku decyduje dopiero sam faktyczny akt dostępu do pamięci, a pofragmentowac możesz co najwyżej swoją przestrzeń adresową, a nie całego systemu.
Ale to wcale nie potwierdza tego, że menedżery są niepotrzebne do pamięci innej niż wirtualna. Przy zwykłej pamięci też mogę sobie alokować do woli, aż mi się nie skończy albo jak już będzie tak pofragmentowana, że nie będzie się dało nic zrobić. Czym się różni pofragmentowanie przestrzeni adresowej od zwykłej fragmentacji? Chyba przestrzeń adresowa też może się kiedyś skończyć?
Reset przy braku pamięci też nie jest taka oczywista, o wiele lepszym rozwiązaniem, praktykowanym przez wiele systemów jest OOM killer.
Przez wiele systemów masz na myśli linuxa? ;)
Niestety to jest oczywiste. Zdziwiłbyś się w ilu książkach o deweloperce na systemy o zamkniętej architekturze, reset urządzenia jest proponowany do usuwania tego typu problemów. Przy wczytywaniu leveli ci mogą robić soft reset 'z partyzanta', a użytkownik nawet tego nie wie. A dlaczego? Żeby sobie zaoszczędzić sobie problemów podczas działania aplikacji i pracować na 'odświeżonym systemie'. A stosowanie ww. memory poll to standard (konsole, PCty, windy, tostery, lodówki ;)).
Btw. Ile ma binarka GrafX2 po zestripowaniu?
Bez stripa 3,2mb, po zestripowaniu 2mb z hakiem, po upxie trochę mniej niż 900kb. Binarka np. Papyrusa ma np o ile dobrze pamiętam 5mb, po rozpakowaniu pewnie z 10mb.
I powiem tak, fragmentacji na MiNCie się nie boję, bo prędzej system mi zejdzie niż wystąpi brak pamięci z powodu fragmentacji ;).
Cześć,
Program jest już do ściągnięcia na mojej stronie WWW. :D
Saulot: ja tylko niosę pomoc.
Fragmentacja pamięci&przestrzeni adresowej to to samo. Jest z tym problem w MiNTcie, zwłaszcza jak masz np. 14MB pamięci, no ale jak się nie chcesz przejmować to nie zmuszam. Tyle że ja jak miałem tyle pamięci to się tym przejmowałem i był to dla mnie problem.
Nie pisałem że zarządcy pamięci są niepotrzebni bez pamięci wirtualnej, ale robią się trochę niepraktyczni. Alokowac możesz sobie zawsze do woli, ale w systemie wielozadaniowym bez wirtualizacji pamięci powinieneś zachowywać się kulturalnie i nie robić tego ponad miarę, bo innym aplikacjom zabraknie.
Na koniec jeszcze dodam, że aplikacyjni zarządcy pamięci pod MiNTem robią się jeszcze mniej praktyczni, bo MiNT ma specjalne mechanizmy przeciwdziałania fragmentacji pamięci.
To tyle.
Fragmentacja pamięci&przestrzeni adresowej to to samo. Jest z tym problem w MiNTcie, zwłaszcza jak masz np. 14MB pamięci, no ale jak się nie chcesz przejmować to nie zmuszam. Tyle że ja jak miałem tyle pamięci to się tym przejmowałem i był to dla mnie problem.
Nie to że się nie przejmuję. Nie maiłem tego typu problemów. Możesz napisać coś więcej co robiłeś i jak to wszystko wyglądało? Bo ja nigdy nie miałem sytuacji, że 14mb mi się skończyło :)
Nie pisałem że zarządcy pamięci są niepotrzebni bez pamięci wirtualnej, ale robią się trochę niepraktyczni.
Sformułowałeś tak zdania, że można było coś takiego wywnioskować.
Na koniec jeszcze dodam, że aplikacyjni zarządcy pamięci pod MiNTem robią się jeszcze mniej praktyczni, bo MiNT ma specjalne mechanizmy przeciwdziałania fragmentacji pamięci.
Nie ufam systemom operacyjnym, a mintowi to już w ogóle. Jakie to są mechanizmy i jak to działa?
Objawia się to tak: masz np. 6mb wolnej pamięci, a nie możesz odpalić programu o wielkości 1mb, bo nie ma odpowiednio dużego ciągłego fragmentu pamięci.
MiNT alokuje różnej wielkości bloki pamięci w różny sposób. Zamiast alokować wszystko jak leci, małe bloki są grupowane w jednym miejscu, średnie w innym, duże w jeszcze innym. To powoduje zmniejszenie fragmentacji pozostałej, wolnej pamięci. Dokładnych szczegółów nie pamiętam, implementował to, i pisał o tym Frank Naumann, albo na MiNTLiście, opis pewnie jest też w źródłach MiNTa.
heh, to jeszcze nigdy nie miałem takiej sytuacji. Zawsze szybciej jest crash albo zawiecha :D. No i właśnie jak sobie to co wyżej piszesz to myślę sobie "memory pool" jest jednak dobry.
Tak czy inaczej odnośnie binarek to jak ktoś się bardzo uprze to mogę też wystawić nie z upx'owane.
BTW jest nowa wersja kompilatora GCC 4.5 (cygwin/linux) z nowymi fiksami.
Cześć,
Program jest już do ściągnięcia na mojej stronie WWW. :D
W ZIPie znalazłem tylko plik "GRAFX2_2.2_beta".
Co to za rodzaj pliku, jakie mu nadać rozszerzenie, żeby działał?
to jest katalog, czym to rozpakowujesz i na czym? Pakowałem to izARCem pod linuxem, katalog ma długą nazwę i ST-ZIP może mieć z tym problem. Generalnie to ma same problemy..
Cześć,
na XP, WinRARem.
Wypakowuje on plik wielkości niecałe 2Mb o tej nazwie.
____EDIT____
Zgadza się, ZIP na ST jest już wiekoooooowy.
to spróbuj izarca jest darmowy, daje radę i obsługuje dużo innych formatów.
Ok, tak uczyniłem.
Izarc zrobił to samo: wypakował plik o nazwie "GRAFX2_2.2_beta" i wielkości 1 908 Kb.
to dziwne, u mnie wypakowuje się normalnie(przed chwilą sprawdzałem). Próbowałeś przeciągnąć na pulpit i zrobić extract here albo extract to directory z menu kontekstowego(izarc->wypakuj tutaj)?
Tak. Na każdy sposób i z każdego programu. Za każdym razem 'wyciąga' duży plik o wspomnianej nazwie.
przepakowałem archiwum, spróbuj teraz..
To samo było.
Ale nieważne, już mi Mono przepakował u siebie.
Może uda mi się to dzisiaj nieco potestować.
zgłosiła się do mnie druga osoba z problemem takim, że pliki nie były rozpakowywane do katalogów tylko tworzyły się ultra długie nazwy plików ze ścieżką :)
Sprawdziłem te moje archiwum na linuxie i mam to samo - tasiemiec zamiast normalnych plików w folderach :/. Normalnie się zirytowałem...
Ktoś zna może jakieś bardziej niezawodne pakery? Ja już nie wiem czy to wina tych programów czy archiwum jest rzeczywiście skopane.
7zip, tar, stzip, totalcommander... Oczywiście polecam tylko na windows i st :)
Strony Poprzednia 1 2 3 Następna
Zaloguj się lub zarejestruj by napisać odpowiedź
atari.area forum » Fabryka - 16/32bit » GrafX2 port Atari Falcon
Wygenerowano w 0.030 sekund, wykonano 61 zapytań