[so] Întrebare preemptivitate

Gabriel Bercea gamitech at gmail.com
Tue Apr 14 20:39:18 EEST 2009


Pastrand stilul pur teoretic de pana acum, un sistem multitasking
nonpreemtiv in kernel, partea de schedduling, context switch nu se face
niciodata de catre *sistemul de operare,  *si cand spun sistemul de operare
ma refer ca nu exista o componenta a sistemului de operare (gen Dispatcher)
care implementeze context sw sau preemtion pentru un process in rulare.
Aceste sisteme de obicei folosesc static schedduling sau implementeaza asa
zisa cooperative multitasking, in care procesul in cauza se intrerupe din
rulare singur (intrerupere din rulare poate sa insemne orice este condiderat
intrerupere de executie pentru sistemul de operare propriu-zis, in principiu
ce a zis razvan mai sus, gen asteptari sau operatii sincrone, dar fiecare
sistem de operare poate fi implementat altfel, so..). In cazul cooperative
multitasking un process da controlul altui proces, asta evident dupa un
anumit algoritm (preemtive algoritm). Se numeste cooperative deoarece
procesul curent preda taskul in desfasurare procesului noi planificat. Spre
deosebire de preemtive cand un CPU este share pentru fiecare task in parte
al fiecarul proces, cooperative ajuta la indeplinirea unui task folosind CPU
in acest scop.

Again toate chestiile astea sunt pur teoeretice, si de aceea nu poti spune
concret ce se intampla pentru ca sunt algoritimi in-house de implementare si
trebuie discutat pe concret. Adica SO-ul X face asa, pe cand in general ar
fi asa, ca suna mai a non-preemtive :)

So-uri nonpreemtive: Windows 3.x si totul pana in Windows 95, MacOS inainte
OS X => closed source, deci te angajezi ori la Apple ori la MS si afli mai
multe.
Altele nu sunt GPOS's ci OSuri pt submarine, rachete, etc in care pbeme gen
incertitudinea unui scheddule nu tre sa fie o pbema, in care flushul de
DPCuri nu tre sa se faca at cand apare un drop de IRQL ci *la comanda*.


Ex de alg d static scheddule folosit in non-preemtive: SJF (shortest job
first).

Good Luck


2009/4/14 Sergiu Iordache <sergiu.iordache at gmail.com>

> Următoarea întrebare era în slide-urile cursului de SO și din câte
> știu nu am apucat să o facem. Cum mie mi se pare cam confuză
> întrebarea, aștept părerile voastre:
>
> Descrieți o situație în care un proces poate fi planificat într-un
> kernel non-preemptiv în momentul în care execută cod kernel.
>
> Mulțumesc,
> Sergiu
> _______________________________________________
> so mailing list
> so at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20090414/10b3400c/attachment.htm>


More information about the so mailing list