abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 01:33 | IT novinky

    Microsoft se vyhnul pokutě od Evropské komise za zneužívání svého dominantního postavení na trhu v souvislosti s aplikací Teams. S komisí se dohodl na závazcích, které slíbil splnit. Unijní exekutivě se nelíbilo, že firma svazuje svůj nástroj pro chatování a videohovory Teams se sadou kancelářských programů Office. Microsoft nyní slíbil jasné oddělení aplikace od kancelářských nástrojů, jako jsou Word, Excel a Outlook. Na Microsoft si

    … více »
    Ladislav Hagara | Komentářů: 0
    včera 14:00 | Nová verze

    Samba (Wikipedie), svobodná implementace SMB a Active Directory, byla vydána ve verzi 4.23.0. Počínaje verzí Samba 4.23 jsou unixová rozšíření SMB3 ve výchozím nastavení povolena. Přidána byla podpora SMB3 přes QUIC. Nová utilita smb_prometheus_endpoint exportuje metriky ve formátu Prometheus.

    Ladislav Hagara | Komentářů: 0
    včera 12:00 | Zajímavý článek

    Správcovský tým repozitáře F-Droid pro Android sdílí doporučení, jak řešit žádosti o odstranění nelegálního obsahu. Základem je mít nastavené formální procesy, vyhrazenou e-mailovou adresu a být transparentní. Zdůrazňují také důležitost volby jurisdikce (F-Droid je v Nizozemsku).

    🇵🇸 | Komentářů: 12
    včera 05:33 | Bezpečnostní upozornění

    Byly publikovány informace o další zranitelnosti v procesorech. Nejnovější zranitelnost byla pojmenována VMScape (CVE-2025-40300, GitHub) a v upstream Linuxech je již opravena. Jedná se o variantu Spectre. KVM host může číst data z uživatelského prostoru hypervizoru, např. QEMU.

    Ladislav Hagara | Komentářů: 0
    11.9. 22:00 | Komunita

    V červenci loňského roku organizace Apache Software Foundation (ASF) oznámila, že se částečně přestane dopouštět kulturní apropriace a změní své logo. Dnes bylo nové logo představeno. "Indiánské pírko" bylo nahrazeno dubovým listem a text Apache Software Foundation zkratkou ASF. Slovo Apache se bude "zatím" dál používat. Oficiální název organizace zůstává Apache Software Foundation, stejně jako názvy projektů, například Apache HTTP Server.

    Ladislav Hagara | Komentářů: 11
    11.9. 17:33 | Nová verze

    Byla vydána (𝕏) srpnová aktualizace aneb nová verze 1.104 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.104 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    11.9. 15:33 | IT novinky

    Spotify spustilo přehrávání v bezztrátové kvalitě. V předplatném Spotify Premium.

    Ladislav Hagara | Komentářů: 0
    11.9. 15:00 | IT novinky

    Spoluzakladatel a předseda správní rady americké softwarové společnosti Oracle Larry Ellison vystřídal spoluzakladatele automobilky Tesla a dalších firem Elona Muska na postu nejbohatšího člověka světa. Hodnota Ellisonova majetku díky dnešnímu prudkému posílení ceny akcií Oraclu odpoledne vykazovala nárůst o více než 100 miliard dolarů a dosáhla 393 miliard USD (zhruba 8,2 bilionu Kč). Hodnota Muskova majetku činila zhruba 385 miliard dolarů.

    Ladislav Hagara | Komentářů: 5
    10.9. 21:22 | Nová verze

    Bylo vydáno Eclipse IDE 2025-09 aneb Eclipse 4.37. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.

    Ladislav Hagara | Komentářů: 0
    10.9. 18:22 | IT novinky

    T-Mobile od 15. září zpřístupňuje RCS (Rich Communication Services) zprávy i pro iPhone.

    Ladislav Hagara | Komentářů: 3
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (83%)
     (7%)
     (2%)
     (2%)
     (4%)
     (2%)
    Celkem 167 hlasů
     Komentářů: 12, poslední 10.9. 13:00
    Rozcestník

    Dotaz: DosBox - zpomalení I/O operací

    Grunt avatar 2.3.2018 19:37 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
    DosBox - zpomalení I/O operací
    Přečteno: 468×
    Nejde až tak o úplně klasický dotaz, no nebudu tím zaplevelovat blog takže to plesku sem do poradny. O co mi jde?

    Rád bych v DosBoxu emuloval rychlost I/O operací starých pevných disků či nedejbože disketové mechaniky (DosBox nemá implementovaný FDC – to jen tak pro zajímavost), které měly přístupové doby několik stovek milisekund až klidně celé sekundy. Jak to vypadá? Nějak takto.

    Zpomalení cyklů vykonávání na to nemá příliš vliv. Je to implementováno jako read() volání a to na dnešních strojích může být i pár volání a zachvilku je několik MB dat v paměti než stačí člověk lusknout prstem. Dodám že DosBox samotný (aspoň SVN verze) má implementovaný zpomalovací mechanismus pro I/O operace. Jeden v iohandleru.cpp:
    #define IODELAY_READ_MICROSk (Bit32u)(1024/1.0)
    #define IODELAY_WRITE_MICROSk (Bit32u)(1024/0.75)
    
    inline void IO_USEC_read_delay() {
    	Bits delaycyc = CPU_CycleMax/IODELAY_READ_MICROSk;
    	if(GCC_UNLIKELY(CPU_Cycles < 3*delaycyc)) delaycyc = 0; //Else port acces will set cycles to 0. which might trigger problem with games which read 16 bit values
    	CPU_Cycles -= delaycyc;
    	CPU_IODelayRemoved += delaycyc;
    }
    
    inline void IO_USEC_write_delay() {
    	Bits delaycyc = CPU_CycleMax/IODELAY_WRITE_MICROSk;
    	if(GCC_UNLIKELY(CPU_Cycles < 3*delaycyc)) delaycyc=0;
    	CPU_Cycles -= delaycyc;
    	CPU_IODelayRemoved += delaycyc;
    }
    a konkrétně pro diskové operace nad lokálními soubory se o to stará procedura modify_cycles();
    #ifndef DOSBOX_CPU_H
    #include "cpu.h"
    #endif
    static inline void modify_cycles(Bits value) {
    	if((4*value+5) < CPU_Cycles) {
    		CPU_Cycles -= 4*value;
    		CPU_IODelayRemoved += 4*value;
    	} else {
    		CPU_IODelayRemoved += CPU_Cycles/*-5*/; //don't want to mess with negative
    		CPU_Cycles = 5;
    	}
    }
    
    //použito:
    if (DOS_ReadFile(reg_bx,dos_copybuf,&toread)) {
    				MEM_BlockWrite(SegPhys(ds)+reg_dx,dos_copybuf,toread);
    				reg_ax=toread;
    				CALLBACK_SCF(false);
    			} else {
    				reg_ax=dos.errorcode;
    				CALLBACK_SCF(true);
    			}
                            modify_cycles(reg_ax);
    			dos.echo=false;
    			break;
    V proměnné reg_ax/value je počet bajtů co se bude číst/zapisovat a podle toho se nějak spočte prodleva a prskne se tam. Bohužel to není dokonalé a ač to znatelně zpomaluje I/O operace (když se to zaDEFuje tak jsou I/O operace tak rychlé že načítací obrazovky jen problikávají) stále je to příliš rychlé a to úplně nezávisle na tom co se do toho zadá.

    Vysledoval jsem si použití proměnné CPU_IODelayRemoved, bohužel ta má pouze informativní účel (používá se pouze ustanovování dynamicky se měnící rychlosti) a nemá žádný vliv na samotné plánování vykonávání. O to se stará proměnná CPU_Cycles respektive to co v ní zbude. Bohužel v tom je také zakopaný celý pes. I když zbude jen pár cyklů je to furt dost na to aby to načetlo spoustu dat za pár instrukcí do paměti (volá se dál fread() a to už je vlastně systémová funkce a jede rychlostí systému).

    Jedním funkčním řešením je vklínění funkce usleep() či něčeho podobného do volané procedury. Stačí zadat v milisekundách jak dlouho se má spát a samotné načítání pak funguje tak jako kdysi za starých časů, jenže po dobu co se spí je samozřejmě suspendováno také vykonávání celého virtuálního stroje DOSu, takže místo prodlev to v reálné čase vypadá tak že DosBox laguje jak kráva. Což není úplně přesně to čeho chci dosáhnout.

    Má někdo nějaký lepší nápad jak to implementovat? Jak se to vlastně dělalo v reálném DOSu/BIOSu že vykonávání celé mašiny nebylo zastaveno (jednoznačně si pamatuju že třeba blikal kurzor) zatímco jednotka (a přitom úplně šumák jestli ta pevná nebo ta zplihlá) seekovala a četla?

    Nejde o úplně standardní dotaz, takže se asi nebudu zlobit když se na nic lepšího nepodaří přijít. Ani nemůžu.

    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!

    Odpovědi

    2.3.2018 20:48 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: DosBox - zpomalení I/O operací

    Blikání kurzoru dělá grafická karta. Proto existují textové režimy. Rychlost blikání a velikost kurzoru (první a poslední řádek ve znaku) se dá nastavit. Detaily si už nepamatuji, protože jsem to používal naposledy tak někdy před dvaceti lety. Kurzor bude blikat, i když se procesor zastaví.

    Přístup k disketové mechanice skrze BIOS je blokující. Programy, co při formátování dělali ještě něco jiného, buď pracovali přímo s I/O porty a dokončení operací kontrovaly pollingem nebo prostě dělali operace po malých blocích a prokládali je s jiným užitečným programem. Ten užitečný program stejně většinou jen čekal na stisk klávesy a pak překreslil pár znaků. Takový kooperativní taskwitching byl samozřejmě poznat, že interaktivita psaní na klávesnici šla do háje.

    2.3.2018 21:24 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: DosBox - zpomalení I/O operací

    Tak jsem našel na disku jednotku v Pascalu. K nastavení tvaru kurzoru jsem používal službu 01h na přerušení 10h. Podle tohoto návodu je možné místo přerušení BIOSu si popovídat přímo s grafickou kartou kartou skrze I/O porty 0x3d4 a 0x3d5.

    Frekvenci blikání prý ale standardně měnit nelze. Asi se mi to popletlo s pozorování, že když se změnil textový režim, změnila se i rychlost blikání kurzoru. Ta je totiž daná vertikální obnovovací frekvencí obrazovky a ta se s rozlišením mění.

    Grunt avatar 6.3.2018 22:04 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: DosBox - zpomalení I/O operací
    Přístup k disketové mechanice skrze BIOS je blokující. Programy, co při formátování dělali ještě něco jiného, buď pracovali přímo s I/O porty a dokončení operací kontrovaly pollingem nebo prostě dělali operace po malých blocích a prokládali je s jiným užitečným programem.
    Jenže jak tohle implementovat? Nemůžu prostě na pár milisekund zastavit vykonávání virtuálního stroje. Resp. můžu ale chování moc neodpovídá tomu jak se to opravdu chovalo (až na to přehrávání OPLka, to to simuluje při zátěži vcelku věrně). Týden jsem se rýpal nacpáním ZMBV do mého SVN buildu abych to demonstroval a jen pro to abych zjistil, že usleep se na nahraném videu (zcela logicky ani nemůže, zastavená je aplikace a vnitřní hodiny běží jinou rychlostí a nějaké uspávání je nezajímá) se absolutně neprojevuje. V tom nahrávací obrazovka jenom blinke ;-)
    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    7.3.2018 07:03 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: DosBox - zpomalení I/O operací
    Záleží, co všechno DosBox emuluje. Jestli nedělá I/O porty, tak stačí sleep do obsluhy daného přerušení, protože CPU je očividně jediná věc, kterou emuluje pořádně. V opačném případě by dobrý emulátor měl implementaci obsluhy přerušení napsanou pomocí I/O portů a na nich by měl navěšený emulátor řadiče mechaniky a sleep by se dal do řadiče, aby vrátil potvrzení o dokončení načtení dat se zpožděním. Pokud ale potřebujete řešit řadič mechaniky, tak bych vám doporučil přejít na QEMU, kde implementace bude věrnější hardwaru.
    7.3.2018 01:17 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: DosBox - zpomalení I/O operací
    Vrací se někde ve smyčce načítání "sektorů" freadem do bufferu DOS programu běh zpátky hlavní smyčce, kde se čekají ty umělé zpomalovací cycles nebo kde (?) se zachytává to video?

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.