Erreur sur le bus
Dans le calculant , une erreur sur le bus de est généralement une tentative d'accéder à la mémoire que l'unité centrale de traitement ne peut pas physiquement adresser. Des erreurs sur le bus peuvent également être provoquées par n'importe quel défaut général de dispositif que l'ordinateur détecte. Une erreur sur le bus signifie rarement que le matériel d'ordinateur est physiquement cassé - il est normalement provoqué par un bogue en code source du d'un programme de .
Il y a deux causes principales des erreurs sur le bus :
; adresse inexistante : L'unité centrale de traitement est chargée par le logiciel d'indiquer ou écrire une adresse de mémoire physique spécifique . En conséquence, l'unité centrale de traitement place cette adresse physique sur son bus d'adresses et demande tout autre matériel relié à l'unité centrale de traitement pour répondre avec les résultats, s'ils répondent pour cette adresse spécifique. Si aucun autre matériel ne répond, l'unité centrale de traitement soulève une exception , déclarant que l'adresse physique demandée est non reconnue par le système informatique entier. Noter que ceci couvre seulement des adresses de mémoire physiques du . Quand le logiciel essaye d'accéder à une adresse de mémoire virtuelle du non défini , c'est généralement considéré un défaut de segmentation de plutôt qu'une erreur sur le bus.
; accès unaligned : La plupart des unités centrales de traitement sont le byte-addressable, où chaque adresse de mémoire unique se rapporte à un byte à 8 bits . La plupart des unités centrales de traitement peuvent accéder à différents bytes de chaque adresse de mémoire, mais elles généralement ne peuvent pas accéder à de plus grandes unités (16 bits, 32 bits, 64 bits et ainsi de suite) sans ces unités étant " ; aligned" ; à une frontière spécifique, telle que 16 bits (les adresses 0, 2, 4 peuvent être accédées, les adresses de 1, 3, 5, sont unaligned) ou 32 bits (0, 4, 8, 12 sont alignés, toutes les adresses sont dans l'intervalle unaligned). Essayer d'accéder à une valeur plus grande qu'un byte à une adresse unaligned peut causer une erreur sur le bus.
Les unités centrales de traitement accèdent généralement à des données au de grande largeur de leur bus de données à tout moment. Pour adresser des bytes, eux mémoire d'accès au de grande largeur de leur bus de données, puis les masquer et décaler pour adresser le byte individuel. C'est inefficace, mais toléré car c'est un dispositif essentiel pour la plupart de logiciel, particulièrement la corde - traitant. À la différence des bytes, de plus grandes unités peuvent enjamber deux adresses alignées et exigeraient ainsi plus d'un effort sur le bus de données. Il est possible que les unités centrales de traitement soutiennent ceci, mais cette fonctionnalité est rarement exigée directement au niveau du code machine , ainsi les concepteurs d'unité centrale de traitement évitent normalement de le mettre en application et publient à la place des erreurs sur le bus pour l'accès mémoire unaligned.
Exemple
C'est un exemple d'accès mémoire un-aligned, écrit dans le langage de programmation du C .de
inclureforce d'international (vide) { l'iptr de/* est un indicateur à un nombre entier, à habituellement 32 ou 64 bits dans la taille. Il est actuellement éliminé. * international X, *iptr ; le cptr de/* est un indicateur à un caractère (le " ; le plus petit unit" accessible ; de l'unité centrale de traitement, normalement un byte) * *cptr de char ;
le malloc de/* () nous donne une adresse de mémoire valide et alignée. mettre ceci dans le cptr * cptr = malloc (de char*) (33) ; si (! retour 1 de cptr) ;
cptr d'incrément de/* par 1. Il est maintenant unaligned * cptr++ ;
/* il est CORRECT d'accéder à différents bytes des adresses unaligned * X = *cptr ;
cptr de copie de/* dans l'iptr * iptr = (international *) cptr ; /* ceci causera une erreur sur le bus - accédant à plus de 1 byte d'une adresse unaligned * X = *iptr ;
retour 0 ; }
Humeur
L'erreur sur le bus de de limite est également parfois employée pour se rapporter à un certain membre critique d'une équipe devenant indisponible en raison de la catastrophe, comme en étant " ; coup par un bus" ;.
fortune de s de FreeBSD de ': « Erreur sur le bus -- conducteur exécuté. »
Voir également
Défaut de segmentation de Facteur d'autobus de
.
| Random links: | Robert Florey | Al-Midfai de Jamil | USS Alexandre Hamilton (SSBN-617) | Shirley César | Place de Washington (Philadelphie) | Error_en_el_bus |