FR3068149B1 - Procede de surveillance de l’espace libre d’une pile memoire - Google Patents

Procede de surveillance de l’espace libre d’une pile memoire Download PDF

Info

Publication number
FR3068149B1
FR3068149B1 FR1755836A FR1755836A FR3068149B1 FR 3068149 B1 FR3068149 B1 FR 3068149B1 FR 1755836 A FR1755836 A FR 1755836A FR 1755836 A FR1755836 A FR 1755836A FR 3068149 B1 FR3068149 B1 FR 3068149B1
Authority
FR
France
Prior art keywords
address
stack
key
keys
monitoring
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.)
Active
Application number
FR1755836A
Other languages
English (en)
Other versions
FR3068149A1 (fr
Inventor
Jacques Delaire
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.)
Continental Automotive GmbH
Continental Automotive France SAS
Original Assignee
Continental Automotive GmbH
Continental Automotive France SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Continental Automotive GmbH, Continental Automotive France SAS filed Critical Continental Automotive GmbH
Priority to FR1755836A priority Critical patent/FR3068149B1/fr
Priority to US16/647,760 priority patent/US11544171B2/en
Priority to PCT/FR2018/051548 priority patent/WO2019002746A1/fr
Publication of FR3068149A1 publication Critical patent/FR3068149A1/fr
Application granted granted Critical
Publication of FR3068149B1 publication Critical patent/FR3068149B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3013Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems

Abstract

La présente invention concerne un procédé de surveillance de l'espace libre d'une pile d'un microcontrôleur pendant l'exécution d'un processus utilisant des espaces de ladite pile depuis une adresse de début à une adresse de fin de la pile, dans lequel ledit procédé est caractérisé en ce qu'il comprend : • dans une étape préalable, l'écriture de N clés dans la pile à N adresses de ladite pile, l'espace mémoire entre deux clés consécutives étant décroissant dans une direction allant de l'adresse de début à l'adresse de fin de la pile ; • et en ce que dans une étape d'exécution du processus, la sauvegarde de l'adresse de la clé courante, correspondant à l'adresse de la clé existante, parmi les N clés, la plus proche de l'adresse de début de pile.

Description

