FR2829847A1 - Controlling access to shared resources, especially on a chip card, using a locking flag that is set and reset using two different primitive systems, thus ensuring that a resource cannot be accessed simultaneously by two processes - Google Patents

Controlling access to shared resources, especially on a chip card, using a locking flag that is set and reset using two different primitive systems, thus ensuring that a resource cannot be accessed simultaneously by two processes Download PDF

Info

Publication number
FR2829847A1
FR2829847A1 FR0112143A FR0112143A FR2829847A1 FR 2829847 A1 FR2829847 A1 FR 2829847A1 FR 0112143 A FR0112143 A FR 0112143A FR 0112143 A FR0112143 A FR 0112143A FR 2829847 A1 FR2829847 A1 FR 2829847A1
Authority
FR
France
Prior art keywords
resource
lock
shared
access
shared resource
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.)
Pending
Application number
FR0112143A
Other languages
French (fr)
Inventor
Dominique Bouveron
Nicolas Fougeroux
Patrice Hameau
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.)
CP8
Original Assignee
CP8
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
Application filed by CP8 filed Critical CP8
Priority to FR0112143A priority Critical patent/FR2829847A1/en
Publication of FR2829847A1 publication Critical patent/FR2829847A1/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2147Locking files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

Method for controlling access to a shared resource (Rx) by a process in a chip card, where two or more processes can request access to the resource at the same time. Accordingly each resource has a lock bit that is initially set to state 0. When a process requests a resource it can access it when its value equals 0. It is then set to 1 to prevent access by another process. A second system is required to clear the value and reset it to 0. The invention also relates to a corresponding system and computer program.

Description

<Desc/Clms Page number 1> <Desc / Clms Page number 1>

Figure img00010001
Figure img00010001

PROCEDE DE CONTROLE D'ACCES A DES RESSOURCES PARTAGEES DANS UN SYSTEME EMBARQUE ET SYSTEME EMBARQUE POUR LA MISE EN CEUVRE D'UN TEL PROCEDE
L'invention concerne un procédé de contrôle d'accès à des ressources partagées dans un système embarqué à puce électronique.
METHOD FOR CONTROLLING ACCESS TO SHARED RESOURCES IN AN ONBOARD SYSTEM AND ON-BOARD SYSTEM FOR IMPLEMENTING SUCH A METHOD
The invention relates to a method for controlling access to shared resources in an embedded system with an electronic chip.

L'invention concerne encore plus particulièrement un système embarqué du type dit"multiprocessus"ou encore"multitâches", ayant à gérer l'accès à des ressources partagées. Pour simplifier, le terme"multi-processus"sera seul utilisé dans ce qui suit.  The invention more particularly relates to an embedded system of the type called "multiprocess" or "multitasking", having to manage access to shared resources. For simplicity, the term "multi-process" will be used alone in the following.

L'invention concerne encore un système embarqué pour la mise en oeuvre d'un tel procédé.  The invention also relates to an embedded system for implementing such a method.

L'invention s'applique plus particulièrement à une carte à puce.  The invention applies more particularly to a smart card.

Dans le cadre de l'invention, le terme "système embarqué" doit être compris dans son sens le plus général. Il concerne notamment toutes sortes de terminaux légers munis d'une puce électronique, et plus particulièrement les cartes à puce proprement dites. La puce électronique est munie elle-même de moyens d'enregistrement (mémoire) et de traitement de données numériques, par exemple un microprocesseur pour ces derniers moyens. Dans tous les cas, la puissance de calcul et la capacité de stockages résidents dans un système embarqué sont relativement limitées, ce par comparaison à un système hôte du système embarqué, par exemple un micro-ordinateur. La comparaison est encore plus défavorable si on considère des systèmes plus puissants : serveurs de réseaux locaux, systèmes dits"minis"ou grands systèmes dits"mainframes".  In the context of the invention, the term "embedded system" must be understood in its most general sense. It concerns in particular all kinds of light terminals equipped with an electronic chip, and more particularly the smart cards themselves. The electronic chip is itself equipped with recording means (memory) and digital data processing, for example a microprocessor for the latter means. In all cases, the computing power and the resident storage capacity in an embedded system are relatively limited, compared to a host system of the embedded system, for example a microcomputer. The comparison is even more unfavorable if we consider more powerful systems: local network servers, so-called "mini" systems or large systems called "mainframes".

Toujours dans le cadre de l'invention, le terme"ressources"désigne des ressources informatiques présentes dans le système embarqué, indistinctement de type logiciel ou matériel. De façon plus précise, il s'agira ci-après, de ressources partagées, c'est-à-dire pouvant être mises à la disposition d'au moins deux processus concurrents.  Still within the scope of the invention, the term "resources" refers to computer resources present in the embedded system, indistinctly of the software or hardware type. More specifically, it will be hereafter, shared resources, that is to say that can be made available to at least two competing processes.

Pour fixer les idées, et sans que cela limite en quoi que ce soit sa portée, on se placera ci-après dans le cas de l'application préférée de l'invention, à savoir les applications à base de cartes à puce, sauf mention contraire.  To fix ideas, and without limiting in any way its scope, we will place below in the case of the preferred application of the invention, namely smart card-based applications, unless mentioned opposite.

<Desc/Clms Page number 2> <Desc / Clms Page number 2>

Dans un système multi-processus, un problème particulier se pose si plusieurs processus accèdent en même temps à une même ressource partagée.  In a multi-process system, a particular problem arises if several processes access the same shared resource at the same time.

On va considérer l'exemple simple suivant pour illustrer de façon non limitative ce problème :
Deux appliquettes sélectionnables en même temps, ou"applets"selon la terminologie anglo-saxonne, constituent un exemple de multiprocessus. Un exemple de ressource partagée est la mémoire de la carte à puce, ou pour le moins une partie de cette mémoire.
We will consider the following simple example to illustrate in a non-limiting way this problem:
Two applets selectable at the same time, or "applets" according to the English terminology, are an example of multiprocess. An example of a shared resource is the memory of the smart card, or at least a part of that memory.

