Allocation de mémoire du système d'exploitation Q & R # 2

Question: Expliquez les algorithmes d'allocation suivants.

  1. Premier ajustement

  2. Meilleur ajustement

  3. Pire ajustement

  4. Système de copain

  5. Prochain ajustement

Answer:

Premier ajustement

Dans la première approche d'ajustement consiste à allouer la première partition libre ou le premier trou suffisamment grand pour accueillir le processus. Il se termine après avoir trouvé la première partition libre appropriée.

Avantage

Algorithme le plus rapide car il recherche le moins possible.

Désavantage

Les zones de mémoire inutilisées restantes après l'allocation deviennent du gaspillage si elles sont trop petites. Ainsi, une demande de mémoire plus importante ne peut pas être effectuée.

Meilleur ajustement

La meilleure solution consiste à allouer la plus petite partition libre qui répond aux exigences du processus demandeur. Cet algorithme recherche d'abord toute la liste des partitions libres et considère le plus petit trou adéquat. Il essaie ensuite de trouver un trou proche de la taille réelle du processus nécessaire.

Avantage

L'utilisation de la mémoire est bien meilleure que l'ajustement initial car il recherche la plus petite partition libre disponible en premier.

Désavantage

Il est plus lent et peut même avoir tendance à remplir la mémoire de minuscules trous inutiles.

Pire ajustement

Dans le pire des cas, l'approche consiste à localiser la plus grande partie libre disponible afin que la partie restante soit suffisamment grande pour être utile. C'est l'inverse du meilleur ajustement.

Avantage

Réduit le taux de production de petites lacunes.

Désavantage

Si un processus nécessitant une plus grande mémoire arrive à un stade ultérieur, il ne peut pas être pris en charge car le plus grand trou est déjà divisé et occupé.

Système de copain

Dans le système de jumelage, les tailles des blocs libres sont sous la forme d'une puissance intégrale de 2. Par exemple 2, 4, 8, 16 etc. Jusqu'à la taille de la mémoire. Lorsqu'un bloc libre de taille 2k est demandé, un bloc libre de la liste des blocs libres de taille 2k est alloué. Si aucun bloc libre de taille 2k n'est disponible, le bloc de taille supérieure suivante, 2k + 1, est divisé en deux moitiés appelées copains pour satisfaire la demande.

Exemple

Supposons que la taille totale de la mémoire soit de 512 Ko et qu'un processus P1 nécessite 70 Ko pour être permuté. Comme les listes de trous ne sont que pour des puissances de 2, 128 Ko seront assez grands. Au départ, il n'y a pas 128 Ko, ni les blocs 256 Ko. Ainsi, le bloc de 512 Ko est divisé en deux copains de 256 Ko chacun, l'un est ensuite divisé en deux blocs de 128 Ko et l'un d'eux est alloué au processus. La prochaine P2 nécessite 35 Ko. En arrondissant 35 Ko à une puissance de 2, un bloc de 64 Ko est requis.

Ainsi, lorsque le bloc de 128 Ko est divisé en deux copains de 64 Ko. Encore une fois, un processus P3 (130 Ko) sera ajusté dans l'ensemble de 256 Ko. Après avoir satisfait la demande de cette manière lorsqu'un tel bloc est libre, les deux blocs / copains peuvent être recombinés pour former le bloc d'origine deux fois plus grand lorsqu'il s'agit de la seconde moitié du copain est également libre.

Avantage

Le système Buddy est plus rapide. Lorsqu'un bloc de taille 2k est libéré, un trou de taille mémoire 2k est recherché pour vérifier si une fusion est possible, alors que dans d'autres algorithmes, toute la liste de trous doit être recherchée.

Désavantage

Il est souvent devenu inefficace en termes d'utilisation de la mémoire. Comme toutes les demandes doivent être arrondies à une puissance de 2, un processus de 35 Ko est alloué à 64 Ko, gaspillant ainsi 29 Ko supplémentaires entraînant une fragmentation interne. Il peut y avoir des trous entre les copains provoquant une fragmentation externe.

Prochain ajustement

L'ajustement suivant est une version modifiée du premier ajustement. Cela commence comme premier ajustement pour trouver une partition libre. Lorsqu'il est appelé la prochaine fois, il commence la recherche à partir de l'endroit où il s'est arrêté, pas depuis le début.