FR2883083A1 - Program instruction inserting method for e.g. computer, involves executing inserted treatment according to result of test of connection data and in place of program instruction following connection instruction - Google Patents

Program instruction inserting method for e.g. computer, involves executing inserted treatment according to result of test of connection data and in place of program instruction following connection instruction Download PDF

Info

Publication number
FR2883083A1
FR2883083A1 FR0502485A FR0502485A FR2883083A1 FR 2883083 A1 FR2883083 A1 FR 2883083A1 FR 0502485 A FR0502485 A FR 0502485A FR 0502485 A FR0502485 A FR 0502485A FR 2883083 A1 FR2883083 A1 FR 2883083A1
Authority
FR
Grant status
Application
Patent type
Prior art keywords
task
characterized
target
operation
inserted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR0502485A
Other languages
French (fr)
Other versions
FR2883083B1 (en )
Inventor
Laurent Dufour
Goater Cedric Le
Marc Vertes
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Meiosys SAS
Original Assignee
Meiosys SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Abstract

The method involves memorizing, within a memory zone outside a work memory of a target task, connection data representing an information triggering treatment to be inserted. A connection instruction triggering a test of the data is executed within the unreeling of a system routine called or controlled by the target task. The inserted treatment is executed according to the result of the test and in place of the program instruction following the connection instruction.

Description

Procédé d'exécution d'une application dans un conteneur virtuel formant A method of executing an application in a virtual container forming

une session d'environnement virtualisé a session virtualized environment

La présente invention concerne un procédé d'insertion dynamique d'un traitement informatique au sein d'une tâche informatique en cours d'exécution, de façon transparente pour cette tâche. The present invention provides a dynamic method for inserting a data processing in a computer task running, transparent to the task. Elle concerne aussi un procédé utilisant une telle insertion dynamique pour exécuter une application dans un conteneur virtuel formant une session d'environnement virtualisé. It also relates to a method using such a dynamic insertion for executing an application in a virtual container forming a virtualized environment session.

Au sein d'un ordinateur ou d'un réseau d'ordinateurs, ces procédés sont utiles en particulier pour gérer la façon dont sont exécutées certaines applications informatiques, même lorsqu'elles n'ont pas été conçues en vue d'une telle gestion. In a computer or a computer network, these methods are useful in particular for managing how applications are run certain computer even when they were not designed for such management.

Le domaine de l'invention est celui des réseaux ou clusters d'ordinateurs formés de plusieurs ordinateurs collaborant entre eux. The field of the invention is that of networks or computer clusters formed of multiple computers working together. Ces clusters sont utilisés pour exécuter des applications logicielles apportant un ou des services à des utilisateurs. These clusters are used to execute software applications or providing services to users. Ces applications peuvent être mono-processus ou multi-processus, et être exécutées sur un seul ordinateur ou répartie sur plusieurs ordinateurs en réseau collaborant entre eux pour former un cluster . These applications can be single-process or multi-process, and to run on a single computer or distributed across multiple networked computers working together to form a cluster. Il peut s'agir en particulier d'applications transactionnelles, par exemple sous la forme d'une application distribuée, et communicant par échange de messages ( Message Passing Interface ) ou à travers des zones de mémoire partagée ( Shared Memory ). This may be especially transactional applications, for example in the form of a distributed application, and communicating by exchanging messages (Message Passing Interface) or through shared memory areas (Shared Memory).

L'invention s'applique particulièrement à la gestion du fonctionnement, au sein de l'ordinateur ou du cluster, d'une telle application dite maître ou primaire et exécutée sur un ordinateur dit noeud primaire ou opérationnel. The invention applies particularly to the management of the operation, within the computer or cluster, of such an application called master or primary and executed on a computer or said primary operational node. Cette gestion de fonctionnement peut en particulier être réalisée par une autre application logicielle dite application intermédiaire, par exemple une application de type middleware . This functioning management may in particular be carried out by another said software application through application, for example a middleware type application. Cette gestion de fonctionnement peut comprendre en particulier des opérations de réplication, de redistribution, de fiabilisation, ou de traçage ( debugging ) de tout ou partie de cette application, au sein du noeud primaire ou en collaboration avec d'autres noeuds dits secondaires. This functioning management may comprise in particular replication operations, redistribution, reliability, or tracing (debugging) of all or part of this application, within the primary node or in collaboration with other said secondary nodes.

Pour réaliser une telle gestion de fonctionnement, il est utile de pouvoir intervenir dans l'exécution de l'application gérée, par exemple pour analyser ou modifier son fonctionnement. To achieve such management operation, it is useful to be able to intervene in the execution of the managed application, for example to analyze and modify its operation. Il est en particulier utile de disposer de techniques d'enregistrement des évènements survenant au sein de cette application, pour pouvoir les rejouer, c'est-à-dire les réexécuter ou les faire se produire de la même façon, à un autre moment ou sur un autre noeud ou ordinateur. It is particularly useful to have events of recording techniques occurring within this application in order to play them, that is to say, replay or make them happen in the same way, at a different time or on another node or computer.

Or, lorsqu'une application utilisée en exploitation n'a pas été prévue dès sa conception pour réaliser une telle gestion, il est difficile et coûteux de lui ajouter de telles fonctionnalités ultérieurement, et cela constitue un risque important d'erreurs. However, when an application used in operation was not planned from the design to achieve such management, it is difficult and expensive to add these features later, and this is a significant risk of errors. Pour toutes les applications existantes, il est particulièrement utile de pouvoir implémenter une telle gestion de fonctionnement sans modifier leurs fichiers exécutables, et en les gardant dans leur version d'origine ( Iegacy applications ). For existing applications, it is particularly useful to implement such operation management without changing their executable files, and keeping them in their original version (Iegacy applications).

Des méthodes existent déjà pour permettre le chargement dynamique de code dans un exécutable, qui constitue un élément critique du procédé. methods already exist to allow dynamic loading of code into an executable, which is a critical part of the process. Nous les listons ci-dessous, et indiquons certaines de leurs limitations. We list below, and indicate some of their limitations.

- Pré-chargement de bibliothèque par l'éditeur de lien dynamique. - Pre-loading library by the dynamic linker.

Lors de l'éxécution d'un exécutable à édition de liens dynamique, il est possible de précharger, par la spécification d'une variable d'environnement, une bibliothèque non requise dans l'espace mémoire adressable du programme. During the execution of an executable dynamic linking, it is possible to pre-load by specifying an environment variable, a non-required library in the addressable memory space of the program. En particulier, cette méthode ne s'applique pas aux exécutables à édition de lien statique. In particular, this method does not apply to static linker to executable.

