[OSy] Malo pameti pro casovace

David Matousek david at matousec.com
Wed Oct 31 12:47:27 CET 2007


Zdravim,

Predpoklad, ze uzivatel nebude registrovat a nebo pouzivat objekty,
ktere zrusi nebo uvolni predtim nez je korektne odregistruje neni vubec silny
- ne u kernel kodu. Pokud by se jednalo o user mode casovac, tak tam je to
samozrejme neco jineho, ale pokud uzivatel programuje kod, ktery bude spusten
v kernelu, musi respektovat urcite zasady.
Analogicky treba v user modu je uplne v poradku, kdyz uzivatel dereferencuje NULL pointer.
No jako dusledek mu aplikace odleti a nic se nedeje. V kernelu si to dovolit nemuze.


DM


Tomas Mikula wrote:
> Ahoj!
> 
> On 10/31/07, Andrej Krutak <andree182 at gmail.com> wrote:
>> Samozrejme... spravis to tak, ze sa to nebude dynamicky alokovat :-)
>>
>> "Uzivatel" ti doda len ukazatel na uz vytvorenu strukturu (nieco ako
>>
>> struct timer t;
>> timer_init(&t, ...);
>>
>> )
>>
>> Brani ti niekto vlozit si polozky potrebne na vytvorenie spojaku do tej timer
>> struktury? :-)
> 
> Ano, brani.
> V tvojom priklade je timer t vytvoreny na zasobniku volajuceho vlakna.
> Vlakno timer spusti (timer_start()) a potom sa vrati z funkcie (alebo
> vlakno niekto zabije) a timer uz neexistuje. Jeho pamat uz moze byt
> prepisana a tym sa rozbije cely nas spojak (aj so vsetkymi ostatnymi
> timermi ostatnych vlaken).
> 
> Takze by sme sa museli spoliaht na to, ze uzivatel sa nevrati z
> funkcie skor, ako timer vystreli, alebo ze si ten timer alokuje
> dynamicky. Ale to by ho po sebe mal aj odalokovat, takze si bude
> musiet ustrazit, aby ho neodalokoval skor, ako vystreli, lebo inak by
> nam to zase cele rozbil. A to je pomerne silny predpoklad na uzivatela
> (i ked v tomto pripade uzivatelom budu len ostatne casti kernelu, ale
> tym padom jedna cast nemoze byt blbovzdorna proti inej.)
> 
> T.
> 
> _______________________________________________
> OSy mailing list
> OSy at dsrg.mff.cuni.cz
> https://dsrg.mff.cuni.cz/mailman/listinfo/osy




More information about the NSWI004 mailing list