Como o SO Controla o Hardware

Transcrição

Como o SO Controla o Hardware
Como o SO Controla o Hardware
INTRODUÇÃO
Sistema Operacional
É o programa responsável pelo funcionamento da máquina. É graças a ele que todos os
componentes de hardware se comunicam. Oferece ainda as funções básicas de operação de um
computador.
Saber mexer em um computador requer conhecer no mínimo, as funções operacionais básicas.
É o primeiro programa a ocupar a memória quando o computador é ligado e é com ele que o
usuário trava o primeiro contato.
Além de ser um interface para o usuário poder se comunicar e operar o computador, os sistemas
operacionais modernos ainda possuem uma série de tarefas que ocorrem internamente sem o
conhecimento do usuário.
Cabe dizer que o SO não é apenas um programa e sim um conjunto de diversos programas que
se comunicam entre si e cada um com um tarefa específica. Por exemplo: para que cada
hardware (dispositivo) acoplado ao computador possa se comunicar com este, são necessário os
"programas controladores de dispositivos" conhecidos como drivers.
Resumidamente, como a coisa funciona : o monitor está ligado na placa de vídeo. Esta por sua
vez está espetada na placa-mãe. O driver fica responsável em enviar as informações que
deverão ser exibidas no monitor, definir o esquema de cores, etc.
Outro exemplo: quando você mexe o mouse é o seu driver que interpreta os movimentos e
comunica ao núcleo do sistema operacional que então executa a ação apropriada, enviando para
o vídeo (através do driver de vídeo) a nova posição.
O sistema operacional quem coordena todas as tarefas: que programa pode usar a CPU e
quando; que programa deverá ser carregado na memória a partir do disco rígico (HD); que dados
serão enviados para impressora; etc.
SISTEMAS OPERACIONAIS
O Sistema Operacional é um software que proporciona uma plataforma de serviços de menor
nível compartilhados por vários aplicativos que recorrem ao sistema operacional continuamente
para as tarefas mais comuns (enviar dados ao monitor, atualizar arquivos em disco, receber
entradas a partir do teclado e do mouse, ...) que suportam seu processamento.
Comunicação com o Hardware
O propósito de qualquer sistema operacional é separar os usuários e programadores do
hardware. É muito mais sensato escrever um conjunto único de rotinas, colocá-las no sistema
operacional, e permitir que usuários e programadores as chamem, do que obrigar cada um a
reproduzir aquela lógica cada vez que for necessário ter acesso ao hardware.
O Sistema de Controle de Entrada/Saída
O único modo de se ler um programa ou um conjunto de dados de um disco para a memória
principal é enviar ao drive uma série de comandos primitivos, solicitando busca e leitura do
conteúdo de um ou mais setores.
O que se quer são os dados, os detalhes primitivos de hardware, juntamente com o modo de
acessá-los, são problemas do computador. É quando o SO entra em cena. A maioria contém um
sistema de controle de entrada/saída (IOCS), que gera os comandos primitivos necessários. O
sistema de controle de E/S comunica-se também com outros periféricos do computador. Cada
dispositivo é controlado por seu próprio conjunto de comandos primitivos. Os programas
aplicativos emitem pedidos lógicos para iniciarem uma entrada ou uma saída. O sistema de
controle de entrada/saída recebe esses pedidos e gera os comandos primitivos necessários para
controlar fisicamente esses dispositivos periféricos.
O estabelecimento de comunicações com um dispositivo externo envolve mais do que apenas a
geração de comandos primitivos. Assim, sempre que dois componentes do hardware se
comunicam, devem Ter seus sinais eletrônicos cuidadosamente sincronizados. Essa sincronização
envolve a troca de um conjunto predeterminado de sinais, chamado protocolo.
O sistema de controle de entrada/saída aceita solicitações lógicas de E/S enviadas por um
programa aplicativo, que realiza quantas operações físicas de E/S forem necessárias para se
obterem os dados solicitados, seleciona ou combina os dados físicos para formar um registro
lógico, e devolve esse registro ao programa aplicativo.
Nem todos os sistemas operacionais trabalham com registros. Alguns deles encaram os dados
em disco como simples cadeias de bytes. Em lugar de pedir registros lógicos pelos seus números
relativos de registro, o programa solicita uma quantidade de bytes a partir de um endereço
relativo de byte, e introduz naquela cadeia de bytes a estrutura desejada. O sistema de controle
de E/S do SO aceita as solicitações lógicas de E/S, realiza as operações físicas de E/S necessárias
para executá-las, e converte posições relativas de bytes, e comprimentos em endereços
específicos de trilha e setor.
O Sistema de Arquivos
Como o sistema sabe onde começa um determinado arquivo? A localização de cada arquivo de
um disco pode ser encontrada pesquisando-se o diretório do disco, tarefa que é executada pelo
sistema de arquivos.
O processador de comandos interpreta o comando e transfere o controle para o módulo de
carregamento de programas. Este módulo ativa o sistema de arquivos, que lê o diretório. Como o
diretório de um disco está sempre armazenando no mesmo setor ou setores, o sistema de
arquivos sabe onde encontrá-los.
O sistema de arquivos é responsável, também, pela alocação de espaço em disco. Teoricamente,
quando um arquivo é criado, seus dados são armazenados em uma série de setores consecutivos,
mas, uma vez que muitos arquivos diferentes compartilham o mesmo disco, isto nem sempre é
possível.
Um aspecto que pode provocar confusão é a diferença entre o sistema de arquivos e o sistema
de E/S. Geralmente, o IOCS é o módulo que se comunica diretamente com os dispositivos
periféricos em nível de primitivas. O sistema de arquivos, por seu lado, desempenha funções
lógicas, como gerenciamento do diretório e a alocação de espaço em disco. O sistema de
arquivos usa o IOCS para ler e gravar o diretório, a tabela de alocação do disco, e os setores de
dados.
Alocação de Memória
O sistema operacional é um conjunto de módulos que, entre outras coisas, carrega programas e
presta-lhes suporte enquanto estão sendo executados. Em geral, as primeiras centenas de bytes
da memória são reservadas para o armazenamento das informações do sistema operacional. A
seguir vem o sistema de controle de entrada/saída, o sistema de arquivos e o processador de
comandos. A memória restante é chamada de memória transiente.
Alguns módulos do sistema operacional, como os que controlam a E/S, dão suporte direto aos
programas aplicativos durante sua execução, e, portanto, precisam ser residentes. Outros, como o
módulo que formata discos, são usados apenas ocasionalmente e, por isso, podem ser
transientes. Os módulos transientes residem em disco e são lidos para a memória quando se
tornam necessários. Como o espaço de memória principal é limitado, é aconselhável manter
como residente apenas a lógica essencial.
O carregamento de programas aplicativos nem sempre é um processo fácil como pode parecer,
tendo em vista que o espaço necessário para alocá-los pode variar durante a sua execução.
Como exemplo, alguns programas fazem uso de estruturas de overlay.
Tendo em vista que a quantidade de memória exigida por um programa pode variar durante a
execução, o sistema operacional mantém uma tabela de espaço livre. Quando o programa emite
uma solicitação de encadeamento ou de overlay, o console passa ao sistema operacional, que
examina a sua tabela de memória livre, determina se há espaço suficiente para comportar o
novo módulo, aloca o espaço, e lê o módulo para a memória. Em seguida o sistema operacional
devolve o controle ao programa aplicativo.
Interrupções
Como tudo que o computador deve fazer converge para a CPU, existe um tráfego intenso de
instruções que entram e saem do chip em que ela está, ou seja, o microprocessador.
Assim, além de termos acessos que ora funcionam como entradas ora como saídas, temos um
sistema muito bem organizado de controle de seu funcionamento.
Ocorre que a CPU poderia receber solicitações para fazer duas coisas ao mesmo tempo e isso
não é possível. O usuário poderia tentar digitar alguma coisa ao mesmo tempo que seu Modem
tentasse transferir dados para o monitor ou coisa parecida.
O que existe no microprocessador é uma organização de acesso através de interrupções (IRQ).
Cada dispositivo recebe uma senha ou um número que indica sua prioridade de acesso à CPU, ou
seja, um número de IRQ (Interuption Request) que permite que a CPU saiba quem tem prioridade
no atendimento, caso haja várias solicitações de acesso ao mesmo tempo.
Logo, se o teclado tiver uma IRQ 1 e tentar acessar a CPU ao mesmo tempo que a porta paralela
LPT1 em que está ligada a impressora e que tem uma atribuição de IRQ 7, ele será atendido
primeiro.
Carregamento
O carregamento e execução de um programa iniciam-se com um comando que é lido e
interpretado pelo sistema operacional. Naturalmente o sistema operacional é colocado
na memória.
Entretanto uma grande parte dos computadores possuem a memória principal volátil RAM, que
perde seu conteúdo a cada vez que a máquina é desligada , desta forma toda vez que o
computador é inicializado devemos carregar o sistema operacional.
Normalmente o sistema operacional é armazenado em discos e copiado para a RAM, esta tarefa é
executado pelo BOOT normalmente armazenado nos dois primeiros setores do disco, que será ou
não lido automaticamente pelo Hardware, sempre que o micro for inicializado. O Boot não passa
de algumas instruções que são necessárias para executar a leitura do restante do sistema
operacional e a partir daí o usuário poderá digitar os comandos para carregar um programa.
Medidas de Eficiência.
Além de servir como interface entre o hardware e software, um sistema operacional também
gerencia os recursos do computador, garantindo que sejam utilizados de forma eficiente. Embora
o aspecto da eficiência seja menos importante em microcomputadores do que em máquinas de
grande porte, existem algumas técnicas de gerenciamento de recursos desses últimos que são
comum aos sistemas de monousuários.
Disparidade
O fato de que um computador esteja executando um programa não significa que esteja sendo
usado de forma eficiente. Antes de mais nada, existe uma enorme disparidade de velocidade
entre o computador e seus periféricos.
Imaginamos um programa que lê um setor do disco e executa 100 instruções, e grava um setor
neste disco. Nosso computador é capaz de executar 1 milhão de instruções por segundo e,
portanto, as 100 instruções gastam apenas 0,0001 segundo do tempo do processador. Um disco
de alta velocidade pode procurar e acessar um determinado setor em poucos milisegundos, se
utilizarmos qualquer técnica que reduza significativamente o número das operações físicas de
E/S melhorará de forma significativa o a eficiência do sistema. Uma solução para este problema é
o emprego de Buffer Múltiplos.
Escalonamento
Os usuários de microcomputadores tendem a interessar-se por aplicações específicas, com
editores de texto, planilhas ou desenvolvimento de programas. Entretanto, muitos sistemas
comerciais pequenos executam grande variedade de programas, processando folhas de
pagamento, atualizando inventários, gerando relatórios contábeis etc. Em tais computadores, a
transição de um tipo de serviço para outro pode ser problemática.
Antes que qualquer programa possa ser executado, os discos têm que ser selecionados, a
impressora precisa ser abastecida com os formulários adequados, e as outras tarefas de
preparação devem ser completadas, e tudo isso toma tempo. Uma conseqüência do tempo
perdido pode ser a necessidade de pagamentos extras ao operador, e uma outra seria a
subutilização de um equipamento relativamente caro - O Computador. Como solução parcial deste
problema, temos o escalonamento.
Como exemplo, vamos considerar quatro programas com exigências diferentes em termos de
formulários. A execução desses serviços na ordem indicada significará quatro trocas de papel. Se,
no entanto agruparmos os programas com exigências semelhantes, o mesmo serviço poderá ser
feito com uma única troca de formulários, com significativa redução tanto de tempo quanto no
preparo do tempo total despendido.
Nem todas as combinações de programas são tão óbvias, mas é uma boa idéia agrupar tarefas
similares para aproveitar as vantagens de preparação comuns. O escalonamento permite, ainda,
que um operador providencie antecipadamente as necessidades de um programa B, enquanto o
programa A estiver sendo executado.
Outros Métodos de Poupar Tempo de Execução
A preparação não é o único motivo de desperdício de tempo no uso de um computador.
Considere, por exemplo, a compilação. Após um programa ter seus erros depurados, a
compilação, que é a conversão da linguagem de programação em linguagem de máquina, produz
sempre os mesmos resultados. Seria preferível armazenar o módulo objeto em disco, para depois
carregá-lo e executa-lo.
Muitos programas processam um grande volume de dados, gastando bastante tempo nesta
atividade. Quanto mais longo for esse processo, maio e o risco de que um problema elétrico, um
erro de dados, ou alguma outra falha, venha a interromper a execução. Freqüentemente, a única
maneira de recuperar os resultados é executar novamente o programa, o que significa um óbvio
desperdício de tempo do computador e do usuário. Esse problema pode ser minimizado pelo
emprego de pontos de verificação( checkpoints ).
A idéia básica é gravar um resultado intermediário do programa na memória secundária a
intervalos regulares - digamos, a cada 10 minutos, muitas vezes todo o programa é gravado. Se
houver ocorrido um erro, o programa, é reinicializado a partir do último ponto de verificação.
Sistemas Operacionais
DOS - surgiu no final de 1981 com o lançamento do primeiro micro IBM PC.
Desenvolvido pela Microsoft. Com duas fachadas : o PC – DOS que é comercializado
pela IBM junto com seus equipamentos, e o MS-DOS que tem sua comercialização feita
por meio da Microsoft. Desde o seu lançamento teve 6 versões e cinco atualizações de
menor porte.
Ambiente Windows - O Windows foi desenvolvido pela Microsoft. É uma sistema operacional
multitarefa preenptiva e plug and play que aproveita melhor os recursos das máquinas de 386
para cima. O Windows 95 tem uma arquitetura de 32 bits, essa característica é o modo de
endereçamento a memória em blocos de 32 bits, agilizando o processamento do programa que
esta sendo executado.
O hardware representa o equipamento físico: monitor, teclado, discos, processador, memória e
outros dispositivos. O software representa o conjunto de programas, que o hardware executa,
com determinado fim.
O software de um computador pode ser de dois tipos:
Programas de sistema ou Sistema operacional = que gerenciam a operação do
computador;
Programas de aplicação = programas feitos pelos usuários para a solução de seus problemas.
O sistema operacional é o programa de sistema mais fundamental, pois ele controla todos os
recursos do computador e fornece a base sobre a qual os programas de aplicação podem ser
escritos. O sistema operacional é uma camada de software colocada em cima do hardware de
modo a esconder as complexidades inerentes a este mesmo hardware, como pode ser visto na
figura abaixo.
As principais tarefas de um sistema operacional são as seguintes:
gerenciamento de memória;
controle de processos;
gerenciamento de sistemas de arquivos;
controle de I/O (entrada e saída)
Estas tarefas são realizadas através de um conjunto de instruções fornecido pelo sistema
operacional. Estas instruções são denominadas de "system calls" (chamadas do sistema) as
quais são responsáveis pela interface com o programa do usuário, e formam o que é conhecido
como o "kernel" do sistema operacional.
O sistema operacional controla o hardware de computação, maneja recursos do sistema, faz
programas em respostas aos comandos do usuários, e supervisiona a interação entre o sistema e
seus usuários. O sistema operacional também é base dentro da qual as aplicações de software como, processamento de palavras, planilhas e programas diversos - são desenvolvidos e
executados.
Quando um computador é ligado, o sistema operacional é carregado na memória física, composta
pelo disco rígido e por uma série de chips RAM (Memória de Acesso Randômico). A principal
características destes chips é que eles podem ser carregados e descarregados na medida em que
um programa vai sendo executado. Já as memórias ROM (Memória Apenas para Leitura) possuem
conteúdo fixo (tal como a BIOS). Faz-se distinção entre memória básica (aonde rodam programas
de base DOS) e memória estendida, aonde rodam o Windows e outros programas. Fala-se
também de memória expandida (uma espécie de memória adicional para armazenamento de
dados) e memória virtual (memória extra que se obtém dividindo-se um programa em partes),
em oposição à memória física. Assim, pode-se rodar um programa de dimensões maiores que a
memória física (até 4 Gigabytes no Windows). É preciso ter em mente que a memória é seletiva,
ou seja, dados, códigos executáveis, valores de variáveis, mensagens, etc., são alocados em
lugares diferentes.
O Windows é um sistema operacional multitarefa. Como tal, ele pode rodar dois ou mais
programas simultaneamente. Tecnicamente falando, isso não significa que os programas rodem
em paralelo: o sistema operacional alterna entre eles numa velocidade tal que, do ponto de vista
do usuário, eles parecem rodar ao mesmo tempo. Além disso, o Windows permite a execução de
multitarefa baseada em Threads (canais) - uma unidade de código executável à qual pode ser
alocado espaço extra. Outros sistemas operacionais, tal como o Unix, adotam outro tipo de
sistema - o sistema de partições - isso é conseguido através da divisão do disco rígido em partes,
ou seja, os programas não operam em segundo plano. Já o Windows, embora adote
"endereçamento plano de memória", também pode simular um sistema destes e comporta um
mecanismo dinâmico de gerenciamento da memória: isso lhe permite otimizar o espaço livre em
disco. Aliás, "endereçamento plano" significa que o sistema adota um tipo de memória linear,
virtual, no qual a divisão de memória independe da memória física (e, consequentemente, da
distribuição de elementos de hardware). Um complexo sistema de gerenciamento da memória
virtual substitui o velho sistema de partições com vantagem.
Partindo da utilização do gerenciador de programas (Windows Explorer), que o sistema se
organiza hierarquicamente em unidades (Drives), pastas, arquivos, documentos, etc.
Costumeiramente, as duas primeiras unidades se referem ao Drive de disco flexível (disquetes); a
terceira unidade (raiz C) refere-se ao disco rígido e outras unidades podem referir-se a diversos
elementos como, por exemplo, o Drive de rede. Observe que isso pode ser mudado e que,
portanto, esta ordem pode variar de computador para computador.
Além disso, um programa qualquer pode dispor quer de uma interface de chamadas quer de
interface gráfica. Quando você opera o sistema a partir de linhas de comando, isso é uma
interface de chamadas (tal como o Prompt do MS-DOS). Quando você opera a partir de
elementos gráficos, tais como janelas e botões de comando, isso é uma interface gráfica. O
Windows, fundamentalmente, dispõe de uma interface gráfica, porém é possível ativá-lo através
de uma linha de comando: o comando Iniciar/Executar da barra de tarefas.
Antigamente, os Sistemas Operacionais visavam somente gerenciar uma das operações mais
complexas de Entrada/ Saída: a comunicação com várias unidades de disco. Mas o Sistema
Operacional rapidamente transformou-se numa ponte completa entre o PC e o programa
executado nele. O Sistema Operacional cria uma plataforma comum a todos os programas
utilizados. O Sistema Operacional fornece ferramentas para gerenciar todas as tarefas que você
deseja executar fora do aplicativo - apagar e copiar arquivos, ver a lista dos arquivos contidos no
disco e executar uma série de comandos em um arquivo de lote (batch file). O Sistema
Operacional não trabalha isolado. Ele depende não somente da cooperação de outros programas
mas da combinação sem conflitos com o BIOS.
BIOS
O BIOS é a parte do sistema operacional que cuida das coisas básicas que lidam diretamente
com os circuitos da máquina. Como uma figura mitológica é um ente híbrido, meio hardware meio
software. Uma parte é gravada em ROM: o ROM-BIOS ou BIOS permanente, fornecido pelo
fabricante e incrustrado na placa mãe do micro. O restante vem em disco - o místico arquivo
oculto Io.Sys do MS/DOS ou o mais prosaico Ibmbio.Com do IBM/DOS - fornecido juntamente com
o sistema operacional.
A natureza híbrida do BIOS se deve justamente à sua função de integrar a máquina com os
programas. A parte permanente perfaz serviços que dependem somente dos circuitos internos,
que variam com o fabricante. Coisas ligadas apenas ao hardware, como transformar o toque numa
tecla na exibição de um caractere no vídeo, ler um bit numa porta serial, ajustar o relógio ou
pesquisar a lista de equipamentos instalados.
A parte que vem em disco também acessa a máquina diretamente, porém de uma forma
dependente do DOS - que por sua vez usa o BIOS para grande parte de suas funções. Como é
ligada à maneira pela qual o sistema operacional acessa a máquina, ela integra esse sistema e
por isso é fornecida com ele.
Dizer que o BIOS trabalha desde o exato momento em que ligamos a máquina não é uma
imagem retórica, mas a pura expressão da verdade: é ele o responsável pelo POST, Power On Self
Test, ou autoteste de partida: aquela coisa chata que o micro teimosamente insiste em fazer toda
vez que é ligado, nos informando que os tantos Kbytes de memória estão OK, nosso disco rígido é
do tipo que já sabemos e tudo o mais. Mas não pense que isso é uma reles demonstração de
exibicionismo barato ou mera gentileza para nos informar aquilo que já sabemos. Na verdade ele
só põe aquelas mensagens na tela para nos distrair enquanto celeremente vasculha o interior da
máquina para se informar, verificando se não nos aproveitamos de sua impotência enquanto
desligado para solertemente trocar ou acrescentar algum dispositivo. E testa tudo o que encontra
- daí as luzes de todos os drives se acenderem durante o POST.
Depois do POST, a inicialização. Como ser híbrido que é, o BIOS se sente pouco à vontade,
indagando reaganeanamente onde estaria o resto dele mesmo - a parte que está em disco.
Como lida somente com o hardware, não sabe o que é um "arquivo". Coisas assim complexas
ficam para seu irmão mais sábio, o DOS. Mas, diligente, sabe muito bem o que é um disco, uma
trilha e até mesmo um setor. E, rapidamente, tenta carregar na memória o primeiro setor da
trilha zero do disco que está no drive A. Se não acha lá o que procura, tenta o drive C.
E qual é o objetivo desta sôfrega busca ? O "boot sector", ou setor de carga. Todo disco que
contém o sistema operacional tem um programinha gravado nesse setor, que é carregado na
memória pelo BIOS permanente e executado imediatamente. Não espere demais de um
programa que cabe em um setor: ele apenas carrega um arquivo do disco e passa o controle para
ele. Adivinhou que arquivo é esse ? Parabéns: é o "resto" do BIOS, o Io.Sys (ou Ibmbio.Com).
Incidentalmente, não reclame da aparente perda de tempo em procurar o sistema no drive A e só
depois no C, onde qualquer ignorante sabe que ele está. No dia em que os perversos deuses dos
discos rígidos amaldiçoarem os primeiros setores de sua winchester, você vai render homenagens
aos sábios que lhe permitiram carregar o sistema a partir do drive A...
Depois que completou a si mesmo, sob a aparente calma de uma tela imóvel, o BIOS prossegue
em sua frenética atividade. Relocando memória, se "ajeita" nas entranhas da máquina, e somente
então carrega o Msdos.Sys (ou Ibmdos.Com), esse sim, o DOS ou Sistema Operacional de Disco.
E, obediente, passa o controle para ele. Como seu trabalho de inicialização já terminou, carrega o
DOS exatamente em cima do trecho de memória ocupado por suas rotinas destinadas àquele fim.
Um pungente exemplo de autoimolação para lhe proporcionar mais memória.
E daí em diante o BIOS põe suas habilidades à disposição do DOS e de seus programas até o
desligar da máquina. Discreto e invisível como os velhos mordomos, permanece cuidando das
tarefas rotineiras e aparentemente desimportantes de manutenção da máquina. Quase
desapercebido, avesso a notoriedades, permite que os louros das grandes realizações sejam
galhardamente colhidos pelo DOS. Que sem o BIOS não seria capaz nem mesmo de acender um
mísero ponto em sua tela...
Controladores de Vídeo
As placas de vídeo dividem-se em comuns, aceleradoras e co-processadas, em ordem de
performance. As comuns tem como principais componentes um RAMDAC (Conversor
Analógico-Digital) e o seu chipset (Trident, OAK, Cirrus Logic, etc.). As aceleradoras geralmente
são placas com barramentos que permitem melhor performance na transferência de dados e as
co-processadas tem um microprocessador dedicado para a parte de vídeo deixando o
processador principal livre.
A frequência de varredura do monitor é controlado pela placa de vídeo. Enquanto um televisor
utiliza a frequência de 60 Hz, as placas de vídeo normalmente redesenham a tela 70 vezes por
segundo (70 Hz), apesar da VESA (Video Eletronics Standards Association) recomendar um
mínimo de 85 Hz. Abaixo disso, o monitor poderá causar problemas oculares aos usuários.
Algumas placas mais novas já utilizam uma frequência de mais de 120 Hz.
A máxima resolução e o número máximo de cores que aparecerá no monitor depende também
da placa de vídeo (desde que o monitor seja capaz de exibí-las). A memória RAM da placa
(denominada memória de vídeo) guarda as informações de vídeo a serem processadas. Podem
ser do tipo DRAM e VRAM. A VRAM é mais rápida por ter um tempo de refresh (regravação
constante da memória) curto. É o tamanho da memória de vídeo que determina a resolução
máxima combinada ao número de cores que podem ser utilizadas por vez. Veja a tabela abaixo
(resolução x quantidade de memória x número de cores):
Resoluçã
o
SVGA
1MB
SVGA
2MB
SVGA
4MB
SVGA 8MB
640x480
16 M
16 M
16 M
16 M
800x600
64 K
16 M
16 M
16 M
1024x768
256
64 K
16 M
16 M
1280x102
4
16
256
16 M
16 M
1600x120
0
-
256
64 K
16 M
1800x144
0
-
16
256
16 M
Atualmente, qualquer monitor SuperVGA pode exibir 16,7 milhões de cores.
Para quem usa o micro com aplicativos tais como editores de texto, planilhas, etc., uma placa
com 1 MB de memória atende perfeitamente as necessidades. Porém, se você pretende trabalhar
com aplicativos gráficos, tais como imagens 3D, arquivos AVI, edição de imagens, é
recomendável pensar em 2 MB, se possivel 4 MB. No mercado, as placas controladoras de vídeo
são do padrão PCI. Algumas apresentam slots de memória livres para expansão futura.
Controladores de Drive e Winchester
Esta placa é a que controla o acesso a drives e winchesters. A IDE pode trabalhar no mesmo
micro junto com outro tipo de controladora sendo esta na verdade apenas uma interface entre a
winchester e a placa-mãe.
Essas placas denominadas SUPER-IDE ou MULTI-IDE contém geralmente 2 saídas seriais, 1 saída
paralela e 1 saída para joystick (para jogos).
Microprocessador
Um Microprocessador possui funções e instruções específicas para gerenciamento de memória,
possibilitando que o Sistema Operacional trabalhe seguramente com vários programas ao mesmo
tempo, através de um recurso conhecido como modo protegido. As seis unidades básicas do
Microprocessador obtêm os dados e instruções da memória guardando-os em locais onde possam
ser facilmente recuperados pelas demais unidades, dão sentido a estas instruções, gerenciam-nas
e devolvem o resultado à RAM. Cada passo corresponde às tarefas desempenhadas pela Unidade
de Interface do Barramento, pela Unidade de Pré-Busca de Código, Unidade de Decodificação de
Instrução, Unidade de Execução e Unidades de Segmentação e Paginação.
Kernel
O Kernel é responsável por controlar o hardware e fornecer as system calls para que os
programas tenham acesso aos serviços do sistema, como criação e gerência de processos,
gerência de memória, sistema de arquivos, gerência de E/S, etc.
O Kernel pode ser dividido em duas partes. A parte dependente do hardware consiste nas rotinas
de tratamento e interrupções, device drives, parte do gerenciador de memória, ou seja, tudo que
normalmente deve ser reescrito quando se está portando um sistema UNIX para uma plataforma.
A parte independente do hardware não tem a princípio nenhum vínculo com a plataforma onde
está sendo executada, sendo responsável pelo tratamento das system calls, gerência de
processos, escalonamento, pipes, paginação e swapping, gerência de arquivos e demais.
Parte do sistema operacional residente em memória, o Kernel, comparado com outros sistemas
operacionais, oferece um conjunto relativamente pequeno de primitivas, a partir das quais podem
ser construídas rotinas de maior complexidade. A estratégia de criar um sistema modular foi
muito importante no processo de desenvolvimento do UNIX, pois novos programas utilitários
podem ser facilmente integrados ao sistema, sem que o Kernel tenha que sofrer qualquer tipo de
alteração.
Streams
Streams é um conjunto de funções em C destinado ao desenvolvimento de serviços do sistema
de comunicação que variam desde processos de protocolos de rede completos até acionadores de
dispositivo independentes de hardware.
Os STREAMS define interfaces padrões para entrada e saída de caráter no núcleo do UNIX e entre
o núcleo e o restante do sistema. O mecanismo associado é constituído por um conjunto de
chamadas de sistema, recursos do núcleo, e rotinas utilitários que permitem desenvolvimento
modular e portátil, e integração de serviços de rede de mais alto desempenho e seus
componentes. Ele não depende de qualquer arquitetura de rede específica, mas fornece um
araboço com interface de usuários consistente e compatível com a interface de entrada/saída de
caráter atualmente disponível.
Os componentes básicos de uma implementação de STREAMS são os módulos residentes no
núcleo que oferecem um conjunto de funções de processamentos e interfaces de serviços
associados. Esses módulos podem ser selecionados dinamicamente e interconectados para
fornecer qualquer seqüência de processamento racional sem a necessidade de programação do
núcleo, assembly, e ligação edição. Podem também ser dinamicamente consertados em
conexões existentes, no nível do usuário.
O STREAM pode ser usado para criar, usar e desmanter um fluxo (stream), que é o
processamento e transferência de dados dúplex entre um acionador no espaço do núcleo e um
processo no espaço do usuário.
UNIX
O Núcleo do UNIX
A arquitetura do sistema operacional do UNIX distribui certas funcionalidades para diferentes
componentes. Como ambiente DOS, o núcleo do UNIX é o coração do sistema operacional. Ele
executa funções chaves como gerenciamento de memória e de processos, e também controla o
sistema de arquivo hierárquico, para mencionar umas poucas.
O núcleo mantém consistência no sistema de arquivos tratando tudo como arquivo. No UNIX, o
núcleo vê os arquivos como fluxos de bytes, independentemente de sua origem ou destino. (Os
diretórios do sistema de arquivo hierárquico são apenas arquivos comuns que contêm
informações especiais).
Também a segurança, inexistente em sistema DOS (mesmo no OS/2), é controlada pelo núcleo.
Usuários e processos somente podem acessar dados de acordo com um bem definido conjunto de
permissões e regras que o núcleo faz vigorar. Essencialmente, o núcleo é um tipo de motor do
sistema UNIX.
As principais características do UNIX são:
* Controlar a execução dos programas ou softwares aplicativos;
* Gerenciar o uso de um processador;
* Gerenciar a memória principal e a memória secundária, também chamada SWAP;
* Gerenciar o uso dos periféricos.
Acionadores de Dispositivos ( Device Drives)
Outro componente da arquitetura UNIX é o acionador de dispositivo. Um acionador de dispositivo
é um software que possibilita a transmissão de dados entre um dispositivo particular (ou classe
de dispositivo) e a memória do computador. Os acionadores de dispositivos são controlados pelo
núcleo e, de fato, tornam-se parte do núcleo durante a partida do sistema. Alguns acionadores de
dispositivo podem ser acrescentados ao núcleo após o sistema já estar rodando, e há até mesmo
outros que podem ser removidos sem a necessidade de dar nova partida no sistema.
Os acionadores de dispositivo do DOS são equivalentes aos acionadores de dispositivos do UNIX,
pelo menos conceitualmente. A maneira como os acionadores de dispositivos do UNIX são
controlados pelo núcleo e o modo como se comportam são bem diferentes.
Comunicação Interprocesso no UNIX
Em ambientes multitarefa em que vários processos rodam concorrentemente, mais cedo ou mais
tarde tornam-se necessário fazer com que se comuniquem, especialmente quando múltiplos
processos executam todas partes importantes de uma tarefa maior, trabalhando juntos. O
enfoque dos múltiplos processos concorrentes é mais de se desejar do que o enfoque
convencional de programas monolíticos (usado no alvorecer dos grandes computadores de
grande porte).
Programas menores são mais facilmente escritos, mais facilmente mantidos, e mais facilmente
depurados. Eles podem tornar-se altamente especializados de modo a reduzir ou eliminar a
duplicidade entre módulos. Um exemplo de processos cooperativos é quando um processo
servidor se comunica com vários processos clientes, como acontece nas aplicações com X
Windows.
Quando múltiplos processos estão rodando e cooperando uns com os outros, eles precisam
compartilhar dados. Por exemplo arquivos podem ser compartilhados entre processos, mas isso
pode ser ineficiente à medida que aumenta a demanda pelo arquivo. Por essa razão o UNIX
system V provê uma variedade de métodos de comunicação interprocesso. Os mais amplamente
usados desses métodos são os sinais e os dutos (também chamados FIFOs).
O Shell do UNIX
O shell do UNIX é o contato principal para desenvolvedores e usuários já que ele fica ente eles e
as partes internas da máquina. O shell é uma parte integral do sistema UNIX, projetada para
permitir que usuários se comuniquem com ele em termos que possam entender. Ele é uma
interface muito flexível, poderosa e programável projetada para executaras instruções passadas
pelo usuário. Essas instruções podem vir ou de um teclado de um terminal, de um roteiro do shell
rodando como um processo, ou pode ser chamado através de uma chamada de sistema de uma
programação de aplicação executando como processo.
Variáveis do Ambiente
O shell usa um ambiente conceitualmente similar ao ambiente do shell do DOS. O ambiente é
uma área da memória que contém uma lista de variáveis do shell e seus valores e que é criada
para cada usuário quando a sessão é aberta. Ela pode ser usada pelo shell ou por processos para
obter os valores das variáveis do shell, como o percurso par o diretório base do usuário,
informações par computar a hora a partir do GMT (Greenwich Mean Time), a ID de usuário de
alguém com sessão em um terminal e muitas outras coisas.
Há três tipos de variáveis de ambiente: variáveis de usuários, variáveis do shell e variáveis do
shell de leitura somente. Essas são as variáveis que podem ser declaradas, inicializadas, lidas e
modificadas ou diretamente em uma linha de comando ou em um roteiro de shell. Essas variáveis
são tradicionalmente vistas como variáveis do ambiente pela maioria dos usuários, mas, para ser
mais preciso, elas são variáveis do usuário.
As variáveis do shell são aquelas declaradas pelo shell do UNIX, mas que podem ser acessadas
pelo usuário para leitura e modificação. As variáveis do tipo somente leitura do shell também são
declaradas pelo shell e podem igualmente ser lidas pelo usuário, mas não podem ser modificadas
por ele.
Isso não deve ser confundido com o recurso de tornar uma variável do usuário somente de
leitura. Um usuário pode criar uma variável de usuário, inicializá-lo com um valor, torná-la
somente de leitura. Uma vez que a variável tenha sido declarada somente de leitura, o usuário
não pode mudar seu valor.
As variáveis de ambiente podem ser acrescentadas ao ambiente do shell do usuário a qualquer
momento, incluindo no arquivo .profile do usuário, no qual os usuários tradicionalmente executam
personalização de seu ambiente inicial.
O Shell é uma interface de comandos/programas do usuário com o núcleo do Sistema
Operacional e o Hardware. O Linux possui diversos Shell's os quais podem ser trocados quando o
usuário bem decidir (ou tiver permissão para isto). Eles permitem inclusive a execução de
programas remotos, possuem diferentes funções e níveis de segurança. Um dos Shell's padrão do
Linux é o "bash" (um dos mais usados!). O Shell pode ser traduzido como um interpretador de
comandos. Linux e Unix são Sistemas Operacionais multitarefa, em que o usuário pode ter vários
comandos/programas rodando em um console. O shell permite que comandos/programas rodem
tanto em background (segundo plano) como em foreground (primeiro plano), e permite ainda a
execução de consoles virtuais, ou seja, o usuário pode chamar quantos comandos/programas
quiser que o shell vai dar conta de interpretar todos eles e tomar as devidas medidas para a sua
execução.Todos os Shells permitem que você os programe, crie arquivos de scripts com
comandos do Sistema Operacional, variáveis, outros scrips e diversos outros recursos. A
programação no Shell do Linux/Unix pode ser comparada com os seus programas limitados de
lote do DOS com extensão .BAT.
Controlar os periféricos de seu computador. Isto inclui controlar tudo! Quem controla os
periféricos do computador é o Sistema Operacional, portanto quando se está dentro de um editor
de texto e clica no botão "imprimir", o programa passa o teu texto para o Sistema Operacional e
não faz mais nada. O resto do serviço pesado é com o Sistema Operacional, que determina como
serão formatados os seus dados para um formato que o dispositivo de impressão entenda. O
Linux pode controlar outras coisas, como seu fax/modem, mouse, scanners, impressoras jato de
tinta, laser, matriciais, drives de CD-ROM IDE e SCSI, placas SCSI, placas diversas e uma grande
quantidade de periféricos. O Linux está sendo suportado por grandes fabricantes de
hardware/software, como IBM, DELL, Corel/Borland, Oracle e diversos outros, o que lhe permite
cada vez mais suportar grandes quantidades de periféricos que antes nem eram suportados
pelo próprio Unix! Se não fosse pelo Sistema Operacional Linux, muitos periféricos nunca seriam
suportados pelo Unix, pois foi o Linux que fez a comunidade internacional despertar novamente
para o Unix.
Gerenciamento eficiente de memória (RAM, Swap, cache, memória secundária, etc.).
O Linux nunca travou desde que foi instalado como servidor de arquivos na rede da empresa que
trabalho e isto já vai fazer um ano!!!. Este comportamento de "travar" por mal gerenciamento de
memória só acontece com os outros sistemas, se não for gerenciada com cuidado, os aplicativos
podem invadir a área dos outros sistemas. A verdade é que todo Sistema Operacional está
sujeito a sofrer erros com problemas de travamento de memória, que podem ser causados por
falhas de software, hardware e até falhas humanas. Este assunto é bastante amplo e não vale a
pena ficar defendendo um ou outro, mas o Linux usa esquemas de proteção de memória entre
processos que permitem aos programas executarem sem incomodarem uns aos outros. O
administrador possui várias ferramentas para monitorar essas atividades, inclusive podendo
matar processos que estão rodando com problemas. A quantidade de recursos que o Linux/Unix
possui para gerenciamento de memória (partições, swap, etc.) é bastante grande.
Gerenciamento do sistema de arquivos (ext, FAT, HPFS e outros bem como pontos de montagens,
etc.). O Linux pode trabalhar com diversos tipos de Sistemas de Arquivos, como, por exemplo, a
FAT e VFAT da Microsoft, HPFS do OS/2 da IBM, o ext2 que é seu Sistema de arquivos nativo, e
diversos outros (mimix, xenix, Netware, Venix, PC/IX, Amoeba...).
Gerencimento de multitarefa de forma eficiente.
O Linux possui um gerenciamento de multitarefa bastante eficiente. Por exemplo: quando você
formata um disquete, sua máquina não fica travada e você pode estar recebendo email e
escrevendo um texto (como este aqui!). O Linux tem a capacidade de escalonar os processos
para a CPU de forma a não prejudicar nenhum, sem contar que as novas versões do Kernel do
Linux suportam CPUs com mais de um processador, cluster e outros recursos que fazem da
multitarefa um recurso que deve ser explorado com seriedade.
Controlar processos órfãos, o ciclo de vida dos processos. Isto tem a ver com a característica
anterior. Quando um processo é iniciado no Linux, um processo pai chamado init assume o
controle, controlando todos os processos que estão rodando. Caso ocorra a morte de um
processo, o init se encarrega de "enterrá-lo". Caso algum processo chame outro processo e o
primeiro morra, para que o segundo não fique órfão, o init se encarrega de adotá-lo. Init é o pai
dos processos. Por exemplo, é ele o responsável por enviar um sinal de término de execução e
morte a todos os processos quando o sistema entra em fase de desligamento, entre outras
atividades.
Controlar as funções de comunicação (infra-estrutura de redes, comunicações seriais e paralelas).
Uma das características mais importantes do Linux é permitir a conexão em rede com máquinas
Windows. Isto é feito por meio da suíte de programas Samba, a qual usa o protocolo NetBIOS
sobre TCP/IP. Também está disponível no Linux um emulador de Netware, que permite ao Linux se
conectar com redes que estão rodando IPX (o protocolo da Novell).
CONCLUSÃO
Sem um Sistema Operacional (ou S.O.) nenhum hardware torna-se utilizável pelo usuário.
Normalmente este é um definido como conjunto de programas que fazem a interface entre o
microcomputador e o usuário, ou seja, ele atua mais diretamente com o hardware de seu micro.
Além disso, os S.O. oferecem vários aplicativos simples para o gerenciamento e manutençào dos
dados no HD e disquetes.
Os S.O. executam as mais diversas tarefas tais como o controle de entrada e saída
(input/output), leitura/escrita em disco ou HD, escrita em monitores e controlar todo uso da
memória dividindo-a em várias partes para cada tipo de aplicação.
O sistema operacional mais popular para micros PCs baseado nos processadores Intel é o MS
DOS (Microsoft Disk Operating System). Além deste temos o PC DOS (IBM) e o Novell DOS 7
(antigo RD DOS) e são bastante limitados no uso dos atuais microprocessadores de 32 bits.
Outros sistemas operacionais 32 bits estão despontando no mercado. O OS/2 da IBM é um S.O. de
32 bits reais assim como o Windows NT e windows 95 ou os derivados do UNIX como o Xenix,
Solaris, SCO Unix, etc.
Estes S.O. são mais apropriados para os processadores de 32/64 bits atuais e não impõem
limitações de memória como o DOS. Além disso implementam interfaces gráficas (GUI),
multitarefa real, multiprocessamento simétrico, etc.
BIBLIOGRAFIA
Toda nossa pesquisa foi embasada na internet em inúmeros sites, aqui estão alguns dos mais
importantes:
www.cidi.com.br
www.tcinet.com.br
www.pcmagazine.com.br
www.uol.info.com.br
www.pcworld.com