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í
×

včera 23:55 | Pozvánky

Spolek OpenAlt zve příznivce otevřených technologií a otevřeného přístupu na 145. brněnský sraz, který proběhne v pátek 20. října od 18:00 hodin v restauraci Time Out na adrese Novoměstská 2 v Řečkovicích. Jedná se o poslední sraz před konferencí OpenAlt 2017, jež proběhne o víkendu 4. a 5. listopadu 2017 na FIT VUT v Brně. Běží registrace účastníků.

Ladislav Hagara | Komentářů: 0
včera 21:44 | Nová verze

Byla vydána verze 5.2.0 multiplatformního virtualizačního nástroje Oracle VM VirtualBox. Jedná se o první stabilní verzi z nové větve 5.2. Z novinek lze zmínit například možnost exportování VM do Oracle Cloudu, bezobslužnou instalaci hostovaného systému nebo vylepšené GUI. Podrobnosti v seznamu změn. Aktualizována byla také dokumentace.

Ladislav Hagara | Komentářů: 1
včera 14:00 | Zajímavý projekt

Byl spuštěn Humble Down Under Bundle. Za vlastní cenu lze koupit multiplatformní hry The Warlock of Firetop Mountain, Screencheat, Hand of Fate a Satellite Reign. Při nadprůměrné platbě (aktuálně 3,63 $) také Hacknet, Hacknet Labyrinths, Crawl a Hurtworld. Při platbě 12 $ a více lze získat navíc Armello.

Ladislav Hagara | Komentářů: 0
včera 13:00 | Nová verze

Google Chrome 62 byl prohlášen za stabilní (YouTube). Nejnovější stabilní verze 62.0.3202.62 tohoto webového prohlížeče přináší řadu oprav a vylepšení. Vylepšeny byly také nástroje pro vývojáře (YouTube). Opraveno bylo 35 bezpečnostních chyb.

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

Článek (en) na Mozilla.cz je věnován vykreslování stránek ve Firefoxu. V průběhu roku 2018 by se ve Firefoxu měl objevit WebRender, jenž by měl vykreslování stránek urychlit díky využití GPU.

Ladislav Hagara | Komentářů: 4
včera 08:22 | Bezpečnostní upozornění

NÚKIB (Národní úřad pro kybernetickou a informační bezpečnost) informuje o zranitelnosti ROCA v procesu generování RSA klíčů, který se odehrává v softwarové knihovně implementované například v kryptografických čipových kartách, bezpečnostních tokenech a dalších hardwarových čipech vyrobených společností Infineon Technologies AG. Zranitelnost umožňuje praktický faktorizační útok, při kterém útočník dokáže vypočítat

… více »
Ladislav Hagara | Komentářů: 3
včera 01:23 | Zajímavý software

Příspěvek na blogu otevřené certifikační autority Let's Encrypt informuje o začlenění podpory protokolu ACME (Automatic Certificate Management Environment) přímo do webového serveru Apache. Klienty ACME lze nahradit novým modulem Apache mod_md. Na vývoj tohoto modulu bylo uvolněno 70 tisíc dolarů z programu Mozilla Open Source Support (MOSS). K rozchození HTTPS na Apache stačí nově přidat do konfiguračního souboru řádek s ManagedDomain. Minutový videonávod na YouTube [reddit].

Ladislav Hagara | Komentářů: 2
17.10. 14:15 | Komunita

Daniel Stenberg, autor nástroje curl, na svém blogu oznámil, že obdržel letošní Polhemovu cenu, kterou uděluje Švédská inženýrská asociace za „technologickou inovaci nebo důvtipné řešení technického problému“.

marbu | Komentářů: 10
17.10. 13:40 | Pozvánky

Cílem Social Good Hackathonu, který se uskuteční 21. a 22. října v Brně, je vymyslet a zrealizovat projekty, které pomůžou zlepšit svět kolem nás. Je to unikátní příležitost, jak představit nejrůznější sociální projekty a zrealizovat je, propojit aktivní lidi, zástupce a zástupkyně nevládních organizací a lidi z prostředí IT a designu. Hackathon pořádá brněnská neziskovka Nesehnutí.

