BIOS, barramentos e dispositivos

Este artigo detalha: o BIOS, o relacionamento entre CPU e memória, interrupções, DMA, RTC, geometria do disco rígido, a árvore de diretórios em um sistema Linux, configurando e reconhecendo dispositivos nos barramentos ISA, PCI, USB, SCSI e ainda comentarei sobre modems e placas de som. Para terminar o artigo, comentarei sobre o sistema virtual de arquivos proc e sua funcionalidade.

[ Hits: 126.031 ]

Por: Rafael em 26/11/2007


Interrupções



Todo programa de nosso computador, embora se encontre armazenado no disco rígido normalmente, para que se torne ativo precisa ser carregado (totalmente ou em parte)na memória principal ou RAM, em que poderá conversar com a CPU. Contudo temos um problema, a CPU de nosso computador só é capaz de realizar instruções sequenciais, e ainda hoje é assim, mas nosso computador atual é multi-tarefa, como isso é possível? Afinal se a CPU só é capaz de executar uma instrução por vez, o computador deveria ser ainda mono-tarefa, executando um programa por vez apenas. Para realizar esta mágica é que as interrupções entram em ação.

Uma requisição de interrupção ou IRQ(Interrupt ReQuest), é um sinal enviado à CPU de nosso computador pelos dispositivos conectados ao nosso computador ou pelos nossos programas, instruindo que o nosso processador pare o que estiver fazendo e execute uma função mais importante ou urgente. Desta forma podemos ter vários programas em execução na memória que aliás adquirem o nome de processos uma vez que estejam disponíveis na memória principal.

Basicamente é como se existisse um processador virtual para cada processo ou programa em execução do computador é uma vez que este recebe um pedido de IRQ, ele salva suas informações, contendo inclusive informações contidas nos registradores da CPU(que é um tipo de memória interna existente na CPU) e o estado corrente do seu programa, isto é, o seu contexto, neste processador virtual até o momento em que a CPU chame novamente o processo para que entre novamente em ação.

Assim o tempo de uso da CPU é dividido por diversos programas, porém como o processador é veloz e o tempo de uso da CPU pelos programas é muito pequeno, nós sequer notamos esta troca e temos a impressão de que estamos escutando música enquanto gravamos um CD por exemplo, mas na verdade está ocorrendo uma troca de contexto constantemente entre o programa de gravação de CD e o nosso tocador de música.

Outro pedido de interrupção comum por exemplo é o de falta de papel de uma impressora, quando pedimos para imprimir um determinado documento com:

# lpr /home/usuário/teste.txt

Estamos enviado o nosso arquivo ao SPOOL(Simultaneous Peripheral Operations On-Line, uma fila de arquivos a serem impressos) de nossa impressora, aonde ele aguarda o momento de ser impresso. Se no momento de impressão a impressora está sem papel, ela envia uma interrupção de falta de papel a CPU que interrompe o processo de impressão, mesmo que hajam outros arquivos na fila de impressão.

Outro exemplo, se estamos jogando um jogo e digitando no teclado, o nosso processador está sendo interrompido constantemente por interrupções do teclado a parar de realizar o que quer que esteja fazendo e tratar o sinal do teclado. Na verdade, há duas interrupções passadas pelo teclado quando pressionamos uma tecla e quando a soltamos. Cada uma dessas operações gera dois sinais distintos do teclado ao nosso processador que precisa lidar de alguma maneira com esses sinais de tempo real. Afinal quando você digita um texto qualquer, você deseja que este apareça o tão rápido quanto possível no seu monitor, ou se você clica na seta para direita você deseja que seu personagem do jogo se mova o mais rápido possível para a direita.

Nas plataforma derivadas do x86, as interrupções ou IRQs são numeradas de 0 a 15. E algumas delas são reservadas para propósitos específicos como uso do teclado ou do RTC, que veremos mais adiante, alguns IRQs tem uso comum para determinados dispositivos mas podem ser alterados e por fim outros são deixados livres para quaisquer outros dispositivos que sejam adicionados ao sistema.

Uma típica lista de interrupções:



Para ter acesso as interrupções existentes no seu computador, no Linux digite:

# cat /proc/interrupts

Obs: o padrão ISA original torna bastante difícil compartilhar interrupções entre dispositivos ISA. Idealmente, cada dispositivo ISA precisa ter seu próprio IRQ, ao contrário do que acontece com o padrão PCI que torna o processo mais simples permitindo que dispositivos PCI compartilhem o mesmo IRQ.

Página anterior     Próxima página

Páginas do artigo
   1. BIOS: Basic Input Output System
   2. CPU e Memória
   3. Barramentos
   4. Interrupções
   5. Endereços de E/S
   6. Endereços DMA
   7. RTC - Relógio de tempo real
   8. Disco rígido
   9. Árvore de diretórios
   10. Configurando suas placas de expansão ISA e PCI
   11. Configurando suas placas de expansão USB e SCSI
   12. Configurando modems e placas de som
   13. Detectando novos dispositivos
   14. O diretório /proc/
   15. Conclusão e licença
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Resolvendo definitivamente a configuração de placa de TV e webcam

Gerenciando Mouses da Razer

Medindo a temperatura da CPU na PCCHIPS M810 e outras placas

Memórias

Como instalar um cartão PCMCIA (modem/rede) no meu notebook?

  
Comentários
[1] Comentário enviado por scoob em 27/11/2007 - 07:19h

It's awesome !!!!!

;>))


Parabéns!!!

[2] Comentário enviado por jeferson_roseira em 27/11/2007 - 10:35h

Muito bom o tutorial

[3] Comentário enviado por engos em 27/11/2007 - 11:18h

Isso que á artigo de verdade!

A maioria posta dicas como artigo e o pessoal deixa passar, mas o seu sim dá orgulho até de ler, entrei para verificar sobre o que se tratava pensando ser outro artigo fajuto sobre o assunto e fico contente por ter me enganado.

Parabéns, esse é digno dos top 5 do site.

[4] Comentário enviado por TSM em 27/11/2007 - 11:43h

Muito bom cara.
Parabéns.

[5] Comentário enviado por brunojbpereira em 27/11/2007 - 15:20h

Seu artigo sobre os detalhes do funcionamento de um computador e relacionando-o com o sistema linux foi genial. o artigo está nota 10.

[6] Comentário enviado por elgio em 28/11/2007 - 15:37h

Muito bom teu artigo. Nada mais posso dizer que já não tenha sido dito.

Observei que no final tu colocou uma nota de Copyright... legal, acredito que isto deva até ser incentivado aqui no Vol.

Outra coisa é sobre os HDs... Eu não sou 100% da area pois abandonei hardware faz algum tempo, mas pelo que me lembro alguns HD tem seus setores dispostos em forma de aspiral, onde cada setor tem o mesmo tamanho físico, em contra ponto ao modelo tradicional onde os setores mais internos são menores e, por terem o mesmo tamanho em bytes, tem seus bits mais "espremidos". Isto requeria até algumas técnicas especiais de armazenamento para que um bit ZERO expremido entre dois bits 1 não acabasse virando 1 também (principalmente nos setores mais centrais onde o "expremido" é mais violento)

Como hoje isto é uma coisa que só interessa a controladora do disco (que esta DENTRO do disco) não é assim tão importante.

Em tempo: há 15 ANOS ATRÁS eu era técnico em eletrônica e dava manutenção em computadores. Frequentemente a gente dizia para o cliente que o problema era apenas de BIOS. Nosso cógido interno traduzia, neste caso, BIOS para "Burro Incapaz que Operava o Sistema". Era uma senha para dizer que o problema era rateada do usuário... Ainda se usa esta "tradução" nos bastidores? (assim como o problema de Osmar. Os Mar Contato... hehehehehe)

[7] Comentário enviado por rafastv em 28/11/2007 - 22:39h

Muito obrigado pelos comentários pessoal :) Eu tentei fazer o melhor possível e ser bem claro em todos os momentos. Quanto as traduções eu realmente conheço e uso da BIOS, do Osmar é nova para mim hehehehe


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts

IRQ

uso

descrição

0:

temporizador do sistema

reservado para uso interno

1:

teclado

reservado para uso do teclado

2:

cascade para IRQs de 8 à 15

o circuito original dos x86 pode gerenciar até apenas 8 IRQs, para conseguirmos os 16 precisamos usar o IRQ 2 para gerenciar os IRQs de 8 à 15.

3:

Segunda porta serial RS-232

usado por /dev/ttyS1 ou /dev/ttyS3

4:

Primeira porta serial RS-232

usado por /dev/ttyS0 ou /dev/ttyS2

5:

Placa de som ou segunda porta paralela

usado por /dev/lp1 ou /dev/audio

6:

controlador do disquete

reservado para controlador do disquete

7:

primeira porta paralela

usado por /dev/lp0

8:

RTC ou Real Time Clock

usado pelo relógio interno do sistema

9:

interrupção disponível


10:

interrupção disponível


11:

interrupção disponível


12:

mouse PS/2


13:

Coprocessador matemático

reservador para uso interno

14:

controlador primário ATA

usado por dispositivos na ide primária

15:

controlador secundário ATA

usado por dispositivos na ide secundária