hleda se programator pro X server a kernel

Vaclav Dvorak vdvo na vdvo.net
Středa Září 1 04:01:05 CEST 2004


Vážení,

hledá se programátor, který by vyvinul čisté řešení toho, co je zatím 
jako hack popsáno na http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/. 
Stručně řečeno, jde o provoz více X serverů na jednom počítači zároveň, 
přičemž s každým pracuje jeden uživatel (myšleno skutečný člověk), 
mající svou vlastní obrazovku, klávesnici a myš. Na tento vývoj jsou k 
dispozici určité peníze a/nebo hardware. Výsledek bude open-source, 
vývoj bude veřejný.

Hlavní problém vidím v tom, že X server XFree86  (a zřejmě i X.org, i 
když ty jsem ještě nezkoumal) předpokládá, že je na počítači sám, a 
nijak s ničím jiným nespolupracuje při řízení přístupu na sběrnici. Když 
je v počítači více VGA karet a on některou z nich neobsluhuje, prostě je 
odpojí od sběrnice. To řeší jednoduché patche vystavené na výše 
odkazovaném webu, nicméně to funguje jen pro některé VGA karty. Pokud 
totiž dvě VGAčka v počítači sdílí prostředky (konkrétně I/O nebo 
paměťový adresní prostor) - což se stává, X server si s tím poradí, 
pokud je obě sám obsluhuje, tak, že je dle aktuální potřeby odpojuje a 
připojuje od/ke sběrnici. Pokud ale každé VGAčko obsluhuje jiný X 
server, je to problém, který ty existující patche nijak neřeší, a který 
obvykle způsobí zatuhnutí celého počítače.

Řešení předpokládám nějak tak, že by se X servery domlouvaly mezi sebou 
- buďto přímo, anebo spíše přes nějakého arbitra - tak, aby si přístup 
na sběrnici korektně hlídaly. Ten arbitr jsem si představoval jako 
kernelový modul, protože si myslím, že tato funkce do kernelu logicky 
patří. Dokonce si myslím, že takový modul, který by zajišťoval 
rezervování přístupu k hardwarovým prostředkům pro jednotlivé procesy a 
umožňoval jejich vzájemnou synchronizaci už musí existovat.

Ještě dodám, že přinejmenším XFree86 v sobě má modul RAC (Resource 
Access Control), který dělá v podstatě to, co je potřeba, ale jen v 
rámci toho jednoho procesu: tj, když X server obsluhuje více VGAček, 
zajišťuje, aby se to nemlátilo. My potřebujeme v principu totéž, ale 
mezi procesy.

Samozřejmě, při testování se pravděpodobně narazí na další problémy, ale 
očekávám, že výše popsané zůstane tím hlavním.

Kandidát na tuto práci by měl alespoň zhruba rozumět tomu, o čem jsem 
výše mluvil. Není nezbytně nutné, aby se už vyznal ve zdrojácích X 
serveru, ale musí být schopen se v nich zorientovat a musí chápat 
princip problému. Také musí být schopen komunikovat s původními vývojáři 
X serveru, protože jednak se to může hodit pro rady a konzultace, a 
jednak je žádoucí, aby výsledný produkt byl zaintegrován do původních 
zdrojáků, aby jej nové verze běžně používaných X serverů již obsahovaly 
bez potřeby nějakého patchování apod. Dále je žádoucí, aby byl schopen 
napsat zmiňovaný kernelový modul, i když je samozřejmě možné, že tuto 
část bude mít na starosti někdo jiný, anebo se to vyřeší úplně jinak.

Pokud vám připadá, že něco z toho, jak jsem výše popsal problém a jeho 
možné řešení, je špatně, prosím, opravte mě. Jsem si jist, že jsou tu 
lidé, kteří tomu rozumějí lépe.

(A pokud už funkční, čisté a otevřené řešení existuje, doufám, že mi o 
něm povíte.)

Kvalifikovaní zájemci o tuto práci se mi hlaste na můj email, technickou 
diskusi k problému však ponechte zde v konferenci. Děkuji.

-- 
Václav Dvořák  <vdvo na vdvo.net>



Další informace o konferenci Linux