Adressage segmenté
zakuzasama
Messages postés
138
Statut
Membre
-
zakuzasama Messages postés 138 Statut Membre -
zakuzasama Messages postés 138 Statut Membre -
Salut a tous
je cherche un cour qui explique comment fonctionne l' adressage segmenté ou si vous pouvez m'expliquer ^^ ,plus exactement comment determiner si un acces et legal ou pas (dépassement de la taille du segment ou droits incompatibles)
exemple d acces: W(2,00900) , R(8,00800) ,X(6,00800)
thanks
je cherche un cour qui explique comment fonctionne l' adressage segmenté ou si vous pouvez m'expliquer ^^ ,plus exactement comment determiner si un acces et legal ou pas (dépassement de la taille du segment ou droits incompatibles)
exemple d acces: W(2,00900) , R(8,00800) ,X(6,00800)
thanks
A voir également:
- Adressage segmenté
- Adressage ip - Guide
- Exercice Adressage VLSM - Forum Réseau
- Maitriser l'adressage IP - Forum DHCP
- En raison d'un problème d'adressage, votre colis a été réacheminé vers le site de distribution qui dessert votre adresse. ✓ - Forum Consommation & Internet
- Colis sur site de distribution signification ✓ - Forum Consommation & Internet
10 réponses
Encore là ? :-)
L'adressage segmenté est on-ne-plus simple :
La mémoire est divisée en segments.
Ces segments ont des attributs : read-only, write, execute... de manière à ce que le gestionnaire de mémoire puisse intercepter une action incompatible avec les règles définies :
ex : écrire dans la zone du code chargé...
Ta demande est en fait dépendante de l'OS...
Certains ont des accès via offset depuis 0, d'autres ont des bloc + des offsets...
Certains ont des mécanismes de protection des zones mémoire, d'autres non (=>buffer overflow et injection de code...)
Tu te places dans quel cas et sous quel OS ?
L'adressage segmenté est on-ne-plus simple :
La mémoire est divisée en segments.
Ces segments ont des attributs : read-only, write, execute... de manière à ce que le gestionnaire de mémoire puisse intercepter une action incompatible avec les règles définies :
ex : écrire dans la zone du code chargé...
Ta demande est en fait dépendante de l'OS...
Certains ont des accès via offset depuis 0, d'autres ont des bloc + des offsets...
Certains ont des mécanismes de protection des zones mémoire, d'autres non (=>buffer overflow et injection de code...)
Tu te places dans quel cas et sous quel OS ?
oui toujours la ^^ desolé de vous harceler avec mes question ,mais dans mon syllabus tout est plutot mal expliqué donc quand je bloc je cherche a comprendre sur internet :)
euh... qu est ce qu un OS je suis debutant , et ce que ces attribut ont des tailles differentes ?
euh... qu est ce qu un OS je suis debutant , et ce que ces attribut ont des tailles differentes ?
desolé de vous harceler avec mes question
Euh, ben non, le forum est là pour ça !
OS : Operating System (Système d'exploitation : windows, unix, linux, solaris, mvs, os/400, gcos8, ms-dos...)
Les attributs sont en principe fixés lors du chargement en mémoire :
- un programme contient du code et a besoin de zones pour stocker temporairement des variables
- lors de la compilation/édition des liens du programme, le processus va fixer les plages dans lesquelles vont se stocker le code et les variables
- lorsqu'on va lancer le programme, l'OS (par l'intermédiaire de son gestionnaire de mémoire) va analyser ce que l'on veut charger et déclarera (donc marquera) : le code ira dans le segment toto en read-only et les variables dans le segment tutu en read/write
Les attributs du segment sont généralement de quelques bits, car on ne trouve pas une infinité d'états : read, read/write, execute, non swappable... Mais il n'est pas interdit de penser qu'un OS est allé plus loin dans les attributs des segments pour en déclarer d'autres...
Ensuite, on chargera tout ce qu'on peut du programme en mémoire (dans la limite du segment, qui est généralement plus petite que celle du programme), pour l'exécuter.
Et lorsque l'on voudra exécuter une partie de programme qui n'est pas en mémoire, on va libérer un segment non utilisé (en écrivant son contenu sur disque, action de swapping), pour le remplacer par le bout de programme souhaité (qui se fera remplacer lorsqu'il ne sera plus utilisé et que de l'espace sera nécessaire pour autre chose)...
Mais on rentre là dans les mécanismes de gestion partage mémoire pour des processus multiples...
Euh, ben non, le forum est là pour ça !
OS : Operating System (Système d'exploitation : windows, unix, linux, solaris, mvs, os/400, gcos8, ms-dos...)
Les attributs sont en principe fixés lors du chargement en mémoire :
- un programme contient du code et a besoin de zones pour stocker temporairement des variables
- lors de la compilation/édition des liens du programme, le processus va fixer les plages dans lesquelles vont se stocker le code et les variables
- lorsqu'on va lancer le programme, l'OS (par l'intermédiaire de son gestionnaire de mémoire) va analyser ce que l'on veut charger et déclarera (donc marquera) : le code ira dans le segment toto en read-only et les variables dans le segment tutu en read/write
Les attributs du segment sont généralement de quelques bits, car on ne trouve pas une infinité d'états : read, read/write, execute, non swappable... Mais il n'est pas interdit de penser qu'un OS est allé plus loin dans les attributs des segments pour en déclarer d'autres...
Ensuite, on chargera tout ce qu'on peut du programme en mémoire (dans la limite du segment, qui est généralement plus petite que celle du programme), pour l'exécuter.
Et lorsque l'on voudra exécuter une partie de programme qui n'est pas en mémoire, on va libérer un segment non utilisé (en écrivant son contenu sur disque, action de swapping), pour le remplacer par le bout de programme souhaité (qui se fera remplacer lorsqu'il ne sera plus utilisé et que de l'espace sera nécessaire pour autre chose)...
Mais on rentre là dans les mécanismes de gestion partage mémoire pour des processus multiples...
daccord mais quelle operation je dois effectuer pour savoir si
W(2,00900) par exemple et valide ou non
W(2,00900) par exemple et valide ou non
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
W(2,00900)
C'est supposé être quoi au juste ?
Un bit d'attribut, suivi d'un numéro de segment et d'un offset ?
Ou alors un pseudo-ordre machine pour écrire 2 octets à l'adresse 900 ?
Eclaire-moi ! :-)
C'est supposé être quoi au juste ?
Un bit d'attribut, suivi d'un numéro de segment et d'un offset ?
Ou alors un pseudo-ordre machine pour écrire 2 octets à l'adresse 900 ?
Eclaire-moi ! :-)
eh bien normalement c'est un acces , execution(segment,deplacement)
mon exercice est le suivant :
Pour chacun des accès suivants, déterminez si les accès sont légaux:
Si oui donner l’adresse réelle de l’emplacement mémoire adressé.
Sinon donnez la cause de l’erreur (dépassement de la taille du segment et/ou droits incompatibles)
X ( 1 , 00700 ) // Demande d’exécution dans le segment 1, déplacement 00700
W (2, 00900)
R (1, 00900)
R (3, 01000)
R (5, 00800)
X (6, 00800)
W (5, 00900)
R (6, 37000)
mon exercice est le suivant :
Pour chacun des accès suivants, déterminez si les accès sont légaux:
Si oui donner l’adresse réelle de l’emplacement mémoire adressé.
Sinon donnez la cause de l’erreur (dépassement de la taille du segment et/ou droits incompatibles)
X ( 1 , 00700 ) // Demande d’exécution dans le segment 1, déplacement 00700
W (2, 00900)
R (1, 00900)
R (3, 01000)
R (5, 00800)
X (6, 00800)
W (5, 00900)
R (6, 37000)
Tout dépend de la taille des segments...
Et de la possibilité d'adresser au-delà de la fin du segment par l'offset...
Et de la possibilité d'adresser au-delà de la fin du segment par l'offset...
A partir du moment où les segments font 64 Ko et que les déplacements sont tous inférieurs à cette valeur (même s'ils sont en hexa, ce qui n'est pas précisé dans ta demande), tout peut passer (aux attributs près : le segment 5 doit être en r/w, le 6 et le 1 en r/w, etc...)...
...avec un bémol pour le dernier, qui, si l'on suppose que l'offset est en hexa demande un déplacement hors segment, mais je ne sais pas ce qu'il y a après le segment 6...
...avec un bémol pour le dernier, qui, si l'on suppose que l'offset est en hexa demande un déplacement hors segment, mais je ne sais pas ce qu'il y a après le segment 6...