III.2 .2. Cahier des charges
Un cahier des charges est un document contractuel
décrivant ce qui est attendu du maître d'oeuvre par le
maître d'ouvrage.
il s'agit donc d'un document décrivant de la
façon la plus précise possible avec un vocabulaire simple, les
besoins aux quels le maître d'oeuvre doit répondre dans la mesure
où seul le maître d'oeuvre est réellement compétent
pour proposer une solution technique appropriée, le cahier des charges
doit préférentiellement faire apparaître le besoin de
manière fonctionnelle, indépendamment de toute solution
technique, sauf à préciser l'environnement technique dans le quel
la solution demandée doit s'insérer.
III.2.2.1. Cahier des charges fonctionnel
Le cahier des charges fonctionnel est un document par lequel
une entité à l'origine de la demande ou un utilisateur exprime
son besoin en termes de fonctions de services et des contraintes voilà
une source qui permet de contrôler complètement les processus d'un
ordinateur distant :
Nous savons qu'il existe WMI pour gérer les processus
à distance, mais WMI n'est pas franchement convaincant car :
> Il nécessite d'être installé sur les
deux machines ;
> Il n'est pas très rapide (en tout cas pour
l'utilisation spécifique que l'on en fait en listant les processus)
> Très très limité (impossible de faire
autre chose que la liste des processus/modules, tuer/créer)
Bref voici une solution qui permet de contrôler
entièrement les processus d'un ordinateur distant : kill, suspend,
priorité, affiné, liste des threads / handles, changement des
privilèges, déchargement de module| handle, le tout à
distance
1. Processus : un processus est
l'instance d'un programme un cours d'exécution, une instance de
programme est un espace mémoire composée d'une partie ou de la
totalité de l'exécutable chargé en mémoire, de
l'espace mémoire et des ressources allouées par le système
à la demande du processus ainsi que de toutes les librairies
chargées .Il peut exister plusieurs instances d'un même programme
simultanément en cours d'exécution sur un ordinateur l'espace
mémoire d'un processus est protégé, c'est-à-dire
que c'est le seul espace auquel il peut accéder, les autres processus ne
pourront y accéder.
a. Gestion du temps
d'exécution
Les systèmes d'exploitation permettent une
exécution quasi simultanée en allouant un court temps
d'exécution à chaque thread de chaque processus à tour de
rôle, selon leur priorité, cela donne l'impression que chaque
programme s'exécute en même temps. L'exécution d'un
processus dure un certain temps, avec un début et (parfois) une fin. Un
processus peut être démarré par un utilisateur par
l'intermédiaire d'un périphérique ou bien par un autre
processus.
b. Etats d'un processus.
Initialisation Terminé
Mémoire vive
Prêt
(en attente) Zombie
Prêt (en attente)
Exécution en espace utilisateur
Mémoire virtuelle
Exécution en espace noyau
Préempté
Endormi (Bloqué)
Endormi (Bloqué)
Diagramme d'état.
Fig.15. Etats d'un processus
Cet état existe dans la plupart des S.E :
> Initialisation : c'est le premier état d'un
processus. Il y attend que l'ordonnanceur le place dans l'état
prêt, ce qui prendre plus ou moins longtemps. Généralement,
dans les ordinateur du bureau, cela est automatique, dans un système
d'exploitation temps réel, cette admission peutêtre
reportée. En effet, dans de tels systèmes, trop de processus en
attente peuvent amenés à une saturation, notamment des bus,
entraînant l'incapacité du système à tenir les
délais.
> Prêt ou en attente : dans cet état le
processus a été chargé en mémoire centrale et
attente son exécution sur le processeur, il peut y avoir beaucoup de
processus en attente car, sur un ordinateur équipé d'un seul
processus, les processus doivent passer un par un. Les processus disponibles
sont rangés dans une file ; les autres, ceux qui attendent quelques
choses (données provenant du disque dur, une connexion internet, etc.)
ne sont pas pris en compte. Cette file d'attente est gérée par
l'ordonnanceur.
> Exécution : le processus est en cours
d'exécution par le processeur.
> Endormi ou bloqué : le processus a été
interrompu ou attend un événement (la fin d'une opération
d'entrée| sortie, un signal,..)
> Terminé : le processus est terminé,
c'est-à-dire soit le résultat est connu, soit le programme a
été forcé de s'arrêter.
> Zombie : si un processus terminé ne peut pas
être déchargé de la mémoire, par exemple, si un de
ces fils n'est pas terminé, il passe dans un état appelé
zombie.
> Préempté : l'ordonnanceur a
décidé de suspendre l'activité d'un processus. Par
exemple, un processus qui consomme trop de temps CPU finira par être
préempté. Un ordonnanceur préemptif utiliser aussi
l'indice de priorité pour décider le processus qui sera
préempté.
> Exécution en espace utilisateur :
l'exécution a lieu dans un espace limité : sel certaines
instructions sont disponibles.
> Exécution en espace noyau : par opposition au mode
utilisateur, l'exécution du processus n'est pas limitée. Par
exemple, un processus dans cet état peut aller lire dans la
mémoire d'un autre.
2. kill : c'est une commande de
certains systèmes d'exploitation (particulièrement Unix et ses
dérivés) utilisée pour demander l'arrêt d'un
processus en cours d'exécution. Par défaut, le message est un
signal d'arrêt, demandant la fin du processus la commande kill encapsule
l'appel système kill, lequel envoie des signaux aux processus ou groupes
de processus, références par leur identifiant (PID ou PGID).
Kill est toujours fournie sous la forme d'un utilitaire
à part entière, mais la plupart des Shells possèdent
également leur commande kill dont l'implémentation peut
être légèrement différente.
3. Priorité : C'est une
caractéristique d'une tâche informatique permettant de
déterminer son accès à une ressource. Une tâche
correspond à un traitement à réaliser. Une ressource est
un moyen permettant de réaliser la tâche. Sous Windows, il existe
six niveaux de priorité associé au thread du processus et au
processus lui-même :
> Inactif : l'exécution ne se fait que lorsque le
système est en mode inactif lorsque tous les threads dont le niveau est
plus élevé que inactif ne sont pas en état
d'exécution.
> En dessous de la normal : un niveau intermédiaire
entre inactif et normal qui sera tendance à s'exécuter moins
souvent et avoir un temps d'exécution moindre que les threads avec une
priorité normal.
> Normal : un niveau spécifiant que les threads
n'ont pas de besoin particulier. Ce niveau convient pour les applications
utilisateurs les plus courants.
> En dessus de la normal : un niveau intermédiaire
entre normal et haute priorité qui aura tendance à
s'exécuter plus souvent et ou à avoir un temps d'exécution
plus important que les threads avec une priorité normal.
> Haute priorité : ce niveau convient pour les
threads exécutant une tâche critique qui nécessite une
exécution immédiate. Il est important de ne pas attribuer ce
niveau à un processus qui n'effectue pas de tâche critique afin de
ne pas empêcher inutilement une exécution système
importante.
> Temps réel : le niveau le plus élevé
dans le système. Les threads du processus seront priorités sur
tous les threads de priorité moins élevé, y compris les
processus système. Ce niveau ne doit être attribué
qu'à des tâches extrêmement courtes et espacées dans
le temps.
4. Un thread (fil d'exécution ou
tâche)
C'est une partie des instructions du processus en cours
d'exécution. Certaines applications se dupliquent entièrement au
cours du traitement. C'est notamment le cas pour des systèmes
client-serveur, où le serveur exécute un fork, pour traiter
chacun de ses clients.
Cette duplication est souvent très coûteuse.
Avec des fils d'exécution, on peut arriver au même résultat
sans gaspillage d'espace, en ne créant qu'un fil de contrôle pour
un nouveau client, et en conservant le même espace d'adressage, de code
et de données. Les fils d'exécution sont, par ailleurs,
très bien adaptés au parallélisme. Ils peuvent
s'exécuter simultanément sur des machines multi - processus.
5. Création des processus
Le système d'exploitation a besoin d'un moyen pour
s'assurer que tous les processus nécessaires existent dans les
systèmes très simples, ou dans des systèmes conçus
pour faire fonctionner une seule application, il peut être possible
d'avoir tous les processus qui ne sera jamais nécessaire, être
présents lorsque le système est en place. Dans les
systèmes à des fins générales, cependant, une
certaine façon est nécessaire pour créer et mettre fin
à des processus au besoin pendant le fonctionnement.
Il existe quatre principaux événements qui
provoquent des processus d'être crées, ils sont :
- l'initialisation du système,
- l'exécution d'un appel système processus de
création par un processus en cours,
- une demande d'utilisateur de créer un nouveau
processus,
- l'initiation d'un traitement par lots. Quand un système
d'exploitation est
démarré, le plus souvent plusieurs processus sont
crées.
des processus d'arrière - plan, qui ne sont pas
associés à des utilisateurs particuliers, mais ont une fonction
spécifique.
Un processus de fond peut être conçu pour
accepter les e-mails entrants, dormant la plupart de la journée, mais
tout d'un coup en sautant sur la vie quand l'e-mail arrive.
Un autre processus d'arrière - plan peut être
conçu pour recevoir les demandes entrantes pour les pages web
hébergé sur cette machine, en se réveillant, lorsqu'une
requete arrive pour traiter la demande. Processus qui restent en arrière
- plan pour gérer une activité comme le courrier
électronique, page web, des nouvelles, l'impression, et ainsi de suite
sont appelés démons.
Systèmes à grande échelle ont
généralement des dizaines d'entre eux. En Unix, le
programme ps peut être utilisé pour dresser la
liste des processus en cours. Dans gestionnaire des tâches Windows est
utilisé.
|