Rechercher

Vous pouvez entrer une phrase pour rechercher sur tout le site.

Accueil

Hardware

Software

Pas à pas

Internet

Le site

Contacts


Partenaires

Les bases de la programmation - page 2

2. La programmation fonctionnelle, les librairies, les API, le noyau

Les langages évolués.
  Il a donc été crée des langages évolué, dit de haut niveau. Ce sont des langages tels que le C/C++, qui permettent de faire tout infiniment plus facilement que en assembleur. Le revers, c'est qu'un programme écrit en C sera légèrement moins rapide qu'un autre écrit en assembleur.
Mais le C offre aussi un autre avantage: il est facile de gérer en C les interactions avec le reste du système, et de partager des fonctions. C'est le but de cette partie: décrire le système.

La notion de fonction.
  Dans un programme, il arrive très souvent de faire plusieurs fois exactement la même chose. Par exemple: écrire un caractère a l'écran. Il serait très (trop) long de devoir refaire à chaque fois toute la procédure pour écrire un caractère.
On utilise donc des fonctions. Une fonctions est une "chose", à qui l'ont transmet des paramètres (des arguments), et qui effectue une tache en fonction des paramètres. Un exemple de fonction toute simple serait la fonction affiche_caractere (qui n'existe pas dans la réalité), qui prendrait comme argument un caractère, et qui l'afficherait à l'écran.

La notion de librairie.
  Normalement, une fonction est propre à un programme. Ce qui voudrait dire que tout programme devrait définir une fonction affiche_caractere pour pouvoir ensuite afficher des caractères, ou des chaînes de caractères. Et il existe de très nombreuses autres fonctions qui sont très souvent utilisé. On dispose pour cela de librairies (ou bibliothèques) qui sont des programmes qui ne contiennent que des fonctions, et qui ne font rien par elles-mêmes. Ils sont chargés en mémoire, et lorsqu'un programme a besoin d'une de leur fonction, il l'appelle, sans devoir la recréer. Cela s'appelle 'Pourquoi réinventer la roue à chaque fois ?' ;-).

La notion d'API.
  Imaginons maintenant que l'on veuille afficher un caractère à l'écran, mais que d'un ordinateur à l'autre, ce ne soit pas le même moyen qu'il faille utiliser. On a pour cela crée des API: Application Programmer Interface (Interface de programmation avancée). Une API est en fait une bibliothèque qui dispose de certaines fonctions standardisées et publiques (accessibles par n'importe quel programme).
C'est à dire que quelle que soit la machine, quel que soit les périphériques dont vous disposiez, la même fonction produira le même effet. Les drivers (pilotes) sont des API: ils fournissent des fonctions dont le prototype (c-à-d le type et la quantité des paramètres à leur passer) est toujours le même. Par exemple : si sur la carte graphique Lambda il faut envoyer la commande 0x1234 suivie du caractère pour afficher ce même caractère, et si sur la carte Truc il faut envoyer la commande 0x5678, et bien lorsque vous utiliserez la fonction d'affichage de caractères contenue dans le pilote graphique, vous n'aurez qu'a donner le caractère au pilote, qui lui saura quelle commande envoyer au périphérique Au final, le caractère sera affiché de la même manière, quelle que soit la carte, quelle soit le pilote.

Le noyau.
  Au démarrage de l'ordinateur se charge en mémoire un programme appelé noyau (kernel), et qui une fois chargé est exécuté: d'une part ce noyau va fournir (grâce aux pilotes) toutes les fonctions nécessaires pour utiliser de façon standardisé vos périphérique.
D'autre part il va offrir une gestion complète de l'ordinateur: c'est lui qui chargera les programmes en mémoire et qui les exécutera, c'est lui qui attribuera la mémoire aux programmes, et c'est lui aussi qui fournira toutes les fonctions de base permettant finalement de contrôler totalement l'ordinateur, ainsi que les programmes qui s'y exécutent. Le noyau est donc le programme le plus important de l'ordinateur.
Le noyau fournira par exemple les fonctions pour travailler sur le disque: alors que le disque ne comprends que "lit moi X octets en commençant par le Yème du disque", vous, vous pourrez dire au noyau "ouvre moi tel fichier", et il le fera sans que ayez besoin de déterminer la position du fichier sur le disque.
Sous Windows, il y a d'une part le noyau, et d'autre part les pilotes, qui sont chargé après (le noyau offrant d'office une gestion standard des périphériques principaux). Sous Linux, le kernel inclus les pilotes de périphériques, et peut aussi gérer d'autres fonctions telles que l'affichage.

La gestion de la mémoire.
  Lorsque un programme doit être exécuté, il est placé en mémoire par le noyau, puis il est exécuté. En chargeant le programme en mémoire, le noyau fait aussi une place pour les variables de ce programme. Mais cela implique que l'on sache à l'avance de quel quantité de mémoire le programme va avoir besoin.
Or de nombreux programmes nécessitent des quantités variables de mémoire. Pour cela, Il existe une gestion de la mémoire par page. La mémoire est divisé (virtuellement) par le noyau en page de taille fixée; lorsqu'un programme a besoin de mémoire, il demande au noyau une page, et celui ci lui renvoie l'adresse de cette page. Lorsqu'il a fini et qu'il n'a plus besoin de la page, il l'indique au noyau, qui pourra ainsi la donner à un autre programme.
Pour information, lorsque un programme plante avec le message d'erreur "segmentation fault", cela signifie qu'il a débordé de la page, ce qui est interdit, comme vous pouvez vous en douter.
De toute manière, lorsque qu'un programme plante, (et que si on est sous Windows aucun écran bleu n'apparaît) cela signifie que le noyau a arrêté ce programme, généralement parce qu'il a effectué une opération illégale.

 

Suite page 3
Retour page 1

Valid XHTML 1.1! Valide CSS!

Hit-Parade

Mesurez votre audience

Copyright © 2000 - 2008 World-Informatique.com. Tous droits réservés.
Hébergement offert par OVH