L’invention concerne le domaine de la gestion d’une pile d’un microprocesseur.
Elle a plus particulièrement pour objet un procédé de surveillance de l’espace libre d’une pile d’un microcontrôleur pendant l’exécution d’un processus.
Dans le cas de systèmes embarqués, temps réel, ceux-ci doivent répondre à des contraintes de conception permettant de répondre aux besoins, tout en limitant les surcoûts. Ainsi, ces systèmes ont souvent un espace mémoire limité et des puissances de calculs optimisées pour l’exécution de tâches prédéfinies. Généralement, ces systèmes répondent aussi à des contraintes de sûreté de fonctionnement, étant dits critiques, pour lesquelles ils ne doivent pas subir de défaillance, c’est-à-dire toujours permettre d’obtenir des résultats justes, pertinents, et ce dans les délais attendus.
La plupart des microprocesseurs de systèmes embarqués gèrent nativement une pile par processus (c’est-à-dire un programme en cours d’exécution). Cette dernière correspond à une zone d’une mémoire volatile, ladite zone étant limitée en taille, habituellement déterminée au début du programme. Une pile est allouée à l’exécution d’un processus et sert particulièrement à gérer les appels de sous-programmes, le passage des paramètres et les variables. La taille de la pile d'exécution dépend de nombreux facteurs, incluant le langage de programmation, l’architecture du processeur, la quantité de mémoire vive (ou RAM pour « Random Access Memory >> en langue anglaise) disponible, etc.
Un dépassement de pile (en anglais, « stack overflow >>) est une anomalie de fonctionnement causée par un processus qui, lors de l'écriture dans une pile, écrit à l'extérieur de l'espace alloué à la pile, écrasant ainsi des informations nécessaires au processus. Il en résulte généralement une interruption du programme.
Pour éviter de telles situations problématiques, lors de la conception d’un système embarqué, on utilise de façon connue, des calculs théoriques évaluant la quantité de mémoire consommée dans les cas d’exécutions de processus correspondant à des scénarios théoriques limites. Ces scénarios amènent le plus souvent à largement surestimer la taille de pile nécessaire, entraînant un surcout de conception.
On connaît également des méthodes de détection de capacité d’une pile 100 comme illustrée en figure 1. Dans de telles méthodes, une clé 110/120 (valeur numérique, chaînes de caractères) est initialisée à chaque extrémité de la pile. Au cours de l’exécution d’un processus utilisant la pile 100, il est déterminé si les clés 110 et/ou 120 ont été atteintes en vérifiant que les clefs sont toujours présentes à chaque extrémité de la pile. Dans le cas contraire, le processus est réinitialisé pour récupérer un état d’exécution du processus connu et sûr, afin d’éviter des comportements inattendus du système. Cependant une telle méthode perturbe l’exécution en cours du processus.
Il existe donc un besoin de proposer un procédé permettant d’estimer la taille optimale d’une pile de façon précise, peu consommatrice de ressources processeur, pour permettre une gestion optimale des ressources mémoires, notamment dans le cas de systèmes embarqués ou lesdites ressources sont particulièrement limitées.
La présente invention se rapporte selon un premier aspect à un procédé de surveillance de l’espace libre d’une pile d’un microcontrôleur, dans lequel ledit procédé comprend :
• dans une étape préalable, l’écriture de N clés dans la pile à N adresses de ladite pile, l’espace mémoire entre deux clés consécutives étant décroissant dans une direction allant de l’adresse de début à l’adresse de fin de la pile ;
• dans une étape d’exécution du processus, la sauvegarde de l’adresse de la clé courante, correspondant à l’adresse de la clé existante, parmi les N clés, la plus proche de l’adresse de début de pile.
Ledit procédé permet donc de suivre l’occupation de la pile, de façon optimale, le nombre de clés étant plus important en fin de pile qu’en début. De plus, ce procédé de surveillance ne consomme pas plus de ressources processeur que le procédé standard décrit ci-dessus.
Avantageusement, mais facultativement, le procédé selon l’invention peut en outre comprendre au moins une des caractéristiques suivantes :
• le procédé comporte l’écriture de deux clés à chaque extrémité de la pile ;
• depuis une adresse prédéfinie d’une première clé A(1 ) l’adresse de la i-ième clé, i variant de 2 à N, est égale à la partie entière de x (SS - (A(l) - SSA))^ où SS est égal à la taille de la pile, SSA l’adresse de départ de la pile.
Le procédé comprend une étape consistant à comparer l’adresse de la clé courante à l’adresse d’une clé maximum correspondant à une adresse de la pile, et dans le cas où l’adresse de la clé courante est plus proche de l’adresse de fin, que l’adresse de la clé maximum, l’index de ladite clé maximum prend pour valeur l’index de la clé courante ;
• l’index de la clé maximum est stockée dans une zone mémoire, non volatile ;
• les adresses des clés sont stockées dans un tableau de données ; et • un index du tableau de données correspond à une adresse de clé.
Selon un deuxième aspect, l’invention concerne un produit programme d’ordinateur destiné à être exécuté par des moyens de traitement d’une unité de calcul, ladite unité de calcul comprenant en outre une mémoire, et configuré pour la mise en oeuvre du procédé tel que défini dans les caractéristiques précédentes.
D’autres caractéristiques et avantages apparaîtront à la lecture de la description qui va suivre d’un mode de réalisation. Cette description sera donnée en référence aux dessins annexés dans lesquels :
- la figure 1, déjà présentée, illustre schématiquement une pile d’un microprocesseur selon un mode de mise en oeuvre de l’art antérieur ;
- la figure 2 illustre schématiquement une pile d’un microprocesseur selon un mode de mise en oeuvre de l’invention ; et
- la figure 3 illustre schématiquement un procédé de contrôle de l’espace libre d’une pile d’un microcontrôleur pendant l’exécution d’un processus selon un mode de réalisation de l’invention.
La figure 2 illustre une pile 200 d’un microcontrôleur telle que mise en oeuvre selon un mode de réalisation de l’invention. La pile 200 est définie dans une mémoire vive M par une adresse de départ 211 et une adresse de fin 212 de la pile 200.
Lors de l’exécution d’un processus utilisant la pile 200, un procédé de surveillance de l’espace libre de ladite pile 200 permet de surveiller l’utilisation de l’espace mémoire.
En référence à la figure 3, il est illustré des étapes d’un tel procédé de surveillance.
Dans une étape E10, dit d’initialisation, préalable à l’exécution du processus, la pile étant vide, une pluralité N+2 de clés K, (en considérant 0<i<N+1) est positionnée dans la pile 200, par l’écriture de valeurs spécifiques, d’initialisation, prédéterminées, à N+1 adresses distinctes A,. Les clefs Ko et KN+i étant celles du processus standard garantissant que les limites de la pile n’ont jamais été dépassées. Idéalement, le positionnement est effectué de telle façon que les clés K, sont plus présentes en fin de pile, qu’en début de pile. Ainsi, en allant de l’adresse de début 211 à l’adresse de fin de pile 212, l’espace mémoire séparant deux clés consécutives diminue. Cette répartition des clés permet un maillage graduel de la pile. En conséquence, on obtient un maillage plus important de la zone de marge 230 de la pile. Cette zone de marge 230 permet comme exposé précédemment d’être informé que l’espace libre de la pile devient limité, tout en gardant encore un certain nombre d’adresses utilisables dans la RAM.
Dans un mode de réalisation préféré, la répartition des clés K, est effectuée selon une loi de distribution exponentielle. Par exemple, les clés sont écrites aux adresses de la pile selon la loiyl(i) = 4(1) + x (SS - (4(1) - SS4))J , où A(i) représente l’adresse de la i-ième clé K,, SSA l’adresse de départ de la pile, et SS la taille de la pile et i variant de 2 à N. Suite à l’écriture des N+2 valeurs d’initialisation, toujours dans l’étape E10, la première clé (correspondant à A(1 )) est sauvegardée et correspond à un index courant Cl. L’adresse de la première clé A(1) est idéalement définie par une adresse telle que l'on considère que la taille de la pile restant libre est acceptable et sure. Ainsi, l’adresse de la clé peut être définie à la moitié de la pile, ou par exemple à 70% ou 80% de la taille de la pile.
Idéalement, le nombre de clés K, est compris est déterminé en fonction de la taille de la pile et de la granularité finale désirée qui est égale à la taille du dernier espace déterminé par les clés soit ^^^^^pour N clés
Dans une étape E20, lors de l’exécution d’un processus utilisant la pile 200, à intervalle régulier (idéalement à la plus petite des récurrences de l’ensemble des processus gérés par un système exécutant lesdits processus), la première clé est vérifiée. Ainsi, à l’adresse A(1), le procédé vérifie que la valeur d’initialisation de la première clé est présente. Dans le cas où la valeur est changée, le processus a donc utilisé l’espace de la pile jusqu’au niveau de la clé courante, ce qui signifie que la clé a été atteinte. Dans le cas où la valeur est inchangée, la clé n’a pas été atteinte. Si la clé a été atteinte, le procédé vérifie que la clé suivante n’a pas été atteinte, et ainsi de suite jusqu’à détecter une clé K, non atteinte. La i-ième clé ainsi déterminée, est sauvegardée et la valeur de l’index courant Cl est mis à jour pour correspondre à cette clé.
L’adresse d’une clé K, peut être automatiquement calculée ou, idéalement, lors de l’initialisation, les adresses des clés K, sont stockées dans une structure de données, telle qu’un tableau par exemple, les indices du tableau étant mises en correspondance avec les indices i des clés.
Dans une étape E30, lorsque la dernière clé KN+i est atteinte ou si la clef Ko a été corrompue, comme pour le procédé standard, une réinitialisation du processus est déclenchée pour retrouver un état stable et sûr d’exécution du processus. Cette réinitialisation entraîne également la réinitialisation de la pile 200. Ainsi, on procède à nouveau à l’étape E10 de répartition des clés et de réinitialisation de l’index courant Cl.
Dans une étape E40, on sauvegarde également une valeur d’index maximal Ml. Lors de la première initialisation de la pile, par exemple suite à la première mise sous tension d’un système exécutant le processus, Ml est égal à l’index courant Cl. Par la suite, quand la valeur de l’index courant Cl est mise à jour, le procédé vérifie que cette valeur n’est pas supérieure à la valeur de l’index maximal Ml. Dans le cas où cette valeur est supérieure, Ml est mis à jour avec la valeur de l’index courant Cl. L’index maximal Ml est sauvegardé dans une zone mémoire non volatile, par exemple une mémoire RAM non volatile (NVRAM). Ainsi, lors de la réinitialisation de la pile suite à la réinitialisation du processus provoquée dans une étape E30, la valeur de l’index maximale Ml n’est pas affectée.
L’index maximal Ml pourra être récupéré dans une étape ultérieure, permettant ainsi la vérification de la mesure de taille de pile restant libre. Cette taille restant libre TL est comprise entre TLinf(MI) et TLsup(MI) tel que TLinfÇMI) <TL < TLsup(MI) avec TLinfÇMI) = 2MI_± x (4(1) - SSA) et TLsup(MI) = x (4(1) - SS4) pour Ml > 1 et TLinf(l) = SS et TLsupÇl) = 4(1) - SS4.
En conséquence, par la mise en œuvre de ce procédé de surveillance, il est possible de déterminer avec précision une quantité maximum de mémoire consommée lors par exemple des phases de conception d’un système embarqué. La taille de la pile pourra donc être définie de manière optimale. De plus, l’utilisation d’un tel procédé consomme peu de ressources processeur, permettant l’emploi de ces ressources pour 15 d’autres tâches.

