Portál AbcLinuxu, 22. května 2024 15:30

Jaderné noviny - 14. 2. 2007

8. 3. 2007 | Robert Krátký
Články - Jaderné noviny - 14. 2. 2007  

Aktuální verze jádra: 2.6.20. Citáty týdne: Al Viro, Andrew Morton. Co nové bylo začleněno do jádra. Alternativy fibril.

Obsah

Aktuální verze jádra: 2.6.20

link

Aktuální verze řady 2.6 zůstává 2.6.20; (ke 14. 2. 2007) nevyšly žádné předverze 2.6.21. Přesto však do hlavního git repozitáře proudí patche - vizte níže.

Starší jádra: 2.6.16.40 vyšlo 10. února a obsahuje poměrně malé množství patchů.

K dispozici je první předverze 2.4.35; obsahuje několik patchů a port síťového ovladače "sky2" z řady 2.6.

Citáty týdne: Al Viro, Andrew Morton

link

Promiňte, ale nemohli byste si prosím vás přestat jádro plést se soutěží ve vogonské poezii?

-- Al Viro

Ve složce konceptů mám email, ve kterém říkám, že už nebudu přijímat žádné nové funkce, které nebyly veřejně zkontrolovány a někým třetím otestovány. Smyslem by bylo přinutit lidi, aby si navzájem věci více kontrolovali a testovali a méně se zabývali psaním nových věcí. Až budu mít jednou opravdu špatnou náladu, tak ho možná i pošlu.

-- Andrew Morton

Co nové bylo začleněno do jádra

link

V tuto chvíli (14. 2. 2007) probíhá začleňování nových věcí. Bylo již zařazeno přes 2300 sad patchů, které provedly změny ve všech částech stromu. Následuje shrnutí toho, co se zatím dostalo do 2.6.21.

Uživatelské změny:

Změny viditelné pro vývojáře jádra:

Některé patche pořád ještě na začlenění čekají, ne o všem už bylo rozhodnuto.

Alternativy k fibrilám

link

Od vydání minulého článku o fibrilách (Jádro fibriluje) se o té sadě patchů příliš nediskutovalo. Neznamená to však, že by o tuto oblast poklesl zájem; bylo však navrženo pár jiných přřřístupů.

