Gestió de la Memòria i Planificació de Processos en Sistemes Operatius

Clasificado en Informática

Escrito el en catalán con un tamaño de 7,18 KB

Planificació de Processos (Scheduler)

Al planificador dels processos que ha de rebre el recurs de la CPU en cada canvi de context, s'anomena scheduler.

Bloc de Control del Procés (BCP)

S'anomena Bloc de control del procés (BCP) a la informació que hem de guardar per conservar l'estat d'execució del procés. Per a reiniciar el procés, haurem de restaurar el BCP associat i donar-li accés a la CPU.

Gestió de la Memòria

La memòria és un altre dels recursos principals del sistema. Cada procés necessita memòria per emmagatzemar les instruccions que executa la CPU, les dades amb les que opera i les dades dinàmiques que s'utilitzen temporalment, destruint-se en perdre la seva utilitat. Aquest apartat dinàmic s'anomena heap o stack.

El sistema ha de garantir que la memòria reservada a un procés, no pugui ser ni llegida ni modificada per un altre. El procés haurà de demanar al sistema la quantitat de memòria que vol acaparar i el SO ha de decidir si li pot donar o no. La part de memòria que necessita el codi del procés és gestionada per l'administració de l'execució de processos de la CPU.

Si un procés acapara molta memòria pot deixar als altres sense aquest recurs i, per tant, complicar la seva execució amb la sensació d'enl·lentir el sistema.

La memòria física del sistema té un adreçament continu. Si un procés no pot acaparar un espai continu de memòria, el sistema pot fer una reserva de diferents espais no continus físicament i mostrar-los al procés en execució com a un espai continu únic. Un altre avantatge d'aquesta característica és la de poder traslladar de lloc físicament la informació que té a memòria un procés transparentment a l'accés que en fa.

Paginació de la Memòria

Al procés físic del maquinari que facilita aquesta característica, s'anomena paginació de memòria. Es fracciona la memòria amb porcions d'una mida determinada, a cada porció de memòria se l'anomena pàgina i, amb un traductor de número de pàgina, s'enumeren pàgines no contínues físicament, com a pàgines contínues lògicament als accessos que fa el procés a memòria.

Segmentació de la Memòria

L'ús que els processos en fan de la memòria, és per 3 funcions primordials:

  • Emmagatzemar les instruccions del programa o procés. Aquesta memòria hauria de ser de sols lectura, ja que, un cop carregat el programa a memòria, no s'espera que en canviï les instruccions i aquest fet l'aprofita el SO per optimitzar el sistema.
  • Emmagatzemar les dades pròpies del programa.
  • Emmagatzemar dades dinàmiques de l'execució en una zona de memòria que anomenem en anglès heap o stack.

Donat que cada tipus d'informació té les seves característiques, els SOs solen separar-les físicament. Aquesta separació física de cada segment és transparent al procés que hi ha en execució. El programa no ha de tenir cap consideració d'on es troba cada segment.

Una de les optimitzacions que fa el SO és de compartir les instruccions d'un mateix programa si s'executa 2 o més vegades, conservant-lo no més una vegada a memòria i tenint en compte que no es modificarà el segment de codi com hem mencionat anteriorment. Seria el cas de tenir un navegador web obert vàries vegades, cadascuna amb una finestra i plana web diferent. El mateix passa quan parlem d'un lector de pdfs, editor de textos, fulls de càlcul, etc. Tots ells es poden tornar a obrir per tractar un altre document, tenint-ne varis oberts alhora.

Jerarquia de la Memòria

Si un sistema no disposa de suficient memòria per als processos que s'executen concurrentment, podem utilitzar la jerarquia de memòria per a fer-ne l'administració.

Podem veure en el sistema diferents accessos a diferent tipus de memòria creant una jerarquia on, quan més a prop ens trobem de la CPU, més ràpid és l'accés i més alt el cost de la memòria. Podem diferenciar, en els sistemes actuals, els següents tipus de memòria:

  • Registres de la CPU. És la memòria més accessible per la CPU ja que es troba al seu interior. La informació d'aquests registres es guarda al BCP quan ha fer canvis de context d'execució.
  • Memòria cau (en anglès cache). És una memòria ràpida que es troba molt a prop de la CPU. En aquesta memòria es carrega el tros de programa en execució.
  • Memòria. És la que habitualment anomenem com memòria del sistema.
  • Memòria virtual. Ús de l'emmagatzemament extern per a guardar les pàgines de memòria de processos que no s'estan executant. És ineficient i l'augment d'ús d'aquesta memòria fa caure exponencialment el rendiment del sistema.

La Memòria Virtual

Un pas més a la jerarquia, quan la memòria està paginada i amb un traductor de pàgines físiques a pàgines lògiques, si el sistema es queda sense memòria física disponible, és la de treure pàgines de la memòria per a guardar-les momentàniament a un emmagatzemament massiu mentre no s'ha d'utilitzar. Això sol ser un procés lent per la quantitat de recursos necessaris pel trasllat de la informació d'un lloc a un altre.

Quan un procés demana memòria al sistema, i aquest no en disposa, té l'opció de treure pàgines que, segons algorismes, es creu que no seran accedides en breu, a un mitjà d'emmagatzemament com pot ser el disc. El problema principal és el de minimitzar la quantitat de traspassos d'informació que es fa entre memòria i disc, ja que és un procés lent.

Per fer espai a memòria física, primerament hem de decidir quina pàgina de les que hi ha a memòria pot ser prescindible. Hi ha diferents algorismes que tenen diferents fonament. Algun d'ells els anomenem a continuació:

  • LRU (least recently used). Es treu de memòria la pàgina que menys s'ha accedit últimament.
  • MRU (most recently used). Es treu de memòria la pàgina que més s'ha accedit últimament.
  • LFU (less frequently used). Es treu la pàgina a la que s'ha fet menys accessos últimament.
  • RR (random replacement). Es treu una pàgina aleatòriament.
  • ARC (adaptative replacement cache). Alterna entre els algorismes LRU i LFU. No hi ha cap algorisme òptim, ja que la finalitat és treure la pàgina que trigarà més a ser demanada de nou i això depèn molt dels processos que hi ha a cada moment en execució.

Una característica important en treure una pàgina de memòria és si aquesta està bruta o no. En un principi, les pàgines estan a disc i es posen a memòria. Si una pàgina ha estat modificada des de que s'ha posat a memòria fins que es vols emmagatzemar, l'anomenem pàgina bruta i s'ha d'emmagatzemar les noves dades de nou a disc. Si no s'ha modificat, l'anomenem pàgina neta i no cal tornar-la a gravar al disc, ja que té la mateixa informació que tenia originalment. Això ens estalvia molts recursos i pot ser un element de decisió més per a decidir la pàgina que traurem.

Entradas relacionadas: