[OSy] Par dotazu k 2. zadani
Martin Kruliš
bobrik at matfyz.cz
Wed Nov 22 11:04:22 CET 2006
>> - mame pocitat s moznosti, ze by operacni pameti bylo vic nez 1GB
>> (tzn. nebyla by videt primo v segmentech KSEG0 a KSEG1)?
>
> Jak uz kolega uvedl, ten limit, o ktery asi jde, je ve skutecnosti
> 512 MB a odpustime Vam, pokud nebudete podporovat vice fyzicke pameti
> (jiste to lze, ale je to komplikace). Nezapomente ovsem duvod, proc
> tak necinite, vysvetlit v dokumentaci.
Dobre.
>
>> - musi byt adresy @src a @dest a delka @len ve funckic
>> copy_from_thread, copy_to_thread
>> zarovnane na min. velikost stranky - tzn 4kB
>
> Nemusi, funkce mohou byt pouzity i ke kopirovani struktur mensich nez
> stranka.
>
>> Co se ma stat v pripade, ze v jednom z vlaken neni cast kopirovaneho
>> bloku alokovana (pomoci vmalloc). Mame vratit chybovy navratovy kod,
>> nebo vlakno zastrelit, jako kdyz se pokousi sahat na nealokovanou
>> adresu?
>
> V pripade copy_from_thread() otestujte, zda je korektni mapovani from
> (pokud neni, funkce vrati EINVAL) a zapis provedte standardne (tj.
> pokud se bude zapisovat do nekorektne mapovane pameti, volajici vlakno
> bude zabito vyjimkou pristupu do pameti).
>
> U copy_to_thread() opacne. Nasledky tedy vzdy nese volajici vlakno, ne
> to druhe.
Jestli jsem to tedy pochopil dobre, copy_from_thread vrati EINVAL, kdyz
je zdroj (src) spatne namapovany a pak rovnou kopiruje a predpoklada, ze
stranky v dest uz jsou zaalokovane a namapovane. Pokud nejsou, zabije
volajici vlakno. Tedy funkce copy_from/to_thread() nic nealokuji.
Jestli jsem to pochopil spatne, prosim opravte me.
Dekuji za odpoved. :o)
MK
More information about the NSWI004
mailing list