Claims (7)

  1. REVENDICATIONS
    1. Procédé de surveillance de l’espace libre d’une pile d’un microcontrôleur pendant l’exécution d’un processus utilisant des espaces de ladite pile depuis une adresse de début à une adresse de fin de la pile, dans lequel ledit procédé est caractérisé en ce qu’il comprend :
    • dans une étape préalable, l’écriture de N clés dans la pile à N adresses de ladite pile, l’espace mémoire entre deux clés consécutives étant décroissant dans une direction allant de l’adresse de début à l’adresse de fin de la pile ;
    • et en ce que dans une étape d’exécution du processus, la sauvegarde de l’adresse de la clé courante, correspondant à l’adresse de la clé existante, parmi les N clés, la plus proche de l’adresse de débutde pile, • une étape consistant à comparer l’adresse de la clé courante à l’adresse d’une clé maximum correspondant à une adresse de la pile, et dans le cas où l’adresse de la clé courante est plus proche de l’adresse de fin que l’adresse de la clé maximum, l’adresse de ladite clé maximum prend pour valeur l’adresse de la clé courante.
  2. 2. Procédé de surveillance de l’espace libre d’une pile selon la revendication précédente, caractérisé en ce que depuis une adresse prédéfinie d’une première cléA(1), l’adresse de la i-ième clé, i variant de 2 à N, est égale à la partie entière de ^,1-1 x (ss- (.4(1) -SSA))^, où SS est égal à la taille de la pile, SSA l’adresse de départ de la pile.
  3. 3. Procédé de surveillance de l’espace libre d’une pile selon la revendication précédente, caractérisé en ce que ledit procédé comporte en outre l’écriture de deux clés à chaque extrémité de la pile.
  4. 4. Procédé de surveillance de l’espace libre d’une pile selon la revendication précédente, caractérisé en ce que l’adresse de la clé maximum est stockée dans une zone mémoire, non volatile.
  5. 5. Procédé de surveillance de l’espace libre d’une pile selon l’une des revendications précédentes, caractérisé en ce que les adresses des clés sont stockées dans un tableau de données.
  6. 6. Procédé de surveillance de l’espace libre d’une pile selon la revendication précédente, caractérisé en ce qu’une adresse d’une i-ème clé est accessible par son indice i dans le tableau de données.
  7. 7. Produit programme d’ordinateur, destiné à être exécuté par des moyens de
    5 traitement d’une unité de calcul, ladite unité de calcul comprenant en outre une mémoire, et ledit programme étant caractérisé en ce qu’il est configuré pour la mise en œuvre du procédé tel que défini dans les revendications 1 à 6.
