2017-04-02 3 views
0

Question

Y a-t-il des différences notables entre le changement de contexte entre les processus en cours d'exécution le même exécutable (par exemple, deux instances distinctes de cat) vs processus en cours d'exécution executables différents?Est-ce un changement de contexte moins coûteux entre les processus avec le même exécutable

Contexte

Je sais déjà que d'avoir les mêmes moyens exécutable qu'il peut être mis en mémoire cache au même endroit dans la mémoire et dans l'une des caches CPU qui pourraient être disponibles, donc je sais que lorsque vous passez d'un processus à un autre, s'ils exécutent tous deux le même exécutable, vos chances d'avoir un cache manqué sont plus petites (éventuellement zéro, si l'exécutable est assez petit ou s'ils sont exécutés à peu près au même endroit, et le noyau ne le fait pas ne faites rien pendant ce temps qui pourrait causer l'expulsion de la mémoire pertinente du cache). Cela s'applique bien sûr "tout le chemin vers le bas", à la mémoire étant toujours dans la RAM par rapport à avoir été paginé pour échanger/disque.

Je suis curieux de savoir s'il y a d'autres considérations qui me manquent? Tout ce qui concerne les mappages de mémoire virtuelle, peut-être, ou s'il existe des noyaux capables d'obtenir des performances plus optimales hors contexte, permute entre deux processus exécutant le même exécutable binaire?

Motivation

J'ai pensé à la philosophie Unix des petits programmes qui font une chose bien, et comment prendre à sa conclusion logique, elle conduit à beaucoup de petits executables et exécutés en forme de fourche étant à plusieurs reprises. (Par exemple, les processus runsv en cours de démarrage démarrent presque simultanément sur le démarrage de Void Linux - notez que runsv est seulement un bon exemple au démarrage, car ils passent la plupart du temps leur temps à attendre les événements lorsqu'ils démarrent leur service enfant. boot, il n'y a pas beaucoup de changement de contexte entre eux, mais nous pourrions facilement visualiser de nombreuses instances cat ou /bin/sh exécutées en même temps ou n'importe quoi.)

Répondre

0

Le surdébit de changement de contexte est le même. Cela est généralement fait avec une seule instruction (qui prend du temps).

Il existe certains systèmes d'exploitation plus avancés (c'est-à-dire non eunuchs) qui prennent en charge les programmes partagés installés. Ils ont réduit les frais généraux lorsque plus d'un processus y accède. Par exemple, une seule copie des données en lecture seule chargées dans la mémoire physique.