- Chargement de bibliothèque par utilisation de l'appel système existant ptrace depuis un processus tiers. - library loading by using the existing system call ptrace from a third process. Ce procédé est celui utilisé par les débuggueurs pour altérer l'exécution d'un processus. This method is the one used by débuggueurs to alter the execution of a process. Il s'appuie sur la présence de symboles de debug dans le binaire de l'exécutable pour permettre l'invocation de fonctions. It relies on the presence of debug symbols in the binary executable to allow the invocation of functions. La fonction de chargement de bibliothèque, appelée dlopen dans Linux, doit dèjà être présente dans l'exécutable, ce qui n'est pas systématique (et rare dans le cas d' exécutables statiques). The library loading function, called dlopen in Linux must already be present in the executable, which is not systematic (and rare in the case of static executables).

Ces méthodes, en plus des limitations qu'elles comportent pour l'insertion de code dans des processus en cours d'exécution, ne permettent pas seules de garantir un fonctionnement correct de l'exécutable si le code inséré doit être plus tard supprimé. These methods, in addition to the limitations they entail for inserting code into running processes, not only to help ensure proper operation of the executable if the inserted code to be later deleted.

De telles méthodes reviennent souvent à considérer que les parties de codes ainsi insérées le sont de manière permanente, ce qui pose alors des problèmes potentiels d'interférence entre le code inséré et l'exécutable original. Such methods often return to consider that as code inserted parts are permanently, which raises potential problems of interference between the inserted code and the original executable.

Certaines méthodes d'interposition dynamique sont aussi décrites dans le brevet n FR 2 843 210 des mêmes inventeurs, mais permettent surtout d'intervenir lors de l'exécution d'un appel système. Some methods of dynamic interposition are also described in Patent No. FR 2,843,210 the same inventors, but allow especially to intervene in the execution of a system call. Ces techniques peuvent être insuffisantes pour intervenir dans des instructions ne réalisant pas d'appel système. These techniques may be insufficient to interfere with instructions not realizing system call.

Un but de l'invention est de pallier certains des inconvénients de l'art antérieur, et en particulier de permettre d'insérer un traitement informatique au sein de l'exécution d'une tâche appartenant à une telle application. An object of the invention to overcome some of the disadvantages of the prior art, particularly to allow to insert a data processing in the execution of a task belonging to such an application.

Dans cet esprit, l'invention propose un procédé d'insertion dynamique d'une ou plusieurs instructions de programme constituant un traitement inséré, par une première tâche informatique, dite tâche gestionnaire, dans une deuxième tâche informatique, dite tâche cible, utilisant une mémoire de travail pour son exécution dans un système informatique géré par un logiciel système, ce procédé comprenant les étapes suivantes - une mémorisation, au sein d'une zone de mémoire externe à la mémoire de travail de la tâche cible, d'au moins une donnée d'accrochage représentant des informations de déclenchement du traitement à insérer; With this in mind, the invention provides a fast method of inserting one or more program instructions constituting an inserted processing, by a first computing task, said task manager, in a second computer task, termed target task, using a memory working for execution in a computer system managed by a software system, the method comprising the following steps - a storage, in an external memory area in the work memory of the target task, at least a given hanging representative trigger information processing to be inserted; - une exécution, au sein du déroulement d'une routine système appelée ou contrôlée par la tâche cible, d'une instruction dite d'accrochage déclenchant un test de la donnée d'accrochage; - execution, within the course of a system routine called or controlled by the target job, a bonding said instruction triggering a test of the adhesion data; - exécution du traitement inséré, en fonction du résultat dudit test et en lieu et place de l'instruction de programme suivant l'instruction d'accrochage dans le déroulement de ladite routine système. - executing processing inserted, depending on the result of said test, and instead of the next program instruction the instruction hooking in the course of said system routine.

En particulier, à l'issue de l'exécution du traitement inséré, l'exécution de la routine système reprend là où elle s'était interrompue lors de l'exécution du traitement inséré. In particular, after the execution of the treatment inserted, the execution of the system routine resumes where it left off when running processing inserted.

Dans le cas où la tâche cible est liée au moins une autre tâche par le partage d'un même espace mémoire d'exécution, le procédé comprend en outre un blocage temporaire de la tâche liée pendant au moins une opération comprenant le chargement, dans ledit espace mémoire d'exécution, des instructions du traitement à insérer. In the case where the target task is linked at least one other task by sharing a same execution memory, the method further comprises temporary blocking of the related task for at least one operation comprising loading, in said performance memory, processing instructions to insert.

De façon avantageuse, le traitement inséré comprend une gestion 10 d'au moins une donnée identifiant la tâche cible. Advantageously, the inserted treatment comprises administration of at least 10 data identifying the target task.

Plus particulièrement, le traitement inséré réalise ou déclenche au moins une opération de gestion de fonctionnement d'une application dite application gérée. More specifically, the treatment achieves inserted or triggers at least one operating management operation of a said application managed application.

Cette opération de gestion de fonctionnement peut comprendre au moins une opération de suivi ou d'enregistrement de l'exécution de la tâche cible, ou de capture de l'état de ladite tâche cible ou d'au moins une ressource qu'elle utilise. This operation management operation may comprise at least one monitoring or recording operation of the execution of the target task, or capture the state of said target task or at least one resource it uses.

En particulier, cette opération de gestion de fonctionnement comprend au moins une opération de mémorisation d'une donnée associée à la tâche cible et représentant une barrière de synchronisation avec au moins une autre tâche. In particular, the operation management operation comprises at least one step of storing data associated with the target task and representing a synchronization barrier with at least one other task.

Plus particulièrement, cette opération de gestion de fonctionnement comprend au moins une opération de réplication de la tâche cible dans un autre système informatique, ou de libération dans son système d'origine de ladite tâche cible ou d'au moins une ressource qu'elle utilise ses ressources, après une telle réplication. More specifically, the operation management operation includes at least one replication operation of the target task in another computer system, or release in its original system of said target task or at least one resource it uses resources, after such replication.

Le traitement inséré peut aussi réaliser un chargement dynamique d'un élément d'une bibliothèque logicielle, ladite bibliothèque logicielle étant accessible ou modifiable au cours de l'exécution de la tâche cible ou d'une application à laquelle elle appartient. The inserted treatment can also perform dynamic loading of an element of a software library, said software library being accessible or modifiable during execution of the target task or application to which it belongs.

Le traitement inséré peut aussi comprendre une mémorisation, de façon associée à la tâche cible, d'une donnée constituant un identifiant virtuel commun entre la tâche cible et au moins une autre tâche en cours d'exécution, constituant ainsi un identifiant d'un conteneur virtuel englobant lesdites tâches. The inserted treatment may also comprise a storage, so associated with the target task, a given constituent a common virtual identifier between the target task and at least one other task running, thus constituting an identifier of a container Virtual encompassing said tasks.

L'identifiant de conteneur virtuel peut être mémorisé de façon associée à une première tâche, par un traitement inséré exécuté lors d'une routine système appelée par ladite première tâche, cet identifiant de conteneur étant propagé à au moins une deuxième tâche par héritage à partir de la première tâche. The virtual container identifier can be stored so as associated with a first task, executed by a inserted treatment system during a routine called by said first task, the container identifier being spread to at least a second task by inheritance from the first task.

Cet identifiant de conteneur virtuel peut aussi être propagé par la caractéristique qu'au moins une troisième tâche est crée par une opération comprenant une instruction d'accrochage utilisée par une tâche gestionnaire pour mémoriser avec ladite troisième tâche un identifiant de conteneur correspondant à conteneur virtuel existant et devant contenir ladite troisième tâche. This virtual container ID may also be propagated through the feature that at least one third task is created by an operation comprising a hooking instruction used by a task manager for storing said third task with a container identifier corresponding to existing virtual container and to contain said third task.

L'invention permet qu'au moins une opération logicielle soit appliquée à l'ensemble des tâches appartenant à un même conteneur virtuel. The invention allows at least a software operation is applied to all tasks belonging to the same virtual container.

Le conteneur virtuel peut regrouper un ensemble de tâches exécutées au sein d'une même application dite application cible. The virtual container can group a set of tasks performed within the same application called target application.

Il peut aussi être utilisé pour qu'au moins une tâche exécutée dans le système informatique subit une opération de gestion de fonctionnement 20 dépendant de son appartenance au conteneur virtuel. It can also be used for at least one task executed in the computer system undergoes an operation management operation 20 depending on its membership in the virtual container.

Selon une particularité, la gestion de fonctionnement des tâches du conteneur comprend un traitement de suivi ou de contrôle de l'exécution ou de capture d'état d'au moins une tâche informatique ou d'au moins une ressource qu'elle utilise. According to a feature, Container tasks of operating management includes treatment monitoring or control the execution or state capture at least one computer task or at least one resource it uses.

Selon une autre particularité, la gestion de fonctionnement des tâches du conteneur comprend un traitement de réplication dans une autre système informatique d'au moins une tâche informatique, ou de libération de cette tâche ou d'au moins une ressource qu'elle utilise, après une telle réplication. In another feature, Container tasks of operating management includes a replication process in another computer system with at least one computing task, or release of this task or at least one resource it uses, after such replication.

D'autres particularités et avantages de l'invention ressortiront de la description détaillée d'un mode de mise en oeuvre nullement limitatif, et des dessins annexés. Other features and advantages of the invention will become apparent from the detailed description of a mode of implementation in no way limiting, and the appended drawings.

Cette description présente une méthode de mutation dynamique, temporaire et réversible du code binaire de processus en cours d'exécution. This description provides a method of dynamically changing, temporary and reversible binary code running process. Cette méthode est utilisée, entre autres, pour mettre en oeuvre la capture d'état (checkpoint) d'applications sans avoir à les modifier. This method is used, among others, to implement the capture of state (checkpoint) applications without having to modify them.

En résumé, il s'agit entre autres d'une problématique d'amorçage: nous décrivons un procédé de chargement de module simple (le bootstrap), qui lui-même sera capable de charger puis d'exécuter dans le processus des bibliothèques complexes. In summary, this is among others a boot problem: we describe a simple module loading process (bootstrap), which itself will be able to load and run in the process of complex libraries.

Une autre manière d'obtenir cette fonction pour une application donnée, serait que le programme de cette application dispose en lui-même de fonctionalités de gestions de sa propre mémoire interne, et notamment des parties de code exécutable, ce qui nécessite soit que le programme dispose ait accès à une bibliothèque de telles fonctions (ce qui n'est pas le cas pour les programmes statiques), soit que le programme ait été conçu à l'origine pour cela, soit qu'il faille reconcevoir le programme. Another way to get this function for a given application, is that the program of this application has in itself functionality of managements of its own internal memory, including executable code parts, which requires either the program has had access to a library of such functions (which is not the case for static programs), or that the program was originally designed for it, or that we should redesign the program.

