Maison >Opération et maintenance >exploitation et maintenance Linux >Quelle est la différence entre la mémoire Linux et Windows ?
La différence entre la mémoire Linux et la mémoire Windows : 1. Linux utilise d'abord la mémoire physique et ne la place sur la partition d'échange que lorsque la mémoire est insuffisante, tandis que Windows utilise la mémoire et la mémoire virtuelle ensemble 2. Windows laisse toujours une certaine quantité ; de mémoire. Avec de l'espace libre, il est plus rapide de démarrer de nouveaux programmes, mais la mémoire Linux est souvent entièrement utilisée. Il est nécessaire de vider une partie de la mémoire avant de l'allouer à de nouveaux programmes, et il est plus lent de démarrer de nouveaux programmes.
L'environnement d'exploitation de ce tutoriel : système Windows10&&linux7.3, ordinateur Dell G3.
Linux utilise d'abord la mémoire physique. Lorsque la mémoire physique est encore libre, Linux ne libère pas la mémoire. Le programme occupant la mémoire a été fermé (cette partie de la mémoire est fermée). utilisé en cache). En d’autres termes, même si vous disposez d’une grande quantité de mémoire, elle sera pleine après l’avoir utilisée pendant un certain temps. L'avantage est qu'il sera plus rapide de démarrer les programmes qui viennent d'être ouverts ou de lire les données qui viennent d'être consultées, ce qui est très bon pour le serveur.
La différence
windows laisse toujours une certaine quantité d'espace libre dans la mémoire Même si la mémoire est libre, le programme utilisera de la mémoire virtuelle. L'avantage est qu'il est plus rapide de démarrer un. nouveau programme et il peut être divisé directement. Donnez-lui simplement de la mémoire libre,
Mais qu'en est-il de Linux ? Comme la mémoire est souvent entièrement utilisée, une partie de la mémoire doit d'abord être effacée puis allouée à un nouveau programme. Le démarrage du nouveau programme sera donc plus lent.
Le noyau Linux met d'abord toutes les données dans la mémoire. Si la mémoire est insuffisante, il les place dans la partition d'échange (mémoire virtuelle). Le détail est que seules les données fréquemment utilisées seront placées dans la mémoire, et rarement. les données exploitées seront placées dans la mémoire, placez-les progressivement sur la partition d'échange et réécrivez-les sur le disque dur le cas échéant.
La méthode de traitement de Windows consiste à utiliser la mémoire et la mémoire virtuelle ensemble, au lieu de se concentrer sur les opérations de mémoire. Le résultat est que la charge d'E/S est relativement importante, ce qui ralentit parfois la vitesse de traitement. La philosophie de Linux est d'utiliser la mémoire autant que possible, car la vitesse de la mémoire est plus de 100 fois supérieure à celle du disque dur.
Développer les connaissances
Linux divise la mémoire physique en trois niveaux de gestion
La mémoire physique du système est divisée en plusieurs nœuds (nœuds), et un nœud correspond à une banque de cluster de mémoire, qui Autrement dit, chaque cluster de mémoire A est considéré comme un nœud. (Vous pouvez utiliser NODE_DATA(node_id) pour trouver le nœud numéroté node_id dans le système)
La mémoire est divisée en nœuds, chaque nœud est associé à un processeur du système, pg_data_t est utilisé dans le noyau pour instancier, et chaque nœud dans le système est lié à une liste chaînée pgdat_list terminée par NULL, où chaque nœud est lié au nœud suivant à l'aide du champ pg_data_tnode_next. Pour la structure UMA, seule la structure statique pg_data de contig_page_data est utilisée pour le moment, NODE_DATA pointe directement vers le contig_page_data global. Les nœuds sont divisés en zones de gestion de mémoire. Une zone de gestion de mémoire est décrite à l'aide de struct zone_struct, zone_t, pour représenter une certaine plage de mémoire. Les 16 Mo de la plage bas de gamme sont décrits comme ZONE_DMA, puis le domaine de mémoire ordinaire ZONE_NORMAL qui peut être directement mappé au noyau, et enfin. la zone physique au-delà du segment du noyau. Le champ d'adresse ZONE_HIGHMEM (0xF8000000~0xFFFFFFFF), mémoire haut de gamme, est l'espace mémoire disponible réservé dans le système et ne peut pas être directement mappé par le noyau. (Afin d'être compatible avec le traitement du hot plugging et de la fragmentation de la mémoire, le noyau introduit quelques zones de mémoire logiques :
1. Le noyau définit une pseudo zone de mémoire ZONE_MOVEABLE. Cette zone de mémoire doit être utilisée dans la migration mémoire, un mécanisme pour empêcher fragmentation de la mémoire physique. Pour l'utilisation ultime de la fragmentation de la mémoire
2. ZONE_DEVICE : mémoire non volatile allouée pour prendre en charge les périphériques remplaçables à chaud, mémoire non volatile).
Page frame (page frame) : représente la plus petite unité de mémoire. Chaque page de la mémoire tas créera une instance de struct page. Traditionnellement, la mémoire est considérée comme des octets continus, c'est-à-dire qu'elle est un tableau d'octets et que le numéro (adresse) de l'unité de mémoire peut être utilisé comme index dans le tableau d'octets. Lors de la gestion de la pagination, plusieurs octets sont convertis en une seule page, par exemple 4 Ko. À ce stade, la mémoire devient une page continue, c'est-à-dire que la mémoire est un tableau de pages et chaque page de mémoire physique est un cadre de page. la mémoire est numérotée en unités de pages. Ce numéro sert d'index dans le tableau de pages et est appelé numéro de cadre de page. (Les objets de structure de données de la page sont stockés dans le tableau global mem_map. Ce tableau est généralement stocké en tête de ZONE_NORMAL, ou dans la zone réservée au chargement de l'image du noyau dans un petit système mémoire. Après avoir chargé l'adresse basse du noyau dans La zone mémoire derrière la zone mémoire, c'est-à-dire les objets de structure de données de la page mémoire où commence ZONE_NORMAL, sont tous stockés dans ce tableau global).
L'unité de radiomessagerie peut convertir les adresses linéaires en adresses physiques. Les adresses linéaires sont divisées en groupes de longueur fixe, appelés pages, et les adresses linéaires dans les pages sont mappées à des adresses physiques continues. Cela permet au noyau de spécifier l'adresse physique d'une page et ses autorisations de stockage sans spécifier les autorisations de stockage pour l'adresse linéaire entière de la page.
L'unité de pagination divise toute la RAM en cadres de page de longueur fixe (également appelés cadres de page). Chaque cadre de page contient une page, ce qui signifie que la longueur du cadre de page et de la page est la même. Les cadres de page font partie de la mémoire et donc une zone de stockage. ----mm_types.h Le mappage dans la structure de page struct enregistre non seulement un pointeur, mais enregistre également des informations supplémentaires, qui sont utilisées pour déterminer si la page appartient à une zone mémoire anonyme dans un espace d'adressage non associé. Méthode pour restaurer anon_vma via le mappage : anon_vma=(struct anon_vma *)(mapping-PAGE_MAPPING_ANON).
Apprentissage recommandé : Tutoriel vidéo Linux
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!