Linus Torvalds se nechal inspirovat k vytvoření vlastního patche s asynchronním systémovým voláním. Nejlépe jej vystihuje slovo jednoduchost: do jádra nepřidává více než 200 řádků kódu (Dokonce jsem přidal komentáře, takže některé z těch řádků ani nejsou kód!"). Funguje takto:

Největší výhodou tohoto patche - kromě jednoduchosti - je prý to, že nepřidává téměř žádnou režii, je-li možné asynchronní volání dokončit bez blokování. Fibrilový patch vždy spouští asynchronní volání v samostatných fibrilách. Linus tvrdí, že všechna asynchronní volání mohou být ve skutečnosti dokončena synchronně bez blokování, takže by byl raději, kdyby to nic nestálo.

Linusův patch má několik nedostatků. Pokud se například asynchronní volání zablokuje, návrat do uživatelského prostoru proběhne v jiném procesu - změna, která by uživatelský prostor asi dost zmátla. V jeden okamžik se může čekat jen na jednu asynchronní operaci. Také neexistuje žádný způsob, jak vyčkat na ukončení asynchronní operace - kromě zjišťťování stavového kódu. Tento patch však nebyl zamýšlen jako kompletní řešení; jako ukázka konceptu je to zajímavé.

Propracovanější přístup nabízí sada patchů syslet od Ingo Molnara. Pomocí sysletů může uživatelský program spouštět systémová volání asynchronně. Kromě toho je však možné natáhnout malé programy do jádra a nechat je běžet samostatně.

Aby mohla aplikace syslety využívat, vyplní jednu z těchto struktur:

    struct syslet_uatom {
	unsigned long		flags;
	unsigned long		nr;
	long 	 		*ret_ptr;
	struct syslet_uatom	*next;
	unsigned long		*arg_ptr[6];
	void 	 		*private;
    };
 

nr je číslo systémového volání, které má být spuštěno, arg_ptr uchovává ukazatele na parametry a ret_ptr jádru říká, kam dát finální stavový kód volání. Pole private není jádrem vůbec využíváno. K ostatním polím se dostaneme za chvilku.

Jakmile je připravena struktura syslet_uatom, může aplikace akci spustit pomocí:

    long async_exec(struct syslet_uatom *atom);

Toto volání okamžitě spustí požadované systémové volání. Pokud se ani jednou nezablokuje, poběží synchronně a adresu atom vrátí async_exec(). Jinak si jádro vezme jedno z vláken a použije ho k návratu do uživatelského prostoru, přičemž systémové volání bude pokračovat v původním vlákně. Aplikace to pak může pustit a (zatímco se bude dokončovat systémové volání), jít dělat něco jiného - včetně spouštění dalších sysletů.

Co se však doopravdy stane po dokončení systémového volání, to je trochu složitější a zajímavější. Pokud to uživatelský prostor nechce jinak, jádro syslet neukončí po proběhnutí prvního systémového volání; místo toho se podívá na pole next struktury syslet_uatom. Není-li to pole NULL, bude považováno za uživatelskou adresu dalšího sysletu, který má jádro spustit. Jinými slovy, aplikace není omezena na spouštění jednotlivých asynchronních volání; může jich zřetězit celou řadu, která pak poběží, aniž by se opouštělo jádro. Režie při odchycení nového syslet atomu je daleko menší než při přechodu do uživatelského prostoru a zpět, takže pouhým zřetězením dvou systémových volání lze dosáhnout výrazného zlepšení výkonu.

Poslední pole v struct syslet_uatom je flags, které řídí způsob spouštění sysletů. Čtyři z nich (SYSLET_STOP_ON_NONZERO, SYSLET_STOP_ON_ZERO, SYSLET_STOP_ON_NEGATIVE a SYSLET_STOP_ON_NON_POSITIVE) otestují výsledek systémového volání aktuálního atomu a (případně) ukončí provádění sysletu. Tak může být například předčasně ukončena série systémových volání, pokud jedno z nich selže. Je také možné vytvořit v jádře smyčku, která čte soubor, dokud už nezbývají žádná data.

SYSLET_SKIP_TO_NEXT_ON_STOP předchozí příznaky upravuje tak, že místo ukončení sysletu jádro přeskočí na atom, který je v adresním prostoru procesu hned za tím aktuálním. Tento příznak sysletu umožňuje přerušit smyčku a přejít v rámci sysletu dál. Pokud aplikace ví, že se syslet zablokuje, může pomocí SYSLET_ASYNC vyžadovat asynchronní provedení už od začátku. Existuje také příznak SYSLET_SYNC, který způsobí, že vše poběží synchronně.

Syslety nemají žádné vlastní proměnné. Aby pomohl s psaním použitelných programů, přidal Ingo nové systémové volání:

    long umem_add(unsigned long *pointer, unsigned long increment);

Toto volání prostě přidá daný increment k *pointer a vrátí výslednou hodnotu.

Aplikace si může zaregistrovat kruhový buffer pomocí systémového volání async_register(). Kdykoliv je atom dokončen, uloží se jeho adresa do další položky kruhového bufferu; aplikace pak může adresu využít, aby vyhledala stav systémového volání. Jádro ale nepřepíše neNULLové položky kruhového bufferu, takže je aplikace musí po zpracování resetovat. Pokud aplikace potřebuje počkat na dokončení sysletu, může zavolat:

    long async_wait(unsigned long min_events);

Toto volání proces zablokuje, dokud nebude do kruhového bufferu uloženo alespoň min_events.

I tato sada patchů má několik otazníků. Zpracovávání signálů bylo opět odloženo. Existuje hromada bezpečnostních otázek, které je třeba promyslet; nakonec bude asi asynchronní spouštění několika systémových volání zakázáno. Pořád se ještě nediskutovalo o tom, jak by takové rozhraní spolupracovalo s kevent - o kevents se teď zjevně nikdo nechce bavit. Také 64/32bitová kompatibilita by mohla přinést problémy. A tak dále.

Počáteční reakce se však zdá být celkem pozitivní (i když Linus je velmi proti); syslety by nakonec mohly ukazovat, jak bude vypadat druh fibril, který se dostane do hlavního jádra.

Související články

Jaderné noviny - 7. 2. 2007
Jaderné noviny - 31. 1. 2007
Jaderné noviny - Video4Linux2 - 5a (barvy a formáty)
Jaderné noviny - 24. 1. 2007

Odkazy a zdroje

Kernel coverage at LWN.net: February 14, 2007

Další články z této rubriky

Jaderné noviny – přehled za duben 2024
Jaderné noviny – přehled za březen 2024
Jaderné noviny – přehled za únor 2024
Jaderné noviny – přehled za leden 2024
Jaderné noviny – přehled za prosinec 2023

Diskuse k tomuto článku

Prcek avatar 8.3.2007 00:20 Prcek | skóre: 43 | Jindřichův Hradec / Brno
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
Odpovědět | Sbalit | Link | Blokovat | Admin
"Také neexistuje žádný zpúsob"

A pak jen par zdvojenych pismenek, za ktere pokud vim redakce nemuze.
"zvukové procesory na embedded systéémech"
"takže by byl raděěji"

Člověk je takový, jak vypadá... A já vypadám jako pravá, nefalšovaná děvka!!!
8.3.2007 08:03 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
"Také neexistuje žádný zpúsob"
Dík, opraveno.
A pak jen par zdvojenych pismenek, za ktere pokud vim redakce nemuze.
Ta zdvojená písmenka by měla sama zmizet, jakmile bude nasazena opravená verze Jetty.
8.3.2007 10:06 alkoholik | skóre: 40 | blog: Alkoholik
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
"přřřístupů"
Zdvojena?
8.3.2007 11:09 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
Čím víc pruhů, tím víc Adidas :-) Pokud je těch písmen víc jak dvě, je alespoň část z nich zopakovaná už v databázi. Ale nemá smysl pokoušet se ten obsah teď opravovat, chyba by se v textu s vysokou pravděpodobností objevila znova. Až bude nasazena nová verze Jetty, odhalí kandidáty na opravu jeden Select do databáze.
8.3.2007 11:16 Jim
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
Byl proveden upgrade Jetty. V rámci nových features bylo zdvojování nahrazeno mnohem lepším ztrojováním.
8.3.2007 13:53 Michal
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
Odpovědět | Sbalit | Link | Blokovat | Admin
Podle me se to s temi narazkami na Vogonskou poezii prehani. Cetl jsem i Odu na hrudku hnusu a neni to zas tak hrozne. Toto heslo v Pruvodci psal nekdo hodne zaujaty a neobjektivni.
David Watzke avatar 8.3.2007 16:04 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
Odpovědět | Sbalit | Link | Blokovat | Admin
Trápí někoho ten problém s tuhnoucím SATA? Prostě grabuju DVD ze SATA mechaniky na SATA II disk a občas se obě zařízení na chvíli zastaví a pak zase rozjedou a pokračují - systém samozřejmě mezitím zatuhne. V logu "soft resetting port" (a zahlédl jsem i hard). Vygooglil jsem, že chyba se objevila v jádře 2.6.18, ale podle všeho mám "štěstí", že jsem na tenhle problém narazil, moc lidí to patrně netrápí, protože se to táhne dál až doteď (2.6.21-rc3). Teď jsem nahodil 2.6.17-gentoo-r9 (Linux 2.6.17.14), uvidím.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
8.3.2007 16:10 Michal
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
Delalo mi to take. Bylo to zpusobeno problemy prenosu pres sata. Koukni se, zda ti neroste hodnota UDMA_CRC_Error_Count.