Un objectif important de la méthode présentée est pouvoir appliquer ce procédé, ainsi qu'une fonction donnée (telle que le checkpoint), à la totalité des programmes existants, sans avoir à les modifier ni à les reconcevoir. An important objective of the presented method is able to apply this method, and a particular function (such as the checkpoint), to all existing programs, without having to modify or to redesign them.

Les caractéristiques de la nouvelle méthode sont: - Compatibilité avec les exécutables à édition de liens statique aussi bien que dynamique. The characteristics of the new method are: - Compatibility with static linking to executable as well as dynamic.

- Ne dépend pas de la présence de symboles de debug. - Do not depend on the presence of debug symbols.

- Ne dépend pas de la présence dans l'exécutable des fonctions de chargement dynamique d'objet binaires. - Do not depend on the presence in the executable dynamic loading functions of binary object.

- Capacité d'instrumentation d'éxécutables sous controle de ptrace. - Ability to instrumentation executables under control ptrace.

- Cycle de vie court. - Life cycle short. Réversibilité complète. complete reversibility. Le chargement de code est effectué non pas au démarrage du process, mais juste avant l'opération à réaliser (par exemple un checkpoint). The code loading is done not at the start of the process, but just before the operation to be performed (eg a checkpoint). A la fin de l'opération, tout le nouveau code est inséré - Prise en compte de plusieurs taches concurrentes, simultanées, pouvant ou non partager le même espace d'adressage mémoire (threads). At the end of the operation, all the new code is inserted - Taking into account of multiple concurrent tasks, simultaneously, may or may not share the same memory address space (threads).

Dans le processus d'instrumentation, on s'intéresse à la première étape, qui consiste à charger dans un exécutable une bibliothèque de fonctions dont la présence n'est pas requise à l'origine par l'exécutable. In the process of instrumentation, we are interested in the first step, which is to be loaded into an executable library functions whose presence is not originally required by the executable. Une telle bibliothèque peut contenir du code permettant par exemple le profiling (mesure de performances à grain fin), ou bien l'activation de traces de diagnostic, ou encore la capture d'état des processus, à des fins de haute disponibilité ou de migration d'application entre machines appartenant à un cluster. Such a library may contain code that such profiling (measuring fine-grained performance) or activation of traces of diagnosis, or the state capture process, to high-availability or migration purposes application between machines in a cluster.

Le procédé de mutation décrit ici, afin d'être réversible, et de préserver le code existant des programmes cibles, consiste en l'ajout d'un nouveau segments de code dans l'espace mémoire adressable du programme. The mutation process described herein, to be reversible, and preserving the existing code of target programs, is the addition of a new code segments in the addressable memory space of the program. Cet ajout, la mise en oeuvre de ce code, ainsi que sa suppression, sont pilotées par un processus tiers, extérieur à l'application. This addition, the implementation of this code, as well as its removal, are controlled by a third party process external to the application.

Le principe de cette méthode consiste à implémenter dans le système d'exploitation le service de chargement de bibliothèque. The principle of this method is to implement in the operating system loading the library service. Le service luimême est fourni par un module noyau à chargement dynamique. The service itself is provided by a loadable kernel module. Ce service peut-être déclenché via un appel système d'entrée-sortie (ioctl) sur un pilote de périphérique (device driver) mis à disposition par le module noyau. This service can be activated via a call input-output system (ioctl) on a device driver (device driver) provided by the kernel module. Il peut aussi être déclenché de manière automatique par accrochage sur l'appel système exec, afin de propager automatiquement En préambule à la description détaillée de la méthode de chargement, 20 nous décrivons les aménagements apportés au système d'exploitation permettant la mise en oeuvre du procédé. It can also be triggered automatically by hooking the exec system to automatically propagate a preamble to the detailed description of the loading method, 20 describes the adjustments made to the operating system for the implementation of process.

Ces aménagements consistent d'une part dans l'ajout d'un champ particulier dans la structure de données décrivant une tache au niveau du système d'exploitation (structure task_struct dans linux), ainsi que dans l'insertion de hooks dans l'implémentation internes de cetains appels systèmes stratégiques comme fork , exec , getpid , etc. These arrangements consist of a share in the addition of a particular field in the data structure describing a spot at the operating system (structure task_struct in linux), as well as the insertion of hooks in the implementation internal cetains strategic system calls like fork, exec, getpid etc. Ces hooks sont des points de branchement conditionnels permettant de déclencher des traitements supplémentaires dans le contexte de l'appel système pour réaliser des taches de virtualisation, que nous ne détaillerons pas ici. These hooks are conditional branching points to trigger additional treatment in the context of the system call to perform virtualization tasks, we will not detail here. La condition de déclenchement est associé à la valeur du champ rajouté dans la structure task_struct . The trigger condition is associated with the value of the field added in the task_struct structure.

L'intérêt du nouveau champ de task_struct est de pouvoir définir, et à tout instant identifier, un ensemble de taches (processus ID ou thread ID) , que nous regroupons sur le concept de session , et sur lesquelles il faut agir de manière consistente et simultanée afin de maintenir la cohérence du système. The interest of the new task_struct field is to define and identify at any time, a set of spots (ID process or thread ID), we group the session support, and on which we must act and so consistente simultaneously in order to maintain system coherence.

Par exemple, plusieurs threads partagent le même espace mémoire adressable. For example, multiple threads share the same addressable memory space. Le chargement d'un module dans l'une affecte donc les autres. Loading a module in a so affects others.

De même, des ressources telles que les descripteurs de fichiers sont héritées lors de la création de nouvelles taches, et font apparaitre des relations d'interdépendence entres les taches d'une même filiation. Similarly, resources such as file descriptors are inherited when creating new tasks, and do appear interdependence of relations between the spots of the same parentage.

La définition d'une session consiste à affecter un identifiant unique de session à la tache initiale d'une application cible (par exemple, le shell script de lancement). The definition of a session is to assign a unique identifier session to the original spot of a target application (for example, the shell startup script). Ce numéro de session sera propagé, par héritage, et grâce aux hooks, à toutes les taches affiliées à cette tache initiale, ou pour laquelle une nouvelle relation d'interdépendence apparait (ex: transmission d'un descripteur de fichier entre 2 processus non affiliés). This session number will be propagated by inheritance, and thanks to the hooks, to all affiliated spots in the initial spot, or for which a new relationship appears interdependence (eg transmission of a file descriptor between two unaffiliated process ).

La mise du module de bootstrap se fait pour une liste de taches données, appartenant à une session, telle que décrite ci-dessus. Putting the bootstrap module is for spots of list data, belonging to a session, as described above.

La procédure de mise en oeuvre, telle qu'illustrée dans la figure 1 consiste en: - 1 Ordre de chargement par le processus controleur, via un appel système IOCTL (contrôle d'entrée/sortie) au pilote de périphérique bootstrap. The implementation procedure, as illustrated in Figure 1 consists of: - 1 Load Order by the process controller via an IOCTL system call (input / output control) bootstrap the device driver.

- 2 Pour les processus multi-thread (plusieurs tâches concurrentes partageant le même espace mémoire), une barrière de synchronisation implémentée dans le module bootstrap permet de n'activer - 3 Insertion du module de chargement dans l'espace adressable du process. - 2 For multi-threaded process (several concurrent tasks sharing the same memory space), a synchronization barrier implemented in the bootstrap module can not activate - 3 Inserting the load module in the address space of the process. Le module est en 2 parties, un segment de code compilé de manière relogeable (tous les déplacements et sauts sont calculés en relatif par rapport au début du segment), et un segment de données, par nature non relogeable (les données constituant un segment de mémoire non exécutable). The module is in two parts, a compiled code segment relocatable manner (all movements and jumps are calculated relative with respect to the beginning of the segment), and a data segment, by not relocatable nature (the data constituting a segment of non-executable memory).

