Diferència entre revisions de la pàgina «Gestió de processos»

m
estandarditzant codi encapçalaments i llistes
m (neteja i estandardització de codi)
m (estandarditzant codi encapçalaments i llistes)
 
Per tal d'assolir aquest objectius, el sistema operatiu ha de mantenir una [[estructura de dades]] per a cada procés que descrigui l'estat del procés i els recursos que utilitza. Aquesta estructura, s'anomena [[bloc de control de procés]].
 
== El planificador del sistema operatiu ==
{{principal|Planificador}}
 
Els primers sistemes operatius no tenien [[planificació exclusiva]] o arrabassadora de la [[CPU]] (ang.: ''preemptive'' del verb ''preempt'': "prebuidar un camp per conrear-lo i prendre'n possessió" o sigui [http://dlc.iec.cat/results.asp?txtEntrada=arrabassar&OperEntrada=0 arrabassar]) i no podien desallotjar un procés de la [[CPU]] per tal que un altre procés amb major prioritat pogués executar-se.
 
== Planificadors i Sistemes operatius ==
Les propietats i característiques principals del planificador varien segons el sistema operatiu:
 
* '''Sistemes operatius basats en Windows NT''': Utilitza un sistema basat en prioritats (32 nivells) i cues multilevel feedback queue. Les primeres versions de Windows i DOS no eren multitasca i les versions Windows 9x no tenien planificació exclusiva.
 
== Estats d'un procés. Model d'estats ==
Per representar el cicle de vida d'un procés s'acostuma a utilitzar un diagrama d'estats. L'estat en què està un procés en un instant de temps es guarda com una dada més al [[BCP]] del procés.
 
L'estat del procés depèn en gran part de la seva relació amb el [[microprocessador]]. Tots els sistemes operatius tenen un component anomenat [[Planificador]] (de l'anglès ''scheduler'') que és l'encarregat de decidir quin procés s'executa en cada moment. També està clar que s'haurà d'implementar una cua on emmagatzemar temporalment els processos que està a l'espera de ser executats.
 
=== Model de dos estats ===
És el model més simple i només diferència entre processos en execució i processos que no s'estan executant. Aquest model funciona bé quan es treballa amb una cua [[FIFO]] i una planificació [[Round Robin]] o per torn rotatori. Cada cop que un procés canvia d'un estat d'execució (ús de [[CPU]]) a un estat de no execució (anomenats en anglès: wait o ready) es produeix una operació que s'anomena [[canvi de context]]. Aquest procés commuta un procés en espera per un procés en execució.
 
=== Model de cinc estats ===
[[Fitxer:Diagrames5Estats.png|miniatura|Diagrama d'estats d'un model de 5 estats]]
 
Pel que fa a les cues d'espera i han diferents implementacions:
 
* Cues FIFO (First In First Out): sistemes on no hi ha prioritats
* Diferents cues una per cada nivell de prioritat: O una sola cua on s'ordenin els elements per la seva prioritat i en cas d'empat per FIFO.
* Una cua d'espera per cada dispositiu E/S: Aquí s'emmagatzemen els processos en espera d'operacions d'E/S.
 
=== Model de 7 estats ===
[[Fitxer:Diagrames7Estats.png|miniatura|Diagrama d'estats d'un model de 7 estats]]
 
Els estats són per tant:
 
* Nou (created)
* Llest (ready) o en Espera (waiting): Pot estar en memòria principal o memòria secundària (swapping)
* Executant-se (running):
* Dormint (sleeping) o bloquejat (blocked): : Pot estar en memòria principal o memòria secundària (swapping)
* Terminat (terminated)
 
== Algoritmes de planificació ==
=== Cues FIFO (First In First Out) ===
Aquest tipus de sistema equivalen a un sistema sense planificació on els processos s'executen per estricte ordre seqüencial d'execució. Un nom equivalent és [[First Come First Served (FCFS)]]
 
=== Algoritme Round Robin. Planificació per torns ===
La planificació [[Round Robin]] és una de les més senzilles i utilitzades. Consisteix en una cua [[FIFO]] però on cada procés no s'executa durant més d'un període prefixat anomenat [[quantum]]. D'aquesta manera els processos llargs no poden saturar la cua.
 
Els sistemes operatius moderns utilitzen sistemes complexos que poden modificar el valor del quantum de forma dinàmica.
 
=== Algoritmes de planificació amb prioritat per nivells ===
Aquest tipus de sistemes assignen una prioritat a cada procés. Les prioritat es divideixen en nivell de prioritat. Cada nivell sol tenir la seva pròpia cua FIFO i també s'aplica el processament per torns (Round Robin) en cada cua
 
Amb Unix/Linux tenim la comanda [[nice]] per tal de canviar la prioritat d'un procés. La majoria de processos tenen la prioritat 0. Augmentar injustificadament la prioritat d'un procés pot causar que la resta de processos (inclosos processo crítics del sistema) no funcionin correctament.
 
=== Multilevel feedback queue ===
És un dels sistemes més utilitzats. Es caracteritza per prioritzar els processos segons la següent llista de prioritats:
 
2.188.581

modificacions