segunda-feira, 22 de novembro de 2010

MODULO IV - MANUTENÇÃO DE COMPUTADORES

INTRODUÇÃO
Como você pode perceber, estamos chegando ao final dessa nossa etapa de estudos. Mas antes, trataremos de algumas questões consideradas básicas e essenciais para o funcionamento correto do computador. Nesse caso, especificamente, nesta unidade, discutiremos sobre alguns procedimentos e posturas preventivas que você poderá tomar no dia-a-dia, evitando assim, problemas nos computadores com os quais trabalha.

ADOTANDO POSTURAS PREVENTIVAS
Realizar a manutenção de um computador, em alguns casos pode ser um procedimento difícil, demorado e caro. No entanto, é importante sabermos que muitos dos problemas que podem ocorrer em um computador podem ser evitados com medidas muito simples, como limpeza e organização.

Assim, manter limpos os periféricos do computador, como teclado, mouse, monitor e caixas de som, aumenta o tempo de vida útil desses componentes, evitando o desgaste que ocorre com o acúmulo de sujeira.
A organização dos componentes externos, também é importante para manter a refrigeração das partes internas. Para isso, precisamos tomar cuidado para não obstruir as passagens de ar, principalmente as do gabinete.

LIMPANDO O TECLADO
Você já deve ter percebido que é comum acumular, na base do teclado, muita poeira, cabelo, pedaços de papel e outros tipos de sujeira. Portanto, precisamos ficar atentos, fazendo a limpeza do teclado quando isso ocorrer.

LIMPANDO O MOUSE

quarta-feira, 13 de outubro de 2010

MÓDULO III - SISTEMAS OPERACIONAIS

UNIDADE I - INTRODUÇÃO DO MÓDULO SISTEMA OPERACIONAL

No módulo anterior, vimos sobre o funcionamento de alguns componentes de hardware de um computador, tais como os processadores, memória RAM, componentes gráficos e barramentos.
Para possibilitar a interação do usuário com os componentes de hardware, é necessário utilizar um programa de computador denominado sistema operacional. Esse sistema esconde do usuário detalhes que possibilitam a utilização de computadores pessoais em larga escala.
Pensando nisso, desenvolvemos este módulo de maneira que você possa compreender um pouco de como a interação entre hardware e sistema operacional ocorre e possa, também, conhecer boa parte da história dos sistemas operacionais modernos.
Desde já, esclarecemos que não tratamos mais da parte física do computador, mas sim da parte lógica, responsável por manipular, de alguma forma, a física. (fig 01)


SISTEMA OPERACIONAL É SOFTWARE
Em um estudo mais detalhado, você poderá verificar que o sistema operacional está presente desde sistemas para controle de aviões de guerra, até em aparelhos celulares. Nesta unidade, descreveremos detalhes interessantes e intrigantes do Sistema Operacional. Para melhor compreensão dos Sistemas Operacionais, observamos que será necessário, antes de entrarmos em detalhes a esse respeito, definirmos o que venha ser um Software.

Software (ou programa de computador) pode ser definido como a sequência de instruções lógicas a serem seguidas e/ou executadas na manipulação, redirecionamento ou modificação de um dado, uma informação ou um acontecimento. Um exemplo que caracteriza bem essa situação é quando você navega na Web, pois para navegar você utiliza um software denominado navegador (em inglês, browser). Os Software podem ser categorizados em: aplicativos e software de sistema. (fig 02)

APLICATIVOS E SOFTWARES DE SISTEMA
Os aplicativos são softwares, com finalidades específicas, comprados, baixados da internet ou desenvolvidos pelos usuários, por exemplo, editores de textos, planilhas, jogos e sistemas de controle de estoque. Já os softwares de sistema fornecem o ambiente e as ferramentas nos quais os aplicativos podem ser criados e executados. Nessa categoria, estão situados o interpretador de comandos (também conhecido como shell), os compiladores, programas independentes de aplicação e o sistema operacional. (fig 03)


PRINCIPAIS SISTEMAS OPERACIONAIS
No entanto, gostaríamos de ressaltar que nem todos os sistemas computacionais precisam de sistemas operacionais. Podemos citar como exemplo, a máquina de lavar. A partir da interação do usuário com alguns botões específicos, esta realiza um conjunto de ações relativamente simples tais como ligar, lavar, enxaguar, desligar etc. Por isso, a adoção de um sistema operacional, apenas aumentaria os custos de desenvolvimento e produção.

Nos sistemas computacionais que precisam de sistemas operacionais, tais como os computadores pessoais, os mais conhecidos e utilizados são:
Microsoft Windows: família de sistemas operacionais criados pela Microsoft. Entre as versões do Windows estão o Windows 95, Windows 98, Windows 2000, Windows ME e o Windows 7.

Mac OS: família de sistemas operacionais criados pela Apple, destinados aos computadores da linha Macintosh.
Unix: tem sido o sistema operacional favorito dos programadores e a versão Linux tem se tornado popular para computadores pessoais. (fig 04)

FUNÇÕES DO SISTEMA OPERACIONAL
Existem ainda centenas de outros sistemas operacionais desenvolvidos para sistemas computacionais com finalidades específicas como mainframes, robótica, manufatura, sistema de controle em tempo real, entre outros.
Cada sistema operacional possui aspectos que se diferenciam em relação aos outros. Neste módulo, discutiremos os pontos que são comuns entre os sistemas da família Windows e Unix.
Resumindo, o sistema operacional realiza duas funções que não estão relacionadas: apresentar ao usuário uma interface conveniente com o hardware, o que é denominado de máquina estendida (ou máquina virtual), e gerenciar recursos do sistema (tais como processadores, memórias e dispositivos de entrada e saída). Essas funções serão detalhadas no decorrer deste módulo. (fig05)

ELEMENTOS DO SISTEMA OPERACIONAL
A figura, ao lado, mostra o sistema operacional em relação aos elementos de um sistema computacional.
Conforme essa figura, o sistema operacional gerencia recursos de hardware, permite aos aplicativos acessarem recursos de sistema (diretamente ou utilizando softwares de sistema) e fornece uma interação direta do usuário com o computador. (fig 06)

SISTEMA OPERACIONAL COMO UM GERENCIADOR DE RECURSOS
O primeiro destaque que fazemos a respeito do sistema operacional é que ele tem como principal tarefa manter o controle sobre quem está usando determinado recurso, evitando que haja conflitos de requisições entre diferentes programas e usuários.

Vale ressaltarmos que os recursos podem ser compartilhados de duas formas: no tempo e no espaço. E que cabe também ao sistema operacional, determinar como esse recurso será compartilhado no tempo e no espaço.

SISTEMA OPERACIONAL COMO UMA MÁQUINA ESTENDIDA
O sistema operacional também fornece ao programador, chamadas de sistema ou funções de biblioteca para permitir a programação de recursos. Por exemplo, para ler ou gravar dados em um disquete, o programador tem que se preocupar apenas com nomes de arquivos e as operações correspondentes a essas ações.
Para o programador lidar com a entrada e a saída de um CD, o sistema operacional oculta detalhes de implementação sobre o hardware e apresenta uma visão simples e agradável dos nomes dos arquivos que podem ser lidos e escritos. Dessa forma, o sistema operacional protege o hardware do disco e apresenta uma interface orientada para arquivos simples. Ele também oculta aspectos relacionados às interrupções, aos temporizadores, ao gerenciamento de memória e outros aspectos de nível inferior.

TAREFAS DO SISTEMA OPERACIONAL
Agora, vamos acompanhar como as tarefas que competem ao sistema operacional, mencionadas anteriormente, são executadas por ele. Quando o computador é ligado, normalmente o sistema operacional se torna ativo e controla os recursos do sistema. Nesse instante, é carregado um pequeno conjunto de instruções de sistema armazenadas na memória ROM (do inglês Read-Only Memory). Essas instruções verificam se o hardware do sistema está funcionando corretamente e, caso esteja, ativa as unidades de disco do computador. Além disso, todos os elementos chave do sistema operacional são carregados, os programas de inicialização são executados, a interface com o usuário é fornecida e o sistema é preparado para uso. Essa atividade é frequentemente denominada booting. (fig 07)


MULTIPROGRAMAÇÃO
Como já mencionamos anteriormente, na memória principal de um computador, podem existir vários programas armazenados simultaneamente. Esses programas disputam o acesso ao processador para serem executados. A técnica que possibilita manter, ao mesmo tempo, esses programas na memória principal, é denominada multiprogramação. (fig 08)


Um programa em execução reside na memória principal e suas instruções são processadas, uma após outra, em um ciclo denominado buscar-decodificar-executar (em inglês, fetch-decode-execute).
Outro aspecto que gostaríamos de frisar é que todos os sistemas operacionais modernos empregam a multiprogramação. Isso significa que, consequentemente, um sistema operacional deve realizar a gerência de memória para conhecer os programas que estão na memória e em que parte desta, eles residem. (fig 08)

PROCESSOS
Chamamos sua atenção também, para outro conceito importante do sistema operacional, o da ideia de processo, que pode ser definido como um programa em execução. Em outras palavras, um programa é um conjunto de instruções estáticas e um processo é a entidade dinâmica que representa o programa quando é executado. (fig 09 A)

GERENCIAMENTO DE PROCESSOS
Assim, com a multiprogramação, um sistema pode ter vários processos ativos ao mesmo tempo. O sistema operacional deve controlar esses processos com cuidado e, para evitar conflitos, ele realiza o gerenciamento de processos para rastrear o progresso de um processo e todos os seus estágios intermediários. (fig 09 B)


SINCRONIZAÇÃO DA CPU
Em relação às ideias de gerência de memória e de processos, outra necessidade é a sincronização da CPU, que determina qual processo é executado pela CPU em determinado ponto da memória. Gerenciamento de memória, de processo e compartilhamento de CPU são os três principais tópicos discutidos neste módulo.

É importante você ter sempre em mente que o sistema operacional é apenas um programa que deve ser executado. Os processos do sistema operacional devem ser controlados e mantidos na memória principal, junto com outros softwares de sistema e aplicativos. O sistema operacional é executado na mesma CPU que os outros programas.

Antes de detalharmos o gerenciamento de recursos, tais como a memória principal e a CPU, vamos explorar o conceito de tempo compartilhado.

TEMPO COMPARTILHADO
Uma vez feita a contextualização do assunto, passamos a observar que inicialmente, os sistemas de tempo compartilhado foram desenvolvidos para mainframes e que um mainframe é um computador de grande porte, dedicado normalmente ao processamento de uma grande quantidade de informações. Conectados ao mainframe normalmente existem vários terminais burros. Cada terminal burro consiste, essencialmente, de monitor e teclado conectados ao mainframe. O sistema operacional reside no mainframe e gerencia o compartilhamento de recursos entre vários usuários.
Quando um programa é executado no mainframe, a propriedade do processo resultante desse programa é atribuída para o usuário que executou o processo. A CPU é compartilhada entre todos os processos criados por todos os usuários e, para cada processo, é atribuído um tempo de acesso à CPU.
Nos mainframes, a premissa é que a CPU é tão rápida que pode lidar com as necessidades de vários usuários sem que nenhum deles perceba uma queda no desempenho do computador. Na verdade, os usuários de um sistema de tempo compartilhado às vezes podem sentir a degradação nas respostas do computador, dependendo da quantidade de usuários ativos e das capacidades da CPU. Quando o tempo de resposta é demorado, o usuário tem a impressão que o computador está lento.
Atualmente, vários computadores de mesa suportam sistemas operacionais que utilizam o compartilhamento de tempo para permitir que vários usuários utilizem o computador simultaneamente. (Fig 10)