- 4 Insertion d'un handler de signal sur le signal STOP dans le process. - 4 Inserting a signal handler the STOP signal in the process. Cette opération est réalisée par le module de bootstrap. This operation is performed by the bootstrap module. Le signal STOP ne pouvant être intercepté par le process lui-même, il n'y a pas d'interférence possible avec d'autres handlers de signaux. The STOP signal can be intercepted by the process itself, there is no possible interference with other signal handlers. D'autre part cela garantie l'exécution du module de chargement sur réception du signal. On the other hand it guarantees the execution of the load module on signal reception. Le handler de signal est paramétré de manière à exécuter le point d'entrée du segment de texte (le module de chargement lui-même), et à propager comme paramètre d'exécution l'adresse de chargement du segment de données lors de l'émission du signal, par le champ SIGINFO. The signal handler is set so as to perform the input of the text segment (the loading module itself), and to propagate as a parameter for executing the loading address of the data segment in the transmission of the signal by the SIGINFO field.

- 5 Un compteur de références permet de suivre le nombres de taches ayant accès au module de bootstrap après son chargement à une adresse mémoire donnée. - 5 A reference counter tracks the spots numbers accessing the bootstrap module after it is loaded at a given memory address. Cela permet de vérifier notamment, qu'aucune tache n'est en train de pointer sur le module lors de sa suppression. This verifies particular, that no spot is now pointing to the module during its removal.

- 6 Envoi du signal STOP aux tâches partie de la session. - 6 Sending STOP signal to the tasks of the session.

Sur réception du signal STOP, les traitements suivants sont activés: - 7 Résolution de la relocation des données internes aux module bootstrap, grâce à l'adresse de chargement du segment de données passée en paramètre à l'émission du signal. Upon receiving the STOP signal, the following processes are enabled: - Resolution 7 of the relocation of internal data to bootstrap module, thanks to the data segment of the load address passed as a parameter to the broadcast signal. Il s'agit ici d'un processus extrèmement simplifié de la phase de relocation des symboles de données. This is an extremely simplified process of relocation phase data symbols. Cela rend le fonctionnement du module de chargement indépendant de sa position dans l'espace mémoire du processus. This makes the operation of the independent loading position module in the process memory space.

- 8 La fonction principale du module de bootstrap est de permettre le chargement dans l'espace mémoire des taches de la session de la bibliothèque fonctionnelle complexe (checkpoint/restart, mesure de performances, ou autres). - 8 The main function of bootstrap module is to enable loading into the spots memory space of the session of the complex functional library (checkpoint / restart, performance measurement, or other).

- 9 Execution de la bibliothèque fonctionnelle Suppression du code en 2 temps, avec vérification de non dépendence des taches sur le code supprimé: d'abord la bibliothèque fonctionnelle, puis le module de bootstrap lui-même. - 9 Execution of the functional library code Suppression in 2 stages, with verification of non dependence stains on the deleted code: first functional library, then the bootstrap module itself.

Pour la réplication ou la restauration d'une application de reprise, à partir d'une application maître, dans un autre ordinateur ou dans un environnement différent de celui de l'application maître, il existe certaines techniques de virtualisation des ressources et de l'environnement d'origine permettant à l'application de reprise de travailler comme si elle était encore dans son environnement d'origine. For replication or restore a recovery application, from a master application in another computer or in a different environment from that of the master application, there are some resource virtualization techniques and the original environment allowing the application resume work as if it were still in its original environment.

- 10 - La suite de cette description a pour but de détailler et de perfectionner la description des procédés de virtualisation et de réplication d'application dans le brevet Réplication Holistique . - 10 - The following description is intended to detail and perfect description of virtualization processes and application replication in patent Holistic Replication.

Un autre objectif est de permettre la virtualisation de ressources dépendantes de la localisation, par insertion de fonctions dans l'implémentation noyau de certains appels systèmes. Another objective is to enable virtualization of resources dependent on location, by inserting functions in the kernel implementation of certain system calls.

Ces aménagements consistent d'une part dans l'ajout d'un champ particulier dans la structure de données décrivant une tache au niveau du système d'exploitation (structure task_struct dans linux), ainsi que dans l'insertion de hooks qui seront invoqués lors de l'exécution en contexte noyau de certains appels systèmes stratégiques comme fork , exec , getpid , etc. These arrangements consist of a share in the addition of a particular field in the data structure describing a spot at the operating system (structure task_struct in linux), as well as the insertion of hooks to be relied upon running in kernel context of certain strategic system calls like fork, exec, getpid etc. Ces hooks peuvent être insérés dans ces appels, ou dans une routine de gestion des identifiants (PID ou TID) qui est elle- même appellé par ces appels systèmes. These hooks can be inserted into these calls, or a password handling routine (PID or TID) which is itself called by these system calls.

Ces hooks peuvent aussi être inisérés dans toute autre routine utilisée par le système pour gérer une ressource correspondant à la tâche cible, même à des moments où celle-ci ne comporte pas d'appel système. These hooks can also be inisérés any other routine used by the system to manage a resource corresponding to the target task, even at times when it has no system call.

Ces hooks sont des points de branchement conditionnels insérés au coeur de routines stratégiques manipulant des ressources à virtualiser (tels que création, suppression et identification de processus-id). These hooks are conditional branching points inserted in the heart of strategic routines manipulating virtualize resources (such as creation, deletion and identification process-id). Ces routines sont elles-même appelée par plusieurs appels systèmes. These routines are themselves known by many system calls. l'ajout d'un hook dans ces routines permet de réaliser la virtualisation des pid de manière simultanée pour tous les appels systèmes utilisant ces routines. adding a hook in these routines allows for virtualization simultaneously pid for all calls systems using these routines.

La présence à un niveau de granularité plus fin que l'appel système permet aussi d'étendre la virtualisation pour des opérations qui ne mettent pas en jeu un appel système, comme le déclenchement d'une exception par le noyau, notifiée au processus sous forme de signal. Attendance at a finer level of granularity than the system call also can extend virtualization to operations that do not involve a system call, such as triggering an exception by the kernel, as notified to the process signal.

Le hook lui-même est inséré de manière permanente dans le code du noyau. The hook itself is permanently inserted into the kernel code. Il permet le chargement dynamique et reversible de services pouvant être combinés entre eux (par exemple un service de virtualisation et un service de trace). It allows the dynamic loading and reversible services that can be combined with each other (eg a virtualization service and trace service).

L'intérêt du nouveau champ de task_struct est de pouvoir définir, et à tout instant identifier, un ensemble de taches (processus ID ou thread ID) , que nous regroupons sur le concept de session , et sur lesquelles il 11 - faut agir de manière consistente et simultanée afin de maintenir la cohérence du système. The interest of the new task_struct field is to define and identify at any time, a set of spots (ID process or thread ID), we group the session support, and on which 11 - to act so consistente and simultaneously in order to maintain system coherence.

Par exemple, plusieurs threads partagent le même espace mémoire adressable. For example, multiple threads share the same addressable memory space. Le chargement d'un module dans l'une affecte donc les autres. Loading a module in a so affects others.

De même, des ressources telles que les descripteurs de fichiers sont héritées lors de la création de nouvelles taches, et font apparaitre des relations d'interdépendence entres les taches d'une même filiation. Similarly, resources such as file descriptors are inherited when creating new tasks, and do appear interdependence of relations between the spots of the same parentage.

La définition d'une session consiste à affecter un identifiant unique de session à la tache initiale d'une application cible (par exemple, le shell script de lancement). The definition of a session is to assign a unique identifier session to the original spot of a target application (for example, the shell startup script). Ce numéro de session sera propagé, par héritage, et grâce aux hooks, à toutes les taches affiliées à cette tache initiale, ou pour laquelle une nouvelle relation d'interdépendence apparait (ex: transmission d'un descripteur de fichier entre 2 processus non affiliés). This session number will be propagated by inheritance, and thanks to the hooks, to all affiliated spots in the initial spot, or for which a new relationship appears interdependence (eg transmission of a file descriptor between two unaffiliated process ).

