/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Funcion mmap() y posix_advise

 
      Índice del Foro elrincondelc.com -> Linux
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
pichu27



Registrado: 16 Sep 2011
Mensajes: 6

MensajePublicado: 18/09/2011 3:49 pm
Título: Funcion mmap() y posix_advise

Hola, que tal?
Tengo esta duda, porque necesito abrir un archivo disco ( fat32.disk ) y leer y escribir sus sectores.
Para dicha tarea, me aconsejaron la tarea de mmap() y posix_madvise la cual requiere que implemente antes la primera.
Se que el tamaño de mis paginas es de 4kb ya que lo obtuve con la funcion getpagesize(), ahora con respecto a la funcion mmap() encontre esto:
void *mmap (void *start, size_t length, int prot, int flags, int fd, off_t offset);
donde el primer parametro es el comienzo donde voy a mapear las paginas, el tercero los permisos, el cuarto el tipo de acceso, y el quinto mi archivo que voy a abrir.
ahora mi pregunta es.
1) el argumento size_t length es el tamaño de pagina de memoria o el tamaño de mi archivo o ninguna de las dos?
2) el argumento off_Set se que tiene que ser multiplo del tamaño que ocupan mis paginas de memoria (4kb) pero para que sirve??

Una vez hecho esto, como puedo leer los bytes de esas paginas de memoria que mapeo con la funcion mmap() ?? Requiero utilizar la funcion posix_madvise ?'??

Desde ya muchas gracias al que me ayude, estoy haciendo un trabajo de la facultad bastante complejo para mi, y necesito de su ayuda!!
Volver arriba
Sorancio



Registrado: 29 May 2009
Mensajes: 1157
Ubicación: España

MensajePublicado: 19/09/2011 4:57 am
Título:

mmap es una función que "mapea" un fichero en memoria para que puedas acceder mediante las operaciones típicas de manipulación de memoria al fichero.

Si vas a trabajar sobre POSIX y demás estándares, te recomiendo tener esta página: (link directo a mmap) http://pubs.opengroup.org/onlinepubs/009695399/functions/mmap.html

Es fantástica y da una de información escalofriante. Básicamente toda.

length: Es el tamaño a mappear, no de la página.
offset: Es, efectivamente, éste del fichero. Por ejemplo, empezar un fichero en el offset X ya que los Y primeros bytes son una cabecera de definición.

La verdad, la función posix_madvise no sé para qué sirve. Pero otra vez: http://pubs.opengroup.org/onlinepubs/009695399/functions/posix_madvise.html

¡Suerte!
Volver arriba
pichu27



Registrado: 16 Sep 2011
Mensajes: 6

MensajePublicado: 19/09/2011 9:30 am
Título:

La habia encontrado esa pagina pero como esta toda en ingles muy bien no entendi todo lo que decia.
Entonces.. si tengo un archivo de 512 mb y quiero leer los primeros 512 bytes como deberia implementar la funcion mmap() ??
Volver arriba
      Índice del Foro elrincondelc.com -> Linux
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com