A delalo to i ve windows a u vsech tri disku.

Pomohlo az prepnuti disku do sata1 rezimu jumperem.
David Watzke avatar 8.3.2007 16:18 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
# smartctl -a /dev/sda|grep CRC
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       726
Disk je zapojenej v SATA I řadiči, hned vedle vypalovačky. To by taky mohl být problém...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 8.3.2007 17:25 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
Dal jsem vypalovačku do čtvrtýho konektoru (místo druhýho) a zatím to vypadá nadějně...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
8.3.2007 21:24 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
Mna trapi. Prisiel som na neho asi pred tyzdnom. Via 8251 southbridge a zatial nepouzivany SATA disk (chystam sa az budem mat cas, tak si spravit RAID1 so starym diskom a nejake neraidovane particie). Obcas na nom ale meriam teplotu cez smart a obcas pri tom vytuhne (zvycajne po tom, ze sa preberie zo suspendu alebo som sa mu niekolko hodin nevenoval). Problem je, ze mne sa uz nezobudi. V dmesg sa objavi soft reset, par hard resetov, ale uz mu nic nepomoze, iba reboot.

V 2.6.20 by to tusim uz malo byt opravene.
If you hold a Unix shell up to your ear, you can you hear the C.
David Watzke avatar 8.3.2007 21:26 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
Tak to bude trochu jinej problém. Já teď botím opět 2.6.21-rc3-git2 a jak jsem psal, vypadá to, že přehození vypalovačky na 4. konektor pomohlo...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
8.3.2007 21:35 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
2.6.21-rc3-git2
To mě takhle navečer rozveselilo.
David Watzke avatar 8.3.2007 21:51 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
Ten problém se samozřejmě objevuje i např. u 2.6.20.1 a dalších, tohle už je jen sranda ;-)
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
8.3.2007 16:13 Ruda | skóre: 11
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
Odpovědět | Sbalit | Link | Blokovat | Admin
Nevíte někdo, jak to vypadá s podporou SDHC karet (SD karta > 4GB, fat32 místo fat16). A jestli je budou umět stávající čtečka SD karet ?
10.3.2007 18:05 Jan Olšan
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
Co já vím, to z části závisí na tom, jak si výrobce čtečky dělal co chtěl, dokud tyhle karty s vyšší kapacitou neexistovaly (platí někdy i pro obyč 2G karty). Ale mám takový pocit, že aby ve čtečce fungovalo SDHC, musela by být lepší než původní specifikace...

