\section{bdflush}
\index{bdflush}
\subsubsection{NOME }
bdflush - servidor responsável pela gravação em disco de dados contidos 
em buffers.  \subsubsection{SINOPSE }
\textbf{bdflush [opc]}  \subsubsection{DESCRIÇÃO }
O \textbf{bdflush} é  usado para iniciar 
o servidor do kernel que descarrega o conteúdo de buffers com dados no 
disco rígido. O trabalho atual de descarga é uma função do kernel, sendo 
que o bdflush na verdade inicia um novo processo que executa esta função. 


O \textbf{bdflush} na verdade aciona um segundo servidor, e este age como mais 
um processo tradicional de atualização de dados, exceto pelo fato de que 
os buffers não são considerados prontos para gravação até que o tempo 
determinado tenha transcorrido. O relógio inicia a marcação de tempo quanto 
o bit de conteúdo é inicializado, e o conteúdo do buffer não será transferido 
até que um determinado intervalo de tempo transcorra. O intervalo é distinto 
para buffers de dados e metadados (tais como diretórios, mapas de bits, 
blocos de indireção, etc...), e as configurações atuais são mostradas quando 
se executa o programa com argumentos através da linha de comando. O padrão 
é de 30 segundos para buffers de dados e 5 segundos para metadados. 

Os 
dois servidores são normalmente iniciados com um comando contido no  /etc/rc: 


/sbin/update 

Note que é necessário ter-se dois servidores sendo executados, 
porque cada um tem um propósito diferente, e que devem estar sendo executados 
antes que qualquer tarefa maior de E/S seja executada. Na verdade o update 
deve ser executado antes que qualquer sistema de arquivos seja montado 
para leitura ou gravação e antes da execução do programa fsck nestes sistemas 
de arquivos. 

Quando o bdflush é chamado por um usuários sem privilégios 
de superusuário, ele chama as funções  flush() e sync() e após é finalizado. 
Não é necessário ter-se 20 servidores update sendo executados simultaneamente. 


 \subsubsection{COMANDO-OPÇÕES }
\begin{dispitems}
\item [\textbf{-d }  ] Mostra os parâmetros do kernel. Com esta opção o programa 
não é colocado em execução. 
\item [\textbf{-h }  ] Apresenta as informações de uso (ajuda). 

\item [\textbf{-s }  ] Caso o bdflush retorne ao comportamento padrão, este parâmetro provoca 
a execução do comando sync com a periodicidade aqui definida. (Em segundos) 
Padrão:30. 
\item [\textbf{-f }  ] Chama a descarga de dados com a freqüência aqui estipulada. 
(em segundos). Padrão:5 
\item [\textbf{-0 }  ] Máxima fração da lista LRU que será examinada 
na verificação de buffers com conteúdo.  
\item [\textbf{-1 }  ] Número máximo de blocos com 
conteúdo que serão gravados cada vez que o bdflush for ativado. 
\item [\textbf{-2 }  ] Número 
de buffers sem conteúdo que devem ser carregados em uma lista de buffers 
livres pela função refill\_freelist 
\item [\textbf{-3 }  ] Blocos com conteúdo necessários 
para ativar bdflush em refill\_freelist 
\item [\textbf{-4 }  ] Porcentagem do cache a ser 
pesquisada por área livres 
\item [\textbf{-5 }  ] Tempo de espera para gravação dos dados 
residentes em buffers 
\item [\textbf{-6 }  ] Tempo de espera para gravação dos metadados 
residentes em buffers 
\item [\textbf{-7 }  ] Constante da média de  tempo de carga de buffers 

\item [\textbf{-8 }  ] Proporção LAV (usada para determinar o limite de eliminação de buffers) 

\end{dispitems}
 \subsubsection{AUTOR }
\textbf{bdflush} foi escrito como um pequeno utilitário por Eric Youngdale 
$<$ericy@gnu.ai.mit.edu$>$. O principal objetivo foi incrementar a performance do 
kernel tornando a descarga de dados dos buffers mais inteligente e adicionando 
suporte a conjuntos de buffers. Sinta-se à vontade para melhorá-lo. Diversos 
aprimoramentos foram realizados por  Phil Bostley $<$bostley@cs.colorado.edu$>$ 
e Daniel Quinlan $<$quinlan@yggdrasil.com$>$.  \subsubsection{PROBLEMAS }
Caso haja algum, possivelmente 
estarão no código do kernel. 
