Résumé du mécanisme de mise en œuvre simultanée -1-

L'accès simultané est la base de nombreux problèmes, est la question fondamentale de la gestion des processus et du fil, la programmation concurrente est une question très importante. Mais en même temps de comprendre la programmation concurrente orientée objet et la compréhension de la difficulté du même, si vous voulez le comprendre, il est lié à une route difficile.

Toutes les choses à tout moment ne peut effectuer une étape de programmation séquentielle est simple et basique. Mais pour certaines questions complexes, l'exécution parallèle est pratique et nécessaire.

concepts de base simultanés

Le problème est que le processus du noyau du système d'exploitation et la gestion des threads, il existe différentes situations de traitement des commandes systèmes, multi-processeurs systèmes, distribués processus de traitement du système informatique. ( TODO: JAVA Description liées ici ) problèmes de concurrence liés à la question des ressources non seulement dans la mémoire, les fichiers, l' accès E / S, la communication en cours pour la collecte et le traitement impliquera en même temps.

En même temps améliorer l'utilisation des ressources du processeur, aider à écrire mieux et plus vite la compréhension des programmes concurrents. Si vous voulez mieux remplir la programmation réseau, la programmation graphique, la programmation événementielle , programmation fonctionnelle , et de comprendre une partie de l' architecture logicielle commune (architecture basée sur le mécanisme de message), les systèmes distribués , ont besoin d' une compréhension complète des problèmes de concurrence, pensez mieux l'utilisation de la langue dans le cadre des collections doivent également comprendre les problèmes de concurrence. Il y a la langue concurrente spéciale (une langue comme Go, elle - même prend en charge Erlang simultanée). Aussi peut en même temps aussi nous aider à créer un design couplé de manière plus lâche.

Mais attention n'est pas une utilisation parfaite et en même temps (en fait, difficile). En même temps nécessitent des coûts supplémentaires (y compris la complexité du coût, les frais généraux des ressources ) pour maintenir, programme environnemental concurrent fermé est cassé. En même temps est impossible, et la nécessité de rationaliser le nombre de besoin en même temps d'avoir assez de puissance de traitement du processeur. S'il n'y a pas de tâche blocage utiliser sera compliquée par l'introduction de changements de contexte série de coûts inutiles et ainsi de suite.

Brouiller les pistes

En même temps (simultanéité) et parallèle (de Parallélisme)

TODO: complément à d'autres explications

Concurrency fait référence à une période de temps, la capacité d'effectuer plusieurs tâches de traitement en alternance. Après chaque temps d'exécution de processus, enregistrer l'état de fonctionnement, la libération des ressources dans un état d'attente, de sorte que d'autres processus de saisir les ressources CPU.

Parallèle est la capacité de gérer plusieurs tâches, le développement de l'unité centrale à un multi-core, peut être réalisée une pluralité d'instructions de non-charge, et l'exécution du bloc en même temps.

La différence fondamentale entre la simultanéité et le parallélisme est de savoir si le processus effectué simultanément, toutes les tâches qu'ils doivent effectuer à l'extérieur le plus rapidement possible. concept de « parallèle » est un sous-ensemble du concept de « concurrent ». Par conséquent, des problèmes dans la résolution d'un seul comportement d'exécution concerne le mode de programmation ou plusieurs processus d'exécution entrent dans le cadre de la programmation concurrente.

Pour comprendre le parallélisme et sont concurrency ci-dessous en se référant à:

Référence 1: L'un des deux départements en même temps des experts Zuozhen, ce sont deux tâches parallèles, l'un des médecins parfois interrogatoire, voir parfois un seul laboratoire, puis l'interrogation continue, interrompue brusquement pour faire face à la consultation du patient, qui est en même temps.

Référence 2: Père de Erlang Joe Armstrong avec un enfant âgé de 5 ans peut comprendre le schéma explique la concurrente et parallèle différence. La figure suivante deux files d'attente simultanée est alternativement une machine à café, deux files d'attente parallèles en utilisant simultanément deux machine à café.

todo: Parallel figure Café

processus compliqué et la concurrence fil

Dans certains systèmes, l'entité est le concurrent threads plutôt que (entité concurrente JAVA est thread thread). L'avantage de l'utilisation de threads est que le code n'a pas besoin d'être préoccupé par sa course dans une ou plusieurs machines cpu, augmentant ainsi un cpu peut facilement accélérer le déroulement du programme.