OUTROS FATORES
Como o próprio nome implica, um computador pessoal não foi projetado para ser utilizado por múltiplos usuários e, originalmente, os sistemas operacionais não levavam isso em consideração. Com o passar dos anos, as funcionalidades dos computadores pessoais evoluíram e incorporaram muitos aspectos de sistemas maiores, tais como o compartilhamento de tempo.
Gostaríamos de destacar que, embora o termo computador de mesa seja comumente utilizado como sinônimo de PC, o termo estação de trabalho (em inglês, workstation) é mais apropriado para substituir o termo PC, descrevendo que o computador é individual, entretanto, com capacidade de suportar muito mais usuários. Os sistemas operacionais evoluíram para suportar essas mudanças no uso dos computadores.
Outro fato que também devemos levar em consideração quanto aos sistemas operacionais, é que nos dias atuais, os computadores estão conectados em redes.

UNIDADE II - GERENCIAMENTO DE PROCESSOS

PROCESSOS
Ao executar um programa, o usuário tem a impressão de possuir o processador e todos os demais recursos reservados exclusivamente para seu uso. Na realidade, o processador executa o programa de um usuário durante um intervalo de tempo e, no instante seguinte, poderá processar um outro programa.

Para que a troca de programas ocorra sem problemas, é necessário que todas as informações do programa interrompido sejam guardadas para que, quando este voltar a ser executado, não lhe falte nenhuma informação necessária à continuação do seu processamento.

ESTRUTURA DO PROCESSO
Observe a figura 1. Nela, você pode verificar que um processo é formado por três partes, conhecidas como contexto de hardware, contexto de software e espaço de endereçamento que, juntas, mantêm todas as informações necessárias à execução de um programa.

CONTEXTO DE HARDWARE
Importante sabermos que, quando um processo está em execução, o seu contexto de hardware está armazenado nos registradores do processador e que no momento em que o processo perde a utilização da CPU, o sistema salva as informações do processo no contexto de hardware desse processo. (fig 11 e 12)


CONTEXTO DE SOFTWARE
O destaque que fazemos em relação ao contexto de software, é que a maior parte de suas informações é proveniente de um arquivo do sistema operacional, conhecido como arquivo de contas. Nesse arquivo, gerenciado pelo administrador de sistema, são especificados os limites dos recursos que cada processo pode alocar. O contexto de software é composto por três grupos de informações sobre o processo: identificação, quotas e privilégios (Fig 13).

BLOCO DE CONTROLE DO PROCESSO
Nesta seção, falaremos a respeito do Bloco de Controle do Processo que, de certa maneira, contempla o assunto focalizado anteriormente sobre estrutura de processo.

O processo é implementado pelo sistema operacional, por uma estrutura de dados denominada bloco de controle do processo (PCB, do inglês Process Control Block) e, a partir do PCB, o sistema operacional mantém todas as informações sobre o contexto de hardware, contexto de software e espaço de endereçamento de cada processo.

ESTADOS DO PROCESSO
No slide anterior, comentamos a respeito de Bloco de Controle do Processo, aqui, dando sequência nesse assunto, discutiremos sobre os estados do processo. Iniciamos observando que os processos passam por diferentes estados ao longo do seu processamento, em função de eventos gerados pelo sistema operacional ou pelo próprio processo. Dessa forma, um processo pode encontrar-se em um dos seguintes estados: NOVO, PRONTO, EM EXECUÇÃO e FINALIZADO. Confira nos próximos slides a definição de cada um (Fig 14).

ESTADO NOVO
O processo foi criado. Por exemplo, quando o usuário executa um aplicativo, o processo entra nesse estágio. A criação de um processo ocorre a partir do momento em que o sistema operacional adiciona um novo PCB à sua estrutura e aloca um espaço de endereçamento na memória, para uso. A partir da criação do PCB, o sistema operacional já reconhece a existência do processo, podendo gerenciá-lo e associar programas ao seu contexto para serem executados.

ESTADO PRONTO
O processo tem condições para ser executado e aguarda a oportunidade de utilizar o processador. A partir de um mecanismo conhecido como escalonamento, o sistema operacional determina a ordem e os critérios pelos quais os processos, em estado de pronto, devem utilizar o processador.

ESTADO EM EXECUÇÃO
O processo está sendo executado.

ESTADO FINALIZADO
O processo foi executado ou encerrado e o sistema operacional não precisa manter informações relativas a esse processo.

MUDANÇA DE ESTADO DO PROCESSO

É importante ressaltarmos que muitos processos podem estar nos estados pronto ou espera, simultaneamente. Entretanto, em um computador com processador de um único núcleo, apenas um processo pode estar no estado execução.

Destacamos ainda, que um processo muda de estado durante seu processamento em função de eventos originados por ele mesmo (eventos voluntários) ou pelo sistema operacional (eventos involuntários). Basicamente, existem cinco mudanças de estado que podem ocorrer a um processo, conforme mostrado na figura 15.


PROCESSOS INDEPENDENTES
Falaremos agora sobre três processos: independentes, subprocessos e thread. Esses processos são maneiras diferentes de implementar a concorrência dentro de uma aplicação. O que significa que, busca-se subdividir o código em partes para trabalharem de forma cooperativa. Vamos tratar de cada um desses processos (fig 16).

O uso de processos independentes é a forma mais simples de implementar a concorrência em sistemas multiprogramáveis. Neste caso, não existe vínculo do processo criado, com o seu criador. A criação de um processo independente exige a alocação de um PCB.

SUBPROCESSOS
Subprocessos são processos criados dentro de uma estrutura hierárquica. Neste modelo, o processo criador é chamado de processo pai, enquanto o novo é chamado de processo filho. Além disso, os processos filhos possuem seu próprio PCB e podem compartilhar quotas com o processo pai.

Uma característica desta implementação é a dependência existente entre o processo criador e o subprocesso. Caso um processo pai deixe de existir, os subprocessos subordinados são automaticamente eliminados.

O uso de processos independentes e subprocessos demanda consumo de diversos recursos do sistema. Sempre que um novo processo é criado, o sistema deve alocar recursos, consumindo tempo da CPU, neste trabalho. Outro problema é a comunicação e sincronização entre processos, consideradas pouco eficientes, visto que cada processo possui seu próprio espaço de endereçamento (fig 17).

THREAD
O conceito de thread foi introduzido na tentativa de reduzir o tempo gasto na criação, eliminação e troca de contexto de processos nas aplicações concorrentes, bem como economizar recursos do sistema como um todo.

Em um ambiente multithread, um único processo pode suportar múltiplos thread, cada qual associado a uma parte do código da aplicação. Neste caso, não é necessário haver diversos processos para a implementação da concorrência.

Cada thread possui seu próprio contexto de hardware, porém compartilha o mesmo contexto de software e espaço de endereçamento com os demais thread do processo. O compartilhamento do espaço de endereçamento permite que a comunicação de thread, dentro de um mesmo processo, seja realizada de forma simples e rápida (fig 18).

COMPLEXIDADE DOS SOFTWARES
...A invisibilidade é uma das dificuldades essenciais ao desenvolvimento de software.

Quando Frederick Brooks, um notável cientista da computação de origem norte-americana, conferiu à invisibilidade a denominação de "uma das dificuldades essenciais do software", ele se referia a algo presente no domínio dos bits, sendo possível evitar deadlocks em software , desde que se contorne o surgimento de quaisquer das quatro condições (fig 19). Há técnicas sofisticadas para isso, que fazem uso, por exemplo, de um ramo da matemática, denominado Teoria dos Grafos. Mas este é um assunto para outra conversa.

COMO DETECTAR E TRATAR DEADLOCKS
Por ora, o que provavelmente interessa a você, Aluno Integrado, é que a manifestação dos deadlocks mais comum é aquela que a você, certamente, causa mais irritação: os travamentos de programas. Na maioria das vezes em que um programa de computador deixa de responder, a causa não passa da imperícia do desenvolvedor de perceber as sutilezas envolvidas; tornando-se, portanto, refém daquilo que, tão tragicamente, denominam: invisibilidade.

A um usuário comum, tudo que resta fazer é notificar os desenvolvedores responsáveis pela criação do software a respeito do travamento e, preferencialmente, determinar de que maneira seria possível que eles, os desenvolvedores, reproduzissem o problema no local onde trabalham. Uma das vantagens de se usar software livre em relação aos softwares proprietários, é que o acesso a desenvolvedores de softwares livres costuma ser bastante direto - senão pelas barreiras impostas pela língua. E há chances de que eles tenham tempo suficiente para corrigir o erro, antes que ele volte a aparecer na tela do seu computador (fig 20).

ESCALONAMENTO DA CPU
Outra observação que fazemos, a respeito do assunto tratado no vídeo, é que as decisões de escalonamento da CPU também podem ser realizadas quando se desloca o processo do estado em execução para o estado de pronto, ou quando se desloca o processo do estado de espera para o estado de pronto. Esses são exemplos de escalonamento preemptivo, porque o processo atualmente em execução tem seu estado alterado pelo sistema operacional.

Os algoritmos de escalonamento são avaliados frequentemente por métricas específicas, como por exemplo, o tempo de retorno, que mensura o tempo entre o momento em que um processo chega ao estado de pronto e o instante que vai para o estado de execução. O ideal é que esse tempo de retorno seja pequeno.

ABORDAGENS DE ESCALONAMENTO
É importante você saber que existem várias abordagens que podem ser utilizadas para determinar qual processo será escolhido para passar do estado de pronto para o estado de execução. Destacamos, aqui, as três mais conhecidas: o primeiro a chegar é o primeiro a ser atendido (FCFS, em inglês First-Come, First-Served), o menor trabalho é o próximo (SJN, em inglês Shortest Job Next), e distribuição do tempo de processamento de forma equivalente entre todos os processos no estado pronto (Round-robin)(fig 21).

FCFS
A FCFS é uma abordagem de escalonamento não preemptiva que consiste em enviar os processos para a CPU, na ordem em que eles chegam ao estado de execução. Quando um processo obtém acesso à CPU, esse acesso é mantido desde que a CPU faça uma solicitação obrigando o processo a esperar, como na solicitação de um dispositivo em uso por outro processo.

Suponha que os processos P1 a P5 cheguem ao estado pronto no mesmo instante, mas na ordem e tempo de serviço, conforme mostrado na figura 22.

Na abordagem de escalonamento FCFS, cada processo recebe acesso à CPU. Para simplificar, vamos assumir que os próprios processos não se colocam no estado de espera. Uma vez que estamos supondo que todos os processos chegaram ao estado pronto ao mesmo tempo, o tempo de resposta para cada processo é o mesmo que o seu tempo de conclusão. Dessa forma, o tempo médio é igual a (140 + 215 + 535 + 815 + 940) / 5 ou 529.

