[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Re: Metodo SYNC



 > >  > Entao o metodo sync so deve dar fsync no raf????
 > > 
 > > Sim, o metodo sync() da classe DBFile só dá um fsync() no FileDescriptor
 > > do raf.
 > > 
 > >  > eu achei que o sync procurava por todas as paginas de um dbfile no
 > >  > bufferpool, e forcava a escrita em disco de cada uma delas....Afinal,
 > >  > o que exatamente o metodo sync faz????
 > > 
 > > Não, a classe DBFile não sabe nada sobre buffers e nem conhece o buffer
 > > pool. O BufferManager é quem conhece e usa os DBFiles. Os métodos flush
 > > e flushAll das classes BufferManager e Page chamam o método sync da
 > > classe DBFile. (É para isso que temos o sync no DBFile. Lembre-se que
 > > todo acesso a disco é feito através da classe DBFile.)
 > > 
 > > Reverbel
 > 
 > Quando eu dou sync num arquivo,eu estou so escrevendo os dados
 > modificados ou eu estou escrevendo o arquivo inteiro????

Está escrevendo os dados modificados que estão nos buffers do linux e
ainda não foram copiados para disco.

O sync() do FileDescriptor chama a system call abaixo:

> FSYNC(2)            Linux Programmer's Manual            FSYNC(2)
> 
> 
> NAME
>        fsync  -  synchronize a file's complete in-core state with
>        that on disk
> 
> SYNOPSIS
>        #include <unistd.h>
> 
>        int fsync(int fd);
> 
> DESCRIPTION
>        fsync copies all in-core parts of a file to disk.

Esta man page não está muito boa... Embora ela diga "all in-core parts",
eu acho que só são copiadas as partes do arquivo que foram modificadas.

 > 
 > Para declarar um raf, eu faco:
 > 
 > RandomAcessFile thisfile = New RandomAcessFile(nomearq,modo)
 > 
 > e so isso q eu tenho q fazer ou tem algo mais?
 > 

Acho que é só isso. Ah, o 'New' é com minúscula.

Reverbel