Si on considère les process-id (PID), chaque tache possède une double identitée: son PID global au niveau système, et son PID virtuel, alloué par le mécanisme de virtualisation. If we consider the process-id (PID), each spot has a double identitée: PID its overall system level, and its virtual PID, allocated by the virtualization mechanism.

Une tache faisant partie de l'espace global n'est pas virtualisée. A spot that is part of the global space is not virtualized. Elle ne peut intéragir avec une tache que par ses identifiants globaux, et non virtuels.Cela constitue une limitation, et empêche l'emploi de programmes de monitoring ou de debugging. She can not interact with a stain that its global identifiers, not virtuels.Cela a limitation, and prevents the use of monitoring and debugging programs.

Nous introduisons donc la notion de processus spectateur d'une session: le processus a accès aux fonctions de virtualisation d'une session, mais ne fait pas partie de la session en cas de checkpoint. We introduce the notion of process viewer of a session: the process has access to the virtualization capabilities of a session, but not part of the session when the checkpoint. Les canaux de communications établis avec les taches de la session sont éphémères. The channels of communication established with the spots of the session are ephemeral. Les ressources relatives aux taches spectatrices sont ignorées lors du checkpoint et du redémarrage. The resources on spectators spots are ignored when the checkpoint and restart. Il est introduit à cet effet un flag spectateur à la structure task_struct décrivant la tache au niveau système. It is introduced for this purpose a flag spectator structure task_struct describing the system-level spot.

Alors que toutes les taches appartenant normalement à une session sont démarrées par une tache faisant partie de la hiérarchie des taches de la session, une tache spectatrice provient de l'espace global et est insérée dans la session lors de son démarrage. While all the spots normally belonging to a session are started by a task belonging to the hierarchy of the spots of the session, a spectator spot comes from the global space and is inserted into the session when it starts.

Un exemple d'utilisation de tache spectatrice est le lancement d'un débuggueur s'attachant à chaud sur un programme multi-thread virtualisé. An example of spectator spot use is launching a debugger attaching hot on a multi-threaded program virtualized.

- 12 - Le débuggueur doit retrouver la liste de toutes les threads auxquelles s'attacher à partir du PID de la thread cible, ce qui ne sera possible que si le debuggueur est lui-même virtualisé. - 12 - The debugger must find the list of all threads that attach from the PID of the target thread, which will be possible only if the debugger is itself virtualized. Un autre exemple est un programme de supervision qui doit interagir avec une application virtualisée par le biais de signaux. Another example is a supervisory program that must interact with a virtualized application through signals. Le programme de supervision surveillant les ressources systèmes locales n'a pas de raison d'être migré, mais il a besoin de la virtualisation pour interagir de manière consistente avec l'application. The supervision program monitoring local system resources has no reason to be migrated, but he needs to virtualization to interact so consistente with the application.

Cette section fournit une description détaillée du fonctionnement de la barrière de synchronisation des processus, permettant la réalisation du checkpoint holistique. This section provides a detailed description of the operation of the process synchronization barrier, allowing the realization of the holistic checkpoint.

Difficultés: - garantir la possibilité de bloquer l'ensemble des processus faisant partie de l'application à checkpointer, ce quelque soit la charge de la machine ou le degré de priorité de ces processus. Difficulties: - ensuring the ability to block all the processes belonging to the application checkpointer, whatever the load of the machine or the priority of these processes.

- Obtenir de manière fiable la liste complète des processus et threads à bloquer, sachant que cette liste peut être en constante modification, du à l'apparition ou disparition soudaine de processus en dehors du controle du système de checkpoint. - Get to reliably complete list of processes and threads to block, knowing that this list can be constantly changing, from the appearance or sudden disappearance of processes outside the control of the checkpoint system.

- Minimiser le temps de blocage, ainsi que le surcoût induit en performances, notamment par l'ajout de basculement de contextes. - Minimize blocking time and the additional cost incurred in performance, in particular by tilting contexts uploading.

Pour garantir l'identification complète des taches (processus et threads) faisant partie d'une session, on procède par propagation d'un marqueur de session dans le descripteur de tache (structure interne du noyau décrivant une tache). To ensure the complete identification of tasks (processes and threads) forming part of a session, one proceeds by propagating a registration marker in the patch descriptor (core internal structure describing a spot). Cette propagation est activée par déclenchement d'un module spécifique chaque fois que la routine d'allocation ou de libération d'un identifiant unique de processus (PID), de thread (TID), ou de groupe (GID) est invoquée. This propagation is activated by triggering a specific module whenever the routine allocation or release of a unique process identifier (PID) of thread (TID) or group (GID) is invoked. Ces routines ont été instrumentées par hooks, tels que décrits précedemment. These routines were instrumented with hooks, as previously described.

Le module de virtualisation, lorsqu'invoqué par le hook, examine si le processus père fait lui même partie d'une session. The virtualization module When invoked by the hook, consider whether the parent process is itself part of a session. Si c'est le cas, il propage le numéro de session dans le contexte du processus courant. If this is the case, it spreads the session number in the context of the current process. Une référence croisée est établie dans une table du module de synchronisation. A cross reference table is established in the synchronization module. Cela permet de garantir l'identification complète à la volée des taches faisant partie de l'application. This ensures complete identification on the fly spots as part of the application.

La synchronisation elle-même est réalisée par le module de synchronisation en mode noyau, ce qui garantit la capacité d'interrompre les taches en cours d'exécution quelque soit leur état, ainsi que l'atomicité de l'opération. The synchronization itself is performed by the kernel-mode synchronization module, which ensures the ability to interrupt running tasks, whatever their status, and atomicity of the operation. Le blocage des processus est effectué par envoi du signal STOP à chacune des taches, de manière atomique. The blocking process is performed by sending the STOP signal to each of the spots, atomically. L'atomicité est garantie par la non préemptivité du traitement dans le noyau. The atomicity is guaranteed by the non preemptiveness processing in the nucleus. La liste des taches à stopper est obtenue à partir du numéro de session. The list of spots to stop is obtained from the session number.

Le handler de signal, installé de même par le module de synchronisation dans le contexte utilisateur des processus, permet de réaliser la phase finale de rendez-vous, par attente d'un évènement du module de synchronisation, qui sera émis lorsque le signal aura été délivré à la totalité des taches. The handler signal installed along with the synchronization module in the user process context allows for the final phase of appointments, waiting for an event synchronization module, which will be issued when the signal has been issued to all spots.

On peut noter aussi que pendant cette phase de synchronisation, la possibilité de modifier la liste des taches, par ajout ou suppression de processus, est désactivée au niveau des hooks, par test d'une variable positionnée par le module de synchronisation. It may be noted that during this synchronization phase, the possibility of modifying the list of spots, by adding or removing process is disabled in the hooks, by testing a variable set by the synchronization module.

Afin de permettre la prise en compte des signaux émis et utilisés par les taches virtualisées, d'effectuer la capture de leur état ainsi que leur restauration, les opérations suivantes doivent être faites: -Virtualiser le destinataire du signal. In order to allow the inclusion of the transmitted and used by spots virtualized signals, performing the capture of their condition and their restoration, the following operations must be made: -Virtualiser the addressee of the signal.

- Virtualiser l'émetteur du signal. - Virtualise the transmitter of the signal. Problème, l'information n'est pas un paramètre ou une valeur de retour d'appel système, mais un champ d'une structure interne au noyau transmise au processus au moment du traitement du signal. Problem, the information is not a parameter or a system call return value, but a field of an internal structure at the core transmitted to the process at the time of signal processing.

- Virtualiser des informations liées au signal. - Virtualize information related to the signal. Là encore, il s'agit de champs dans des structures internes du noyau, sur lesquels l'utilisateur n'a pas de controle. Again, these fields in internal kernel structures, on which the user has no control.

- Au moment du checkpoint: capturer l'état des signaux émis à destination du processus courant, et non encore consommés, de manière non destructive:permettre au processus de consommer les signaux de manière après le checkpoint. - At the time of the checkpoint: capture the state of the signals transmitted to the current process and not yet used, non-destructive way: allow the process to consume way signals after the checkpoint.

- A la restauration: génerer les données internes relatives au signal. - A restoration: generating the internal data to the signal.

- 14 - Le mécanisme de virtualisation des PIDs par les hooks est à un niveau suffisamment bas pour permettre la prise en compte des identifiants de processus manipulés par le traitement des signaux. - 14 - The PIDs virtualization mechanism by the hook is at a sufficiently low level to allow the consideration of process IDs handled by the signal processing.

