[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