Les Allergies
Alimentaires
Posez votre question Signaler

Concretement qu'est-ce qu'un buffer?

An0d 21Messages postés 21 décembre 2003Date d'inscription - Dernière réponse le 7 avril 2011 à 11:38
Bonjour, voila je suis étudiant en informatique et je suis rentré dans ces études parce que j'adore l'informatique sans pour autant m'y connaitre! alors voila en cours nous avons vu theoriquement ce qu'est un buffer ( ensemble d'octet ou sont copiés les des enregistrements, et un buffer est donc associé à un fichier )et on l'a utilisé tout le temps dans des exemples ( ex : on charge l'identifiant recherché dans tel buffer et les identifiants des enregistrement du fichier dans lequel on recherche dans un autre buffer ) mais aujourd'hui ( ca fait qd meme depuis le mois d'octobre qu'on parle de buffer et c'est maintenant que je me pose la question ) je me demande ce qu'est concretement un buffer parceque on a vu la notion de buffer overflow et je crois que dans ma vision je confond un buffer avec une variable ( j'ai commencé la programmation ) car lorsqu'on programme, qd on li une information dans un fichier, on la met dans une variable et pas dans le buffer ? donc pour moi l'overflow se faisait lorsqu'on depassé la capacité de la variable, mais je sais que ce n'est pas ca lol, donc voila j'aimerais avoir une petite " mise au poin " ce serait bien gentil, et en fait je vois sur le forum qu'on a parlé de buffer de clavier, etc ... je ne savais meme pas que ca existait lol, voila pour un etudiant en info je ne suis pas tres au courant, mais je ne demande qu'à apprendre :)
merci beaucoup d'avoir pris la peine de tout lire et de me repondre :)
a bientot
Lire la suite 

Concretement qu'est-ce qu'un buffer »

14 réponses
Réponse
+5
moins plus
buffer = zone mémoire de taille limitée servant à stocker des données (généralement de façon temporaire).

On utilise les buffers pour l'accès aux fichiers, mais aussi pour le réseau et pour le stockage d'un tas d'autres informations.

Buffer overflow, c'est le fait d'entrer trop de données dans le buffer, provoquant une écriture dans une zone mémoire hors du buffer (--> d'où les exploits, virus...)


Dans certains cas (Cobol), on créé des buffers qui sont exactement de la taille de chaque enregistrement du fichier qu'on veut lire.
On a définit donc une structure (numéro client, nom, adresse, code postale, ville...) et on créé un buffer de la taille exacte de cette structure.

Ainsi, on pourra par exemple lire 1 client à la fois du fichier.
C'est plus pratique.
Ajouter un commentaire
Réponse
+4
moins plus
il y a les buffers FIFO => first in first out
on peut se représenter un bébé qu'on gave et qui salit ses couches
il y a le buffers LIFO => last in firs out
on peut se représenter un bébé qu'on gave et qui revomit tout.

Voilà un exmple de buffer concret: les intestins ! ;-)
sebsauvage- 6 mai 2004 à 16:41
:-D

Alors là le coup du bébé, je le connaissais pas.
Excellent ! :-)
passagère - 7 avril 2011 à 10:26
Quelle abstraction!!!!!!!
Ajouter un commentaire
Réponse
+0
moins plus
Yop,

pour etre concis, un buffer est un tampon mémoire utilisé par un programme pour stocker temporairement ses variables.
Par exemple, lorsque tu déclares une variable avec ton langage favoris, tu alloues un buffer de la taille du type de ta variable. Le buffer overflow intervient quand tu dépasses la capacité de ce buffer et donc que tu accèdes à une zone mémoire qui ne t'est pas réservée.

++

Nico
Ajouter un commentaire
Réponse
+0
moins plus
Ok merci, mais je venais justement de relire une partie de cours et faire le rapprochement avec le COBOL ( et oui je commence par COBOL et Fortran lol ) et en cobol on defini la taille des records des blocs, etc ... donc ca je comprend que c'est pour definir la taille et type du buffer, mais par ex en fortran non, or dans mon cours de "matériel" il dit qu'un buffer est associé a un fichier et qu'on copie les "enregistrements" or dans un enregistrement il peuy y avoir plusieurs info differentes donc plusieurs variables, donc le buffer est "subdivisés" pour faire la differences entre les variables ??? et je suppose que si on ne precise pas la longueur du buffer c pris en charge par l'OS ?
Merci

Dans la vie il y a 10 catégorie de personnes, celles qui com
prennent le binaire et celles qui ne le comprennent pas.
Ajouter un commentaire
Réponse
+0
moins plus
Merci de vos réponses, mais alors si par exemple on est en fortran ( désolé, mais je suis en premiere année et c'est ce qu'on nous apprend :) ) la on ne définit pas les structures, et donc un buffer est alloué a chaque variable par l'OS ?? et donc la pour l'overflow il suffit d'entrer une valeur trop grande pour la variable ???

Dans la vie il y a 10 catégorie de personnes, celles qui com
prennent le binaire et celles qui ne le comprennent pas.
sebsauvage- 6 mai 2004 à 16:41
Désolé, je ne connais pas le Fortran.
boissonnfive- 7 avril 2011 à 11:31
Re,

pour ta question de buffer overflow sur une variable, j'ai jeté un oeil au fortran et il semble que ce soit un langage typé. Ce qui veut dire que les variables ont des types, c'est-à-dire une taille mémoire réservé ( ainsi que des opérations et des valeurs max) pour y mettre la représentation binaire de ce type. Donc si on a un type, on ne peut pas dépasser la taille. (Fait un test d'incrémentation d'un INTEGER pour voir sa valeur max)

Le buffer overflow n'est possible que sur des tableaux car on utilise un pointeur de zone mémoire qui peut pointer dans une mauvaise zone s'il n'est pas controlé par une borne.
boissonnfive- 7 avril 2011 à 11:38
Re,

INTEGER*4
---------
Size: 4 bytes (32 bits, bit 31 = sign)
Value range: -2147483648 to 2147483647

Donc si tu ajoutes 1 à une variable INTEGER qui vaut 2147483647, qu'est-ce qu'il se passe? Buffer overflow ou pas ?
Ajouter un commentaire
Réponse
+0
moins plus
Comme quoi, l'informaticien est poete :-)

a+
dje-dje

Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres
Ajouter un commentaire
Réponse
+0
moins plus
Espèce de binaire va.... ;-p
Ajouter un commentaire
Réponse
+0
moins plus
merci, très touché
:-D
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

pour faire simple:

BUFFER = Zone Mémoire = Variable

Donc, quand tu crées une variable, c'est un buffer!

Par ailleurs, certaines fonctions sont dites "bufferisées". Qu'est-ce que ça veut dire?
Ça veut dire qu'elles travaillent sur une zone mémoire et pas sur les données physique.
Pourquoi elles font ça? Parce-que l'accès au matériel est plus lent que l'accès à la mémoire. En travaillant sur la mémoire, on est indépendant de la vitesse du matériel.
Ces fonctions ont donc toujours une fonction qui permet d'écrire le buffer sur le matériel.

Ex concret: l'écriture dans un fichier en C

fopen: cette fonction va lire les données sur le disque et les placer dans un buffer sur lequel on va pouvoir travailler
fwrite: écrit dans le buffer (pas sur le disque)
fflush: vide le buffer (écrit les données sur le disque)
fclose: permet aussi de vider le buffer
Ajouter un commentaire
Ce document intitulé « Concretement qu'est-ce qu'un buffer? » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?