FR1755836A 2017-06-26 2017-06-26 Procede de surveillance de l’espace libre d’une pile memoire Active FR3068149B1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
FR1755836A FR3068149B1 (fr) 2017-06-26 2017-06-26 Procede de surveillance de l’espace libre d’une pile memoire
US16/647,760 US11544171B2 (en) 2017-06-26 2018-06-26 Method for monitoring the free space of a memory stack
PCT/FR2018/051548 WO2019002746A1 (fr) 2017-06-26 2018-06-26 Procédé de surveillance de l'espace libre d'une pile mémoire

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1755836A FR3068149B1 (fr) 2017-06-26 2017-06-26 Procede de surveillance de l’espace libre d’une pile memoire
FR1755836 2017-06-26

Publications (2)

Publication Number Publication Date
FR3068149A1 FR3068149A1 (fr) 2018-12-28
FR3068149B1 true FR3068149B1 (fr) 2019-11-22

Family

ID=60382279

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1755836A Active FR3068149B1 (fr) 2017-06-26 2017-06-26 Procede de surveillance de l’espace libre d’une pile memoire

Country Status (3)

Country Link
US (1) US11544171B2 (fr)
FR (1) FR3068149B1 (fr)
WO (1) WO2019002746A1 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11720471B2 (en) * 2021-08-09 2023-08-08 International Business Machines Corporation Monitoring stack memory usage to optimize programs

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04266141A (ja) * 1991-02-21 1992-09-22 Fujitsu Ltd スタックオーバーフロー検出方式
EP0551691A1 (fr) * 1992-01-15 1993-07-21 International Business Machines Corporation Procédé de triage
DE10036278A1 (de) * 2000-07-26 2002-02-07 Bosch Gmbh Robert Verfahren zur Überwachung eines Programmablaufs mittels einer Debug Logik
US6630668B1 (en) * 2001-10-04 2003-10-07 The United States Of America As Represented By The United States Department Of Energy Remote control of a scanning electron microscope aperture and gun alignment
US7562230B2 (en) * 2003-10-14 2009-07-14 Intel Corporation Data security
JP4998019B2 (ja) * 2007-03-06 2012-08-15 富士通株式会社 状態表示制御装置
JP5361153B2 (ja) * 2007-07-13 2013-12-04 富士通コンポーネント株式会社 情報処理装置、印刷装置、及び、情報処理装置のスタック領域使用状況認識方法
US8005996B2 (en) * 2008-02-01 2011-08-23 Prostor Systems, Inc. Digitally shredding on removable disk drives
KR101470162B1 (ko) * 2013-05-30 2014-12-05 현대자동차주식회사 메모리 스택 사이즈 모니터링 방법
US20160124841A1 (en) * 2013-06-06 2016-05-05 Hitachi, Ltd. Information processing system and data processing method
US9948482B2 (en) * 2016-04-27 2018-04-17 Cavium, Inc. Apparatus and method for enabling flexible key in a network switch
US10360373B2 (en) * 2016-09-28 2019-07-23 Intel Corporation Return address encryption