Un service noyau supplémentaire est introduit, permettant la génération de signal avec control fin par l'utilisateur des champs normalement restreints à l'usage interne du noyau. An additional core service is introduced, allowing the generation of signal control with end user normally restricted fields for the internal use of the kernel. Alors que la seule information accessible à l'utilisateur pour l'émission d'un signal est le numéro de celui-ci, le service de génération permet de spécifier chacun des attributs définis par la structure SIG_INFO . While the only information available to the user for the transmission of a signal is the number one, the generation service to specify each of the attributes defined by the SIG_INFO structure.

Ce service est mis en oeuvre d'une part au checkpoint, pour restaurer avant reprise les signaux reçus par la tache mais non encore consommés (dans l'hypothèse ou la tache continue ses traitements après le checkpoint), et d'autre part lors du redémarrage à partir d'un checkpoint, pour regénérer ces même signaux. This service is implemented firstly at the checkpoint, to restore recovery before the signals received by the stain but not yet used (assuming continuous or spot her treatments after checkpoint), and secondly when restarting from a checkpoint, to regenerate these same signals.

Sous Linux, et d'autres systèmes Unix, /proc est un pseudo système de fichier utilisé comme interface d'accès à des données internes du système, plutot que d'avoir à accéder directement à l'image mémoire du noyau (/dev/kmem). Linux, and other Unix systems, / proc is a pseudo file system used as interface to access internal data system, rather than having to directly access the kernel memory dump (/ dev / kmem). Le premier niveau de répertoire sous /proc est constitué de tous les identifiants de process visibles du système. The first sub / proc directory level consists of all visible process identifiers of the system. Ces identifiants doivent être virtualisés lorsqu'utilisés par une application elle- même virtualisée. These identifiers must be virtualized when used by itself virtualized application.

Le mécanisme de virtualisation réside dans la routine de résolution des nuoms de fichier (name lookup) en objet fichier (inode), dont l'instance est spécifique au pseudo système de fichier. The virtualization mechanism resides in the File nuoms resolution routine (name lookup) file object (inode), whose body is specific to the pseudo file system. Lorsqu'une opération de lookup est effectuée (c'est à dire pour toute opération de manipulation d'un fichier par son nom), et que le nom canonique réside sous /proc, alors les opérations de translation entre PID virtuel et systéme global (et inverse) sont activées pour les taches faisant partie d'une session, soit en tant que tache active, ou bien en tant que tache spectatrice. When an operation lookup is performed (ie for any transaction handling of a file by its name), and the canonical name under / proc, then the translation operations between virtual and global system (PID and inverse) are activated for the spots belonging to a session or as an active spot, or spot as a spectator.

Les descripteurs de fichiers sont des objets du noyau qui offrent un niveau d'abstraction générique de ressources système, afin de permettre leur manipulation par les processus. File descriptors are kernel objects that provide a level of abstraction generic system resources to enable their manipulation by the process. Un descripteur de fichier permet à un processus d'effectuer de manière uniforme des opérations d'entréessorties (lecture-écriture) vers des fichiers de stockage, mais aussi avec des - 15 - gestionnaires de périphériques divers, des connections réseaux, ou des mécanismes de communication inter-processus (pipes, sockets Unix, streams, ...). A file descriptor allows a process to perform consistently for input-output operations (read-write) to storage files, but also with - 15 - managers of various peripherals, network connections, or mechanisms interprocess communication (pipes, Unix sockets, streams ...).

Quelque soit le type de ressource système, les descripteurs de fichiers ont des propriétés génériques: - Plusieurs descripteurs peuvent être ouverts sur une même ressource physique (lorsque celle-ci le permet: oui pour un fichier, non pour une connection réseau). Whatever type of system resource, file descriptors have generic properties: - Multiple descriptors can be opened on the same physical resource (when it permits: yes to a file, not a network connection). Le changement d'un attribut du descripteur n'affecte pas les autres pointant sur la même ressource. Changing a descriptor attribute does not affect the other pointing to the same resource.

- Un descripteur de fichier ouvert peut être "cloné" (appel système dup ) . - An open file descriptor can be "cloned" (dup system call). En résultat, on obtient plusieurs instances d'un même descripteur, chacune avec sa propre identité (numéro de descripteur). As a result, one obtains several instances of the same descriptor, each with its own identity (identifier numbers). Le changement de certains attributs d'un descripteur (ex: pointeur de lecture-écriture dans un fichier), est répercuté tous dans ses clones. The change certain attributes of a descriptor (eg read-write pointer to a file), is reflected in all its clones.

- Les descripteurs de fichiers ouverts par un processus père sont hérités (par clonage) par un processus fils lors de la création de celui-ci (appel système fork ). - The file descriptors opened by a parent process are inherited (cloning) by a son process when creating it (fork system call). Le père peut aussi spécifier par avance la liste des descripteurs à fermer lorsque le fils exécute un nouveau programme (appel système execve ). The father can also specify in advance the list of descriptors to close when the son is running a new program (execve).

- Un descripteur de fichier peut-être transmis par un processus vers un autre, sans qu'il y ait de lien hiérarchique entre ces processus. - A file descriptor may be transmitted through a process to another, without any hierarchical relationship between these processes.

Or, il s'avère que le système d'exploitation n'offre pas, à postériori, de moyen de déterminer pour les descripteurs de fichiers référencés par un ensemble de processus, lesquels ont été hérités ou clonés, et lesquels ont été ouverts séparément. Now it turns out that the operating system does not, a posteriori, through to determine the file descriptor referenced by a set of processes, which have been inherited or cloned, and which were opened separately.

Nous introduisons donc un mécanisme permettant: - D'identifier les attributs internes aux descripteurs de fichier rendus opaques par le système d'exploitation. We introduce a mechanism to: - Identify internal attributes to the rendered file descriptors opaque by the operating system.

- De capturer l'état de ces attributs dans le checkpoint. - To capture the state of these attributes in the checkpoint.

- De restaurer l'état de ces attributs au redémarrage de l'application. - To restore the state of these attributes to restart the application. La figure 4 présente l'architecture de traitement des descripteurs de fichier au moment du checkpoint et du restart. Figure 4 shows the architecture of processing file descriptors at the checkpoint and restart.

Au checkpoint, les opérations suivantes sont réalisées: - 16 - -le processus controleur de checkpoint, appelé mcr duplique un processus appelé fd_helper , dédié à la prise en compte des descripteurs de fichiers. At the checkpoint, the following operations are performed: - 16 - -The controller checkpoint process called mcr duplicates a process called fd_helper dedicated to the consideration of file descriptors.

- les descripteurs de fichiers sont transmis par send_msg par le code embarqué dans les processus au fd_helper, de manière à fournir un accès au contexte sans fermeture de la ressource. - file descriptors are transmitted send_msg by the embedded code in the process fd_helper, so as to provide access to context without closing the resource.

Le système décrit ici à pour principal bénéfice une grande portabilité, malgré la dépendence sur des données internes au système d'exploitation. The system described here for great portability main benefit, despite the dependence on internal data to the operating system. Ce traitement s'applique aux méthodes de communication inter- processus suivantes: - les pipes (ou fifo ) - les sockets (notamment socketpairs ). This treatment applies following inter process communication methods - the pipes (or FIFO) - sockets (including socketpairs).

- les messages queues - les streams Comme pour les signaux pending (reçus mais non consommés), des données de canaux de communication interprocessus peuvent résider dans les tampons mémoires (buffers) de réception lors du checkpoint. - tails messages - As streams for pending signals (received but not consumed), interprocess communication channels of data can reside in buffers (buffers) Reception at the checkpoint.

Le mécanisme de checkpoint de ces données consiste alors à consommer ces données pendant la phase de checkpoint, de manière à les sauver, puis à réinjecter ces données juste avant le redémarrage, soit parce que la tache reprend ses traitements après le checkpoint, soit parce qu'il s'agit d'un redémarrage de la tache d'après un checkpoint. The checkpoint data mechanism is then to use these data during the checkpoint phase, so as to save them, then reinject this data just before the reboot or because the task resumes processing after the checkpoint, either because it is a reboot of the stain from a checkpoint.