Mrkněte na wikipedii - Secure Digital
oroborus avatar 8.3.2007 16:49 oroborus | skóre: 20 | blog: Bulanci
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
Odpovědět | Sbalit | Link | Blokovat | Admin
Citáty týdne: Al Viro, Andrew Morton
Promiňte, ale nemohli byste si prosím vás přestat
jádro plést se soutěží ve vogonské poezii?

Narazka na "Stoparov sprievodca po galaxii."
BTW: Raz som nasiel meno "Slartibartfast" v ASM zdrojaku jedeno viru.
10.3.2007 18:00 Jan Olšan
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
Odpovědět | Sbalit | Link | Blokovat | Admin
ethernetové čipy PA Semi PWRficient -

Promiňte, ale zdá se mi, že PWRficient od firym PA Semi jsou CPU - nová vícejádrová implementace POWER architektury, zaměřená na spotřebu (nízkou).
10.3.2007 18:23 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
V originále je "PA Semi PWRficient Ethernet chips" - třeba k tomu dělají i síťovky...
Tomáš Bžatek avatar 12.5.2007 11:42 Tomáš Bžatek | skóre: 29 | Brno
Rozbalit Rozbalit vše Re: Jaderné noviny - 14. 2. 2007
Je to vsechno integrovano v CPU, vcetne kopy dalsich periferii...
Koupim litajiciho tucnaka

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.