Le processus peut être entre partagé comment les données est souvent nécessaire complexe mise en œuvre (IPC), tandis que le fil entre le code, l'espace d'adressage est partagée, les données partagées approche est plus efficace . (Procédé d'isolement à considérer, il est impossible d'accéder directement à un processus à un autre processus; fil sans isolation, la mémoire partagée entre les threads)

faire: sémaphore est en train ou sur un fil? ? Vous devriez avoir? processus compliqué et threads simultanés pour obtenir différents ??

problèmes de conception simultanée

  • Inter-process communication
  • Processus de ressources partage et de la concurrence (mémoire, fichiers, accès E / S, processeur, mémoire tampon) (lecture et l' accessibilité d'écriture)
  • l' activité du processus de synchronisation
  • Procédé processeur temps allocation

problème classique

TODO: complément d'autres exemples de problèmes

Producteur / problème des consommateurs, le problème de lecture / écriture.

principe simultané

Conditions simultanées

  • opération atomique

    Une séquence de fonction ou d'une action par une ou plusieurs instructions, non visible à l' extérieur. C'est, d' autres processus ne peuvent pas voir l'état intermédiaire ne peut pas interrompre l'opération. séquences d'instructions soit tout ou rien de la mise en œuvre de l' exécution . Assurer l'isolement des processus simultanés.

  • section critique

    Accès aux ressources partagées processus section du code , si le processus est un domaine critique, pour que d' autres processus ne peuvent pas être exécutés dans ce code.

  • conditions de concurrence

    threads multiples ou des processus dans des données de lecture et d'écriture partagées, les résultats dépendent des circonstances de leur temps relatif d'exécution. En cas de plusieurs processus ou threads de lire et de données d'écriture, les perdants de la concurrence décident de la valeur finale de la compétition variable.

  • exclusif

    Un processus section critique aux ressources partagées d'accès, d'autres processus ne peut pas accéder à toutes les circonstances entrent dans la région critique des ressources partagées.

  • impasse

    Deux ou plusieurs processus parce que chaque processus est en attente d'autres processus et ne peuvent pas continuer le cas.

  • livelock

    Deux ou plusieurs processus en réponse aux changements dans d'autres processus et les circonstances continuent de changer leur statut, mais ne font pas un travail utile.

  • faim

    Bien qu'un processus peut fonctionner peut se poursuivre, mais a été ignoré indéfiniment planificateur, de sorte que le cas ne doit se produire.

principe simultané

Le problème est compliqué par l'interaction entre les processus (ou fils), et il y a de nombreuses circonstances simultanées, la concurrence, les processus simultanés sous différents degrés d'interaction sous différents modes d'exécution, se comportent différemment, sont discutés ci-dessous.

En alternance et chevauchant le mode d'exécution