O algoritmo FCFS é fácil de implementar, mas não usa fatores importantes, tais como requisitos de tempo de serviço. Apesar do tempo de serviço ter sido utilizado em nossos cálculos do tempo de resposta, o algoritmo não utiliza essa informação para auxiliar na definição da ordem de execução dos processos. O gráfico de Gantt, abaixo, mostra a ordem e o tempo de conclusão dos processos.

SJN
A SJN (Shortest Job First), assim como o FCFS, é uma abordagem de escalonamento não preemptiva que consiste em observar todos os processos no estado pronto e despachar aquele com o menor tempo de serviço. A figura mostra o gráfico de Gantt para o mesmo conjunto de processos que examinamos no exemplo do FCFS. Devido os critérios de seleção serem diferentes do FCFS, a ordem na qual os processos são programados e concluídos pelo SJN também são diferentes. Observe que o algoritmo de SJN se baseia no conhecimento do futuro, ou seja, ele envia à CPU o processo que é executado em menor tempo. Esse tempo é praticamente impossível de determinar. Assim, para executar esse algoritmo, o valor de tempo de serviço para um processo geralmente é estimado pelo sistema operacional, usando fatores de probabilidade diferentes e levando em consideração o tipo de trabalho. Entretanto, se essas estimativas estiverem incorretas, a eficiência do algoritmo se deteriora. O algoritmo de SJN é comprovadamente ótimo, o que significa que se pudéssemos saber o tempo de serviço de cada trabalho, o algoritmo SJN produziria o menor tempo de resposta para todos os trabalhos, em comparação com qualquer outro algoritmo. No entanto, uma vez que não podemos prever o futuro, fazemos suposições e esperamos que essas suposições estejam corretas.

ROUND-ROBIN
O algoritmo de escalonamento round-robin distribui o tempo de processamento de forma equivalente entre todos os processos no estado pronto. Esse algoritmo estabelece uma fatia de tempo determinado, que é a quantidade de tempo que cada processo recebe antes de retornar ao estado de pronto para permitir que outro processo seja executado. Eventualmente, será atribuída, ao processo de preempção, outra fatia de tempo de CPU. Esse processo continua até obter todo o tempo que precisa e finaliza sua execução. Note que o algoritmo round-robin é preemptivo. A expiração de uma fatia de tempo é uma razão arbitrária para remover um processo da CPU. Essa ação é representada pela transição do estado de execução para o estado de pronto. Suponha que a fatia de tempo utilizada para um determinado algoritmo de round-robin seja de 50 e que tenha sido utilizado o mesmo conjunto de processos dos exemplos anteriores. Os resultados do gráfico de Gantt(fig 25).

SISTEMA OPERACIONAL COMO UM GERENCIADOR DE RECURSOS
Para cada processo é dado um intervalo de tempo de 50 unidades, a menos que ele não precise de uma fatia completa. Por exemplo, o processo 2, originalmente, necessita de 75 unidades de tempo. Vamos supor que foi dada uma fatia de tempo inicial de 50. Quando a sua vez de usar a CPU chegar novamente, ele vai precisar de apenas 25 unidades. Portanto, o processo 2 termina e o processamento finaliza em 325 unidades de tempo.

O tempo médio para este exemplo é (515 + 325 + 940 + 920 + 640) / 5, ou 668. Note que esse tempo de resposta é maior do que nos outros exemplos. Isso significa que o algoritmo round-robin não é tão bom como os outros? Não. Não podemos fazer tais afirmações gerais com base em um exemplo. Só podemos dizer que um algoritmo é melhor que o outro para o conjunto específico de processos.

O algoritmo de escalonamento round-robin é provavelmente o mais amplamente utilizado. Em geral, ele auxilia em todos os tipos de trabalho e é considerado o mais exato (fig 25).

GERENCIAMENTO DE MEMÓRIA
MEMÓRIA PRINCIPAL
Gostaríamos de iniciar essa nossa conversa, chamando sua atenção para o fato de que todo computador possui uma memória principal onde são armazenados os programas em execução. E que essa memória pode ser vista como um grande bloco de espaço contínuo dividido em grupos de 8, 16 ou 32 bits. Cada byte (ou palavra de memória) possui um endereço correspondente, que é simplesmente um número inteiro que identifica determinada região da memória.

HIERARQUIA DAS MEMÓRIAS
Relembramos, portanto, que os primeiros sistemas operacionais possibilitavam que, em determinado momento, somente um programa ocupasse a memória principal. Quando o usuário executava outro programa, o que estava na memória era removido para que esse fosse colocado.

Nos sistemas operacionais, em que apenas um programa por vez é carregado em memória para execução, a alocação da memória principal é um problema simples de se resolver: basta reservar uma área de memória para o núcleo do sistema operacional e alocar o programa na memória restante. Assim, nos sistemas operacionais em que vários programas podem ser carregados na memória para execução simultânea, o espaço de memória destinado aos programas deve ser dividido entre eles para possibilitar o uso eficiente da memória principal.

De um modo geral, os programas são armazenados em memórias secundárias (por exemplo, disco rígido, CDs, DVDs e disquetes) devido ao baixo custo, à alta capacidade e à possibilidade de armazenamento permanente de dados (fig 26).

EXECUÇÃO DE PROCESSOS
Vamos pensar o seguinte... como o processador executa apenas instruções localizadas na memória principal, antes de um programa ser executado, o sistema operacional deve transferi-lo da memória secundária para a memória principal. Além disso, o tempo de acesso à memória secundária é muito superior ao tempo de acesso à memória principal.

Com isso, para maximizar o uso de recursos computacionais, tal como o compartilhamento do processador, o gerenciamento de memória deve manter, na memória principal, a maior quantidade possível de processos.

O que nos faz perceber que mesmo na ausência de espaço livre na memória principal, o sistema operacional deve permitir que novos processos sejam aceitos e executados.

RASTREAR PROGRAMA
Importante sabermos ainda, que o sistema operacional também deve proteger as áreas de memória ocupadas por cada programa, além da área onde reside o próprio sistema. Por exemplo, caso um programa tente realizar algum acesso indevido à memória, o sistema deve impedi-lo de alguma forma.

Você se lembra o que frisamos no começo deste módulo? Que em um ambiente de multiprogramação, múltiplos programas (e seus dados) são armazenados na memória principal?

Pois é, isso significa que o sistema operacional deve empregar técnicas para rastrear onde e como um programa reside na memória e converter o endereço lógico de um programa, no endereço físico da memória (FIG 27).

ENDEREÇOS LÓGICOS
Os endereços lógicos são criados como se o programa fosse carregado na localização 0 da memória principal. Vamos ser mais específicos: suponha que um programa seja carregado no endereço 500 da memória física. Assim, se esse programa utilizar o endereço lógico 200, ele fará referência ao endereço 700 na memória física.

Você pode dizer neste momento que, se nós mudarmos as posições de memória do sistema operacional e do programa, então os endereços lógicos e físicos para o programa seriam os mesmos. Isso é verdade. Mas você teria outras coisas para se preocupar. Por exemplo, um esquema de gerenciamento de memória deve sempre levar em conta a segurança, especialmente em um ambiente de multiprogramação. Dessa forma, é necessário impedir que um programa tenha acesso a determinado endereço que esteja além do seu espaço de memória alocado.

Com o sistema operacional colocado na posição 0, todos os endereços lógicos para o programa são válidos, com exceção daqueles que ultrapassam os limites da memória principal. Agora, se movermos a posição do sistema operacional, teremos que impedir que determinado endereço lógico de um programa acesse o espaço de memória dedicado ao sistema operacional. Isso não é complicado, mas aumenta a complexidade de processamento.

terça-feira, 7 de setembro de 2010

MÓDULO II - HARDWARES

UNIDADE I - INTRODUÇÃO AO HARDWARE

UNIDADE I - INTRODUÇÃO

O QUE SE ESPERA
O objetivo desta proposta de estudo, é que ao final dessa jornada, você compreenda os conceitos e fundamentos relacionados a alguns modelos de computadores modernos e quais são os seus principais componentes e processos. E, assim, possa entender que, ao contrário do que pregam os comerciais da mídia, o desempenho de um computador é resultado de uma conjunção de fatores, e não uma consequência direta da velocidade do processador.

DE ONDE PARTIMOS
Aqui, partimos da visão de que, o que se esconde dentro da maioria dos computadores pessoais, nada mais é que um grupo de
componentes eletrônicos integrados, dispostos sobre um grande circuito denominado placa-mãe, que os interconecta e permite que se coordenem a fim de executar determinado processamento.

UNIDADE II - PROCESSADORES

Você já deve ter notado a ênfase que é dada, nas lojas e na mídia em geral, ao processador, quando o assunto é modelos de computadores. De todos os componentes de um computador, o processador, sem dúvida, é aquele sobre o qual mais fábulas foram criadas ao longo da história. Fabricantes de microeletrônicos e, sobretudo, o comércio varejista, frequentemente se valem da falta de compreensão a respeito do funcionamento de tais componentes, a fim de promover suas vendas.

Vale dizer que, embora existam processadores destinados aos mais diversos fins, e que sejam empregados, em parte considerável dos eletrodomésticos produzidos recentemente, a maioria das pessoas se acostumou a associar o termo a um tipo bastante específico de processador: os microprocessadores de propósitos gerais. São eles, exatamente, que propomos aqui, como foco da atenção.

GERADORES DE CLOCK

Observe ainda, que intimamente associado à unidade central de processamento, existe um circuito bastante simples, denominado gerador de clock, responsável pelo envio periódico de sinais elétricos ao barramento frontal, que ditarão a frequência de trabalho do processador.

O circuito gerador de clock é bastante simples. Isso é verdade, e ele não seria digno de maiores detalhes, não fosse a criatividade da indústria de publicidade: quando um ator de comercial de TV anuncia a venda de um “computador com processador de 1 giga”, ele inconscientemente faz referência à frequência de cerca de 1 bilhão de vezes por segundo, com que o gerador de clock envia pulsos elétricos ao processador através do barramento frontal, e que o processador executa instruções contidas na memória RAM.

Então, você fica imaginando... que frequências como aquelas, em que trabalham o gerador de clock e a unidade central de processamento, ao primeiro contato podem parecer muito elevadas, e na realidade foi exatamente nisso que elas se transformaram. Sob o prisma da física, chegou-se ao ponto em que o aumento sistemático da frequência de operação do clock, como resultado da busca incessante por melhoria de desempenho, encontrou como limitante, a velocidade de propagação de impulsos eletromagnéticos.

Isto em virtude de que, voltando ao exemplo do processador de 1 giga, a onda elétrica vinda do gerador de clock (resultante da criação momentânea de um campo magnético sobre um condutor metálico típico) teria que desencadear todas as alterações de estados nos circuitos afetados pela respectiva instrução, antes da ocorrência do próximo impulso, ou seja, em um intervalo de aproximadamente um bilionésimo de segundo. Considerando, de um modo geral, que a velocidade de propagação de radiações eletromagnéticas se situa na faixa dos 300.000 km/s, não é complicado perceber que na nossa máquina de exemplo, entre dois sinais consecutivos de clock, a malha disponível para o fluxo da corrente, obrigatoriamente, deveria possuir alguns poucos centímetros, sob a pena de que, caso assim não o fosse, um sinal de clock se sobreporia ao anterior, e fatalmente causaria a corrupção do estado intermediário, armazenado nos circuitos.

