Cekaci smycky a scheduling

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Čtvrtek Březen 21 13:27:52 CET 2002


On Thu, 21 Mar 2002, Michal Vanka wrote:

> while(1) {
>     if(je_ten_spravny_cas) {
>         delej_neco();
>     }
>     odevzdej_rizeni_dalsim_procesum();
> }
> 
> jenom neznam nazev vhodne funkce/vhodneho mechanismu,
> jak rict jadru, ze mi muze vzit strojovy cas (jestli je to vubec mozne).

Pokud ten proces nebezi pod runtime schedulingem (RR, FIFO), tak si jadro
procesor vezme samo, kdyz usoudi, ze by se k lizu take mely dostat jine
procesy.

Otazka zni, co znamena "je_ten_spravny_cas".

Pokud lze pristi okamzik, kdy bude "ten spravny cas", presne vypocitat
(napr. chcete neco udelat kazdou minutu), tak kombinace time() a sleep().
V pripade, ze je potreba budit se rychleji nez jednou za par sekund, tak
pouzit usleep() nebo dokonce nanosleep() a gettimeofday(). Alternativne
lze pouzit signal SIGALRM a funkce alarm() nebo setitimer() a sigsuspend()
(to je mimochodem ostatne metoda, kterou je typicky sleep()
naprogramovany).

Pokud je "ten spravny cas" definovan tak, ze odnekud, napriklad ze site, 
prijdou nejaka data, tak select() resp. poll().

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux