Pastrand stilul pur teoretic de pana acum, un sistem multitasking nonpreemtiv in kernel, partea de schedduling, context switch nu se face niciodata de catre <i>sistemul de operare, </i>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.<br>
<br>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 :)<br>
<br>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.<br>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 <i>la comanda</i>.<br>
<br><br>Ex de alg d static scheddule folosit in non-preemtive: SJF (shortest job first).<br><br>Good Luck<br><br><br><div class="gmail_quote">2009/4/14 Sergiu Iordache <span dir="ltr"><<a href="mailto:sergiu.iordache@gmail.com">sergiu.iordache@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Următoarea întrebare era în slide-urile cursului de SO și din câte<br>
știu nu am apucat să o facem. Cum mie mi se pare cam confuză<br>
întrebarea, aștept părerile voastre:<br>
<br>
Descrieți o situație în care un proces poate fi planificat într-un<br>
kernel non-preemptiv în momentul în care execută cod kernel.<br>
<br>
Mulțumesc,<br>
Sergiu<br>
_______________________________________________<br>
so mailing list<br>
<a href="mailto:so@cursuri.cs.pub.ro">so@cursuri.cs.pub.ro</a><br>
<a href="http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so" target="_blank">http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so</a><br>
</blockquote></div><br>