A CORRIDA PELO DESEMPENHO
É importante saber que, como consequência, a corrida pelo aumento de desempenho implicou na aceleração da corrida pela integração de componentes. Esta última trouxe à tona um problema antigo, mas que ainda não havia recebido a atenção necessária, da indústria de microeletrônicos: o da degradação da energia elétrica em forma de calor. À medida que as técnicas de miniaturização foram sendo empregadas na fabricação de componentes eletrônicos, menores se tornaram as suas capacidades de trocar calor com o meio, uma vez que a facilidade com que dois corpos trocam calor é proporcional, entre outros fatores, à dimensão da superfície que os separa, o que fazia, e de certa forma ainda faz, com que o calor dissipado pela corrente que fluía através deles, se acumulasse e, em casos extremos, danificasse o componente.

DISSIPADORES DE CALOR
Agora observe na figura ao lado, que certos circuitos não periféricos, a exemplo da unidade central de processamento, o northbridge, o southbridge, e processadores gráficos em geral, são especialmente penalizados pelo problema da dissipação excessiva de calor. E não é por outra razão, que dificilmente um iniciante consegue localizá-los dentro de um computador aberto, senão por ter se tornado prática comum associá-los a dissipadores: estruturas usualmente fabricadas com cerâmica ou metal, possuidoras de alto poder de condutibilidade térmica, e que por tal, favorecem o fluxo do calor dissipado.

O QUE É UMA INSTRUÇÃO?
Um programa de computador é um arquivo que contém uma sequência de instruções destinadas ao processador. Enquanto o programa não está sendo executado, o arquivo fica armazenado no disco rígido da máquina. No momento em que é executado - o que ocorre, por exemplo, quando você dá um duplo clique sobre o ícone que o representa - as instruções do programa são copiadas para a memória RAM e enviadas uma a uma para o processador. O processador, então, as interpreta e executa as operações necessárias. Os processadores modernos suportam uma variedade de instruções, e elas podem representar diversos conceitos distintos: somar dois números, pintar um pixel na tela com uma cor específica, obter ou enviar informações para dispositivos periféricos, são alguns exemplos.

CICLO DE EXECUÇÃO DE INSTRUÇÕES
Por outro lado, podemos perceber que a existência do ciclo de processamento pouco nos diz a respeito da organização interna do processador. A verdade é que existem, dentro do núcleo da maioria dos processadores modernos, três repartições, sendo que cada uma, encontra-se envolvida em uma ou mais etapas do ciclo fetch-decode-execute, em português, busca-decodificação-execução. De tal modo que a busca e a decodificação de instruções são relegadas a uma repartição denominada unidade de controle, ao passo que a etapa seguinte, de execução, é atribuída à unidade lógica e aritmética. Para melhor compreensão do que comentamos aqui, sobre essas estruturas, o convidamos a observar a ilustração no diagrama de blocos da figura.



REGISTRADORES
Vale observarmos que, durante os instantes que sucedem a busca e precedem a decodificação, certos dados referentes à instrução a ser executada são temporariamente armazenados em unidades de memória denominadas registradores, com funções semelhantes aos módulos RAM, mas com uma distinção importante: registradores são mantidos internamente aos processadores e, por esta e outras razões, os dados que encerram podem ser acessados em muito menor tempo. Esse recurso é considerado extremamente importante, quando se percebe o quanto é difícil a tarefa de manter a sincronia e o desempenho do sistema como um todo.
Bom, imaginamos que até aqui, você já deve ter uma ideia um pouco mais clara sobre o ciclo busca-decodificação-execução de execução de instruções em um processador moderno e suas estruturas relacionadas. No entanto, gostaríamos de lhe informar que ainda existem outros personagens envolvidos, e que a partir de agora, eles também entrarão em cena. Imagine o seguinte cenário: você acabou de voltar de uma festa, e lá, você tinha tirado um monte de fotos com sua câmera fotográfica digital. Chegando em casa, você conecta a câmera no computador e para sua surpresa... Você percebe que esqueceu de usar o flash em todas as fotos! Elas estariam perdidas, e você, com certeza, apagaria todas elas. Mas por mera coincidência, você se lembra de um programa que tinha instalado alguns dias antes, no seu computador, para edição de imagens. Nossa, que alívio! Hein? Então, você decide usar esse programa para alterar a luminosidade das fotos e, embora o resultado não fique lá essas coisas, se formos comparar com uma foto tirada com flash, pelo menos você consegue distinguir seus amigos nas fotos, e vai poder assim, guardá-las como recordação.

PROGRAMAS DE EDIÇÃO DE IMAGENS
Há recursos interessantes em programas de edição de imagens. Aliás, há muitos recursos interessantes neste tipo de software. Mas uma das funcionalidades mais notáveis é que, processamentos como os de alteração da iluminação de uma imagem possuem natureza repetitiva. Intuitivamente, como você deve saber, imagens digitais são formadas por um conjunto de pontos denominados pixels. A única coisa que programas de edição de imagens fazem, na maioria das vezes, é alterar as propriedades de cada um dos pixels que compõem os arquivos sobre os quais eles operam. Então, é de se supor que as instruções do programa usadas para se alterar a luminosidade de qualquer pixel de uma imagem, sejam exatamente iguais às instruções usadas na alteração de quaisquer outros pixels da mesma imagem.

MEMÓRIA CACHE
Agora, já com esses outros personagens em cena, voltando ao contexto do ciclo de execução de instruções, fica evidente o quanto seria trabalhoso se o processador acessasse, para cada pixel da imagem, a mesma instrução da memória RAM. Será que ele não poderia simplesmente armazenar dentro de si, instruções que fossem executadas repetidamente, evitando assim, acessar o barramento da memória e ter que esperar até que os módulos RAM estivessem prontos para enviá-las? De fato, é exatamente isso o que ocorre dentro da maioria dos processadores atuais. Essa região interna ao processador, onde são armazenadas instruções repetidas, é denominada memória cache, e é justamente a capacidade de armazenamento dessas estruturas, um dos fatores que mais contribuem para o desempenho de um processador. Isso se explica pelo fato de que, independente do tipo de software, seja ele um programa de edição de imagens, um navegador, ou um player de vídeo, a ocorrência repetitiva de instruções idênticas é bastante comum.

CONCLUSÃO
Poderíamos detalhar mais o funcionamento das memórias cache, mas para o momento, consideramos como suficiente que você entenda as razões que as tornam importantes. Este conhecimento, aliado às informações que serão apresentadas nas seções seguintes, permitirão que você tome a decisão mais sensata no momento em que precisar adquirir o seu próprio computador.

UNIDADE III - MEMÓRIA RAM

RECAPITULANDO
omo vimos nas etapas anteriores, um resultado importante do aumento da frequência de trabalho do processador foi o encurtamento das distâncias que separam os componentes, de modo que o intervalo de tempo entre dois pulsos consecutivos de clock fosse suficiente para que a corrente elétrica caminhasse pelo circuito. O passo que seguiu essa técnica foi manter ainda mais próximos do processador, aqueles componentes envolvidos em cargas de trabalho pesadas, permitindo que pudessem se comunicar através de barramentos velozes. Assim surgiu o northbridge.

MEMÓRIA RAM E CONTROLADOR DE MEMÓRIA
Talvez você não tenha vivido essa experiência, mas na época em que o vídeo cassete era o sonho dos consumidores, não era raro ser surpreendido com avisos solicitando que, antes de se devolver uma fita VHS alugada, deveria rebobiná-la. Caso você não tenha passado por isso, rebobinar significa retroceder o rolo de filme contido dentro da fita, até o início, deixando-a preparada para o próximo cliente da locadora que tivesse interesse em alugá-la. Esse procedimento era necessário porque, usando os recursos de um vídeo cassete, não era possível partir de uma cena do filme e avançar instantaneamente para outra cena qualquer. Por essa razão, fitas de vídeo cassete são enquadradas como dispositivos de armazenamento de acesso sequencial.

Agora, uma desvantagem própria dos dispositivos de armazenamento de acesso sequencial, reside no fato de que, quanto maior sua capacidade, maior o tempo perdido na localização de determinada informação. Essa limitação foi responsável pela mobilização da indústria eletrônica com vistas à invenção de dispositivos de armazenamento de acesso randômico, que oferecem velocidades constantes de acesso, independentes, portanto, da localização do dado em seu interior.

E SE NÃO HOUVESSE CONTROLADORES DE MEMÓRIA?
Você pode observar, como exemplificado no vídeo, que durante o ciclo busca-decodificação-execução, ao fazer uma busca em RAM por uma instrução, basta ao processador se comunicar com o controlador e solicitar a instrução contida no endereço 1000, ou 20.000 ou qualquer que seja a localização na sequência de endereços. Portanto, não há necessidade de informar precisamente em quais módulos e chip ela se encontra. Então, se o plano sair como combinado, alguns bilionésimos de segundo depois de feita a solicitação, o processador terá “em mãos” o dado requerido.

O GARGALO DE VON NEUMANN
Como você pode perceber, até aqui, preocupamos em enumerar as cenas da peça onde atua a memória RAM, mas foram poucas as intervenções orientadas à apresentação de tais dispositivos como componentes independentes. A verdade é que o desconforto histórico causado pelo descompasso existente entre memória e processador (o que é apresentado, no vídeo ao lado, como Gargalo de Von Neumann) gerou uma variedade de modelos tão diversificada que sua apresentação só poderia soar coerente se feita após a exposição de seu uso.

Sendo assim, vale ressaltarmos que, do ponto de vista taxonômico, as referências anteriores à memória RAM foram pouco precisas. A rigor, memórias RAM não compreendem um único tipo de dispositivo eletrônico, mas uma variedade inteira. Você gostaria de saber em decorrência do quê, não é mesmo? Bom, elas, corriqueiramente, são classificadas de acordo com critérios referentes a certas características de seus módulos, como: encapsulamento, dinamicidade e volatilidade. Vamos analisar cada um deles.

ENCAPSULAMENTO
Mediante o critério do encapsulamento, classificam-se os dispositivos de memória RAM em três grupos distintos: SIMM, DIMM e RIMM. Na prática, esse critério poderia ser relevante, se durante a corrida na disputa pela aceitação do mercado, a combinação de desempenho e o preço acessível das memórias DIMM não tivesse conferido a elas tamanha vantagem sobre os modelos concorrentes. Passada essa fase da competição, tudo o que restou foram anedotas sobre as memórias SIMM, referentes a tempos em que, quando não instaladas aos pares, impediam que o computador sequer fosse ligado. Ainda, associada à beleza desses dissipadores metálicos que, ao mesmo tempo em que cobriam os chips dos módulos RIMM e ocultavam o preço exorbitante com que eram vendidos, também revelavam o desfecho menos ambicioso, restrito a nichos específicos, daquela tecnologia por vezes considerada a antecipação de uma receita de sucesso para a aceitação em massa que ela jamais obteve.

Observe a Figura, nela há representações dos três formatos de encapsulamento discutidos. As memórias RAM dos tipos SIMM e DIMM são identificadas, respectivamente, por perfurações circulares e semicirculares contidas nas extremidades de seus módulos. Veja que a identificação das memórias RIMM e seus chamativos dissipadores, não apresentam dúvida.

