Sistemes multitasca
Introducció
A l’inici dels sistemes operatius, aquests eren monotasca. Això implicava una experiència d’usuari no gaire bona i era un sistema poc eficient. Des d’aquí, progressivament es van desenvolupar els sistemes multitasca, que permeten realitzar diferents operacions alhora.
I d’això és el que parlarem avui, explicant-ne l’inici, els tipus, característiques i components i quines implicacions tenen aquesta mena de sistemes.
Inicis
Com ja hem explicat a la introducció, els primers sistemes operatius eren monotasca, que significa que les operacions s’executaven de manera seqûèncial.
Això té limitacions importants i, als anys 60, es van començar a implementar sistemes que milloraven la situació, com el CTSS (Compatible Time Sharing System). A més, UNIX va implementar conceptes de temps compartit i priorització de recursos.
Aquestes van ser les primeres passes dels sistemes multitasca que, fins avui dia, és l’estàndard en els sistemes operatius actuals.
Tipus de sistemes multitasca
Un sistema operatiu multitasca és un tipus de sistema operatiu que permet realitzar varies tasques al mateix temps. Això ho aconsegueix amb una gestió activa dels recursos del sistema com dispositiu E/S, CPU o memòria.
De sistemes operatius multitasca n’hi ha de dos tipus principals:
-
Multitasca cooperativa
En aquest model, qui passa el control entre una tasca i una altra és la tasca en execució. No és gaire utilitzat avui dia ja que una tasca que no cedeixi el control podria bloquejar el sistema.
-
Multitasca preventiva
Aquí, qui controla l’assignació de CPU a cada tasca és el sistema operatiu, segons uns criteris.
Característiques
Per poder tenir un sistema multitasca, necessitem certes característiques bàsiques:
-
Compartició de temps
A diversos processos se’ls assigna recursos del sistema per intervals de temps.
-
Canvi de context (context switch)
Un canvi de context és un procés on es guarda l’estat del procés actual a un bloc de control de processos (PCB) i carrega l’estat d’un altre procés.
El bloc de control de processos és qui emmagatzema l’estat dels processos aturats. Quan un procés s’atura, el PCB guardarà el seu PID, estat d’execució, comptador de programa i altra informació.
-
Multi-threading
Un fil (thread) és una unitat d’execució dins un procés (en el mateix espai de memòria), pel que es poden tenir diferents fils dins el mateix procés. Això permet, per exemple, que diversos usuaris executin el mateix programa sense crear processos per cadascun.
-
Interrupcions
Ja sigui de hardware o de software, si un procés necessita atenció urgent, enviarà una interrrupció al processador per informar-lo d’una tasca d’alta prioritat.
Components
Els sistemes multitasca també tenen components:
-
Gestor de memòria
Controla l’assignació de memòria de cada procés perquè no interfereixin entre si.
-
Controlador d’interrupcions
Gestiona les interrupcions del sistema (essencial sobretot per la multitasca preventiva).
-
Cues de prioritat
Assignen nivells de prioritat a les tasques.
-
Scheduler (planificador)
És el que decideix l’ordre i la durada d’execució de les tasques, basat en uns criteris. Aquests criteris variaran segons l’algorisme que utilitzi l’scheduler.
Algorismes de planificació
Un planificador pot tenir diferents objectius (minimitzar temps d’espera, minimitzar temps de resposta o latència,…), segons els quals s’implementa. Alguns dels algorismes més coneguts són:
-
First come, first served
Aquest algoritme és senzill: posa a la cua les tasques segons ordre d’arribada.
-
Round Robin
El planificador assigna un temps fix a cada procés i va alternant entre ells.
-
CFS (Completely Fair Scheduler)
Aquest algorisme ha estat l’utilitzat per defecte en Linux des de 2007 fins al 2023. L’objectiu és assignar els recursos del sistema de manera justa, basat en la càrrega de treball global i les necessitats de cada procés.
Implicacions
Tot i que ofereixen grans avantatges, com la eficiència o la productivitat, els sistemes multitasca també tenen algunes desavantatges:
-
Complexitat
La gestió de recursos és més complexa i pot requerir una gestió avançada de memòria i processament.
-
Rendiment
Si el sistema es sobrecarrega, pot baixar el rendiment per l’excès de tasques competint per recursos.
-
Starvation
Segons l’algorisme de planificació que s’apliqui o la prioritat de les tasques, algunes poden quedar famolenques (starving), és a dir, que no els arriba l’hora d’executar-se.
Conclusions
Avui dia, els principals sistemes operatius que coneixem utilitzen aquest enfocament multitasca (Linux, macOS, Windows,…), pel que avui dia és un component bàsic dels nostres sistemes. A més, amb els processadors de diversos nuclis i fils, la multitasca és cada vegada més important.
I fins aquí el post d’avui. Si t’ha semblat útil pots deixar un comentari i compartir-lo. Ens veiem al següent!