La sauvegarde des données est effectuée par le processus du coté recepteur. Data backup is performed by the receiver side of the process. Si il y a plusieurs processus en réception sur un même descripteur de fichier, seul un processus effectue la sauvegarde (puis la réinjection), grâce au mécanisme décrit auparavant de fd helper. If there are multiple processes on receiving a file descriptor, only a process performs backup (and re-injection) through the mechanism described earlier fd helper.

Il se peut aussi qu'au moment du checkpoint, le canal de communication inter-processus soit dans un état transitoire. It may also be that at the time of the checkpoint, the inter-process communication channel is in a transient state. Par exemple, le process émetteur peut avoir déjà terminé et avoir disparu alors que le récepteur n'a pas encore consommé toutes les données. For example, the process transmitter may have already been completed and have disappeared while the receiver has not consumed all data. Après la sauvegarde des données par le récepteur, celui-ci doit restaurer l'état du canal, et pour cela recréer et simuler la mort de l'émetteur, ce qui est fait à l'aide du fd helper. After saving the data by the receiver, it must restore the state of the channel, and for that recreate and simulate the death of the issuer, which is done using the fd helper.

- 17 - Dans le cas ou il s'agit du récepteur qui a disparu avant la consommation des données du canal, il n'est pas nécessaire d'effectuer la sauvegarde et la restauration des données si le canal n'est plus accessible par une nouvelle tache (cas des socketpairs, ou des pipes nonnommés). - 17 - In case it is the receiver who disappeared before consumption data channel, it is not necessary to perform backup and restore data if the channel is no longer accessible by new spot (for socketpairs, or nonnommés pipes).