VOLATILIDADE
O critério da volatilidade, como o próprio nome sugere, divide as memórias RAM em dois grupos: o das memórias RAM voláteis, representado por dispositivos cujos conteúdos dependem de realimentação elétrica; e o grupo das memórias RAM não voláteis, cujos conteúdos independem de realimentação. Entretanto, é importante que você esteja atento ao fato de que o uso popular da expressão “memória RAM” tratou injustamente de consagrar as RAM voláteis como as únicas representantes da classe.

VOLATILIDADE, NA PRÁTICA
Tratamos das RAM voláteis. Agora, focaremos as memórias RAM não voláteis que têm ganhado notícia, pois elas são o meio mais difundido de armazenamento do conteúdo de players de áudio e vídeo portáteis. Podemos ainda, destacar outro emprego de fundamental importância e menor visibilidade da variedade não volátil das memórias RAM, que é o que consiste na fabricação de circuitos que contêm um tipo híbrido de hardware e software denominado BIOS. Este assunto será discutido mais adiante, em uma seção à parte.

DINAMICIDADE

Continuando a nossa discussão sobre a taxonomia das memórias RAM, chegamos à dinamicidade, o mais importante dos três critérios e que, como sugere a palavra, responde pela divisão das RAM em dois grupos distintos: as memórias estáticas e as memórias dinâmicas.

As memórias RAM estáticas, comumente denominadas SRAM, são compostas por uma infinidade de circuitos denominados flip-flops. Esses circuitos são portadores de certas propriedades que a manutenção de determinados regimes de tensão elétrica, em seus terminais de entrada, gera, em seus terminais de saída, correntes que podem ser interpretadas como os dois estados, 0 e 1, correspondentes aos possíveis valores da menor unidade de informação digital: o já mencionado bit.
As memórias RAM dinâmicas, comumente denominadas DRAM, devem sua estruturação a um conjunto muito numeroso de capacitores, cada um dos quais com potencial de representar os dois estados de um bit; bastando para tanto que esteja eletrizado ou descarregado.

Assim como os nossos corpos que constantemente se eletrizam e perdem a carga elétrica resultante do atrito com o ar, a carga elétrica repassada aos capacitores que compreendem os módulos de memória DRAM também é perdida no ambiente em que se encontram. Por conta disso, os módulos de memória fabricados com esta tecnologia precisam ser periodicamente realimentados. Esta tarefa repetitiva de realimentação elétrica de módulos de memória DRAM é mais conhecida pelo termo em inglês refresh, e é mais uma das responsabilidades que fazem do controlador de memória um dos componentes fundamentais dos computadores modernos.

Vale destacarmos que as memórias DRAM são tradicionalmente caracterizadas por trabalhar sob o ritmo do circuito gerador de clock associado ao barramento frontal. Diz-se, por isso, que elas são memórias “síncronas”. Os modelos mais comercializados, atualmente, de módulos DRAM, são memórias síncronas, capazes de operar a frequências muito altas e com larguras de banda consideráveis. Ao anunciá-las, a indústria exibiu mais uma vez sua preferência pelas siglas, batizando-as de DDR.

CONCLUSÃO

Discutimos bastante a respeito das memórias de acesso randômico, mas mesmo assim, não esgotamos esse assunto. Nem era essa a nossa intenção, pois a cada dia novos modelos, baseados em novas tecnologias, são lançados no mercado e, a quantidade de informações que trazem consigo, torna-se inesgotável, até mesmo para quem se dedica exclusivamente ao estudo da área. Nosso intuito foi apresentar uma imagem mais coesa desse campo, baseada na identificação de grupos de componentes com características semelhantes e na análise das aplicações desses grupos. Esperamos que assim, você tenha uma visão mais clara dessa questão e, nas mãos, a capacidade de fazer escolhas que, na prática, sejam mais adequadas.


UNIDADE IV - COMPONENTES GRÁFICOS

COMPONENTES DE PROCESSAMENTO GRÁFICO
Enquanto falávamos sobre o ciclo de execução de instruções, ressaltamos a importância do controlador de memória ao descrever sua principal responsabilidade: oferecer para o restante dos componentes do sistema uma representação menos complexa da memória RAM, de forma que seu conteúdo pudesse ser acessado através de endereços lineares, ao invés da abordagem baseada em módulos e chips. De forma análoga à maneira com que o controlador de memória reduz a complexidade inerente ao acesso à memória RAM, um circuito denominado controlador de vídeo simplifica o acesso ao conteúdo exibido no monitor de vídeo. Mas de que forma? Você poderá encontrar as respostas a esta e outras questões nesta seção.

TUBOS DE RAIOS CATÓDICOS

Até recentemente, a maior parte dos modelos de monitores disponíveis no mercado era do tipo CRT. Monitores CRT, como ilustra a figura, em suma, são constituídos por uma ampola de vidro forrada internamente por um material luminescente, no interior da qual se aloja um dispositivo eletrônico denominado tubo de raios catódicos, capaz de emitir feixes de elétrons. Por meio da aplicação de um campo magnético sobre os feixes de elétrons, é possível desviar a direção de suas trajetórias, fazendo-os chocar em pontos e instantes específicos da região interna da ampola, iluminando-os, assim, com intensidades e cores desejadas.

MEMÓRIA DE VÍDEO
Os estímulos elétricos responsáveis pela ativação do campo magnético que causa a deflexão dos feixes emitidos pelo canhão de elétrons, como descrita anteriormente, é uma das mais maiores responsabilidades de um componente mencionado no início desta unidade: o controlador de vídeo. A região da memória RAM acessada a cada nova varredura pelo controlador de vídeo, que contém as cores com as quais devem ser pintados os pixels que compõem a imagem da tela, é denominada memória de vídeo ou framebuffer.

FLICKERING
A capacidade de retenção de energia do material luminescente, entretanto, é extremamente reduzida; o que torna o fenômeno da irradiação luminosa dos minúsculos pontos que compõem a imagem na tela, incrivelmente efêmero. Imediatamente após terem sido energizados, sua luminosidade começa a diminuir; e não seriam necessários mais do que alguns poucos décimos de segundos para que o decaimento fosse percebido por qualquer pessoa. Tal limitação foi, em parte, resolvida por meio de uma ideia engenhosa: periodicamente, sob uma frequência configurável denominada taxa de refresh, CRTs varrem a superfície interna de sua tela, reenergizando os pontos que compõem a imagem exibida. Diz-se, em parte, porque monitores incapazes de operar sob taxas de refresh mais altas, geralmente os mais baratos, causam um desconforto visual típico, decorrente de um fenômeno sensorial denominado flickering, caracterizado pela sensação de cintilância do conteúdo da tela.

TEARING
Você já sabe que um game altera o conteúdo da memória de vídeo, e que esta última é acessada pelo controlador de vídeo de modo que ele possa instruir o monitor sobre como colorir os pixels da tela. Imagine, então, se a memória de vídeo dos computadores fosse dividida em duas áreas distintas: uma referente às cores dos pixels contidos na metade superior da tela, e outra referente às cores dos pixels da metade inferior. Suponha também que a varredura feita pelo controlador de vídeo pudesse ser dividida em duas etapas: uma para cada região da tela. Nestas circunstâncias, seria possível ocorrer o seguinte:


O fato comentado anteriormente, de o controlador de vídeo, ao completar a varredura, acessar a área da memória de vídeo referente à metade inferior da tela e instruir o monitor a exibir um fragmento de imagem, é denominado tearing, e é responsável pela frustração dos mais diversos tipos de usuários: desde os amantes de games, para os quais as menores inconsistências visuais são razões suficientes para se deixarem irritar; até usuários comuns, geralmente ansiosos por tirar proveito das experiências que o mercado publicitário não teme por garantir. Embora confundido com o flickering, que é causado por taxas de refresh muito baixas, o tearing resulta, na maior parte das vezes, da imperícia de desenvolvedores de software que ignoram o funcionamento interno das máquinas, especialmente no que diz respeito à maneira com que seus componentes se comunicam.

DOUBLE BUFFERING
Controladores de vídeo, sempre que concluem a varredura da última linha da tela, notificam tal evento aos programas interessados; que por sua vez, devem interpretar tal notificação como a chegada do momento mais propício para a alteração do conteúdo da memória de vídeo. Ocorre que determinados tipos de software recorrem a cálculos computacionais tão intensivos, que mesmo que trabalhassem de forma coordenada com o controlador de vídeo, produziriam flickering, caso a geração fosse feita diretamente sobre a memória de vídeo. A solução empregada por tais softwares, na classe dos quais se enquadra, a título de curiosidade, boa parte dos games modernos, reside em gerar a imagem em uma segunda área da memória RAM e transferi-la de uma só vez, e no instante adequado, para a memória de vídeo. Esta técnica é conhecida por double buffering. A política de intercomunicação da qual participam, neste caso, o controlador de vídeo e outros componentes do sistema, é denominada interrupção, e será um dos assuntos da próxima unidade.

PIXELS
Um tubo de raios catódicos, a bem da verdade, desencadeia efeitos luminescentes de uma única cor; vermelha, verde ou azul. Assim, a representação convincente do espectro de luz visível, por uma limitação física, prescinde da atuação conjunta de três tubos, incumbidos da luminescência simultânea de uma tríade de pontos, que em conjunto compõem um pixel na tela. Essa tríade que forma um pixel, normalmente se encontra em uma disposição triangular equilateral e cada um dos pontos ocupa um dos vértices do triângulo. A distância entre os centros de dois pontos de mesma cor pertencentes a pixels adjacentes é denominada dot pitch, e configura um fator crucial para a exibição nítida de imagens. Com isso, normalmente, quanto menor o dot pitch, melhor e também mais caro será o monitor.

TAXA DE CONTRASTE
A taxa de contraste de um monitor de vídeo, por exemplo, nada mais é que uma medida indireta da diferença de luminosidade existente entre o ponto mais brilhante que o dispositivo é capaz de exibir, e o ponto menos brilhante; quaisquer que sejam as cores desses pontos. E a importância dessa taxa de contraste está diretamente relacionada à fisiologia humana como, por exemplo, a da sensibilidade dos nossos olhos às variações de luminosidade que é ainda maior que nossa capacidade de distinguir várias escalas de cores. Assim, quanto maior a taxa de contraste de um monitor, maior será a sua fidelidade na representação do brilho de uma imagem, e mais caro será seu preço. Trataremos dessa questão da fisiologia do olho humano mais adiante, quando formos discutir certas técnicas computacionais para compactação de imagens.

RESOLUÇÃO DO VÍDEO
Quando tratamos do princípio de funcionamento dos monitores CRT, vimos que a imagem formada na tela é composta por um conjunto de pontos, agrupados em tríades denominadas pixels. Os pixels, por sua vez, encontram-se dispostos na tela sob a conformação de uma matriz semelhante à de um tabuleiro de xadrez, com duas significativas diferenças: primeiro, há muito mais pixels na tela de um monitor do que há casas em um tabuleiro; e segundo, o número de pixels pode ser alterado para valores pré-estabelecidos. Assim, a resolução máxima de um monitor de vídeo indica a maior quantidade de pixels, consideradas as direções horizontal e vertical, que podem ser usados para se representar imagens na tela. E da mesma forma que um pintor, por mais habilidoso que seja, será incapaz de pintar um retrato pequenino com um pincel grande de cerdas espessas, um monitor não conseguirá exibir imagens detalhadas com precisão satisfatória em áreas muito reduzidas, tarefa a que seria submetido caso sua resolução tivesse sido alterada para valores pequenos, em que os centros dos pixels adjacentes se encontram mais distantes uns dos outros. Como você já deve imaginar, quanto maior a resolução máxima de um monitor de vídeo, maior será seu preço.

A METÁFORA DO DESKTOP
Em meados da década de 80, quando a indústria de microcomputadores dava seus primeiros passos em direção à tentativa de popularização da metáfora do desktop, tão profundamente dependente das interfaces gráficas de interação, surgiu a necessidade da adoção de padrões que pudessem nortear o desenvolvimento das tecnologias envolvidas. Um desses padrões foi denominado VGA, e tinha por objetivo definir recursos mínimos de hardware, que permitissem alavancar a disseminação das interfaces gráficas. A partir de então, aos fabricantes de monitores de vídeo interessados no usufruto das óbvias vantagens advindas da associação dos nomes de seus produtos ao de um padrão tão requisitado quanto o VGA, bastava equipá-los com conectores baratos e telas requintadas para a época: capazes de exibir imagens coloridas sobre uma matriz que deveria possuir 640 pixels na largura e 480 pixels na altura.

O PADRÃO VGA
Do ponto de vista histórico, alguns fatos referentes ao desenvolvimento do padrão VGA parecem irônicos. A qualidade superior dos monitores compatíveis com aquele padrão foi, sem dúvida alguma, essencial para sua permanência no mercado; tal afirmativa representa a conclusão a que se chega depois de considerada como são voláteis as tecnologias empregadas na criação de computadores pessoais. O irônico, no entanto, é que a história tratou de conceder créditos não à qualidade das telas de vídeo VGA, intangível por natureza, mas sim ao conector barato que as ligavam ao gabinete do computador. E tamanho foi o desequilíbrio nessa concessão, que ainda hoje, não é exagero dizer que a maior parte das pessoas ignora completamente a existência da sigla VGA, embora saiba que o monitor de vídeo, a que tem acesso, está ligado ao computador por meio de um cabo decorado, em uma de suas extremidades, por um belo conector azul.

Ainda mais surpreendente é o fato de que, mesmo que não tenham acesso a computadores pessoais, essas pessoas, muito provavelmente, têm contato direto com telas compatíveis com o padrão VGA. A matriz de 640 por 480 pixels que muitos consideraram fadada ao esquecimento, hoje em dia atua como coadjuvante no épico da convergência tecnológica, equipando telefones celulares, câmeras fotográficas digitais e handhelds dos mais variados modelos. Elas, enfim, voltaram a ser o canal por meio do qual a informação flui entre homens e máquinas.

CONECTIVIDADE
Tecnologias usadas na construção dos componentes de ligação entre um computador e um monitor de vídeo compreendem o fator da conectividade; e como já era de se imaginar, são responsáveis, em parte, pelo preço destes equipamentos. Recentemente, diversas tecnologias de conexão foram criadas; a maioria das quais, inventadas com o propósito único de reverter certas limitações impregnadas no padrão VGA. A seguir, analisaremos brevemente três destas limitações, e também as respostas dadas a elas pela indústria de microeletrônicos: os padrões de conexão DVI e HDMI.

INTERFERÊNCIA ELETROMAGNÉTICA
No início do século XX, o físico dinamarquês,
Hans Christian Oersted, fez uma descoberta interessante. Ele percebeu que a agulha de uma bússola, que em condições normais se mantinha alinhada com o campo magnético terrestre, sofria uma deflexão sempre que um fio metálico presente em suas proximidades era percorrido por uma corrente elétrica. A explicação dada por Oersted, para tal fenômeno, se baseava na teoria de que o movimento ordenado de elétrons através do condutor, provocava em suas vizinhanças, o aparecimento de um novo campo magnético, cuja interação com o campo magnético terrestre era responsável pelo movimento da agulha. Pela primeira vez na história, fenômenos elétricos puderam ser formalmente associados a fenômenos magnéticos.

O PADRÃO DVI
Em dispositivos cujo aproveitamento da corrente elétrica se dá apenas no nível térmico, a exemplo de chuveiros e ferros de passar, a presença de ruídos na corrente é absolutamente desprezível. Entretanto, dispositivos eletrônicos mais refinados, como é o caso de computadores modernos, se valem de mecanismos de sincronia bastante precisos para atribuição de significado aos sinais transportados pela corrente elétrica. E tamanha é a delicadeza dessa operação, que ruídos mínimos no sinal são capazes de alterar seu significado. O padrão de conectividade DVI foi criado, entre outras razões, como meio de se contornar as limitações do padrão VGA inerentes a este quesito.

O PADRÃO HDMI
A tecnologia de conectividade HDMI foi desenvolvida por um consórcio de empresas formado com o intuito de oferecer meios que suprissem as demandas inerentes à transmissão digital de conteúdo audiovisual. Uma preocupação secundária dos participantes do consórcio era a disseminação de mecanismos que impedissem, ou ao menos dificultassem, a subversão de direitos autorais digitais; o que se concretizou com a criação de um padrão atrelado denominado HDCP.

A UNIDADE DE PROCESSAMENTO GRÁFICO
Para finalizar esta unidade, nos ateremos à análise de um componente de importância central dos computadores pessoais modernos, o qual, até agora, apenas ousamos citar: a Unidade de Processamento Gráfico, ou simplesmente GPU como sugere, em inglês, o nome que dá origem à sigla. Concomitantemente, ainda seguindo a filosofia adotada no início deste curso, veremos como se dá a interdependência da GPU com o restante do sistema e de que maneira eles se coordenam a fim de executar as tarefas que lhes são cabidas.

A UNIDADE DE PROCESSAMENTO GRÁFICO
A revolução causada pela invenção do desktop atuou como força aceleradora da convergência tecnológica, e fomentou práticas que os pioneiros da informática sequer vislumbraram há menos de um século. Assim, a compartimentalização da GPU em unidades funcionais distintas revela a motivação oculta por trás de sua origem: primordialmente, processadores gráficos foram projetados como solução para as restrições de desempenho provenientes do emprego dos computadores na realização de tarefas antes desempenhadas apenas por dispositivos especializados. Usar a tela do computador para assistir vídeos de alta definição ou se divertir com games de última geração tornou-se prática comum entre uma parcela significativa da população. Mas, em termos práticos, que operações são essas das quais tanto se valem os ambientes de desktop, a exibição de vídeos em alta definição e a execução de games? Vamos analisar, caso a caso, a seguir.

OPERAÇÕES GRÁFICAS 2D

O termo ambiente de desktop trata de um estilo de interface de usuário encontrada atualmente por toda a parte, baseada na metáfora do desktop, em que os softwares mais frequentemente usados e as configurações mais comuns do sistema são dispostos de maneira que o usuário possa acessá-los com o mínimo de dificuldade. Seguindo esta tendência, ambientes de desktop modernos fazem uso, por exemplo, de janelas transparentes que permitem a visualização do conteúdo sobre o qual ela se posta. Em meados de 1980, dois pesquisadores publicaram um artigo notável, em que fundamentaram teoricamente uma álgebra destinada à representação de operações voltadas à composição digital de imagens.

Esse modelo matemático levou o nome de seus idealizadores, Thomas Porter e Tom Duff; e tornou possível a simulação da transparência em elementos de interface. Entretanto, a demanda computacional associada à exibição de elementos transparentes, por anos a fio, atuou como um estorvo à disseminação daquelas técnicas; e tamanho era o comprometimento que causavam no desempenho dos processadores de propósitos gerais, que só se tornaram prevalecentes com o advento de componentes de processamento gráfico dedicados: as GPUs.

Além de operações de composição de imagens citadas acima, as engines 2D das GPUs modernas são capazes de realizar uma infinidade de outras tarefas. É bem provável que ao menos uma vez você já tenha usado seu computador para assistir vídeos em DVD. A depender da resolução usada na tela do seu monitor, e obviamente da disponibilidade de uma GPU em sua máquina, sem que tenha se dado conta, você pode ter visto não o vídeo contido no DVD, mas uma representação da versão íntegra, redimensionada a fim de ocupar mais harmonicamente o espaço da tela. Os cálculos matemáticos usados no redimensionamento dos quadros que compõem um vídeo são frequentemente relegados à GPU. Caso o vídeo tenha sido apresentado com legendas, maiores ainda são as chances de que uma GPU tenha sido envolvida.

Isso porque os cálculos para exibição de caracteres, denominados algoritmos de rasterização de glifos, também são computacionalmente pesados. Por esta mesma razão, as cores de fundo das janelas opacas do desktop, em geral, são preenchidas pela GPU através de operações denominadas fill. E a ela, normalmente, também cabe a tarefa da exibição dos ícones presentes na área de trabalho, e do cursor do mouse, ambas executadas por intermédio de operações bit blit. De uma forma geral, uma operação gráfica é realizada por meio de aceleração 2D sempre que sua execução envolve os recursos computacionais da engine 2D da GPU.

OPERAÇÕES GRÁFICAS 3D
De forma análoga, diz-se que quaisquer processamentos executados com o auxílio da engine 3D de um processador gráfico são realizados em regime de aceleração 3D. Podemos ver a representação destas duas operações através da interação ao lado. O mapeamento de texturas é um procedimento muito comum em games modernos por meio do qual uma imagem (textura) qualquer é aplicada sobre um objeto tridimensional. Já a rotação consiste nos movimentos que este objeto tridimensional é capaz de realizar. Mapeamentos de texturas e rotações no espaço, como você pode perceber, são procedimentos bastante complexos do ponto de vista computacional; e são, frequentemente, delegados à engine 3D de uma GPU.

Assim, finalizamos a quarta unidade do módulo Hardware. Nas próximas unidades trataremos dos componentes de um computador pessoal moderno que se ligam ao processador através de barramentos menos velozes.

UNIDADE V - BARRAMENTOS DE MÉDIA VELOCIDADE

A partir deste ponto, voltaremos nossa análise às responsabilidades que são atribuídas aos componentes periféricos de um computador pessoal. A nossa intenção é oferecer uma visão realista das formas como esses componentes se relacionam com os restantes e, assim, levá-lo a perceber que o funcionamento de um computador moderno, diferente da ideia que se tem, não se reduz apenas ao entendimento de seus componentes centrais. Se um computador pudesse ser visto como uma colcha de retalhos, ou seja, fabricado com periféricos e fios que se cruzam e entrecruzam, esta unidade certamente seria destinada ao estudo das técnicas usadas para unir os componentes uns aos outros.

MÉTODOS DE I/O
Os recursos de um computador que permitem a execução de operações semelhantes às citadas no vídeo deste slide, por meio das quais é possível estabelecer uma troca de informações entre o processador e os dispositivos periféricos, são denominados métodos de I/O, e representam um conceito-chave da computação moderna. Denomina-se ainda operações de I/O as operações oferecidas por cada método. A seguir, analisaremos mais detalhadamente três dos mais comuns métodos de I/O: I/O baseado em mapeamento de porta, I/O baseado em mapeamento de memória, e I/O baseado em interrupção.

