[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
Re: Metodo SYNC
- Subject: Re: Metodo SYNC
- From: Francisco Reverbel <reverbel at ime.usp.br>
- Date: Fri, 23 Apr 1999 18:12:48 -0300
> > > 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