Les deux appliquettes précitées peuvent par exemple consister en des applications dites de"porte-monnaie électroniques". Si ces deux appliquettes interrogent en même temps un même compte en banque pour savoir si un débit est possible, en l'absence de contrôle d'accès, elles obtiennent toutes les deux une même réponse (par exemple qu'il reste 1000F), et elles acceptent en conséquence toutes les deux le débit demandé (par exemple 800F chacun). Il s'ensuit que le compte en question va devenir débiteur (en l'occurrence à hauteur de :-600 F), que ce type d'opération soit ou non autorisé.  The two aforementioned applets may for example consist of so-called "electronic wallet" applications. If these two applets interrogate at the same time the same bank account to know if a bit rate is possible, in the absence of access control, they both get the same answer (for example that there remains 1000F), and they both accept the requested rate (for example 800F each). It follows that the account in question will become debtor (in this case up to: -600 F), whether this type of transaction is authorized or not.

On conçoit aisément que ce problème puisse exister dans de nombreux autres domaines.  It is easy to see that this problem can exist in many other fields.

Pour des systèmes informatiques plus puissants, il est possible de prévoir des dispositions permettant d'éviter ce type de problème, même si celles-ci sont "gourmandes"en ressources informatiques. Tel n'est pas le cas pour les cartes à puce (ou plus généralement les systèmes embarqués) qui sont pourvues, par nature, de ressources informatiques limitées comme précédemment rappelé. En outre, dans l'art connu, ce problème ne se posait pas, car les applications standards à base de cartes à puce ne supportent pas un environnement multiprocessus. C'est le cas, en particulier, pour un des langages informatiques le plus utilisé pour ce genre d'application, à savoir"Java Card" (Marque déposée).  For more powerful computer systems, it is possible to provide provisions to avoid this type of problem, even if they are "greedy" in computing resources. This is not the case for smart cards (or more generally embedded systems) which are provided, by nature, limited computing resources as previously recalled. Furthermore, in the known art, this problem did not arise because standard applications based on smart cards do not support a multiprocess environment. This is the case, in particular, for one of the most used computer languages for this kind of application, namely "Java Card" (registered trademark).

Pour résoudre ce problème, on pourrait penser à la solution simple suivante qui consisterait à associer une variable dite partagée à chaque ressource partagée.  To solve this problem, one could think of the following simple solution which consists in associating a so-called shared variable with each shared resource.

Toujours dans l'exemple décrit précédemment (application de portemonnaie électronique), pour fixer les idées, on suppose que la ressource partagée  Still in the example described above (application of electronic wallet), to fix the ideas, it is assumed that the shared resource

<Desc/Clms Page number 3><Desc / Clms Page number 3>

soit un octet stocké dans une zone semi-fixe de la mémoire de la carte à puce, par exemple en"EEPROM" (pour"Electrically Erasable Programmable read Only Memory"ou Mémoire à lecture seule re-programmable par effacement électrique).  either a byte stored in a semi-fixed area of the memory of the smart card, for example in "EEPROM" (for "Electrically Erasable Programmable Read Only Memory" or read-only memory re-programmable by electrical erasure).

On suppose de plus que cet octet contienne le solde du compte en banque du porteur de la carte à puce. On associe alors une variable que l'on appellera "verrou" (1 bit) à cette ressource partagée ou drapeau, et on l'initialise par exemple à la valeur"0". It is further assumed that this byte contains the balance of the bank account of the holder of the smart card. We then associate a variable that we will call "lock" (1 bit) to this shared resource or flag, and initialize it for example to the value "0".

Le mécanisme des opérations est le suivant : a/si la variable"verrou"= 1, alors la ressource partagée est en cours d'utilisation et il est nécessaire qu'elle se libère ; b/si la variable"verrou"= 0, alors la ressource partagée est libre. On force la variable "verrou" à "1" pour indiquer que la ressource partagée est en cours d'utilisation.  The mechanism of the operations is as follows: a / if the variable "lock" = 1, then the shared resource is in use and it is necessary that it is released; b / if the variable "lock" = 0, then the shared resource is free. The "lock" variable is forced to "1" to indicate that the shared resource is in use.

Il existe néanmoins encore un risque. En effet, on suppose maintenant que le premier processus teste la variable "verrou" qui a pour valeur"0" (indiquant qu'elle est libre), et que ce processus soit interrompu entre le test de la variable "verrou"et son positionnement à"1". Si le deuxième processus prend alors "la main"et a besoin d'accéder à la ressource partagée, il teste la variable "verrou". Celle-ci vaut toujours"0". Le deuxième processus la positionne alors à"1"et utilise la ressource partagée. Quand"la main"est rendue au premier processus, la ressource partagée n'est plus intègre, car elle est susceptible d'être en cours d'utilisation. En effet, le deuxième processus n'a pas forcement fini d'utiliser cette ressource partagée quand l'exécution du premier processus reprend.  Nevertheless, there is still a risk. Indeed, it is now assumed that the first process tests the variable "lock" which has the value "0" (indicating that it is free), and that this process is interrupted between the test of the variable "lock" and its positioning. to "1". If the second process then takes the "hand" and needs to access the shared resource, it tests the "lock" variable. This one is always worth "0". The second process then sets it to "1" and uses the shared resource. When "hand" is returned to the first process, the shared resource is no longer intact because it is likely to be in use. Indeed, the second process does not necessarily finish using this shared resource when the execution of the first process resumes.

On constate que sur cet exemple simple, la solution envisagée pour résoudre le problème, si elle est simple également et donc peu gourmande en ressources informatiques, ne donne cependant pas satisfaction, car elle autorise des dysfonctionnements.  It can be seen that in this simple example, the solution envisaged for solving the problem, if it is also simple and therefore not very greedy in computing resources, does not give satisfaction, however, because it allows malfunctions.

De plus, on constate également que la modification, frauduleuse ou accidentelle, de la variable"verrou"a des conséquences dramatiques sur l'ensemble du système. Un"verrou"malencontreusement positionné à"1"alors qu'il devrait être à"0"interdit définitivement l'accès à cette ressource, alors que le phénomène inverse permet l'accès à une ressource déjà en cours d'utilisation.  In addition, we also note that the fraudulent or accidental modification of the "lock" variable has dramatic consequences for the entire system. A "lock" inadvertently set to "1" while it should be "0" permanently prohibits access to this resource, while the opposite phenomenon allows access to a resource already in use.

<Desc/Clms Page number 4> <Desc / Clms Page number 4>

L'invention vise à pallier les inconvénients des dispositifs et systèmes de l'art connu, et dont certains viennent d'être rappelés, tout en satisfaisant aux besoins qui se font sentir et aux spécificités présentées par les systèmes embarqués.  The invention aims to overcome the disadvantages of the devices and systems of the prior art, some of which have just been recalled, while satisfying the needs that are felt and the specificities presented by embedded systems.

Notamment, dans ce cadre d'applications : - les calculs exigés et les besoins en espace mémoire induits par le procédé doivent rester peu importants ; - le procédé doit garantir l'intégrité des zones où sont stockées les informations ; et - le système d'exploitation, ou"OS"selon la terminologie anglosaxonne, dont est pourvue la carte à puce, ou plus généralement le système embarqué, doit pouvoir continuer à libérer une ressource partagée défectueuse, pour ne pas bloquer le système dans sa globalité.  In particular, in this context of applications: the calculations required and the memory space requirements induced by the process must remain small; the method must guarantee the integrity of the areas where the information is stored; and - the operating system, or "OS" according to the English terminology, which is provided with the smart card, or more generally the embedded system, must be able to continue to release a defective shared resource, so as not to block the system in its whole.

L'invention se fixe donc pour but, dans un système embarqué multiprocessus, un procédé de contrôle d'accès simultané de processus à une ressource partagée permettant d'empêcher, lorsqu'un premier processus utilise une ressource partagée donnée, qu'un ou plusieurs autres processus utilise cette même ressource partagée tant que le premier processus ne l'a pas libérée complètement.  The aim of the invention is therefore to set, in a multiprocess embedded system, a process for controlling simultaneous access of processes to a shared resource making it possible to prevent, when a first process uses a given shared resource, one or more other processes use this same shared resource until the first process has fully released it.

Pour ce faire, le procédé selon l'invention prévoit une gestion d'accès à une même ressource partagée organisant une exclusion mutuelle. En d'autres termes, deux processus demandeurs concurrents, ayant posé une requête d'accès à une même ressource, s'excluent mutuellement.  To do this, the method according to the invention provides access management to the same shared resource organizing a mutual exclusion. In other words, two competing requesting processes, having applied for access to the same resource, are mutually exclusive.

Selon le procédé de l'invention, on associe à chaque ressource partagée, comme précédemment, une variable partagée formant verrou ou drapeau. Pour simplifier, cette variable sera appelée ci-après "verrou". Dans une phase préliminaire, cette variable est forcée à un premier état prédéterminé dit initial.  According to the method of the invention, each shared resource is associated, as before, with a shared variable forming a lock or flag. For simplicity, this variable will be called "lock" below. In a preliminary phase, this variable is forced to a first predetermined initial state.

Selon une autre caractéristique du procédé selon l'invention, les opérations successives de test et de positionnement des verrous précités sont rendues non interruptibles.  According to another characteristic of the method according to the invention, the successive operations of testing and positioning of the aforementioned locks are made uninterruptible.

Pour ce faire, on prévoit une première fonction logicielle, de type dit primitive système, qui effectue les deux opérations précédentes, test et  To do this, a first software function, of so-called system primitive type, is provided which performs the two preceding operations, test and

<Desc/Clms Page number 5><Desc / Clms Page number 5>

positionnement, du verrou dans un deuxième état déterminé, indiquant la nondisponibilité de la ressource partagée associée. Cette primitive est non interruptible.  positioning the lock in a second determined state, indicating the unavailability of the associated shared resource. This primitive is uninterruptible.

On prévoit une seconde fonction logicielle, également de type dit primitive système, qui permet de libérer la ressource partagée par remise à l'état initial du verrou. Cette primitive est également non interruptible.  A second software function, also of the so-called system primitive type, is provided which makes it possible to release the shared resource by resetting the lock. This primitive is also uninterruptible.

La mise en oeuvre du procédé selon l'invention peut s'effectuer en recourant à deux grandes familles de solutions, à savoir une implantation de type matériel et une implantation de type logiciel.  The implementation of the method according to the invention can be carried out by resorting to two large families of solutions, namely a hardware-type implementation and a software-type implementation.

En ce qui concerne la solution matérielle, on prévoit qu'une seule instruction machine du microprocesseur peut effectuer les deux opérations rappelées ci-dessus (test et positionnement). Cette disposition permet de résoudre entièrement le problème que se pose l'invention. En effet, comme il est connu, une instruction dite machine est, par définition, non interruptible.  Regarding the hardware solution, it is expected that a single microprocessor machine instruction can perform the two operations recalled above (test and positioning). This arrangement makes it possible to completely solve the problem that the invention poses. Indeed, as it is known, a so-called machine instruction is, by definition, uninterruptible.

Cependant, une telle instruction n'existe pas sur tous les microprocesseurs du commerce. Il est donc parfois nécessaire de modifier le jeu de microinstructions, ce qui, pour des applications standards ou normalisées, présente un inconvénient.  However, such an instruction does not exist on all commercial microprocessors. It is therefore sometimes necessary to modify the set of microinstructions, which, for standard or standardized applications, has a disadvantage.

Une solution logicielle peut être implantée en prévoyant que la fonction logicielle de test et de positionnement soit un appel système prévu pour ne pas être interrompu par le système.  A software solution can be implemented by providing that the test and positioning software function is a system call intended not to be interrupted by the system.

Selon une autre caractéristique du procédé selon l'invention, les variables partagées de type"verrou"associées à chaque ressource partagée sont stockées dans des zones mémoire dont l'intégrité est assurée par un processus de calcul de valeurs de vérification (checksum).  According to another characteristic of the method according to the invention, the shared variables of the "lock" type associated with each shared resource are stored in memory areas whose integrity is ensured by a process of calculating checksum values (checksum).

Dans une variante supplémentaire de l'invention, on prévoit en outre d'effectuer un contrôle sur les droits d'accès d'un processus à une ressource partagée, ce de façon avantageuse à l'intérieur de la routine d'exécution de la première primitive, qui effectue les opérations de test et positionnement. Pour ce faire, on vérifie que le processus appelant la routine ait des droits d'accès appropriés pour demander à manipuler la ressource partagée.  In a further variant of the invention, provision is furthermore made to control the access rights of a process to a shared resource, this advantageously within the execution routine of the first one. primitive, which performs the testing and positioning operations. To do this, it is verified that the process calling the routine has appropriate access rights to request manipulation of the shared resource.

<Desc/Clms Page number 6> <Desc / Clms Page number 6>

Dans une variante supplémentaire de l'invention, on peut aussi prévoir que les routines d'exécution des première et seconde primitives permettent de réserver simultanément l'accès de plusieurs ressources partagées pour éviter un blocage entre plusieurs processus, encore appelé "deadlock" selon la terminologie anglo-saxonne.  In a further variant of the invention, it is also possible for the execution routines of the first and second primitives to simultaneously reserve the access of several shared resources to avoid a blocking between several processes, also called "deadlock" according to the Anglo-Saxon terminology.

L'invention a donc pour objet principal un procédé de contrôle d'accès à des ressources partagées dans un système embarqué comportant au moins des moyens de mémoire et des moyens de calcul sous la commande d'un système d'exploitation, ledit système étant multiprocessus, caractérisé en ce qu'il comprend les étapes suivantes lorsqu'un processus pose une requête d'accès à une desdites ressources partagées : - une étape de test d'une donnée partagée appelée verrou associée à chacune desdites ressources partagées, la valeur de verrou indiquant la disponibilité ou l'indisponibilité de la ressource concernée, par une entité dite de réservation de ressource permettant de refuser l'accès à la ressource partagée concernée en cas d'indisponibilité de ladite ressource ; - une étape de réservation de la ressource partagée concernée si le test de l'étape précédente indique la disponibilité de ladite ressource, par l'entité de réservation de ressource comprenant la modification du verrou pour lui donner une valeur correspondant à l'indisponibilité de la ressource partagée, lesdites étapes de test et de positionnement de réservation se déroulant à la suite l'une de l'autre sans interruption.  The main object of the invention is therefore a method for controlling access to shared resources in an embedded system comprising at least memory means and calculation means under the control of an operating system, said system being multiprocess , characterized in that it comprises the following steps when a process requests access to one of said shared resources: a step of testing a shared data item called a lock associated with each of said shared resources, the lock value; indicating the availability or unavailability of the resource concerned, by a resource reservation entity that makes it possible to refuse access to the shared resource concerned in the event of unavailability of said resource; a step of reserving the shared resource concerned if the test of the preceding step indicates the availability of said resource, by the resource reservation entity including the modification of the lock to give it a value corresponding to the unavailability of the resource; shared resource, said test steps and reservation positioning taking place one after the other without interruption.

L'invention a encore pour objet un système embarqué pour la mise en oeuvre de ce procédé.  The invention also relates to an embedded system for implementing this method.

L'invention va maintenant être décrite de façon plus détaillée en se référant aux dessins annexés, parmi lesquels : - la figure 1 illustre schématiquement l'architecture générale d'une carte à puce ;
La figure 2 illustre schématiquement le mécanisme d'un contrôle d'accès à une ressource partagée ;
The invention will now be described in more detail with reference to the accompanying drawings, in which: FIG. 1 schematically illustrates the general architecture of a smart card;
Figure 2 schematically illustrates the mechanism of access control to a shared resource;

<Desc/Clms Page number 7><Desc / Clms Page number 7>

ta figure 3 illustre de façon plus détaillée l'architecture d'une carte à puce pour la mise en oeuvre du procédé de contrôle d'accès de processus à des ressources partagées selon l'invention ; et - la figure 4 est un organigramme montrant les principales étapes d'un accès à une ressource partagée par un processus mettant en oeuvre l'architecture de la figure 3.  FIG. 3 illustrates in more detail the architecture of a smart card for implementing the method of controlling access of processes to shared resources according to the invention; and FIG. 4 is a flow chart showing the main steps of access to a shared resource by a process implementing the architecture of FIG. 3.

On va maintenant décrire de façon plus détaillée un exemple de réalisation d'un procédé de contrôle d'accès à une ressource partagée selon l'invention par référence aux figures 1 à 4. Comme il a été indiqué, à titre d'exemple non limitatif et pour fixer les idées, on se placera dans le cas du domaine d'application préférée de l'invention, à savoir les applications à base de cartes à puce.  One embodiment of a method for controlling access to a shared resource according to the invention will now be described in more detail with reference to FIGS. 1 to 4. As indicated, by way of nonlimiting example. and to fix the ideas, it will be placed in the case of the preferred field of application of the invention, namely applications based on smart cards.

Il paraît tout d'abord utile de rappeler brièvement l'architecture générale d'une carte à puce 1 pouvant être utilisée dans le cadre de l'invention. La figure 1 illustre très schématiquement une telle architecture. Celle-ci comprend au moins les éléments suivants : un microprocesseur ou équivalent (microcontrôleur) 10, constituant des moyens de traitement de données numériques, des moyens de stockage de données et de programmes, comprenant notamment une zone de mémoire vive ou"RAM" ("Random Access memory") 11 et une zone de mémoire fixe ou semi-fixe 12, par exemple de type"ROM" ("Read Only Memory") ou "PROM" ("Programmable Read Only Memory"), ainsi que des circuits d'entrée- sortie "1/0" ("Input/Output") 13 communiquant avec le milieu extérieur, c'est-à-dire avec le terminal hôte 2 de la carte à puce 1 (par exemple un micro-ordinateur).  It seems first of all useful to briefly recall the general architecture of a smart card 1 that can be used in the context of the invention. Figure 1 schematically illustrates such an architecture. This comprises at least the following elements: a microprocessor or equivalent (microcontroller) 10 constituting digital data processing means, data storage means and programs, including in particular a RAM area or "RAM" ( "Random Access memory") 11 and a fixed or semi-fixed memory zone 12, for example of the "ROM" ("Read Only Memory") or "PROM" type ("Programmable Read Only Memory"), as well as circuits input-output signal "1/0" ("Input / Output") 13 communicating with the external medium, that is to say with the host terminal 2 of the smart card 1 (for example a microcomputer) .

Ces différents éléments communiquent entre eux avec un ou plusieurs bus, représenté (s) sous une référence unique B. Généralement, les applications logicielles, microprogrammes, appliquettes, ou"applets"selon la terminologie anglo-saxonne, que l'on appellera de façon générique programmes, sont stockés dans la mémoire fixe ou semi-fixe 12, mais peuvent être également téléchargés directement dans la mémoire vive 11 en provenance du monde extérieur (non représenté), notamment du terminal 2, via les circuits d'entrée-sortie 13. These different elements communicate with one or more buses, represented (s) under a unique reference B. Generally, software applications, firmware, applets, or "applets" according to the English terminology, which we will call so generic programs, are stored in the fixed or semi-fixed memory 12, but can also be downloaded directly to the RAM 11 from the outside world (not shown), including the terminal 2, via the input-output circuits 13 .

Pour qu'une application puisse être exécutée, il est nécessaire de charger tout ou partie de son code en mémoire vive 11. Un ou plusieurs processus  For an application to be executed, it is necessary to load all or part of its code into RAM 11. One or more processes

<Desc/Clms Page number 8><Desc / Clms Page number 8>

est (sont) alors lancé (s). Le bon déroulement de ces processus, sous la commande du microprocesseur 10 et d'un système d'exploitation de la carte à puce 1, ou"OS" ("Operating System"selon la terminologie anglo-saxonne"), exige que des ressources informatiques, tant matérielles que logicielles soient mises à leurs dispositions, notamment, dans le cadre de l'invention, des ressources partagées si la carte à puce 1 est du type multi-processus comme il a été précédemment indiqué.  is (are) then launched (s). The smooth running of these processes, under the control of the microprocessor 10 and an operating system of the smart card 1, or "OS" ("Operating System" in the English terminology ") requires that resources computer hardware and software are made available to them, including, in the context of the invention, the shared resources if the smart card 1 is of the multi-process type as previously indicated.

Lorsqu'un processus demandeur donné pose une requête pour avoir accès à une ressource partagée particulière, il est nécessaire de contrôler si ce processus peut avoir effectivement accès à celle-ci.  When a given requesting process makes a request to access a particular shared resource, it is necessary to control whether that process can actually access it.

Lorsque le système embarqué, en l'occurrence la carte à puce 1, est du type multi-processus, par définition plusieurs processus peuvent s'exécuter en simultanéité. On suppose, dans un premier temps, qu'une ressource, appelée ciaprès Rx, peut être partagée entre deux processus concurrents, appelés ci-après P1 et P2, respectivement. Il est alors nécessaire de contrôler, lorsque l'un des deux processus, par exemple P2, pose une requête d'accès, si la ressource partagée Rx n'est pas déjà en cours d'utilisation par l'autre processus, soit P1 dans l'exemple décrit. L'indice x est arbitraire et varie entre 1 et n, n étant le nombre maximum de ressources partagées.  When the embedded system, in this case the smart card 1, is of the multi-process type, by definition several processes can run simultaneously. It is assumed, initially, that a resource, hereinafter called Rx, can be shared between two concurrent processes, hereinafter called P1 and P2, respectively. It is then necessary to check, when one of the two processes, for example P2, asks for access, if the shared resource Rx is not already in use by the other process, that is P1 in the example described. The index x is arbitrary and varies between 1 and n, where n is the maximum number of shared resources.

La figure 2 illustre schématiquement l'architecture d'un système de contrôle d'accès. Deux processus, P1 et P2, posent une requête pour utiliser une ressource partagée Rx. Cette requête est filtrée par un module de contrôle d'accès 3, qui peut être de type logiciel ou matériel.  Figure 2 schematically illustrates the architecture of an access control system. Two processes, P1 and P2, request to use an Rx shared resource. This request is filtered by an access control module 3, which can be software or hardware type.

Si le processus P1, par exemple, a posé sa requête en premier, le processus P2 doit se voir refuser l'accès à la ressource Rx, et inversement.  For example, if the P1 process queried first, the P2 process must be denied access to the Rx resource, and vice versa.

Pour que le contrôle d'accès soit effectué correctement, selon une première caractéristique du procédé selon l'invention, on associe à chaque ressource partagée Rx une valeur partagée dite de verrou, que l'on appellera "Verrou"ci-après et qui se présente physiquement sous la forme de toute donnée numérique appropriée. Dans un mode de réalisation préféré, puisque deux états distincts sont suffisants, on associe à chaque ressource partagée Rx un seul élément binaire (bit), stocké avantageusement dans une position de la mémoire  For the access control to be carried out correctly, according to a first characteristic of the method according to the invention, each shared resource Rx is associated with a shared value called a lock, which will be called "lock" below and which is physically present in the form of any appropriate numerical data. In a preferred embodiment, since two distinct states are sufficient, each shared resource Rx is associated with a single binary element (bit), advantageously stored in a memory position.

<Desc/Clms Page number 9><Desc / Clms Page number 9>

vive 11 (figure 1) ou dans un registre indépendant. On peut également associer, à chaque ressource partagée Rx, une bascule, par exemple de type"Flip-Flop", ou tout autre organe similaire présentant deux états logiques.  alive (Figure 1) or in an independent register. It is also possible to associate, with each shared resource Rx, a flip-flop, for example of "Flip-Flop" type, or any other similar organ having two logical states.

Ce bit sert de drapeau indiquant la disponibilité ou, au contraire, la nondisponibilité, de la ressource partagée Rx associée. La valeur initiale du bit peut être fixée arbitrairement à l'état logique"0" ("Verrou"= 0). Le bit est initialisé à cette valeur lors d'une phase dite préliminaire.  This bit serves as a flag indicating the availability or, on the contrary, the unavailability of the associated shared resource Rx. The initial value of the bit can be arbitrarily set to logic "0" ("Lock" = 0). The bit is initialized to this value during a so-called preliminary phase.

Ensuite, lors de phases ultérieures, que l'on peut qualifier d'opérationnelles, lorsqu'un processus, par exemple P1, pose une requête d'accès à la ressource Rx et qu'il prend effectivement "la main", le bit est basculé à l'état "1"logique ("Verrou"= 1), indiquant par là que la ressource partagée associée Rx n'est plus disponible.  Then, in later phases, which can be described as operational, when a process, for example P1, requests access to the resource Rx and it actually takes "the hand", the bit is switched to logical "1" ("Lock" = 1), indicating that the associated shared resource Rx is no longer available.

Si le second processus, c'est-à-dire P2, pose à son tour une requête d'accès à la ressource Rx, un test est effectué sur le bit"Verrou". Dans le cas présent, la valeur "1" de ce bit indique l'état non disponible de la ressource Rx et le processus P2 se verra refuser l'accès demandé.  If the second process, that is to say P2, in turn asks for access to the resource Rx, a test is performed on the "Lock" bit. In the present case, the value "1" of this bit indicates the unavailable state of the resource Rx and the process P2 will be denied the access requested.

Lorsque le processus P1 libère la ressource Rx, le bit "Verrou" est repositionné à sa valeur initiale"0", indiquant par là que la ressource partagée associée Rx est de nouveau disponible.  When the process P1 releases the resource Rx, the "Lock" bit is repositioned to its initial value "0", indicating that the associated shared resource Rx is available again.

Ce mécanisme est très simple à implanter et à mettre en oeuvre.  This mechanism is very simple to implement and implement.

Cependant, comme il a été démontré, il autorise, dans certaines conditions, des dysfonctionnements inacceptables. Il n'est donc pas suffisant à lui seul. However, as has been demonstrated, it allows, under certain conditions, unacceptable dysfunctions. It is not enough on its own.

Aussi, selon une autre caractéristique du procédé selon l'invention, les opérations successives de test et de positionnement des verrous précitées sont rendues non interruptibles.  Also, according to another characteristic of the method according to the invention, the successive operations of testing and positioning of the aforementioned locks are made uninterruptible.

Pour ce faire, le procédé selon l'invention prévoit une gestion d'accès à une même ressource partagée Rx organisant une exclusion mutuelle des processus demandeurs, P1 et P2.  To do this, the method according to the invention provides access management to the same shared resource Rx organizing a mutual exclusion of the requesting processes, P1 and P2.

A ce titre, selon une deuxième caractéristique du procédé selon l'invention, on prévoit des première et seconde fonctions, de type dit primitives système, non interruptibles.  As such, according to a second characteristic of the method according to the invention, there are provided first and second functions, so-called system primitives, uninterruptible.

<Desc/Clms Page number 10> <Desc / Clms Page number 10>

La première primitive système, que l'on appellera ci-après P, effectue les deux premières opérations, test et positionnement du bit "Verrou" à l'état logique "1" (si le test précédent indique que ! e"verrou"est à"O"), indiquant la nondisponibilité de la ressource partagée associée. Cette primitive P est non interruptible.  The first system primitive, which will be called hereinafter P, performs the first two operations, testing and positioning the "Logic" bit in logic state "1" (if the preceding test indicates that the "lock" is to "O"), indicating the unavailability of the associated shared resource. This primitive P is uninterruptible.

La seconde primitive système, que l'on appellera ci-après V, permet de libérer la ressource partagée Rx par remise à l'état logique initia !"0"du bit "Verrou". Cette primitive est également non interruptible.  The second system primitive, which will be called hereinafter V, makes it possible to release the shared resource Rx by resetting the "Lock" bit to the initial logic state "0". This primitive is also uninterruptible.

Les deux primitives, P et V, sont chargées en mémoire vive 11, avantageusement à partir d'un emplacement prédéterminé de la mémoire fixe 12 (figure 1). Elles coopèrent toutes deux avec les moyens de stockage du bit "Verrou" : test du contenu et forçage à la valeur "a" ou "1", comme indiqué cidessus.  The two primitives, P and V, are loaded in random access memory 11, advantageously from a predetermined location of the fixed memory 12 (FIG. 1). They both cooperate with the storage means of the "Lock" bit: content test and forcing at the value "a" or "1", as indicated above.

Ce mécanisme est toujours relativement simple à implanter et à mettre en oeuvre, mais, comme il a déjà été montré, il autorise toujours, dans certaines conditions, des dysfonctionnements inacceptables.  This mechanism is still relatively simple to implement and implement, but, as has already been shown, it still allows, under certain conditions, unacceptable malfunctions.

En effet, les variables de type"verrou"sont des données relativement sensibles. Une modification de la valeur de ces variables, qu'elle soit volontaire ou accidentelle, peut compromettre le fonctionnement du système. Ainsi, ces variables devront être stockées dans des zones mémoire dont l'intégrité sera assurée, par l'intermédiaire de calculs de valeurs de vérification (checksum) par exemple du type Adler connu.  Indeed, the "lock" type variables are relatively sensitive data. A change in the value of these variables, whether voluntary or accidental, can compromise the operation of the system. Thus, these variables will have to be stored in memory areas whose integrity will be ensured, by means of checksum value calculations for example of the known Adler type.

La figure 3 illustre schématiquement l'architecture d'une carte à puce 1 pour la mise en oeuvre du procédé de contrôle d'accès d'un processus, par exemple P2, à une ressource partagée, par exemple Rx. Cette dernière peut être indifféremment de type logiciel (une appliquette par exemple comme illustré ciaprès) ou matériel (zone de mémoire, etc.).  FIG. 3 schematically illustrates the architecture of a smart card 1 for implementing the access control method of a process, for example P2, with a shared resource, for example Rx. The latter can be indifferently software type (an applet for example as illustrated below) or hardware (memory area, etc.).

On a représenté sur cette figure 3 une position de mémoire 4x, avantageusement un emplacement de la mémoire vive 11 (figure 1), stockant le bit"Verrou". Par un mécanisme classique en soi, celui-ci est initialisé à l'état logique "0", lors d'une phase préliminaire, par exemple lors de la mise sous tension de la carte à puce 1. L'indice x signifie que la position 4x de mémoire est  FIG. 3 shows a memory position 4x, advantageously a location of the random access memory 11 (FIG. 1), storing the "lock" bit. By a conventional mechanism in itself, it is initialized in the logic state "0", during a preliminary phase, for example when powering the smart card 1. The index x means that the 4x memory position is

<Desc/Clms Page number 11><Desc / Clms Page number 11>

associée à la ressource partagée Rx. Il existe en effet autant de bits de verrou que de ressources partagées Rx (soit n comme décrit précédemment). Les emplacements de mémoire correspondants, si on utilise la mémoire vive 11 (figure 1) peuvent être contigus ou répartis à des adresses prédéterminées.  associated with the Rx shared resource. There are indeed as many lock bits as shared resources Rx (ie n as previously described). The corresponding memory locations, if using the RAM 11 (Figure 1) can be contiguous or distributed at predetermined addresses.

Néanmoins, tous ces emplacements de mémoire, permettant de stocker les bits "verrou"de chaque ressource partagée, sont regroupés dans une zone mémoire dont l'intégrité est assurée par l'intermédiaire du calcul de valeurs de vérification (checksum). Nevertheless, all these memory locations, for storing the "lock" bits of each shared resource, are grouped together in a memory zone whose integrity is ensured by means of the calculation of checksum values.

Dans un mode de réalisation préféré, les variables de type"verrou" seront stockées de façon contiguë dans une zone mémoire 4 dont l'intégrité est assurée par l'intermédiaire du calcul d'une unique valeur de vérification portant sur l'ensemble de la zone mémoire 4. Cette valeur de vérification (checksum) est stockée dans la zone mémoire 4y prévue à cet effet.  In a preferred embodiment, the "lock" type variables will be stored contiguously in a memory zone 4 whose integrity is ensured by means of the calculation of a single verification value covering the whole of the memory zone 4. This checksum value is stored in the memory zone 4y provided for this purpose.

On a également représenté deux emplacements de mémoire, 5 et 6, destinés à stocker les deux primitives précitées, P et V, respectivement.  Two memory locations, 5 and 6, are also shown for storing the two aforementioned primitives, P and V, respectively.

Selon le procédé de l'invention, lorsqu'un processus demandeur, P2 par exemple, pose une requête d'accès à la ressource partagée Rx, celle-ci est traitée par une routine d'exécution de la primitive P. Tout d'abord, la valeur de vérification 4y est contrôlée afin de vérifier l'intégrité de la zone mémoire 4. Si la valeur de vérification est incorrecte, l'accès à la ressource partagée Rx est refusé. Dans le cas contraire, ladite primitive P teste ensuite l'état logique du bit"Verrou" (c'est-àdire le contenu de l'emplacement de mémoire 4x où il est stocké), et de façon plus générale l'état d'une donnée numérique constituant la valeur de verrou. Si le bit de verrou est à l'état initial ("verrou"= 0), la ressource partagée Rx est libre. Une autorisation est accordée et elle est mise immédiatement à la disposition du processus demandeur P2. Le bit"Verrou"est positionné à l'état logique "1" par la primitive"P". Ces deux opérations consécutives doivent être réalisées sans qu'il soit possible d'en interrompre le déroulement.  According to the method of the invention, when a requesting process, for example P2, requests access to the shared resource Rx, it is processed by a routine for executing the primitive P. First of all, , the check value 4y is checked to check the integrity of the memory area 4. If the check value is incorrect, access to the shared resource Rx is denied. In the opposite case, said primitive P then tests the logical state of the "Lock" bit (that is to say the contents of the memory location 4x where it is stored), and more generally the state of a digital datum constituting the lock value. If the lock bit is in the initial state ("lock" = 0), the shared resource Rx is free. An authorization is granted and is immediately made available to the P2 applicant process. The "Lock" bit is set to the "1" logic state by the "P" primitive. These two consecutive operations must be performed without it being possible to interrupt the progress.

Dans le cas contraire ("verrou"= 1), cela signifie que la ressource partagée Rx est en cours d'utilisation par le processus P1 (représenté en traits pointillés sur la figure 3). L'autorisation d'accès est déniée au processus P2. Celuici doit attendre la libération de la ressource partagée Rx.  In the opposite case ("lock" = 1), this means that the shared resource Rx is in use by the process P1 (shown in dashed lines in FIG. 3). Access authorization is denied to the P2 process. It must wait for the release of the shared resource Rx.

<Desc/Clms Page number 12> <Desc / Clms Page number 12>

Figure img00120001
Figure img00120001

Lorsque cette libération intervient, la primitive V en est informée et repositionne le bit de verrou à l'état initial ("Verrou"= 0). Cette primitive est également non interruptible. When this release occurs, the V primitive is informed and reposition the lock bit in the initial state ("Lock" = 0). This primitive is also uninterruptible.

Toutes les variables de type"verrou"étant stockées dans une zone mémoire 4 dont l'intégrité est assurée par le calcul d'une valeur de vérification, toute modification de ces variables implique nécessairement la mise à jour de la valeur de vérification 4y. De même, tout accès en lecture à ces variables implique la vérification de la valeur de vérification 4y afin de contrôler l'intégrité des variables de type"verrou". Since all the variables of the "lock" type are stored in a memory zone 4 whose integrity is ensured by the calculation of a verification value, any modification of these variables necessarily implies the updating of the verification value 4y. Likewise, any read access to these variables involves verifying the verification value 4y in order to check the integrity of the "lock" type variables.

L'organigramme de la figure 4 illustre les principales étapes du procédé de contrôle d'accès selon la figure 3. The flowchart of FIG. 4 illustrates the main steps of the access control method according to FIG.

A l'étape 700, une requête d'accès à la ressource partagée Rx est posée par le processus P2. In step 700, a request for access to the shared resource Rx is set by the process P2.

A l'étape 701, la valeur de vérification est calculée et comparée à la valeur de vérification sauvegardée 4y (figure 3). Si les valeurs sont différentes, il y a un problème d'intégrité et l'accès à la ressource Rx est refusé au processus P2. Si les valeurs sont identiques, le système va ensuite vérifier si la ressource est disponible, et ceci à l'étape 702. In step 701, the verification value is calculated and compared to the saved verification value 4y (FIG. 3). If the values are different, there is an integrity problem and access to the Rx resource is denied to the P2 process. If the values are identical, the system will then check if the resource is available, and this in step 702.

A l'étape 702a le contenu de la position de mémoire 4x (figure 3) est testé, c'est-à-dire la valeur du bit"Verrou". In step 702a the contents of the 4x memory position (FIG. 3) is tested, ie the value of the "lock" bit.

Si le bit"Verrou"n'est pas à l'état initial ("Verrou"= 1 ; branche"NON"), cela signifie que la ressource Rx est déjà occupée. L'accès à cette ressource est dénié au processus P2. Par contre, si ce bit est à l'état initial ("Verrou"= 0 ; branche "QUI"), l'accès à la ressource partagée Rx est autorisé et le bit"Verrou" est positionné à"1" (étape 702b). If the "Lock" bit is not in the initial state ("Lock" = 1, "NO" branch), it means that the Rx resource is already busy. Access to this resource is denied to the P2 process. On the other hand, if this bit is in the initial state ("Lock" = 0; "QUI" branch), access to the shared resource Rx is authorized and the "Lock" bit is set to "1" (step 702b ).

Comme il a été indiqué, ces deux étapes successives de test (702a) et de positionnement de verrou (702b) ne peuvent être interrompues, et, pour cette raison, ont été représentées dans un même bloc en traits pointillés dans le diagramme de la figure 4. As has been indicated, these two successive test (702a) and latch positioning (702b) steps can not be interrupted, and, for this reason, have been shown in one and the same block in dotted lines in the diagram of FIG. 4.

Ensuite, à l'étape 703, après la modification d'au moins une variable "verrou", la valeur de vérification est à nouveau calculée et inscrite dans la zone mémoire 4y contenant la valeur de vérification sauvegardée. Then, in step 703, after the modification of at least one "lock" variable, the verification value is again calculated and written in the memory zone 4y containing the saved verification value.

<Desc/Clms Page number 13> <Desc / Clms Page number 13>

Lorsque le processus P2 décide de libérer la ressource partagée Rx (étape 704), la primitive V positionne le bit "verrou" à l'état logique "0" (étape 705), ce qui indique que la ressource partagée Rx est de nouveau libre. La primitive V ne doit pas pouvoir être interrompue tant que cette opération n'est pas complète.  When the process P2 decides to release the shared resource Rx (step 704), the primitive V sets the "lock" bit to the logical state "0" (step 705), which indicates that the shared resource Rx is again free . The V primitive should not be interrupted until this operation is complete.

Ensuite, à l'étape 706, après la remise à zéro de la variable "verrou", la valeur de vérification est recalculée et inscrite dans la zone mémoire 4y contenant la valeur de vérification sauvegardée. Then, in step 706, after resetting the "lock" variable, the verification value is recalculated and written in the memory zone 4y containing the saved verification value.

On va maintenant décrire un exemple d'application. Toujours dans le cadre du domaine du porte-monnaie dit électronique, on considère trois comptes en banque familiaux. Chaque compte constitue une ressource partagée distincte, par exemple des variables enregistrant le montant disponible dans les comptes précités, variables que l'on appellera "Compte~père", "Compte~mère", "Compte~enfant", respectivement. On suppose que plusieurs entités peuvent avoir accès à ces différents comptes, donc à ces ressources partagées. Il s'agit par exemple d'applications résidant dans une carte à puce détenue par les trois membres de la famille.  An example application will now be described. Still in the context of the so-called electronic purse domain, three family bank accounts are considered. Each account constitutes a separate shared resource, for example variables recording the amount available in the aforementioned accounts, variables that will be called "Parent account", "Mother account", "Child account", respectively. It is assumed that several entities can have access to these different accounts, so to these shared resources. For example, these are applications that reside in a smart card owned by the three family members.

Selon une première caractéristique du procédé de l'invention, on associe à chacune des ressources partagées une variable également partagée de verrou que l'on appellera :"Bit Verrou-père","Bit Verrou-mère"et"Bit Verrou enfant". Ces variables sont initialisées par convention à la valeur"0". On obtient par exemple le tableau suivant représentant les valeurs initiales à un instant donné :

Figure img00130001
According to a first characteristic of the method of the invention, each shared resource is associated with a variable also shared lock that will be called: "Father Lock Bit", "Mother Lock Bit" and "Child Lock Bit". These variables are initialized by convention to the value "0". For example, the following table represents the initial values at a given moment:
Figure img00130001

<tb>
<tb> Bit <SEP> Verrou-père <SEP> = <SEP> 0 <SEP> associé <SEP> à.... <SEP> Compte-père <SEP> = <SEP> 50
<tb> Bit <SEP> Verrou~mère <SEP> = <SEP> 0 <SEP> associé <SEP> à.... <SEP> Compte~mère <SEP> = <SEP> 40
<tb> Bit <SEP> Verrouenfant <SEP> = <SEP> 0 <SEP> associé <SEP> à.... <SEP> Compteenfant <SEP> = <SEP> 10
<tb>
<Tb>
<tb> Bit <SEP> Parent Lock <SEP> = <SEP> 0 <SEP> Associate <SEP> to .... <SEP> Parent Account <SEP> = <SEP> 50
<tb> Bit <SEP> Parent Lock <SEP> = <SEP> 0 <SEP> Associate <SEP> to .... <SEP> Parent Account <SEP> = <SEP> 40
<tb> Bit <SEP> Child Lock <SEP> = <SEP> 0 <SEP> Associated <SEP> to .... <SEP> Childrens <SEP> = <SEP> 10
<Tb>

Si une application veut effectuer un débit sur le compte de la mère, par exemple répercuter l'achat d'un livre de prix égal à une variable appelée "PRIX-LIVRE", le code correspondant peut être le suivant :

Figure img00130002

If (P (Verrou-mère) == false) //ICI, le compte de la mère est en If an application wants to debit the mother's account, for example pass the purchase of a price book equal to a variable called "PRICE-BOOK", the corresponding code can be the following:
Figure img00130002

If (P (Mother Lock) == false) // HERE, the mother's account is in

<Desc/Clms Page number 14><Desc / Clms Page number 14>

return error. RESSOURCE~USED ; Il cours d'utilisation par une autre entité } else {
COMPTE~mère = Compte~mère - PRIX+~LIVRE ;
V (verrou)

Figure img00140001

} P et V sont les primitives conformes au procédé de l'invention,"//"indique un commentaire,"If" ("si") est une instruction qui teste la valeur du bit "Verrou~mère" associé à la ressource partagée "Compte~mère" (étape 702a) par l'intermédiaire de la primitive P et"return error. RESSOURCE-USED" indique que la ressource est en cours d'utilisation par un autre processus comme l'indique le commentaire. Dans le cas contraire ("else", toujours à l'étape 702a et sous la commande de la primitive P), l'accès est autorisé et le verrou bit "Verrou~mère" positionné à"1". L'opération de débit est effectuée sous la commande du processus appelant, à savoir la somme "PRIX~LIVRE" est débitée du compte "Compte~mère", dont le montant disponible devient :"Compte-mère- PRIX-LIVRE". Ensuite, la ressource partagée "Compte~mère" est libérée. Sous la commande de la primitive V, ! e bit"Verroumère"est ré-initiaiisé à"O". return error. RESOURCE ~ USED; It's being used by another entity} else {
ACCOUNT ~ mother = Mother account ~ PRICE + ~ BOOK;
V (lock)
Figure img00140001

} P and V are the primitives according to the method of the invention, "//" indicates a comment, "If"("if") is an instruction that tests the value of the "Mother lock" bit associated with the shared resource "Mother account" (step 702a) via the primitive P and "return error." RESOURCE-USED indicates that the resource is in use by another process as indicated by the comment. Otherwise ("else", always in step 702a and under the control of the primitive P), access is allowed and the bit lock "mother lock" is set to "1". The debit transaction is carried out under the control of the calling process, ie the amount "PRICE ~ BOOK" is debited from the account "Mother account", the available amount becomes: "Mother-account-PRICE-BOOK". Then the shared resource "Mother Account" is released. Under the command of the primitive V,! e "Lock" bit is re-initialized to "O".

Le code ci-dessus peut s'écrire de façon plus compacte en utilisant une instruction dite de boucle"while" (qui impose de continuer tant qu'une condition prescrite n'est pas satisfaite). Un tel code est par exemple le suivant : while (P (Verrou-mère) == false) { Il DO NOTHING Il Dès que la ressource se libère, on la réserve }
Compte~mère = Compte~mère - PRIX~LIVRE ;
V (verrou) ; L'expression"//Dès que la ressource se libère, on la réserve" est un simple commentaire et"//DO NOTHING"indique que le processus est mis en
The code above can be written in a more compact way by using a so-called "while" statement (which requires continuing until a prescribed condition is satisfied). Such a code is for example the following: while (P (Mother Lock) == false) {It DO NOTHING It As soon as the resource is released, we reserve it}
Parent account = Mother account - PRICE ~ BOOK;
V (lock); The expression "// as soon as the resource is released, we reserve it" is a simple comment and "// DO NOTHING" indicates that the process is put into

<Desc/Clms Page number 15><Desc / Clms Page number 15>

attente ("ne rien faire") tant que la ressource"Comptemère"est uti ! isée par un autre processus. Les primitives P et V effectuent les mêmes tâches que précédemment.  wait ("do nothing") as long as the resource "Comptemère" is used! another process. The primitives P and V perform the same tasks as before.

Un mécanisme identique, ou pour le moins similaire, est mis en oeuvre si un processus quelconque pose une requête d'accès aux autres comptes, c'est-àdire aux autres ressources partagées,"Comptepère"et"Compteenfant", respectivement. On utilise pour ce faire les bits de verrou associés correspondants :"BitVerroupère"et"BitVerrouenfant".  An identical, or at least similar, mechanism is implemented if any process makes a request to access other accounts, ie other shared resources, "Account" and "Accountant", respectively. The corresponding associated lock bits are used for this purpose: "BitVerrouper" and "BitVerrouenfant".

La solution qui vient d'être décrite est du type de ce qui a été appelé "logiciel".  The solution that has just been described is of the type of what has been called "software".

A titre d'alternative, comme également rappelé dans le préambule de la présente description, on peut mettre en oeuvre une solution de type"matériel"en remplaçant les primitives par des microinstructions dites"machine", c'est-à-dire écrites en assembleur, non interruptibles par essence. Cependant, comme il a été signalé, cette solution doit être réservée à des systèmes dont le jeu de microinstructions contient de telles primitives.  As an alternative, as also recalled in the preamble of the present description, it is possible to implement a solution of "hardware" type by replacing the primitives with so-called "machine" microinstructions, that is to say written in Assembler, non-interruptible by essence. However, as has been pointed out, this solution must be reserved for systems whose microinstruction set contains such primitives.

Bien que, jusqu'à présent, seuls deux processus concurrents aient été considérés, pour des raisons de simplification de la description, il va de soi que des processus en nombre plus grand que deux peuvent poser des requêtes d'accès à une même ressource partagée Rx. Si cette dernière ressource est disponible, le premier processus demandeur verra sa demande satisfaite. Les processus suivants seront rejetés selon le mécanisme précédemment décrit ou mis en attente. Des dispositions qui sortent du cadre strict de l'invention peuvent être adoptées pour ensuite ré-activer un des processus mis en attente, par exemple selon un mécanisme du type"premier entré-premier servi" (ou"FIFO" selon la terminologie anglo-saxonne) ou encore en tenant compte de niveaux de priorités associés aux processus, si plusieurs processus sont en attente d'être servis.  Although, until now, only two competing processes have been considered, for the sake of simplification of the description, it goes without saying that processes larger than two can request access to the same shared resource Rx. If this last resource is available, the first requesting process will see its request satisfied. The following processes will be rejected according to the mechanism previously described or put on hold. Provisions that fall outside the strict scope of the invention may be adopted to then re-activate one of the processes put on hold, for example according to a "first-in, first-served" (or "FIFO") mechanism according to the English terminology. Saxon) or taking into account the priority levels associated with the processes, if several processes are waiting to be served.

De même, dans un mode de réalisation supplémentaire, on peut aussi prévoir que les routines d'exécution des primitives P et V permettent de réserver simultanément l'accès de plusieurs ressources partagées, ce pour éviter un blocage ou"deadlock"entre plusieurs processus.  Similarly, in a further embodiment, it is also possible that the execution routines of the primitives P and V can simultaneously reserve the access of several shared resources, to avoid a deadlock or deadlock between several processes.

<Desc/Clms Page number 16> <Desc / Clms Page number 16>

En effet, on va considérer que le processus P1 réserve une ressource partagée Ri et que le processus P2 réserve une ressource partagée R2. On considère également que, avant que Ri et R2 ne soient libérées, P1 ait besoin de R2 et P2 ait besoin de R1. Il s'ensuit que, dans cette situation, les deux processus P1 et P2 sont bloqués en attendant chacun une ressource partagée qui ne pourra pas être débloquée. Dans le cadre du procédé de l'invention, une solution à ce problème consiste à prévoir que la routine d'exécution de la primitive P puisse réserver plus d'une ressource partagée à la fois. Pour ce faire, elle teste les différents bits de verrou des ressources partagées à réserver et selon le résultat des tests les réserve en positionnant ces bits à"1", ou de façon générale à une valeur différente de la valeur d'initialisation.  Indeed, it will be considered that the process P1 reserves a shared resource Ri and that the process P2 reserves a shared resource R2. It is also considered that before R1 and R2 are released, P1 needs R2 and P2 needs R1. It follows that in this situation, the two processes P1 and P2 are blocked, each waiting for a shared resource that can not be unblocked. In the context of the method of the invention, one solution to this problem consists in providing that the execution routine of the primitive P can reserve more than one shared resource at a time. To do this, it tests the different lock bits of the shared resources to be reserved and according to the test result reserves them by setting these bits to "1", or generally to a value different from the initialization value.

Le code de la routine de la primitive P devra être légèrement modifié pour supporter ce mode de fonctionnement. Toutefois, cette modification n'entraîne pas une augmentation significative de la complexité globale du procédé.  The routine code of the primitive P will have to be slightly modified to support this mode of operation. However, this modification does not lead to a significant increase in the overall complexity of the process.

Dans une mode de réalisation supplémentaire encore, le procédé selon l'invention permet aussi d'effectuer un certain nombre de contrôles sur les droits d'accès aux ressources à l'intérieur de la routine d'exécution de la primitive P. Il suffit de vérifier que le processus appelant cette routine ait des droits d'accès appropriés pour demander à manipuler la ressource partagée demandée. Ceci peut être réalisé, de façon bien connue en soi, par consultation d'un fichier ou d'une base de données dite de sécurité, avantageusement enregistrée dans une zone sécurisée de la mémoire fixe de la carte à puce 1 (figure 1) et fixant les conditions d'accès aux ressources partagées.  In yet another embodiment, the method according to the invention also makes it possible to carry out a certain number of checks on the access rights to the resources within the execution routine of the primitive P. It is sufficient to verify that the process calling this routine has appropriate access rights to request manipulation of the requested shared resource. This can be achieved, in a manner well known per se, by consulting a file or a security database, advantageously registered in a secure area of the fixed memory of the smart card 1 (FIG. 1) and setting conditions for access to shared resources.

A la lecture de ce qui précède, on constate aisément que l'invention atteint bien les buts qu'elle s'est fixés.  From the foregoing, it is easy to see that the invention achieves the goals it has set for itself.

L'invention concerne un procédé de contrôle d'accès à une ressource partagée Rx par un processus P1 dans une carte à puce 1. Deux processus P1, P2 ou plus peuvent poser une requête d'accès à une ressource partagée Rx en même temps. Selon l'invention, on met à la disposition de chaque ressource partagée Rx une position de mémoire 4x stockant un bit dit de verrou, mis à l'état "0"dans une phase initiale. On réserve aussi une position de mémoire 4y contenant une valeur de vérification (checksum) permettant de préserver l'intégrité  The invention relates to a method for controlling access to a shared resource Rx by a process P1 in a smart card 1. Two processes P1, P2 or more can request access to a shared resource Rx at the same time. According to the invention, provision is made to each shared resource Rx a 4x memory position storing a so-called lock bit, set to "0" in an initial phase. It also reserves a memory position 4y containing a checksum value to preserve the integrity

<Desc/Clms Page number 17><Desc / Clms Page number 17>

des zones mémoire 4x. Chaque ressource partagée Rx est associée à une première primitive dite de réservation de ressource 5-P qui teste l'état du bit, et lorsqu'il est à"0", le positionne à "1" et accorde l'accès. Dans le cas contraire, elle interdit l'accès. Chaque ressource partagée Rx est aussi associée à une seconde primitive dite de libération de ressource 6-V qui remet le bit à "0" lors de la libération de cette ressource. Les deux primitives ne sont pas interruptibles. Avant ou après toute modification d'au moins un bit "verrou", la valeur de vérification 4y est vérifiée ou mise à jour.  4x memory areas. Each shared resource Rx is associated with a first resource reservation primitive 5-P which tests the state of the bit, and when it is at "0", sets it to "1" and grants access. Otherwise, it prohibits access. Each shared resource Rx is also associated with a second so-called 6-V resource release primitive which sets the bit to "0" when this resource is released. Both primitives are not interruptible. Before or after any modification of at least one "lock" bit, the verification value 4y is checked or updated.

L'invention concerne également une carte à puce 1 mettant en oeuvre) le procédé.  The invention also relates to a smart card 1 implementing the method.

Ainsi l'invention permet notamment de contrôler de façon fiable l'accès à une ressource partagée et d'interdire l'accès à un deuxième processus (ou à plusieurs) tant qu'un premier processus n'a pas libéré entièrement cette ressource.  Thus, the invention notably makes it possible to reliably control access to a shared resource and to prohibit access to a second process (or several) as long as a first process has not fully released this resource.

Le procédé convient donc parfaitement aux applications mettant en oeuvre des cartes à puce.  The method is therefore very suitable for applications using smart cards.

Il doit être clair cependant que l'invention n'est pas limitée aux seuls exemples de réalisations explicitement décrits, notamment en relation avec les figures 1 à 4.  It should be clear, however, that the invention is not limited to the only examples of embodiments explicitly described, particularly in relation to FIGS. 1 to 4.

Elle n'est pas non plus limitée, comme il a été indiqué, seulement à des cartes à puce, mais de façon plus générale à tout système embarqué, qui par nature ne dispose que de ressources informatiques limitées.  Nor is it limited, as has been indicated, only to smart cards, but more generally to any embedded system, which by nature has only limited computing resources.

La présente invention porte également sur le produit programme d'ordinateur chargeable directement dans la mémoire du système embarqué, comprenant des portions de code de logiciel pour l'exécution des étapes du procédé précédemment décrit lorsque ledit programme est exécuté dans le système embarqué. The present invention also relates to the computer program product directly loadable in the onboard system memory, comprising portions of software code for executing the steps of the previously described method when said program is executed in the onboard system.

Claims (14)

REVENDICATIONS 1. Procédé de contrôle d'accès à des ressources partagées (Rx) dans un système informatique embarqué comportant au moins des moyens de mémoire et des moyens de calcul sous la commande d'un système d'exploitation, ledit système étant multiprocessus, caractérisé en ce qu'il comprend les étapes suivantes lorsqu'un processus pose une requête d'accès à une desdites ressources partagées (Rx) : - une étape de test d'une donnée partagée appelée verrou associée à chacune desdites ressources partagées, la valeur de verrou indiquant la disponibilité ou l'indisponibilité de la ressource concernée, par une entité (P) dite de réservation de ressource permettant de refuser l'accès à la ressource partagée concernée en cas d'indisponibilité de ladite ressource ; - une étape de réservation de la ressource partagée concernée si le test de l'étape précédente indique la disponibilité de ladite ressource, par l'entité (P) de réservation de ressource comprenant la modification du verrou pour lui donner une valeur correspondant à l'indisponibilité de la ressource partagée, lesdites étapes de test et de positionnement de réservation se déroulant à la suite l'une de l'autre sans interruption.  1. A method for controlling access to shared resources (Rx) in an on-board computer system comprising at least memory means and calculation means under the control of an operating system, said system being multiprocess, characterized in it comprises the following steps when a process requests access to one of said shared resources (Rx): a step of testing shared data called a lock associated with each of said shared resources, the lock value; indicating the availability or unavailability of the resource concerned, by a resource reservation entity (P) for refusing access to the shared resource concerned in the event of unavailability of said resource; a step of reserving the shared resource concerned if the test of the preceding step indicates the availability of said resource, by the resource reservation entity (P) comprising modifying the lock to give it a value corresponding to the unavailability of the shared resource, said test and reservation positioning steps taking place one after the other without interruption. 2. Procédé selon la revendication 1, caractérisé en ce qu'il comprend, lorsque ledit processus libère la ressource réservée à l'étape précédente, une étape de libération de la ressource partagée concernée par une entité (V) dite de libération de ressource comprenant la modification du verrou pour lui donner une valeur correspondant à la disponibilité de la ressource partagée, ladite étape de positionnement de libération étant non interruptible. 2. Method according to claim 1, characterized in that it comprises, when said process releases the reserved resource in the previous step, a step of releasing the shared resource concerned by a so-called resource release entity (V) comprising changing the lock to give it a value corresponding to the availability of the shared resource, said release positioning step being uninterruptible. 3. Procédé selon l'une des revendications 1 ou 2, caractérisé en ce qu'il comprend avant les étapes de test et de positionnement, une étape de contrôle d'une valeur de vérification (4y) stockée dans des premiers moyens de stockage (4x) permettant de vérifier l'intégrité d'une zone mémoire (4x) contenant le verrou et de refuser l'accès à la ressource partagée concernée suivant le résultat du 3. Method according to one of claims 1 or 2, characterized in that it comprises before the test and positioning steps, a step of controlling a verification value (4y) stored in first storage means ( 4x) to check the integrity of a memory zone (4x) containing the lock and deny access to the shared resource concerned according to the result of the <Desc/Clms Page number 19><Desc / Clms Page number 19> contrôle, et en ce qu'il comprend une étape de mise à jour de la valeur de vérification (4y) dans le cas d'une modification du verrou lors de la réservation et de la libération de la ressource partagée concernée.  control, and in that it comprises a step of updating the verification value (4y) in the case of a modification of the lock during the reservation and the release of the shared resource concerned. 4. Procédé selon les revendications 1 et 2, caractérisé en ce que lesdites première (P) et seconde (V) entités sont constituées par des instructions dudit système embarqué (1) du type dit"machine", lesdites instructions machines étant non interruptibles. 4. Method according to claims 1 and 2, characterized in that said first (P) and second (V) entities are constituted by instructions of said embedded system (1) of the type called "machine", said machine instructions being uninterruptible. 5. Procédé selon les revendications 1 et 2, caractérisé en ce que lesdites première (P) et seconde (V) entités sont constituées à base de fonctions logicielles de type dit"primitive système", lesdites primitives posant des appels non interruptibles au dit système d'exploitation. 5. Method according to claims 1 and 2, characterized in that said first (P) and second (V) entities are formed based on software functions of type called "system primitive", said primitives making uninterruptible calls to said system operating. 6. Procédé selon la revendication 5, caractérisé en ce que ladite donnée partagée ("Verrou") est constituée d'un bit pouvant prendre les valeurs logiques "0" et "1", et en ce que ladite valeur initiale est la valeur logique "0". 6. Method according to claim 5, characterized in that said shared data ("lock") consists of a bit that can take the logical values "0" and "1", and in that said initial value is the logical value. "0". 7. Procédé selon l'une des revendications 1 à 6, caractérisé en ce que, pendant lesdites étapes de test et de réservation, chacun desdits processus posant une requête d'accès, sous la commande de ladite première entité (P), réserve plusieurs ressources partagées (Rx) en positionnant le verrou associé à chacune desdites ressources partagées à réserver (Rx) à une valeur correspondant à l'indisponibilité desdites ressources. 7. Method according to one of claims 1 to 6, characterized in that, during said test and reservation steps, each of said processes making an access request, under the control of said first entity (P), reserves several shared resources (Rx) by setting the lock associated with each of said shared resources to be reserved (Rx) to a value corresponding to the unavailability of said resources. 8. Procédé selon l'une des revendications 1 à 7, caractérisé en ce que ladite première entité (P) contrôle les droits d'accès du processus posant une requête d'accès à ladite ressource partagée (Rx) par comparaison entre des droits associés au dit processus et des données dites de sécurité, fixant les conditions d'accès à ladite ressource partagée (Rx), stockées dans une zone sécurisée desdits moyens de mémoire (12). 8. Method according to one of claims 1 to 7, characterized in that said first entity (P) controls the access rights of the process requesting access to said shared resource (Rx) by comparing rights associated said process and so-called security data, setting the conditions of access to said shared resource (Rx), stored in a secure area of said memory means (12). 9. Système embarqué comportant au moins des moyens (11,12) de mémoire et des moyens de calcul sous la commande d'un système d'exploitation, ledit système embarqué étant multiprocessus et comportant des ressources partagées, 9. Embedded system comprising at least memory means (11, 12) and calculation means under the control of an operating system, said embedded system being multiprocess and including shared resources, <Desc/Clms Page number 20> <Desc / Clms Page number 20> caractérisé en ce qu'il comprend, associés à chacune desdites ressources partagées (Rx), des premiers moyens de stockage (4x) d'une donnée partagée, appelée "verrou", associée à chacune desdites ressources partagées (Rx), susceptible de prendre des premier et deuxième états déterminés (Rx) représentatifs de la disponibilité desdites ressources partagées, et en ce que lesdits moyens de mémoire (11-12) stockent une première entité (P) dite de réservation de ressource destinée à coopérer avec lesdits premiers moyens de stockage (4x) de manière à tester le verrou, et si la ressource concernée est disponible à réserver ladite ressource en modifiant le verrou.  characterized in that it comprises, associated with each of said shared resources (Rx), first storage means (4x) of shared data, called "lock", associated with each of said shared resources (Rx), likely to take first and second determined states (Rx) representative of the availability of said shared resources, and in that said memory means (11-12) store a first resource reservation entity (P) intended to cooperate with said first resource means storage (4x) so as to test the lock, and if the resource concerned is available to reserve said resource by modifying the lock.
Figure img00200001
Figure img00200001
10. Système selon la revendication 9, caractérisé en ce que lesdits moyens de mémoire (11-12) stockent une seconde entité (V) dite de libération de ressource destinée à coopérer avec lesdits premiers moyens de stockage (4x) de manière à modifier le verrou lorsque la ressource concernée est libérée. 10. System according to claim 9, characterized in that said memory means (11-12) store a second entity (V) said release of resource for cooperating with said first storage means (4x) so as to modify the lock when the resource is released. 11. Système selon l'une des revendications 9 ou 10, caractérisé en ce qu'il comprend, associés à la zone mémoire (4) contenant lesdits premiers moyens de stockage (4x), des seconds moyens de stockage (4y) de valeurs de vérification (checksum) permettant de contrôler l'intégrité de la zone (4),11. System according to one of claims 9 or 10, characterized in that it comprises, associated with the memory zone (4) containing said first storage means (4x), second storage means (4y) of values of check (checksum) to control the integrity of the zone (4), 12. Système selon l'une des revendications 9 à 11, caractérisé en ce qu'il est constitué par une carte à puce (1). 12. System according to one of claims 9 to 11, characterized in that it consists of a smart card (1). 13. Système embarqué comportant au moins des moyens (11, 12) de mémoire et des moyens de calcul sous la commande d'un système d'exploitation, ledit système embarqué étant multiprocessus et comportant des ressources partagées, caractérisé en ce qu'il consiste à mettre en oeuvre le procédé selon l'une des revendications 1 à 8. 13. Embedded system comprising at least memory means (11, 12) and calculation means under the control of an operating system, said embedded system being multiprocess and including shared resources, characterized in that it consists to implement the method according to one of claims 1 to 8. 14. Programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé selon l'une des revendications 1, 2, 3 ou 5 lorsque ledit programme est exécuté sur un système embarqué.A computer program comprising program code instructions for performing the steps of the method according to one of claims 1, 2, 3 or 5 when said program is executed on an embedded system.
FR0112143A 2001-09-20 2001-09-20 Controlling access to shared resources, especially on a chip card, using a locking flag that is set and reset using two different primitive systems, thus ensuring that a resource cannot be accessed simultaneously by two processes Pending FR2829847A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR0112143A FR2829847A1 (en) 2001-09-20 2001-09-20 Controlling access to shared resources, especially on a chip card, using a locking flag that is set and reset using two different primitive systems, thus ensuring that a resource cannot be accessed simultaneously by two processes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0112143A FR2829847A1 (en) 2001-09-20 2001-09-20 Controlling access to shared resources, especially on a chip card, using a locking flag that is set and reset using two different primitive systems, thus ensuring that a resource cannot be accessed simultaneously by two processes

Publications (1)

Publication Number Publication Date
FR2829847A1 true FR2829847A1 (en) 2003-03-21

Family

ID=8867455

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0112143A Pending FR2829847A1 (en) 2001-09-20 2001-09-20 Controlling access to shared resources, especially on a chip card, using a locking flag that is set and reset using two different primitive systems, thus ensuring that a resource cannot be accessed simultaneously by two processes

Country Status (1)

Country Link
FR (1) FR2829847A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102007055654A1 (en) * 2007-11-21 2009-05-28 Giesecke & Devrient Gmbh Method for registering data in non-volatile memory of microprocessor-based portable data medium, particularly chip card, involves assigning data at data medium in blocks, which is written in non-volatile memory
EP3663953A1 (en) * 2018-12-05 2020-06-10 Thales Method and device for access control to a resource shared between software tasks in a predetermined implementation context
CN111352762A (en) * 2020-03-04 2020-06-30 恒生电子股份有限公司 Process access determining method and related device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2805073A1 (en) * 2000-02-11 2001-08-17 Gemplus Card Int SECURE REAL TIME WRITING FOR NON-VOLATILE MEMORY

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2805073A1 (en) * 2000-02-11 2001-08-17 Gemplus Card Int SECURE REAL TIME WRITING FOR NON-VOLATILE MEMORY

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
"EWD Manuscripts 0-99", INTERNET DOCUMENT, XP002203409, Retrieved from the Internet <URL:http://www.cs.utexas.edu/users/EWD/index00xx.html> [retrieved on 20020613] *
"EWD-numbered typescripts and manuscripts", INTERNET DOCUMENT, XP002203410, Retrieved from the Internet <URL:http://www.cs.utexas.edu/users/EWD/indexEWDnums.html> [retrieved on 20020613] *
EDSGER W. DIJKSTRA: "Hierarchical Ordering of Sequential Processes", ACTA INFORMATICA, SPRINGER VERLAG, DE, vol. 2, no. 1, 1971, pages 115 - 138, XP008002735, ISSN: 0001-5903 *
EDSGER W. DIJKSTRA: "My recollections of operating system design", SERIAL DOCUMENT, no. EWD1303, October 2000 (2000-10-01) - April 2001 (2001-04-01), Austin, Texas, États-Unis d'Amérique, XP002203407, Retrieved from the Internet <URL:http://www.cs.utexas.edu/users/EWD/ewd13xx/EWD1303.PDF> [retrieved on 20020624] *
EDSGER W. DIJKSTRA: "Over seinpalen", SERIAL DOCUMENT, no. EWD74, 1962 - 1964, XP002203408, Retrieved from the Internet <URL:http://www.cs.utexas.edu/users/EWD/ewd00xx/EWD74.PDF> [retrieved on 20020613] *
SADUN ANIK, WEN-MEI W. HWU: "Performance Implications of Synchronization Support for Parallel Fortran Programs", JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTING, ACADEMIC PRESS, DULUTH, MN, US, vol. 22, no. 2, 1 August 1994 (1994-08-01), pages 202 - 215, XP000460619, ISSN: 0743-7315 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102007055654A1 (en) * 2007-11-21 2009-05-28 Giesecke & Devrient Gmbh Method for registering data in non-volatile memory of microprocessor-based portable data medium, particularly chip card, involves assigning data at data medium in blocks, which is written in non-volatile memory
EP3663953A1 (en) * 2018-12-05 2020-06-10 Thales Method and device for access control to a resource shared between software tasks in a predetermined implementation context
FR3089656A1 (en) * 2018-12-05 2020-06-12 Thales METHOD AND DEVICE FOR CONTROLLING ACCESS TO A RESOURCE SHARED BETWEEN SOFTWARE TASKS EXECUTED IN A PREDETERMINED APPLICATION CONTEXT
CN111352762A (en) * 2020-03-04 2020-06-30 恒生电子股份有限公司 Process access determining method and related device

Similar Documents

Publication Publication Date Title
EP0733245B1 (en) Memory card and operation method
WO2006000531A1 (en) Method of managing a multi-application smart card
FR2686171A1 (en) MEMORY MEMORY CARD FOR MICROCOMPUTER WITH FACILITIES FOR EXECUTING INTERNAL PROGRAMS.
WO2007068706A1 (en) Method for making secure execution of an intermediate language software code in a portable appliance
FR3103584A1 (en) Method for managing the debugging of a system on chip forming for example a microcontroller, and corresponding system on chip
EP2417523B1 (en) Method and device enabling the execution of heterogeneous transaction-oriented components
FR2823330A1 (en) Loading of application code data into a programmable computer chip memory or similar device, uses data designed to be managed in two modes the first of which is provisory
FR2829847A1 (en) Controlling access to shared resources, especially on a chip card, using a locking flag that is set and reset using two different primitive systems, thus ensuring that a resource cannot be accessed simultaneously by two processes
EP1141903B1 (en) Device and method for initialising an applicative programme of an integrated circuit card
EP2375358A1 (en) Events counter in a system adapted for the javacard language
FR3057081B1 (en) PROCESSOR COMPRISING A PLURALITY OF CALCULATING HEARTS
FR2814557A1 (en) PROTECTION AGAINST THE ABUSE OF AN INSTRUCTION IN A MEMORY
CA3143068A1 (en) Service application system for payment terminals
CA2043829C (en) Dialogue method for the processors of a system, means for implementing said method and use of said means for distributing processes between the processors
WO2003100607A2 (en) Code verification method for limited resource microcircuits
WO2000051087A1 (en) Device for secure access to a chip card applications
FR2854261A1 (en) Software application executing method for personal computer, involves detecting coupling of chip card with personal computer using software bootstrap program, and loading and executing client program in computer
EP1129430B2 (en) Method and device for controlling a portable object life cycle, in particular a smart card
FR2829848A1 (en) Method for controlling access to shared resources in an embedded system, especially a chip card, whereby a counter, stack and control routines are used to control resource access
WO1999000774A9 (en) Security module comprising means generating links between main files and auxiliary files
EP1250645B1 (en) Peripheral management system in an integrated circuit
FR2812101A1 (en) Protocol for exchange of messages between applications embedded in a multi-function smart card, uses transmission of calls from master application to cause operating system to load and execute slave application
EP2115656B1 (en) Method for modifying secrets in a cryptographic module, particularly in a non-protected environment
FR2890211A1 (en) Cyclic data file commit-rollback method for chip card, involves storing, in cyclic index files, respective indices of cyclic data files, and storing, in index registers, current index of index files
FR2745100A1 (en) FAULT TRANSPARENCY COMPUTER SYSTEM FOR USER APPLICATIONS

Legal Events

Date Code Title Description
TP Transmission of property