EXEMPLO DE I/O BASEADO EM MAPEAMENTO DE PORTA

Para tanto, analisemos com mais detalhes, através da ilustração, o primeiro exemplo
citado há instantes atrás. Sempre que você digita em um computador, imediatamente após cada tecla ser pressionada, um sinal elétrico denominado
scan code contendo o valor da referida tecla, é enviado do teclado para um componente denominado controlador de teclado, que normalmente se encontra afixado sobre a placa mãe. O controlador de teclado armazena o valor da tecla em uma área de armazenamento temporário e, envia um sinal, avisando o processador a respeito do evento. O processador, então, se comunica com o controlador de teclado de forma a obter o valor da tecla digitada e, somente após, o exibe na tela.

I/O BASEADO EM MAPEAMENTO DE PORTA
A comunicação entre o processador e o dispositivo periférico, no caso em questão, representado pelo controlador de teclado, é baseada no conceito de portas de I/O, que são valores numéricos associados a alguns dispositivos periféricos conectados à máquina. Podemos dizer que o relacionamento das portas de I/O com os dispositivos, ocorre de maneira semelhante à forma com que se relacionam números de telefones e pessoas. Assim como é possível estabelecer contato com uma pessoa pelo seu número de telefone, também é possível acessar funcionalidades, de alguns dispositivos, através da execução de uma variedade específica de instruções, em conjunto, denominadas instruções de I/O, que tomam como parâmetro, um valor numérico pré-estabelecido, correspondente a uma porta de I/O. O método de I/O propiciado por computadores que oferecem suporte à execução de instruções de I/O, que a propósito compreendem a maior parte dos computadores pessoais, é denominado I/O baseado em mapeamento de porta, ou simplesmente PMIO.

I/O BASEADO EM MAPEAMENTO DE MEMÓRIA

Um segundo método de I/O muito comum é denominado I/O baseado em mapeamento de memória, ou MMIO. Dispositivos periféricos projetados para oferecer suporte a este método de comunicação mantêm vigilância constante sobre as operações que envolvem o acesso à memória RAM; reagindo de maneira específica sempre que ocorrem alterações em áreas da memória RAM monitoradas por eles.

EXEMPLO DE I/O BASEADO EM MAPEAMENTO DE MEMÓRIA
Você já deve ter notado que, nos instantes que sucedem a inicialização de um computador, os elementos de interação disponíveis para o usuário não são formados de janelas ou botões. Até o momento em que o sistema se habilita a exibir imagens, tudo o que se vê na tela são caracteres brancos dispostos sobre um fundo preto. Diz-se, por essa razão, que o computador opera em modo texto logo após sua inicialização, e em modo gráfico a partir desse momento. Sempre que é necessário exibir um caractere em modo texto ou um pixel em modo gráfico, é possível fazê-lo por meio da execução de uma instrução que modifica uma região específica da memória RAM, previamente reservada para esta função. Este é um exemplo típico de I/O baseado em mapeamento de memória.

EXEMPLO DE I/O BASEADO EM MAPEAMENTO DE MEMÓRIA
Como você já deve saber, os processadores pessoais modernos compreendem conjuntos enormes de instruções. Embora todos eles sejam capazes de executar os mesmos tipos de processamentos, a disponibilidade de instruções designadas especificamente para a solução de certos tipos de problemas é uma conveniência valiosa para programadores de computadores. Computadores que fazem uso de processadores capazes de lidar com diversidades grandes de instruções são enquadrados em uma categoria denominada CISC, em contraponto aos computadores RISC.

I/O BASEADO EM INTERRUPÇÃO
O terceiro e último método de comunicação discutido aqui é denominado I/O baseado em interrupção. Através desse método, um dispositivo periférico que necessita enviar dados para processamento, gera um sinal elétrico denominado interrupção, direcionado ao processador, para notificá-lo a respeito da necessidade de atenção. Como resposta, o processador interrompe imediatamente qualquer programa que esteja executando e então atende a requisição do dispositivo periférico, obtendo dele as informações convenientes e processando-as de maneira adequada. Ao final do atendimento a essa solicitação da requisição, o processador retoma o programa interrompido como se nada tivesse acontecido. Observe que a iniciativa relativa ao estabelecimento da comunicação, no caso do método de I/O baseado em interrupção, cabe invariavelmente ao dispositivo periférico, ao passo que nos métodos de PMIO e MMIO, cabe ao processador.

CONTROLADOR DE INTERRUPÇÕES
ma questão, entretanto, precisa ser esclarecida: embora a maioria dos computadores modernos conte com uma diversidade imensa de dispositivos periféricos, seus processadores contam apenas com alguns poucos pinos, quando não um único, dedicados ao recebimento de interrupções. E pelas mesmas razões que é preciso coordenar os veículos que se dirigem a uma mesma rodovia, vindos de estradas diferentes, também foi necessário racionalizar o uso do pino de interrupções do processador. Isso foi preciso, para que as interrupções advindas de dispositivos diferentes, e mesmo aquelas vindas de um mesmo dispositivo, não se chocassem umas com as outras. A solução para esse problema tomou a forma de um componente eletrônico conhecido por controlador de interrupções.

A figura ilustra um controlador de interrupções. A rigor, ele é constituído não por um, mas dois componentes eletrônicos, denominado controlador mestre de interrupções e controlador escravo de interrupções. Esses controladores são associados em cascata e mantidos em contato por um dos vários pinos metálicos que os compõem. Cada um dos referidos pinos é identificado por um valor numérico e é reservado para uso de um único dispositivo periférico. O controlador de interrupções mestre permanece conectado ao pino de interrupções do processador, e tal é a organização deste conjunto, que qualquer interrupção gerada por periféricos do sistema pode ser, seguramente, encaminhada para o processador.

CONTROLADOR DE INTERRUPÇÕES 8259
Assim, finalizamos a análise dos princípios envolvidos na comunicação entre os componentes de um computador. Certamente, ainda há espaço para explorar mais o conteúdo apresentado. Máquinas modernas, por exemplo, contam com uma quantidade de dispositivos periféricos que facilmente ultrapassa o limite imposto pela disponibilidade de pinos do controlador de interrupções, descrito nesta unidade. Além do que, como já foi mencionado em outra ocasião, a maior parte dos computadores pessoais, comercializados atualmente, é equipada não com um, mas com vários núcleos de processamento, encerrados em um único revestimento cerâmico. Isso nos leva a crer que a carga resultante do tratamento das interrupções vindas de um número grande de dispositivos, devesse ser distribuída igualmente pelos núcleos, para evitar que alguns permanecessem sobrecarregados, ao passo que outros ficassem sem ter o que fazer. As soluções para esses problemas foram asseguradas por meio de extensões implementadas sobre a estrutura básica do controlador de interrupções, que culminaram no desenvolvimento de uma série de componentes que, atuando em conjunto, são capazes de lidar com a diversidade atual de periféricos e processadores, da qual todos nós temos nos beneficiado.

PIT, O TIMER DE INTERVALO PROGRAMÁVEL
No início do século XX, dois cientistas publicaram um estudo que desvendou um dos grandes mistérios da medicina. Embora as explorações acerca do funcionamento do corpo humano tivessem alcançado resultados incríveis, até aquele momento ninguém havia dado explicações que justificassem, de modo convincente, um fenômeno muito simples: o batimento do coração. Pesquisadores já haviam montado parte do quebra-cabeça, ao descreverem as influências de determinados hormônios sobre a frequência cardíaca, mas a razão direta das contrações do coração permanecia desconhecida. A busca pela explicação perdurou até 1907, quando Arthur Keith e Martin Flack anunciaram a descoberta de um aglomerado de células denominado nódulo sinoatrial, disposto no interior do músculo cardíaco, responsável pelo envio de sinais elétricos que, em último caso, induziam a contração do miocárdio.

Do ponto de vista biológico, o batimento do coração faz parte de uma rede complexa de atividades orgânicas que propiciam a homeostase - estado de equilíbrio fisiológico indispensável a todo ser vivente -, e que se estendem desde as esferas macroscópicas, nas quais se situam, por exemplo, os movimentos peristálticos da digestão, até as microscópicas, nas quais ocorre a transformação da energia contida nos alimentos que ingerimos. Quando observado pelo prisma do processamento de informações, levando em conta sua relação com o sistema nervoso central, entretanto, o batimento do coração pode ser visto como uma atividade de suporte, imprescindível ao funcionamento do sistema nervoso central.

Por diversas vezes, você já deve ter tido a sensação de que vários programas são executados simultaneamente em seu computador. Ouvir música enquanto navegamos na internet ou digitamos um texto são práticas tão comuns, que nós sequer temos a noção de quanto são complexos os desafios escondidos por trás das interfaces amigáveis de usuário. A bem da verdade, todo computador pessoal moderno faz uso de um software bastante complexo, denominado sistema operacional, que tem como principal finalidade a gestão dos recursos da máquina.


Como você viu na unidade II deste módulo, o processador é um dos recursos mais importantes de um computador e, por isso, o sistema operacional deve buscar meios de utilizá-lo de forma tão otimizada quanto possível, levando em conta os perfis das cargas de trabalho a que eventualmente será submetido. Uma maneira bastante eficiente de usar o processador de um computador pessoal típico, consiste em promover uma alternância de processamento entre os programas que o usuário deseja executar ao mesmo tempo. Assim, desde que os cuidados devidos sejam tomados, é possível executar o navegador de internet durante uma fração muito pequena de segundos, pausá-lo enquanto outros programas quaisquer são executados durante intervalos de tempo semelhantes, e dar prosseguimento à execução do navegador como se ele jamais tivesse sido interrompido. Uma questão crucial referente à implementação de esquemas desse tipo, reside no fato de que, se a fração de segundos em que os programas permanecem inativos for cuidadosamente escolhida, o usuário não perceberá o rodízio a que eles estão submetidos, e terá a impressão de ter sido atendido pela execução simultânea e contínua de vários programas. A função descrita aqui e ilustrada na figura, que compreende sucessivas ativações e inativações de programas a fim de propiciar melhorias na qualidade da experiência do usuário, é denominada escalonamento de processos. E como você verá mais detalhadamente em outro módulo, é uma das atividades de suporte mais importantes de um computador.

Seria perfeitamente possível implementar uma extensão do sistema operacional que periodicamente o informasse sobre a necessidade da execução de atividades de suporte, a exemplo do escalonamento de processos, mas a carga envolvida seria alta demais. A alternativa à qual recorrem os sistemas operacionais modernos, é fazer uso das facilidades oferecidas por um circuito integrado denominado timer de intervalo programável, ou simplesmente PIT, presente em praticamente todos os computadores pessoais. Então, assim como o nódulo sinoatrial informa o coração sobre o momento exato de se contrair, os PITs podem ser programados para avisar o processador sobre a hora exata da execução de atividades de suporte. Dessa forma, cabe aos sistemas operacionais programar o PIT durante a inicialização da máquina, de modo que ele passe a gerar sinais periódicos de interrupção, em resposta aos quais são executadas ações específicas para aquele dispositivo. O que no caso do PIT inclui a decisão referente à possibilidade do escalonamento de processos.