Monoprocesseur système de multiprogrammation exécute alternativement un processus, un multi-processeur dans le processus d'exécution sont exécutées en alternance et se chevauchent. Dans lequel le processus de la vitesse relative de l' exécution imprévisible (vitesse d'exécution dépend de l'activité d'autres processus, le système d'exploitation gestion des interruptions, la politique de planification du système d'exploitation), a attiré beaucoup de problèmes:

  1. Mondial de partage des ressources risque (lecture et écriture différent ordre d'exécution des variables globales)
  2. Système d' exploitation est difficile à ressources optimisée allocation
  3. Localisez la programmation des erreurs est très difficile, le débogage difficile
  4. Le cas des processus exécutés simultanément ( en parallèle problème se produit uniquement en multi-processeur)

Prenons l'exemple suivant section du code et analyse:

faire: seul processus illustré multiprocesseur

Sur un seul processeur, le processus peut cesser d' exécuter des instructions partout, alors que multiprocesseur effectuera deux processus en même temps et essayez d'accéder à la même variable globale. Pour résoudre ce problème , nous devons contrôler l' accès aux ressources partagées , permet un seul processus d'entrer.

processus interactif

FAIRE: Table Tableau 5.2 Capture manuels

Il y a concurrence pour les ressources entre les processus concurrents: le processus lorsque chaque compétition pour les mêmes ressources, les conflits, chaque processus que l'accès aux ressources (en lecture seule) ne modifie pas les ressources. Cette situation nécessite un accès exclusif (lire), le problème peut être résolu par les chaînes de ressources, pour fournir le mécanisme de verrouillage.

Partage de processus de coopération, vous pouvez accéder à la même variable partagée, partager des fichiers ou bases de données. Processus peut accéder ou modifier des variables partagées (lecture et écriture) et non à d' autres processus, mais ils savent que d' autres processus peuvent également accéder aux mêmes données. Seulement besoin de modifier d' assurer mutuellement exclusifs (écriture), mais nécessite une nouvelle exigences de contrôle: la cohérence des données ( TODO: peinture, par exemple ). Dans ce cas , le concept de la région critique est très important, pas une seule déclaration mutuellement exclusives plus répondre à la demande,

todo: exemple de peinture

la coopération de communication interprocessus, parce que l'objet n'est pas partagé, donc pas mutuellement exclusives, mais il y a encore une impasse et la faim, les deux processus sont le partenaire de réception de la déclaration de blocage de la communication, l' impasse (se todo: peinture, par exemple ). la faim figure ( TODO: Exemples de peinture )

problème de contrôle d'accès simultané

Les questions de contrôle

réalisation simultanée a beaucoup de problèmes de contrôle, qui contrôle trois problèmes majeurs: exclusion mutuelle, l'impasse, la famine, en plus d'autres questions, telles que la cohérence des données de contrôle.

TODO: problèmes de contrôle de tableau ici

exclusif

En même temps question de base est des ressources mutuellement exclusives demandes Réaliser des mutuellement exclusives , il existe une variété de méthodes (méthode des méthodes matérielles et logicielles), la mise en œuvre de mutex ont également besoin de faire attention à des questions telles que l' attente occupé.

techniques exclusives peuvent être utilisées pour résoudre le conflit de ressources d'injection de conflits, etc., peut également être utilisé pour la synchronisation de processus.

exigences mutuellement exclusives

  • Faire respecter mutuellement exclusifs: dans tous les processus avec la zone critique des ressources partagées ou des objets partagés liés à, le processus ne permet qu'une seule d'entrer dans la section critique
  • Dans la zone non critique pour arrêter le processus ne peut pas interférer avec d'autres processus
  • Processus d'accès à la section critique ne peut pas être indéfiniment retardée, qui ne se fera pas l'impasse ou la famine
  • processus temps critique réside dans la région est limitée
  • Aucun processus dans la zone critique, doit être en mesure de saisir immédiatement la section critique
  • Le nombre de vitesse d'exécution et de processus liés à processeur sans exigences et restrictions

méthodes exclusives: Mutually

  1. Instructions spécifiques de la machine, moins de frais généraux, mais pas universel. (Support du matériel)
  2. Système d'exploitation ou langage de programmation pour fournir un certain niveau de soutien. (Approche du logiciel: support pour les systèmes d'exploitation et langages de programmation)
  3. Assumer la responsabilité du processus pour obtenir l'exclusion mutuelle, qui est une méthode logicielle, l'augmentation des frais généraux et viciée. (Approche du logiciel: la responsabilité du processus)

1, dans lequel plusieurs méthodes de mise en œuvre sont: l'interruption est désactivée, les instructions machine dédiées, 2 Plusieurs méthodes sont: sémaphores, moniteurs et autres messages, 3 Plusieurs méthodes ont mis en œuvre des algorithmes Dekker, l'algorithme Peterson, les conditions de course de signaux, et montant. Une description détaillée de ces méthodes seront résumées dans l'article suivant.

systèmes différents Concurrency

UNIX concurrency

  • transfert de données inter-processus
    • pipeline
    • nouvelles
    • mémoire partagée
  • Déclencher le comportement des autres processus
    • sémaphore
    • signal

Linux concurrency

  • Il contient tous les mécanismes d'UNIX
  • mécanisme de signalisation en temps réel
    • Il prend en charge le signal d'ordre de priorité
    • File d'attente la pluralité de signaux simultanément
    • Il peut être transmis avec la valeur de signal (entier ou un pointeur)
  • opération atomique
  • spinlocks
  • sémaphore
  • barrière

Windows7 concurrency

  • fonction d'attente
  • objets Dispatcher
  • section critique
  • serrures lecture-écriture légère et variables de condition
  • Le mécanisme de synchronisation est indépendant

communication inter-processus Applications

  • connecteur

référence

  1. Système d'exploitation - et l'essence des principes de conception (huitième édition) Chapitre V
  2. Un code très efficace: Java Development Manuel Chapitre 7
  3. Art de Concurrency
  4. idées de programmation JAVA quatrième édition du chapitre 21

Je suppose que tu aimes

Origine www.cnblogs.com/cheaptalk/p/12549666.html
conseillé
Classement