26

Odp: GrafX2 port Atari Falcon

sqward napisał/a:

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ę :]

27

Odp: GrafX2 port Atari Falcon

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?

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

Odp: GrafX2 port Atari Falcon

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.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

29

Odp: GrafX2 port Atari Falcon

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).

saulot / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

30

Odp: GrafX2 port Atari Falcon

Cyprian napisał/a:

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 / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

Odp: GrafX2 port Atari Falcon

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.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

32

Odp: GrafX2 port Atari Falcon

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 :)).

saulot / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

Odp: GrafX2 port Atari Falcon

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?

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

34

Odp: GrafX2 port Atari Falcon

Adam Klobukowski napisał/a:

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ę?

Adam Klobukowski napisał/a:

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):

Wikipedia napisał/a:

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.

Adam Klobukowski napisał/a:

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ć?


Adam Klobukowski napisał/a:

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 ;)).


Adam Klobukowski napisał/a:

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 ;).

saulot / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

35

Odp: GrafX2 port Atari Falcon

Cześć,
Program jest już do ściągnięcia na mojej stronie WWW. :D

saulot / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

Odp: GrafX2 port Atari Falcon

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.

Ostatnio edytowany przez Adam Klobukowski (2011-01-31 00:25:48)

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

37

Odp: GrafX2 port Atari Falcon

AdamK napisał/a:

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?

saulot / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

Odp: GrafX2 port Atari Falcon

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.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

39

Odp: GrafX2 port Atari Falcon

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.

saulot / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

Odp: GrafX2 port Atari Falcon

saulot napisał/a:

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ł?

Trzy najpopularniejsze w Polsce platformy 8-bit: Piwo, Wino i Wódka.
http://ym-digital.i-demo.pl/ - http://yerzmyey.i-demo.pl - https://soundcloud.com/yerzmyey
ŻADEN DOBRY UCZYNEK NIE UJDZIE BEZ KARY.

41

Odp: GrafX2 port Atari Falcon

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..

Ostatnio edytowany przez saulot (2011-01-31 09:31:03)

saulot / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

Odp: GrafX2 port Atari Falcon

Cześć,
na XP, WinRARem.
Wypakowuje on plik wielkości niecałe 2Mb o tej nazwie.




____EDIT____
Zgadza się, ZIP na ST jest już wiekoooooowy.

Ostatnio edytowany przez YERZMYEY/HOOY-PROGRAM (2011-01-31 09:32:06)

Trzy najpopularniejsze w Polsce platformy 8-bit: Piwo, Wino i Wódka.
http://ym-digital.i-demo.pl/ - http://yerzmyey.i-demo.pl - https://soundcloud.com/yerzmyey
ŻADEN DOBRY UCZYNEK NIE UJDZIE BEZ KARY.

43

Odp: GrafX2 port Atari Falcon

to spróbuj izarca jest darmowy, daje radę i obsługuje dużo innych formatów.

saulot / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

Odp: GrafX2 port Atari Falcon

Ok, tak uczyniłem.
Izarc zrobił to samo: wypakował plik o nazwie "GRAFX2_2.2_beta" i wielkości 1 908 Kb.

Trzy najpopularniejsze w Polsce platformy 8-bit: Piwo, Wino i Wódka.
http://ym-digital.i-demo.pl/ - http://yerzmyey.i-demo.pl - https://soundcloud.com/yerzmyey
ŻADEN DOBRY UCZYNEK NIE UJDZIE BEZ KARY.

45

Odp: GrafX2 port Atari Falcon

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)?

saulot / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

Odp: GrafX2 port Atari Falcon

Tak. Na każdy sposób i z każdego programu. Za każdym razem 'wyciąga' duży plik o wspomnianej nazwie.

Trzy najpopularniejsze w Polsce platformy 8-bit: Piwo, Wino i Wódka.
http://ym-digital.i-demo.pl/ - http://yerzmyey.i-demo.pl - https://soundcloud.com/yerzmyey
ŻADEN DOBRY UCZYNEK NIE UJDZIE BEZ KARY.

47

Odp: GrafX2 port Atari Falcon

przepakowałem archiwum, spróbuj teraz..

saulot / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

Odp: GrafX2 port Atari Falcon

To samo było.
Ale nieważne, już mi Mono przepakował u siebie.
Może uda mi się to dzisiaj nieco potestować.

Trzy najpopularniejsze w Polsce platformy 8-bit: Piwo, Wino i Wódka.
http://ym-digital.i-demo.pl/ - http://yerzmyey.i-demo.pl - https://soundcloud.com/yerzmyey
ŻADEN DOBRY UCZYNEK NIE UJDZIE BEZ KARY.

49

Odp: GrafX2 port Atari Falcon

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.

saulot / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

50

Odp: GrafX2 port Atari Falcon

7zip, tar, stzip, totalcommander... Oczywiście polecam tylko na windows i st :)

Ostatnio edytowany przez sqward (2011-01-31 15:00:53)

What can be asserted without proof can be dismissed without proof.