|
|
|
|
Google Site
|
|||||||
| Forums | S'inscrire | Blog | Man Pages | Forum Rules | Liens | Albums | FAQ | Utilisateurs | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| Linux RedHat, Ubuntu, SUSE, Fedora, Debian, Mandriva, Slackware, Gentoo linux, PCLinuxOS. Toutes les questions Linux ici! |
![]() |
|
|
Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|||
|
défaillance de page manche
Pour copie zéro de la communication entre le processeur, j'ai alloué une piscine dans le noyau. Depuis l'espace utilisateur, elle mai mmap le dispositif de mémoire virtuelle dans l'espace utilisateur soit 0x80000000. le client mai envoyer un message au serveur, il demande mai un tampon, noyau va allouer un bloc pour elle et l'enregistrer dans la piscine. Après cela, le client (espace utilisateur) sera obtenu une adresse (qui a été traduit en l'espace d'adressage de l'utilisateur) par exemple: il sera 0x80003ffe4, le noyau va enregistrer le décalage 0x3ffe4 dans la piscine. Mais durant l'écriture de l'adresse de l'espace utilisateur 0x80003ffe4, je effectuer le suivi de la faute de mémoire poignée processus, j'ai eu la VMF-> virtual_address - VMA-> start \u003d 0x3f000, je suis le décalage 0x3f000 de trouver la page, en fait, le décalage n'est pas droit.
Alors, pourquoi est le décalage 0x3f000 autres que 0x3ffe4? L'écoulement d'appel: char * buf \u003d ipczalloc (6); / / buf \u003d 0x80003ffe4. memcpy (buf, "12345", 5); / / entrera faute VMA manche Le code ci-dessous: ipcmem_vm_nopage static int (struct vm_area_struct * VMA, struct vm_fault * VMF) ( unsigned long offset; VMF-offset \u003d> virtual_address - VMA-> start; printk ( "le décalage est x.% \ n", offset); ) ---------- Message mis à jour 09-28-09 à 12:52 am ---------- Mise à jour précédente a été 09-27-09 à 11:23 pm ----- ----- J'ai obtenu la réponse, puisque le noyau avant de faire l'erreur de page, la vmf.virtual_address \u003d (__user void *) (adresse & PAGE_MASK) PAGE_MASK \u003d ~ (0xFFF) À partir du code source du noyau, il n'existe aucun moyen d'obtenir l'adresse d'utilisateur réel de gestionnaire faute VM. Alors, y at-il préférable de régler cette situation? |
| Liens Sponsorisés |
|
|
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|
Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
|
||||
| Fil | Thread Starter | Forum | Réponses | Last Post |
| En haut Page et exécutables en page | srage | Solaris | 9 | 11-17-2008 09:52 PM |
| Awk ne peut pas gérer plus de 30 fichiers | HugoH | UNIX pour les nuls Questions et réponses | 3 | 10-20-2008 05:34 AM |
| lpr-faire pour imprimer à partir d'une page à | naamas03 | De programmation et de script Shell | 4 | 12-26-2007 06:30 AM |
| Page Fault très élevé | Ahmad | Solaris | 2 | 05-06-2006 04:54 PM |
| Les données de défaillance de page | wobitu | HP-UX | 2 | 12-11-2003 09:19 AM |