Also Published As

Publication number Publication date
FR3068149A1 (fr) 2018-12-28
US20210133077A1 (en) 2021-05-06
WO2019002746A1 (fr) 2019-01-03
US11544171B2 (en) 2023-01-03

Similar Documents

Publication Publication Date Title
US20200382302A1 (en) Security privilege escalation exploit detection and mitigation
JP2022520005A (ja) ハイブリッド・コンピューティング環境におけるパッチ管理
US20070106636A1 (en) Resource exhaustion prediction, detection, diagnosis and correction
US20130340035A1 (en) Performing a change process based on a policy
US20070271418A1 (en) Resource leak diagnosis
US20130081144A1 (en) Storage device and writing device
CN108229176B (zh) 一种确定Web应用防护效果的方法及装置
US8918776B2 (en) Self-adapting software system
US20170364679A1 (en) Instrumented versions of executable files
US8578364B2 (en) Dynamic management of operating system resources
US20170083702A1 (en) Detecting Software Attacks on Processes in Computing Devices
US20120291033A1 (en) Thread-related actions based on historical thread behaviors
US11443032B2 (en) Stack pivot exploit detection and mitigation
WO2015169106A1 (fr) Procédé et système de traitement de valeur de fonds de compte sur une plateforme financière internet, et support de stockage
FR3068149B1 (fr) Procede de surveillance de l’espace libre d’une pile memoire
EP4087185A1 (fr) Procédé et dispositif électronique de surveillance d&#39;une application logicielle avionique, programme d&#39;ordinateur et système avionique associés
US10218813B2 (en) Automatic surge protection of system resources
US20160078227A1 (en) Data processing system security device and security method
JP2007183911A (ja) 不正操作監視プログラム、不正操作監視方法、及び不正操作監視システム
US10157116B2 (en) Window deviation analyzer
KR20200097107A (ko) 블록체인에 저장되는 데이터를 관리하는 방법 및 서버
EP2652664A1 (fr) Procede dynamique de controle de l&#39;integrite de l&#39;execution d&#39;un code executable
JP6746086B2 (ja) 端末装置、端末装置による動作情報の報告制御方法、及び、端末装置による動作情報の報告制御プログラム
US20140122817A1 (en) System and method for an optimized distributed storage system
US11861537B2 (en) Method and system for identifying and quantifying organizational waste

Legal Events

Date Code Title Description
PLSC Publication of the preliminary search report

Effective date: 20181228

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7