… více »
Barbora | Komentářů: 1
17.10. 00:44 | Pozvánky

V sobotu 21. října 2017 se na půdě Elektrotechnické fakulty ČVUT v Praze uskuteční RT-Summit – setkání vývojářů linuxového jádra a uživatelů jeho real-time verze označované jako preempt-rt.

… více »
Pavel Píša | Komentářů: 8
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (12%)
 (1%)
 (0%)
 (1%)
 (72%)
 (13%)
Celkem 69 hlasů
 Komentářů: 5, poslední dnes 07:28
    Rozcestník

    Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038

    30. 7. 2015 | Redakce | Jaderné noviny | 2204×

    Stav vydání jádra. Citáty týdne. Konverze systémových volání pro rok 2038.

    Stav vydání jádra

    Současný vývojový cyklus nese označení 4.1-rc2, a byl vydán 3. května. "Jako vždy se jedná o směsku ovladačů, aktualizací architektur (z nichž s390 vynikala kvůli prng poznámce), souborového systému a sítí."

    Stabilní aktualizace: Žádné nebyly tento týden vydány. Aktualizace 4.0.2, 3.19.7, 3.14.41 a 3.10.77 byly v době psaní tohoto článku v procesu revidování. Původně měly vyjít 4. května, ale zdržely se shrnutím několika neuvážených patchů.

    Citáty týdne

    Za posledních 10 let se x86 FPU (matematický koprocesor) rozrostly do rozměrů jakéhosi špagetového monstra, kterému jen velmi málo (pokud vůbec nějací) vývojářů kernelu rozumí, a které jen málokoho baví hackovat.

    Za ta léta mnoho lidí upozorňovalo na to, že by nebyl od věci pořádný úklid, takže jsem si před nějakou dobou řekl "a proč by ne", a krok za krokem jsem s ním začal, abych viděl, kam až to vede. Jak těžké to může být?!

    O tři týdny a 200+ patchů později musím přiznat, že jsem velmi hrubě podcenil rozsah tohoto projektu ;-)

    -Ingo Molnar se vydává na menší čistící quest

    PROSÍM VÁS. Neprogramujeme v Pascalu (a díky Bohu za to), takže můžeme ponechat návěští se smysluplnými názvy. Taky se nestydíme používat goto, kde to dává smysl, takže není třeba zmenšovat návěští do velikosti smítek na monitoru.

    -Linus Torvalds

    Konverze systémového volání roku 2038

    Do onoho osudného dne v lednu roku 2038, kdy dojdou volné bity a přetečou 32bitové hodnoty time_t, které v unixových systémech zastupují zobrazování času, nám už zbývá jen 23 let. S přibližováním onoho data se můžeme těšit na všelijaká zábavná selhání 32bitových systémů a současní čtenáři LWN se mohou těšit na povolání z důchodu v hrdinné (a lukrativní) snaze zabránit blížící se apokalypse. Tak nějak by to mohlo vypadat, nebýt skupiny vývojářů (morousů), kteří se snaží problém roku 2038 vyřešit a celou zábavu pokazit. Konkrétnější obrysy této snahy se dostaly do hledáčku díky novým (později aktualizovaným) patchům Arnda Bergmanna, ukazujícím migrační cestu pro časová systémová volání.

    Současná linuxová systémová volání využívají pro zobrazování času několik různých datových typů od times_t, timeval po timespec a další. Všechny však mají jedno společné: Celočíselnou hodnotu, která počítá vteřiny od roku 1970 (nebo z aktuálního času v případech, kdy je zapotřebí relativní hodnota času). Na 32bitových systémech je počet dán 32bitovým celým číslem se znaménkem, takže je zapotřebí dalších volných bitů, jinak dojde k přetečení a po roce 2038 se čas nebude zobrazovat správně.

    Reprezentace času

    Jednou z možností je použití nově vytvořených 64bitových verzí těchto časových struktur. Ale pokud má dojít k nekompatibilním změnám, bylo by možná vhodné se nejprve šířeji zamyslet. Proto nedávno Thomas Gleixner navrhoval vytvoření nové sady systémových volání (linuxových), které by pracovaly s 64bitovým nanosekundovým čítačem se znaménkem. Ten by zrcadlil ktime_t type (definovaný v include/linux/ktime.h), který se používá pro reprezentaci času v kernelu:

        union ktime {
    	s64	tv64;
        };
        typedef union ktime ktime_t;		/* Kill this */
    

    Komentář "kill this" přidal Andrew Morton v roce 2007, ale nikdo tak ještě neučinil)

    Používat zrcadlené časové hodnoty kernelu také v uživatelském prostoru má něco do sebe, předešlo by se mnoha přepočtům času. Avšak Arnd Bergmann poukázal na několik těžkostí, spojených s tímto přístupem, jednou z nich je ještě složitější přechod. Zásadní chyba se objevuje v tomto seznamu časových systémových volání, který Andy zveřejnil krátce na to: Systémová volání, která pracují s časovými značkami souborů, musí být schopna vyjádřit čas ještě před rokem 1970. Také musí umět vyjádřit širší rozsah časů, než kolik zvládá 64bitový ktime_t. Je tedy nutné použít některou z variant time_t. (Potřeba zobrazovat čas před rokem 1970 vylučuje použití hodnoty bez znaménka pro rozšíření 32bitové hodnoty time_t).

    Z toho vyplývá, že univezální použití časových hodnot v nanosekundách se znaménkem zde není reálné. Rozhodně ne jako prevence nadcházející katastrofy roku 2038. Stále je zde prostor pro zjednodušení. Aktuálně je v plánu využití 64bitové verze struct timespec (nazývané v kernelu jednoduše struct timespec64 - uživatelský prostor uvidí pouze jako struct timespec) pro téměř všechny časové údaje přicházející do nebo z jádra. Různá systémová volání, která používají jiné (starší) časové formáty, mohou být jednoduše emulována v uživatelském prostoru. Takže například volání gettimeofday() (které využívá struct timeval) se změní na volání clock_gettime() předtím, než vstoupí do kernelu. Takto je možné snížit počet různých volání, jejichž kompatibilitu je třeba v kernelu zajistit.

    Takže všechny 32bitové systémy připravené na rok 2038, budou využívat struct timespec64 pro všechny časové hodnoty, které vstupují do jádra. Prozatím zůstává menší problém s dosažením tohoto cíle za co nejmenších škod. Aktuální Arndovo řešení je možné vidět v patch setu, který zahrnuje velký počet kroků, které pomohou bezpečně přiblížit kernel k roku 2038.

    Cesta k bezpečnému systému roku 2038

    Prvním krokem je připravit podporu 32bitových aplikací a přesunout kód kernelu pro řízení času na 64bitový čas. Tyto "vnitřní" práce již nějaký čas probíhají, pozornost vyžaduje interface uživatelského rozhraní, počínaje sadou pravidel, která by převáděla mezi 32bitovým a 64bitovým časem v rozhraní systémového volání. Dobrou zprávou je, že tato pravidla (routines) již existují ve formě "kompatibilních" systémových volání, které využívají 32bitové aplikace běžící na 64bitovém kernelu. Pokud jde o manipulaci s časem, budou v budoucnu 64bitová všechna jádra, takže tyto funkce jsou zapotřebí (až na několik případů jiných typů dat, kdy je zapotřebí rozdílného převedení). Patch tedy zajistí kompatibilitu systémových volání jak pro 32bitové, tak pro 64bitové kernely. Kompatibilní funkce jsou připraveny k použití, ovšem budou dostupné teprve na konci série patchů.

    Dalším krokem je přeměna nativních systémových volání kernelu pro manipulaci s časem na výhradně 64bitové hodnoty. Toho lze docílit pomocí dvou dílčích kroků. Prvním je definování nové sady typů popisujících formát nativních časových hodnot v uživatelském prostoru. Kupříkladu systémová volání, která v současné době akceptují jako parametr struct timespec, budou po změně pracovat s struct__kernel_timespec. Obě struktury jsou téměř totožné, takže jejich záměna nebude mít na kernel žádný vliv. Jestliže bude nastavena konfigurace CONFIG_COMPACT_TIME, bude struct__kernel_timespec vypadat jako timespec64.

    Různé typy __kernel_ se objevují na hranici (boundary) systémových volání, méně za touto hranicí. Místo toho dojde na všech zařízeních k jejich okamžitému převedení na 64bitové. Na 64bitových zařízeních není samozřejmě moc co převádět. Jakmile jsou všechna časová systémová volání převedena, používají interně 64bitové časové hodnoty, a to i v případě, že uživatelský prostor nadále pracuje s 32bitovými časovými hodnotami.

    Posledním krokem je povolení 64bitových časových hodnot na 32bitových systémech bez toho, aby došlo k poškození existujících 32bitových binárek.

    • Nastaví se CONFIG_COMPAT_TIME, což způsobí, že všechny datové struktury __kernel_ přepnou na své 64bitové verze.
    • Všechna existující časová systémová volání se nahradí kompatibilními 32bitovými verzemi. Takže třeba na ARM má systémové volání clock_gettime() číslo 263. Po změně dostane aplikace volající 263 nově compat_sys_clock_gettime(). Pokud jsou správně nastaveny kompatibilní funkce, neměly by si binární aplikace ničeho všimnout.
    • Nativní verze 64bitových systémových volání dostanou nová číselná označení; clock_gettime() se změní v systémové volání 388. Tudíž 64bitové verze těchto volání uvidí pouze nově kompilovaný kód, který je připraven s 64bitovými časovými údaji pracovat.

    To je tak nejvíc, co se dá v kernelu (s tímto problémem) dělat. Existující 32bitové binárky zavolají kompatibilní verze časových systémových volání a budou i nadále fungovat, až do roku 2038.

    Zbývá tedy slušné množství práce, kterou je třeba udělat v uživatelském prostoru. Zjednodušeně lze říct, že C knihovny mohou používat 64bitové datové struktury a vyvolat nové verze příslušných systémových volání. Potom mohou být rekompilovány aplikace pro nové knihovny, možná bude zapotřebí oprav v uživatelském prostoru, poté se nebudou podílet na debaklu roku 2038. V praxi by mohlo být nutné přestavět všechny knihovny a aplikace systému, aby se zajistila ucelená myšlenka o reprezentaci času. C GNU knihovny užívají pro určení verzí symboly, takže je možné je nastavit pro oba časové formáty zároveň. Některé knihovny takovou schopnost nemají. Konverze kompletních distribucí by mohla být zajímavou výzvou v okamžiku, kdy bude v jádře vše hotovo.

    Ukončovací práce

    I v kernelu je stále několik záležitostí, kterým se dosud nikdo nevěnoval. Významným problémem je volání ioctl(), z tisíců podporovaných jádrem jich několik pracuje s hodnotami time_t. Bude třeba je lokalizovat, jedno po druhém opravit, což bude trvat. Souborový systém ext4 ukládá časové značky jako 32bitové hodnoty time_t, i když některé verze formátování je rozšiřují na 34 bitů. Ext3 34bitové časové značky nepodporuje, takže řešením by byl přechod k ext4. NFSv3 má podobný problém a možná, že ho čeká podobný osud. I XFS má problémy, které je třeba řešit. Potíže se souborovým systémem se nevyhýbají ani 64bitovým systémům. V kernelu a uživatelském prostoru navíc zcela jistě číhá ještě celá řada dalších (nepříjemných) překvapení, takže připravit systém na rok 2038 jde ještě daleko za přechod k 64bitovým časovým hodnotám systémových volání. I když začít s nimi je rozhodně dobrý začátek.

    Jakmile se vyřeší zbývající problémy, bude možné aplikovat poslední patch. Volitelným se stane CONFIG_COMPAT_TIME, ponechá 64bitové cesty beze změny a odstraní kompatibilní 32bitová volání. Bude-li tato volba vypnuta, nepodaří se spustit binárky se staršími systémovými voláními. Jde o dobrou metodu, jak otestovat konverze pro rok 2038 nebo nasazení starších systémů, které musí fungovat i po tomto datu. Arnd k tomu dodává:

    V současné době jde o nástroj pro ladění, který by měl pomoci vytvořit distribuci odolnou na rok 2038, ale někdy ve třicátých letech bychom měli tuhle možnost a veškeré řízení kompatibility odstranit docela.

    Doufejme, že bude v budoucnu někdo dávat pozor a nezapomene za dvacet let tento krok provést (v případě velké inspirace by prostě mohli zabít ktime_t). Potom budou určitě vděčni těm vývojářům, kteří obětovali svůj čas problému mnohem dříve, než začal být akutní. My ostatní si prostě budeme muset najít jiný způsob, jak si vydělat na důchod.

    (Díky patří Arndovi Bergmannovi za cenné rady a návrhy k rané verzi článku.)

           

    Hodnocení: 80 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

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

    Komentáře

    Vložit další komentář

    31.7.2015 00:01 HulmihoUkolen@HulmihoUkolen.nl/hu
    Rozbalit Rozbalit vše Re: Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038
    ja to mrdam-87 let se urcite nedoziju
    kyknos avatar 1.8.2015 10:00 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
    Rozbalit Rozbalit vše Re: Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038
    Plánuje sebevraždu?
    So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...
    31.7.2015 04:31 pc2005 | skóre: 34 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038
    IMO (zajímavý, že to druhý "label" je správně): s/můžeme ponechat štítky se smysluplnými názvy/můžeme ponechat návěští se smysluplnými názvy/
    Chuck Norris řekl babičce, že si dá jen 3 knedlíky. A dostal 3 knedlíky. | 帮帮我,我被锁在中国房
    31.7.2015 08:45 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038
    …a jejichž kód někteří lidé rádi nabourávají

    Nemyslím, že tady je "hack" použito ve smyslu "nabourávat". Spíš bych to přeložil: "…kterému jen málo jaderných vývojářů rozumí a které málokoho baví hackovat." Pokud se někomu nelíbí cizácké "hackovat" (nebo má příliš zažitý mainstreamový význam), tak třeba: "…a se kterým málokoho baví si hrát."

    i když některé verze formátování je rozšiřují na 34 bitů

    Verze formátu, ne formátování.

    31.7.2015 08:47 mikro
    Rozbalit Rozbalit vše Re: Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038
    "... that few (if any) kernel developers understand and which code few people enjoy to hack."

    je podla mna chybne prelozeny na:

    "... kterému rozumí jen velmi málo (pokud vůbec nějací) vývojářů kernelu, a jejichž kód někteří lidé rádi nabourávají."

    pretoze aj z kontextu originalnej spravy dalej vyplyva, ze kod sa po jeho upravach stal "maintainable and hackable again", cize ten vyznam predoslej vety je skor, ze malo (ak vobec niekto) tomu kodu rozumie a velmi malo ludi je ochotnych v nom robit zmeny.
    4.8.2015 10:27 Jiří J. | skóre: 34 | blog: Poutník | Brno
    Rozbalit Rozbalit vše Re: Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038
    On Tue, May 5, 2015 at 8:17 AM, Al Viro wrote:
    >
    > Something like this_used_to_be_the_beginning_of_loop_body?
    
    No, but at least "loop:" or "repeat:" or something.
    
    That "l:" really looked like a fly shat on my monitor.
    :-D
    Víra je firma si myslela, že něco je pravdivé. LMAO -- “zlehčovat mého osla”
    10.8.2015 21:12 tentononc
    Rozbalit Rozbalit vše Re: Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038
    No nevim, co v roce 2038 na ten den naplánovat celozávodní urláb, vypnout servrovnu a všechny pecka a den poté začít zase s dvaatřicetibitovým počítadlem od nuly? Vždyť nemusí běžet všechny mašiny nonstop furt....
    25.8.2015 22:03 Zde
    Rozbalit Rozbalit vše Re: Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038
    > clock_gettime() se změní v systémové volání 388

    Navrhuji změnit čísla syscallu z int na long, než bude pozdě.

    Založit nové vláknoNahoru

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