o modo bruto (raw mode) e o modo preparado (cooked mode), tambem conhecido como modocanonico.No modo bruto, o caractere representado por cada tecla erepassado diretamente ao programa, sem nenhuma interferencia do driver. Este e o modo ideal paraprogramas que precisam de uma maior liberdade para lidar com as teclaspressionadas pelo usuario. E o caso de um editor de texto que se encarrega detomar uma determinada acao para cada tecla diferente que e pressionada pelousuario.Porem, ha programas que nao tem necessidade de tanta liberdade,para os quais uma entrada corrigida dos dados e mais conveniente. Por exemplo,um interpretador de comandos que aguarda a entrada de um comando do usuario. Supondoque o usuario ira digitar o comando LISTAR. Porem, um erro ocorre, e ele digitaum R a mais no final da palavra. A tecla backspacee pressionada, para que o ultimo caractere digitado seja removido. Nesteexemplo a sequencia de teclas digitadas pelo usuario foi L-I-S-T-A-R-R-backspace.Tudo que o programa precisa saber e que o resultado final obtidopelo pressionamento das teclas foi a cadeia de caracteres LISTAR. O programanao precisa da entrada completa, apenas do resultado corrigido. Neste caso, omodo preparado e o mais indicado, pois livra o programa da responsabilidade deajustar a entrada, deixando-a a cargo do driver.Outra caracteristica necessaria do driver e o ecoamento de caracteres. O caractere correspondente acada tecla pressionada deve ser escrito (ecoado) na tela, de modo a permitirque o usuario visualize o resultado do pressionamento da tecla de formaimediata. O ecoamento, utilizado principalmente com o modo preparado,simplifica em muito a relacao dos programas com o driver, fazendo com que apenas as cadeias corrigidas sejamenviadas as programas, quando o usuario termina de fazer sua entrada de dadospressionando a tecla ENTER. Driver do TemporizadorO controle do tempo e fundamental para o sistema operacional, e muitasvezes para os proprios aplicativos de usuario. Sistemas operacionais precisamcontrolar a quantidade de tempo que um processo esta em execucao. Programas deusuario podem precisar esperar um determinado periodo de tempo para continuarsua execucao, ou mesmo executar um trecho de codigo em um momento especifico.Por causa desta necessidade, os projetistas dos PCsimplementaram o PIT, programmable intervaltimer. O PIT e um chip que gerauma interrupcao em intervalos de tempo programaveis com base em um oscilador decristal independente da CPU [2]. Isto quer dizer que asfrequencias de funcionamento do PIT independem da CPU presente no computador.O driver dotemporizador do sistema FESO tem algumas funcoes importantes. A primeira delase a configuracao do PIT, fazendo com que este gere uma interrupcao (IRQ 0)aproximadamente a cada 50 ms. Essa interrupcao faz com que a CPU interrompa oprograma em execucao, coloque o driverdo temporizador em execucao, e quando este entra em espera, um novo thread e escalonado na CPU.Alem de auxiliar no compartilhamento da CPU, este driver tambem pode receber solicitacoesde threads que desejam ficar emespera por um determinado periodo de tempo. Supondo que um thread queira ficar aguardando durante 1000 ms, basta enviar umamensagem ao servidor, e este ira criar um novo contador para o thread. O thread fica em estado de espera, aguardando por uma resposta doservidor. Enquanto isso, o servidor atualiza o contador a