Si par contre le canal est accessible en réception par une tache future (cas des pipes ou sockets nommés, la tache émettrice doit alors effectuer la sauvegarde et la restauration de ces données. If, against the channel is available in reception by a future spot (if named pipes or sockets, the issuing task must perform backup and restore data.

La distinction entre ces différents cas de figure est effectuée grâce au fd helper, qui permet d'établir de graphe des dépendences de chacun des canaux de communication inter-processus. The distinction between these cases is performed through fd helper, which allows for graph of the dependencies of each of the inter-process communication channels.

Le système de communication inter-processus à base de sockets utilise un mécanisme d'établissement de connection de type bind, listen, accept qui met en oeuvre des ressources globales, ce qui empêche une application, virtualisée ou non, d'utiliser une addresse (ou nom de pipe) si celle-ci est déjà utilisée. The socket-based interprocess communication system uses a mechanism for establishing connection type bind, listen, accept that implements global resources, which prevents an application, virtualized or not, to use an address ( or pipe name) if the latter is already in use.

Pour pallier cette limitation, les ressources globales liées aux communications inter-processus, telles que les addresses de socket du domaine Unix, ou les noms de fichier de type pipe, ou bien encore les addresses de socket sur une interface de loopback, sont virtualisées afin de permettre une isolation des espaces de nommage par session. To overcome this limitation, global resources related to interprocess communication, such as socket addresses Unix domain, or pipe-type file names, or even the socket addresses on a loopback interface are virtualized to allow isolation of namespaces per session.

La séparation de l'espace de nommage sur les noms de pipe ou addresses de sockets UNIX se fait par adjonction d'une racine contenant le numéro unique de session, et préfixant de manière transparente le nom affecté par l'application. The separation of the namespace on pipe names or addresses UNIX sockets is done by adding a root containing the unique number of session, and seamlessly prefixing the name assigned by the application.

Par exemple, un pipe nommé par l'application /tmp/pipel sera nommé au niveau du système /proc/mcr/123/paths/tmp/pipel (123 étant le numéro unique de session). For example, a named pipe by the application / tmp / pipel will be appointed at the / proc / mcr / 123 / paths / tmp / pipel (123 being the number one session).

Bien sûr, l'invention n'est pas limitée aux exemples qui viennent d'être décrits et de nombreux aménagements peuvent être apportés à ces exemples sans sortir du cadre de l'invention. Of course, the invention is not limited to the examples just described and numerous adjustments can be made to these examples without exceeding the scope of the invention.

Claims (17)

    - 18 - REVENDICATIONS - 18 - CLAIMS
  1. 1. Procédé d'insertion dynamique d'une ou plusieurs instructions de programme constituant un traitement inséré, par une première tâche informatique, dite tâche gestionnaire, dans une deuxième tâche informatique, dite tâche cible, utilisant une mémoire de travail pour son exécution dans un système informatique géré par un logiciel système, ce procédé comprenant les étapes suivantes - une mémorisation, au sein d'une zone de mémoire externe à la mémoire de travail de la tâche cible, d'au moins une donnée d'accrochage représentant des informations de déclenchement du traitement à insérer; 1. A method of dynamically inserting one or more program instructions constituting an inserted processing, by a first computing task, said task manager, in a second computer task, termed target task, using a work memory for execution in a computer system managed by a software system, the method comprising the following steps - a storage, in an external memory area in the work memory of the target task, at least one hooking data representing information of initiation of treatment to insert; - une exécution, au sein du déroulement d'une routine système appelée ou contrôlée par la tâche cible, d'une instruction dite d'accrochage déclenchant un test de la donnée d'accrochage; - execution, within the course of a system routine called or controlled by the target job, a bonding said instruction triggering a test of the adhesion data; exécution du traitement inséré, en fonction du résultat dudit test et en lieu et place de l'instruction de programme suivant l'instruction d'accrochage dans le déroulement de ladite routine système. executing processing inserted, depending on the result of said test, and instead of the next program instruction the instruction hooking in the course of said system routine.
  2. 2. Procédé selon la revendication précédente, caractérisé en ce que, à l'issue de l'exécution du traitement inséré, l'exécution de la routine système reprend là où elle s'était interrompue lors de l'exécution du traitement inséré. 2. Method according to the preceding claim, characterized in that, after the execution of the processing inserted, the execution of the system routine resumes from where it was interrupted when performing treatment inserted.
  3. 3. Procédé selon l'une des revendications précédentes, caractérisé en ce que la tâche cible est liée au moins une autre tâche par le partage d'un même espace mémoire d'exécution, le procédé comprenant en outre un blocage temporaire de la tâche liée pendant au moins une opération comprenant le chargement, dans ledit espace mémoire d'exécution, des instructions du traitement à insérer. 3. Method according to one of the preceding claims, characterized in that the target task is linked at least one other task by sharing a same execution memory, the method further comprising a temporary blocking of the related task for at least one operation comprising loading into said execution memory space, the processing of instructions to be inserted.
    - 19 - - 19 -
  4. 4. Procédé selon l'une des revendications précédentes, caractérisé en ce que le traitement inséré comprend une gestion d'au moins une donnée identifiant la tâche cible. 4. Method according to one of the preceding claims, characterized in that the inserted treatment comprises the administration of at least data identifying the target task.
  5. 5. Procédé selon l'une des revendications 1 à 3, caractérisé en ce que le traitement inséré réalise ou déclenche au moins une opération de gestion de fonctionnement d'une application dite application gérée. 5. A method according to one of claims 1 to 3, characterized in that the inserted treatment achieves or triggers at least one operating management operation of a said application managed application.
  6. 6. Procédé selon la revendication 5, caractérisé en ce que cette opération de gestion de fonctionnement comprend au moins une opération de suivi ou d'enregistrement de l'exécution de la tâche cible, ou de capture de l'état de ladite tâche cible ou d'au moins une ressource qu'elle utilise. 6. The method of claim 5, characterized in that said operation management operation comprises at least one monitoring or recording operation of the execution of the target task, or capturing the state of said target task or of at least one resource it uses.
  7. 7. Procédé selon la revendication 5, caractérisé en ce que cette opération de gestion de fonctionnement comprend au moins une opération de mémorisation d'une donnée associée à la tâche cible et représentant une barrière de synchronisation avec au moins une autre tâche. 7. A method according to claim 5, characterized in that said operation management operation comprises at least one step of storing data associated with the target task and representing a synchronization barrier with at least one other task.
  8. 8. Procédé selon la revendication 5, caractérisé en ce que cette opération de gestion de fonctionnement comprend au moins une opération de réplication de la tâche cible dans un autre système informatique, ou de libération dans son système d'origine de ladite tâche cible ou d'au moins une ressource qu'elle utilise ses ressources, après une telle réplication. 8. The method of claim 5, characterized in that said operation management operation comprises at least one replication operation of the target task in another computer system, or release in its original system of said target task or at least one resource it uses its resources after such replication.
  9. 9. Procédé selon l'une des revendications précédentes, caractérisé en ce que le traitement inséré réalise un chargement dynamique d'un élément d'une bibliothèque logicielle, ladite bibliothèque logicielle étant accessible ou modifiable au cours de l'exécution de la tâche cible ou d'une application à laquelle elle appartient. 9. Method according to one of the preceding claims, characterized in that the inserted treatment makes the dynamic loading of an element of a software library, said software library being accessible or modifiable during execution of the target task or an application to which it belongs.
  10. 10. Procédé selon l'une des revendications 1 à 5, caractérisé en ce que le traitement inséré comprend une mémorisation, de façon associée à la tâche cible, d'une donnée constituant un identifiant virtuel commun entre la tâche - 20 - cible et au moins une autre tâche en cours d'exécution, constituant ainsi un identifiant d'un conteneur virtuel englobant lesdites tâches. 10. A method according to one of claims 1 to 5, characterized in that the inserted treatment comprises a storage, so associated with the target task, a given constituent a common virtual identifier between the task - 20 - target and least one other task running, thus constituting an identifier of a virtual container including said tasks.
  11. 11. Procédé selon la revendication précédente, caractérisé en ce que l'identifiant de conteneur virtuel est mémorisé de façon associée à une première tâche, par un traitement inséré exécuté lors d'une routine système appelée par ladite première tâche, cet identifiant de conteneur étant propagé à au moins une deuxième tâche par héritage à partir de la première tâche. 11. Method according to the preceding claim, characterized in that the virtual container identifier is stored so associated with a first task, executed by a inserted treatment system during a routine called by said first task, the container identifier being spread to at least a second task inherited from the first task.
  12. 12. Procédé selon l'une des revendications 10 ou 11, caractérisé en ce qu'au moins une troisième tâche est crée par une opération comprenant une instruction d'accrochage utilisée par une tâche gestionnaire pour mémoriser avec ladite troisième tâche un identifiant de conteneur correspondant à conteneur virtuel existant et devant contenir ladite troisième tâche. 12. Method according to one of claims 10 or 11, characterized in that at least one third task is created by an operation comprising a hooking instruction used by a task manager for storing said third task with a corresponding container identifier to existing virtual container and to contain said third task.
  13. 13. Procédé selon l'une des revendications 10 à 12, caractérisé en ce qu'au moins une opération logicielle est appliquée à l'ensemble des tâches 20 appartenant à un même conteneur virtuel. 13. A method according to one of claims 10 to 12, characterized in that at least one software operation is applied to all tasks 20 belonging to the same virtual container.
  14. 14. Procédé selon l'une des revendications 9 à 12, caractérisé en ce que le conteneur virtuel regroupe un ensemble de tâches exécutées au sein d'une même application dite application cible. 14. A method according to one of claims 9 to 12, characterized in that the virtual container includes a set of tasks performed within the same application said target application.
  15. 15. Procédé selon l'une des revendications 10 à 14, caractérisé en ce qu'au moins une tâche exécutée dans le système informatique subit une opération de gestion de fonctionnement dépendant de son appartenance au conteneur virtuel. 15. Method according to one of claims 10 to 14, characterized in that at least one task executed in the computer system undergoes an operation management operation depending on its membership in the virtual container.
  16. 16. Procédé selon la revendication 15, caractérisé en ce que la gestion de fonctionnement des tâches du conteneur comprend un traitement de suivi ou de contrôle de l'exécution ou de capture d'état d'au moins une tâche informatique ou d'au moins une ressource qu'elle utilise. 16. The method of claim 15, characterized in that the container Task operation management includes processing of monitoring or control of the execution or capture state of at least one computing task or at least a resource it uses.
    - 21 - - 21 -
  17. 17. Procédé selon la revendication 15, caractérisé en ce que la gestion de fonctionnement des tâches du conteneur comprend un traitement de réplication dans une autre système informatique d'au moins une tâche 5 informatique, ou de libération de cette tâche ou d'au moins une ressource qu'elle utilise, après une telle réplication. 17. The method of claim 15, characterized in that the container Task operation management includes a replication processing in another computer system with at least one computing task 5, or releasing this task, or at least a resource it uses, after such replication.
FR0502485A 2005-03-14 2005-03-14 A method of executing an application in a virtual container forming an environment session virtualizes Expired - Fee Related FR2883083B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR0502485A FR2883083B1 (en) 2005-03-14 2005-03-14 A method of executing an application in a virtual container forming an environment session virtualizes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0502485A FR2883083B1 (en) 2005-03-14 2005-03-14 A method of executing an application in a virtual container forming an environment session virtualizes

Publications (2)

Publication Number Publication Date
FR2883083A1 true true FR2883083A1 (en) 2006-09-15
FR2883083B1 FR2883083B1 (en) 2007-05-04

Family

ID=35079225

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0502485A Expired - Fee Related FR2883083B1 (en) 2005-03-14 2005-03-14 A method of executing an application in a virtual container forming an environment session virtualizes

Country Status (1)

Country Link
FR (1) FR2883083B1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369770A (en) * 1992-11-02 1994-11-29 Microsoft Corporation Standardized protected-mode interrupt manager
US5437006A (en) * 1993-01-27 1995-07-25 Microsoft Corporation Spreadsheet command/function capability from a dynamic-link library
US5987463A (en) * 1997-06-23 1999-11-16 Oracle Corporation Apparatus and method for calling external routines in a database system
WO2002061579A2 (en) * 2001-02-01 2002-08-08 Meiosys Method and system for managing shared-library executables
WO2004015574A2 (en) * 2002-08-02 2004-02-19 Meiosys Functional continuity by replicating a software application in a multi-computer architecture

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369770A (en) * 1992-11-02 1994-11-29 Microsoft Corporation Standardized protected-mode interrupt manager
US5437006A (en) * 1993-01-27 1995-07-25 Microsoft Corporation Spreadsheet command/function capability from a dynamic-link library
US5987463A (en) * 1997-06-23 1999-11-16 Oracle Corporation Apparatus and method for calling external routines in a database system
WO2002061579A2 (en) * 2001-02-01 2002-08-08 Meiosys Method and system for managing shared-library executables
WO2004015574A2 (en) * 2002-08-02 2004-02-19 Meiosys Functional continuity by replicating a software application in a multi-computer architecture

Also Published As

Publication number Publication date Type
FR2883083B1 (en) 2007-05-04 grant

Similar Documents

Publication Publication Date Title
Russinovich et al. Windows internals
US7089317B2 (en) Architecture for plugging messaging systems into an application server
US7370164B1 (en) Backup of virtual machines from the base machine
US6779179B1 (en) Registry emulation
US7506338B2 (en) Method and apparatus for simplifying the deployment and serviceability of commercial software environments
US20070162246A1 (en) Exception thrower
US20080244546A1 (en) Method and system for providing on-demand profiling infrastructure for profiling at virtual machines
US20090241109A1 (en) Context Agent Injection Using Virtual Machine Introspection
US20090300093A1 (en) Server computer
US7103625B1 (en) Virtual resource ID mapping
US6643802B1 (en) Coordinated multinode dump collection in response to a fault
US20140053150A1 (en) Efficient hosting of virtualized containers using read-only operating systems
US20050198647A1 (en) Snapshot virtual-templating
US20120159469A1 (en) Mechanism for downloading guest software updates by a hypervisor
US20030163799A1 (en) Iterative software development environment with prioritized build rules
US20120047239A1 (en) System and Method for Installation and Management of Cloud-Independent Multi-Tenant Applications
US20040045016A1 (en) Registry emulation
US20070016893A1 (en) Tracking resource usage by applications
US20130346946A1 (en) System for hosted, shared, source control build
US7716377B2 (en) Clustering server providing virtual machine data sharing
US20100318997A1 (en) Annotating virtual application processes
US6584487B1 (en) Method, system, and apparatus for managing tasks
US20110289513A1 (en) Method of hosting a first application in a second application
US8495598B2 (en) Control flow graph operating system configuration
US20130179868A1 (en) System And Method For Extracting Instrumentation Relevant Inheritance Relationships For A Distributed, Inheritance Rule Based Instrumentation System

Legal Events

Date Code Title Description
TP Transmission of property
ST Notification of lapse

Effective date: 20131129