Rechercher
Vous pouvez entrer une phrase pour rechercher sur tout le site.
Accueil
- Page d'accueil du site
- Assistance technique
- Forums aux questions
- Les astuces du jour
- Mieux vous connaître
- Les dernières news
Hardware
- Le moniteur
- La carte mère
- Le microprocesseur
- La mémoire vive
- La carte graphique
- Le lecteur de DVD-Rom
- Le graveur
- L'imprimante
- Top produits
- Le matériel du jour
- Comparateur de prix
Software
Pas à pas
- Monter son PC
- Formater un disque dur
- Installer Windows XP
- Console de récupération
- La cryptographie
- Dicoinfo
- La Programmation
- Les réseaux
- Outlook Express
- La FaQ
Internet
Le site
- Historique du site
- Mentions légales
- Technologies du site
- Plan du Site
- Certificats Digitaux
- Communiqués
- Revue de presse
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.