A origem do emprego de PITs em computadores pessoais, no entanto, data de meados da década de 80, época em que os requisitos impostos pelo software, sobre o hardware, eram bem diferentes dos atuais. Desde então, classes inteiras de aplicativos surgiram. Sistemas de tempo real, cuja exatidão pode ser comprometida por atrasos mínimos de processamento, tornaram-se mais comuns. Sistemas multimídia, que dependem de um controle rígido sobre a taxa de transmissão de canais de áudio e vídeo, passaram a fazer parte do cotidiano das pessoas, e disseminaram consigo a necessidade de componentes de hardware mais apurados, capazes de suprir as demandas geradas pelas inovações dos softwares. Pouco a pouco, fontes de interrupções como o PIT estão sendo substituídas por componentes mais precisos, em alguns casos denominados HPET.

domingo, 29 de agosto de 2010

I MÓDULO INTRODUTÓRIO – UNIDADE I: EDUCAÇÃO A DISTANCIA

Vamos dar início a nossa leitura? No Brasil, a educação a distância tem se difundindo de forma bastante acelerada nos últimos anos. Certamente, você já deve ter questionado sobre essa modalidade de ensino. Nesta unidade, terá acesso a algumas informações a esse respeito.
"Educação a Distância é uma forma de ensino que possibilita a auto-aprendizagem, com a mediação de recursos didáticos sistematicamente organizados, apresentados em diferentes suportes de informação, utilizados isoladamente ou combinados, e veiculados pelos diversos meios de comunicação" (Diário Oficial da União, Decreto 2.494, de 10 de fevereiro de 1998).
Podemos deduzir com isso que, com a evolução das tecnologias, em especial da informática, a educação a distância foi favorecida, uma vez que pode romper as distâncias, estando ao alcance das pessoas nas mais variadas regiões. No entanto, vale ressaltarmos que nessa modalidade de estudo é preciso ter certos cuidados, como estar sempre atento às leituras, às interações com os colegas e tutor, questionando e sanando as dúvidas permanentemente; enfim, desenvolvendo ou aprimorando o hábito de estudar. Pois uma característica fundamental do estudante na educação a distância, é a de ser uma pessoa autônoma, isto é, seu aprendizado se baseia no próprio esforço, busca e automotivação.

ESTRUTURA E FUNCIONAMENTO DE EDUCAÇÃO A DISTÂNCIA

Na implantação de cursos, programas, disciplinas, treinamentos, atividade complementares etc, na modalidade de educação a distância, questões que vão desde as referentes aos estudantes (perfil, demanda, possibilidade de acesso, entre outros) e profissionais envolvidos no processo, até as mais complexas, relacionadas às institucionais e pedagógicas precisam ser analisadas e definidas com muito cuidado.
Segundo pesquisas já realizadas, fica evidente que algumas dessas questões precisam ser analisadas antes mesmo da estruturação do projeto pedagógico. Entre elas, destacamos, aqui, algumas consideradas imprescindíveis para o êxito nos estudos e que, de certa maneira, estão relacionadas à forma de comunicação definida para o curso, como:


- Material didático;
- Como se organizar para estudar;
- Encontros presenciais;
- Sistema de acompanhamento;
- Ambiente de aprendizagem.









MATERIAL DIDÁTICO

O Ministério da Educação, ao propor os Referenciais para Elaboração de Material Didático para Educação a Distância no Ensino Profissional e Tecnológico, afirma que, independente da mídia utilizada, esse material "deve estar em consonância com a fundamentação filosófica e pedagógica dos cursos na modalidade a distância e definido no projeto político-pedagógico do curso". Podemos observar assim que, de uma maneira geral, a definição pelo tipo de mídia a ser utilizada fica condicionada às diferentes concepções e práticas pedagógicas do curso, aos conteúdos, às estratégias de ensino, aos contextos socioeconômicos e culturais e à infra-estrutura tecnológica disponível.
Por outro lado, mesmo observando essa realidade, deve-se haver um esforço, no sentido de diversificação dos tipos de mídia, para garantir que os estudantes, mesmo nas diferentes realidades, possam experimentar diferentes formas de aprendizagem, e que esta possa ocorrer de forma prazerosa e produtiva. Outro aspecto considerado relevante quando se trata de material didático para cursos a distância, é que esse material, além de disponibilizado em diversas mídias e linguagem, deve constar no ambiente do curso (na internet) para que o aluno possa consultar na tela do computador ou imprimi-lo, se assim desejar.


O ESTUDANTE NA EaD

As reflexões anteriores nos remetem ao estudante como sujeito autônomo, ativo, que participa e constrói seu conhecimento e, assim, o material didático, como o mencionado, torna-se (entre outras questões) fundamental na viabilização da aprendizagem a distância, uma vez que poderá estimulá-lo a ser ativo no processo de construção do próprio conhecimento. Aqui, vale ressaltar ainda, que no mundo contemporâneo em que vivemos, o conhecimento evolui de forma bastante acelerada, exigindo assim, uma educação voltada para a autonomia do aprendiz. E você, como está se organizando para essa realidade?





COMO SE ORGANIZAR PARA ESTUDAR

Bom, o primeiro passo é que a todo o momento, você esteja relacionando os conceitos teóricos apresentados a situações do cotidiano ou as que o rodeiam. Segundo, que você tenha sempre em mente que não está em uma sala de aula presencial, e que, portanto, pode fazer opção por estudar em casa, no laboratório da escola, na casa de um colega... Isso parece muito legal, não é mesmo? Pode ser sim, mas desde que você compreenda que essa realidade é bem diferente e, portanto, precisa desenvolver ou aprimorar algumas habilidades e características e estabelecer rotinas que favoreçam sua aprendizagem, sem a presença e cobrança constante de um professor.


SITUAÇÕES QUE AJUDAM "APRENDER A ESTUDAR"

Vamos pontuar algumas habilidades e características (práticas) que você precisa desenvolver ou aprimorar para se ter sucesso nesse estudo a distância? Pesquisas realizadas apontam que, para que o estudante aprenda, é preciso:






Para se obter resultados positivos num processo de estudo, recomenda-se que, primeiramente, você faça uma leitura rápida do texto, sem se prender aos detalhes, assim terá uma ideia geral da temática. Em seguida, uma leitura observando e sublinhando as ideias consideradas relevantes para seu objetivo. E por fim, que volte aos trechos considerados complicados, recorrendo (se ainda ficar com dúvidas) a outras fontes de pesquisa: dicionários, outros autores do assunto, etc.


ESTUDO COOPERATICO/COLABORATIVO

E quais são as situações que favorecem o estudo cooperativo/colaborativo?
As situações de aprendizagem nas quais o estudante deixa apenas de receber conteúdos e passa a participar, colaborar e interagir tanto com as temáticas em estudo, quanto com os colegas e tutor (ou outra personagem desse contexto), ele terá oportunidade de conviver com a diversidade cultural e de ideias como com a possibilidade de expressar seu pensamento, e assim, exercer a sua autoria, e o trabalho de produção colaborativo/cooperativo. Nesse processo, você terá contato com diversas ferramentas de interação (listas de discussão, chat entre outras) e de navegação na internet, a exemplo, de hipertextos e outros. Para tanto, você precisa:






SISTEMA DE ACOMPANHAMENTO

Como você já tem algumas informações sobre características de cursos a distância e habilidades que precisa desenvolver ou aprimorar para obter sucesso como estudante nessa modalidade, vamos conversar um pouco a respeito de uma pessoa, considerada fundamental nesse percurso: o tutor.
Provavelmente, com ou sem o tutor, você conseguirá obter resultados positivos nos seus estudos, mas seguramente, com o auxílio dele, terá oportunidades de aprender de maneira mais rápida e ainda descobrir outras coisas que possivelmente sozinho poderia não conseguir. É basicamente essa, a principal função de seu tutor: propiciar o apoio necessário para que você e seus colegas, explorem os conteúdos ao máximo, estabeleçam relações com suas vidas, favorecendo o aprendizado significativo e ainda, com a possibilidade de expandir para outras áreas.



O TUTOR NA EaD
Pelo que pode perceber, é o tutor quem vai estar "bem perto" de você até o final de seus estudos, estimulando-o sempre na superação dos desafios. Entre as atribuições práticas do tutor, destacamos algumas como:






AMBIENTE VIRTUAL DE APRENDIZAGEM

Como já mencionamos, a internet apresenta muitas ferramentas que podem ser utilizadas nas mais variadas formas. E a exemplo dela, também no ambiente e-Proinfo existem esses recursos que podem ser utilizados para comunicação/interação em tempo real e com a possibilidade de registro da mensagem para ser lida, respondida, questionada ou complementada em momentos futuros.



FERRAMENTAS DO E-PROINFO

Vamos conhecer algumas ferramentas do ambiente e-Proinfo?

FÓRUM
No fórum, geralmente é colocada uma questão, uma ponderação ou uma opinião (geralmente pelo tutor), que pode ser comentada pelos participantes, no caso estudantes. Quem quiser pode ler as opiniões e acrescentar comentários. Um fórum é composto por tópicos e cada tópico pode receber várias contribuições.

Essa ferramenta pode ser acessada selecionando o submenu "Comunicação" e em seguida a opção "Fórum", ou atráves da aba "FÓRUM" abaixo.




PORTFÓLIO
O portfólio é uma coletânea de materiais produzidos por cada um dos participantes de um curso e uma turma. Cada participante possui um portfólio onde armazena arquivos e links pessoais e relacionados ao curso e à turma. Esse portfólio é visualizado por todos os participantes do curso.
Para acessar seu portfólio, basta selecionar o menu "Meu espaço" e na categoria "Conteúdo" a opção "Portfólio", ou selecione um dos atalhos do portfólio na página inicial, ou atráves da aba "PORTFÓLIO" abaixo.
Para acessar o portfólio de outros participantes, selecione um dos atalhos do portfólio no espaço da pessoa desejada.





VÍDEO-MAIL
Essa ferramenta, mensagens em vídeo, é pessoal e permite a visualização e troca de mensagens em vídeo entre os participantes cadastrados em uma turma de um curso no ambiente.
Para acessá-la, selecione o menu "Meu espaço" e na categoria "Comunicação" a opção "Mensagens em vídeo".





E-MAIL
A ferramenta mensagens em texto é pessoal e permite a visualização e troca de mensagens em texto entre os participantes de uma turma. As mensagens enviadas poderão ser visualizadas no sistema e no e-mail pessoal do participante, mas quando uma mensagem possuir anexo, este só poderá ser visualizado no e-mail.
Para acessar essa ferramenta, selecione o menu "Meu espaço" e na categoria "Comunicação" a opção "Mensagens em texto".



AGENDA
A ferramenta agenda permite que os participantes controlem seus compromissos diários, observando desde os cronogramas para realização de estudos/atividades até eventos e notícias gerais.
Para acessá-la, selecione o menu "Meu espaço" e na categoria "Apoio" a opção "Agenda", ou selecione um dos atalhos da agenda na página, ou atráves da aba "AGENDA" abaixo.
Viu que interessante? E como será possível construir e trocar, com os colegas, coisas fantásticas! Dê "asas" a sua imaginação e tenha muito sucesso.