Maison  >  Article  >  développement back-end  >  Quelles sont les différences entre le modèle de processus PHP, les méthodes de communication de processus et les threads de processus ?

Quelles sont les différences entre le modèle de processus PHP, les méthodes de communication de processus et les threads de processus ?

coldplay.xixi
coldplay.xixioriginal
2020-07-01 09:48:424930parcourir

Le modèle de processus PHP est un programme d'exécution, une entité qui peut être assignée à un processeur et exécutée par le processeur ; les méthodes de communication du processus PHP incluent des canaux et des canaux nommés, des signaux, une mémoire partagée, etc. ; threads La différence est qu'un processus est une unité indépendante pour l'allocation et la planification des ressources, tandis qu'un thread est l'unité de base de la planification du processeur.

Quelles sont les différences entre le modèle de processus PHP, les méthodes de communication de processus et les threads de processus ?

Les différences entre le modèle de processus PHP, la méthode de communication de processus et le thread de processus sont :

1 .Modèle de processus PHP

La notion de processus est la base de la structure du système d'exploitation. Les concepteurs de Multics ont utilisé pour la première fois ce terme technique dans les années 1960, et il est plus général qu'un simple devoir. La définition du processus est la suivante :

1. Un programme en cours d'exécution.

2. Une instance d'un programme exécuté sur l'ordinateur.

3. Une entité qui peut être attribuée et exécutée par le processeur.

4. Une unité d'activité décrite par un seul thread d'exécution séquentiel, un état actuel et un ensemble de ressources système associées.

Recommandations d'apprentissage associées : Programmation PHP de l'entrée à la maîtrise

2. >

est l'unité de base de l'allocation des ressources. Toutes les ressources liées au processus sont enregistrées dans le bloc de contrôle du processus

. Pour indiquer que le processus possède ces ressources ou les utilise. 进程PCBDe plus, le processus est également l'unité de planification qui préempte le processeur, et il dispose d'un espace d'adressage virtuel complet. Lorsque des processus sont planifiés, différents processus disposent d'espaces d'adressage virtuels différents et différents threads au sein d'un même processus partagent le même espace d'adressage.

Correspondant à un processus, un thread n'a rien à voir avec l'allocation des ressources. Il appartient à un certain processus et partage les ressources du processus avec d'autres threads du processus.

se compose uniquement des registres de pile pertinents (pile système ou pile utilisateur) et de la table de contrôle des threads

. Les registres peuvent être utilisés pour stocker des variables locales dans un thread, mais ne peuvent pas stocker de variables liées à d'autres threads. 线程TCBHabituellement, un processus peut contenir plusieurs threads, qui peuvent utiliser les ressources possédées par le processus. Dans les systèmes d'exploitation qui introduisent des threads, les processus sont généralement considérés comme l'unité de base de l'allocation des ressources, et les threads sont considérés comme l'unité de base du fonctionnement indépendant et de la planification indépendante. Étant donné que les threads sont plus petits que les processus et ne possèdent fondamentalement pas de ressources système, les frais généraux consacrés à leur planification seront beaucoup plus faibles, ce qui peut augmenter plus efficacement le degré d'exécution simultanée entre plusieurs programmes du système, augmentant ainsi considérablement l'utilisation et les ressources du système. débit. Par conséquent, les systèmes d'exploitation à usage général lancés ces dernières années ont introduit des threads pour améliorer encore la concurrence du système et les considèrent comme un indicateur important des systèmes d'exploitation modernes.

La différence entre les threads et les processus peut être résumée par les quatre points suivants :

(1) Un processus est une unité indépendante pour l'allocation et la planification des ressources, tandis qu'un le thread est une planification CPU L'unité de base de

(2) Le même processus peut inclure plusieurs threads, et les threads partagent les ressources de l'ensemble du processus (registres, piles, contexte), et un processus comprend au moins un fil.

(3) La création d'un processus appelle fork ou vfork, et la création d'un thread appelle pthread_create. Une fois le processus terminé, tous les threads qu'il possède seront détruits et la fin du thread n'affectera pas. d'autres threads dans le même processus.La fin de

(4) Les threads sont des processus légers, et leur création et leur destruction prennent beaucoup moins de temps que les processus.Toutes les fonctions d'exécution du système d'exploitation sont complétées par la création de threads

(5) La synchronisation et l'exclusion mutuelle sont généralement requises lors de l'exécution dans des threads, car ils partagent toutes les ressources du même processus

(6) Les threads ont leurs propres attributs privés TCB, identifiant de thread, registres, et le contexte matériel, et le processus possède également son propre bloc de contrôle de processus d'attribut privé PCB. Ces attributs privés ne sont pas partagés et sont utilisés pour identifier un processus ou un thread

3. Méthodes de communication inter-processus.

1. Pipe (Pipe) et pipe nommée (pipe nommée) :

Les pipes peuvent être utilisées pour la communication entre les processus avec affinité. noms. Par conséquent, en plus des fonctions de tuyaux, il permet également la communication entre des processus non liés

2. Signal :

Le signal est une méthode de communication relativement complexe utilisée pour les notifications lors d'un certain événement ; se produit dans un processus de réception, en plus d'être utilisé pour la communication inter-processus, le processus peut également envoyer des signaux au processus lui-même en plus de prendre en charge la fonction sémantique du signal Unix sigal, Linux prend également en charge la fonction de signal sigaction dont la sémantique est conforme au standard Posix.1 (en fait ci-dessus, cette fonction est basée sur BSD. Afin d'obtenir un mécanisme de signal fiable et d'unifier l'interface externe, BSD a réimplémenté la fonction de signal en utilisant la fonction sigaction

) ;

3. File d'attente des messages (file d'attente des messages) : La file d'attente des messages est une liste chaînée de messages, y compris la file d'attente des messages du système de file d'attente des messages Posix. Un processus disposant d'autorisations suffisantes peut ajouter des messages à la file d'attente, et un processus disposant d'autorisations de lecture peut lire les messages de la file d'attente. La file d'attente de messages surmonte les défauts des signaux transportant une petite quantité d'informations, les canaux ne peuvent transporter que des flux d'octets non formatés et la taille des tampons est limitée.

4. Mémoire partagée : permet à plusieurs processus d'accéder au même espace mémoire, ce qui est la forme IPC disponible la plus rapide. Il est conçu pour la moindre efficacité opérationnelle des autres mécanismes de communication. Il est souvent utilisé conjointement avec d'autres mécanismes de communication, tels que les sémaphores, pour réaliser la synchronisation et l'exclusion mutuelle entre les processus.

Sémaphore : Principalement utilisé comme moyen de synchronisation entre processus et entre différents threads d'un même processus.

5. Socket : Un mécanisme de communication inter-processus plus général qui peut être utilisé pour la communication inter-processus entre différentes machines. Il a été développé à l'origine pour la branche BSD des systèmes Unix, mais est désormais généralement portable sur d'autres systèmes de type Unix : les variantes Linux et System V prennent en charge les sockets.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn