# CIM Schema

CIM Schema est une spécification informatique qui fait partie du Common Information Model, créé par le Distributed Management Task Force.
C'est un schéma conceptuel fait de classes, d'attributs, de relations entre ces classes et d'héritages, définis dans le monde du logiciel (Software) et du matériel informatique (Hardware). Cet ensemble d'objets et les relations qui les unissent représente une base commune de décrire des éléments informatiques. De nouvelles versions sont régulièrement publiées, la dernière en date étant 2.51.0, datan du 12 juin 2018.
Ce schéma est à la base d'autres standards du DMTF comme WBEM ou SMASH, ou bien encore SMI-S pour la gestion de stockage.

## Extensibilité

Le schéma CIM est extensible afin de permettre aux fabricants de ces éléments de représenter leur produit et le comportement spécifique de leurs équipements en utilisant comme base commune les éléments définis dans le schéma CIM. Des fabricants fournissent des extensions logicielles appelées providers qui les nouvelles classes et leurs attributs et relations.
D'autres fabricants, pour représenter des fonctionnalités spécifiques, font le choix de compléter les classes existantes en ajoutant de nouveaux attributs, en utilisant notamment le serveur WBEM en open source OpenPegasus et ses classes spécifiques, par PG_UnixProcess qui dérive de CIM_Process.
Les noms de classes ont souvent un préfixe spécifique qui permet de les distinguer: PG_', 'LMI_', 'Win32_' etc...

## Exemples de classes CIM, communes à toutes les implémentations

* CIM_ComputerSystem: Classe attribué à une machine hôte générique
* CIM_DataFile: Fichier informatique
* CIM_Directory: Répertoire de fichiers, directory
* CIM_DiskPartition$^,$: modélisation d'une partition informatique, destinée au stockage de données
* CIM_FIFOPipeFile: pour les tubes nommés, destinés aux communications entre processes independants.
* CIM_OperatingSystem$^,$: attribuée au concept de Système d'exploitation
* CIM_Process: Processus informatique, process fonctionnant sur un ordinateur

## Exemples de classes dérivées, spécifiques à des systèmes d'exploitation
### Implémentation Windows Management Instrumentation dans Microsoft Windows

* Win32_Group: Groupes d'utilisateurs
* Win32_OperatingSystem: Dérivation de CIM_OperatingSystem
* Win32_Service: Service Windows
* Win32_UserAccount: Compte d'utilisateur Windows
De plus, des classes décrites par le provider Win32 définissent les propriétés des objets COM. Par exemple: Win32_COMClass, Win32_COMApplication, Win32_DCOMApplication, etc...

### Unix

* CIM_UnixProcess: Process Unix

### z/OS

* IBMzOS_OperatingSystem: Dérivation de CIM_OperatingSystem.
* IBMzOS_Process : Cette classe dérive de CIM_Process, et ses instances sont mappées dans l'espace d'adressage de z/OS.

### Linux, implémentation par OpenLMI

OpenLMI est un logiciel qui offre une infrastructure commune de management, basée sur WBEM. Son schéma dérive certains classes de CIM_ Schéma pour y adjoindre les spécificités Linux.
* LMI_Account: Cette classe représente les comptes d'utilisateurs Linux listés dans le fichier hosts.
* LMI_DataFile: Cette classe dérive de CIM_DataFile.
* LMI_Group: La classe LMI_Group représente les groupes d'utilisateurs Linux.

## Storage Management Initiative - Specification

SMI-S est une spécification de norme de gestion du stockage basée sur CIM et WBEM. Chaque constructeur de matériel de stockage, notamment par réseau, propose des providers WBEM qui permettent de contrôler son matériel, en définissant des classes de périphériques dérivées des classes standards de CIM Schema.