|
|
![]() ![]() |
II.
COMPUTADORES - ARQUITETURA
SIMPLIFICADA
*
III.
COMPUTADORES – PERIFÉRICOS
*
2.
Fundamentos
do Software
*
I.
INTRODUÇÃO
*
III.
COMPONENTES DO SOFTWARE
*
VI.
TRATAMENTO DE NOMES DE ARQUIVOS
*
VII.
DIRETÓRIOS
*
I.
SISTEMAS OPERACIONAIS
*
1.
INTRODUÇÃO
*
2.
FUNCIONAMENTO
*
3.
TIPOS DE SISTEMAS OPERACIONAIS
*
O que é um computador?
O computador é basicamente uma máquina, eletrônica automática, que lê dados, efetua cálculos e fornece resultados. Ou seja, máquina que recebe dados, compara valores, armazena dados e move dados; portanto trabalha com dados e estes bem colocado tornam-se uma informação.
PROCESSOS BÁSICOS
· Entrada de dados : ler os dados iniciais ou constantes.
CARACTERÍSTICA DE UM COMPUTADOR
(é o que difere das demais máquinas de cálculos)
· alta velocidade na execução de suas operações.
VANTAGENS
· grandes quantidades de dados do mesmo tipo para serem processados em cálculos rápidos.
DESVANTAGENS
· não é criativo (só executa tarefas pré-fixadas).
SERVIÇOS: (APLICAÇÕES)
1 - CIENTÍFICOS - cálculos balísticos
2 - COMERCIAIS - folhas de pagamento, contabilidade
3 - SIMULAÇÃO - tráfegos, grafos
4 - CONTROLE DE PROCESSOS - usinas nucleares, Petrobrás
HARDWARE
· conjunto de circuitos eletrônicos "inalteráveis" - máquina em si
SOFTWARE
· conjunto de instruções "alteráveis" - isto porque os programadores podem facilmente mudá-las.
O computador tem 3 partes principais:
· o console (que contém unidade disco, placa-mãe, placa de expansão e a fonte de alimentação)
Na realidade até o nível de CIs e resistores é muito mais complexo. Porém, foram escolhidos 5 áreas principais para discussão.
MICROPROCESSADOR
É o cérebro do computador. Basicamente, ele é uma calculadora muito rápida e um dispositivo de armazenamento. Mas, a capacidade de armazenamento é limitada, precisando então de memória adicional para as info que ele manipula.
Ele deve ser instruído exatamente sobre o que fazer. Ele executa as instruções (conhecidas como software) ao pé da letra. O software é escrito para dizer ao microprocessador o que fazer.
BIOS - (Basic Input/Output System) - sistema básico de entrada e saída –
É o conjunto de rotinas internas de sw. O BIOS é um C.I. de memo no qual as info estão armazenadas de forma permanente. O BIOS é responsável:
Auto-teste, Autocarregador, Interfaces de baixo nível - comunicação entre o teclado, monitor portas seriais e impressora para o m cp.
RAM (Armazenamento Temporário)
É a memória do computador. Fornece armazenamento temporário para as info que o microprocessador manipula (é o bloco de rascunho do microprocessador). Nessa área ficarão os programas ou dados e info criados pelo programas. Porém, ela é volátil, i.e., quando desligamos o microcomputador ela é apagada.
ARMAZENAMENTO PERMANENTE
É armazenamento de memo igual a RAM, mas não é volátil, é permanente \ não desaparece quando desligamos a energia. Ocorre em unidades de disco (disco flexível ou disco rígido) ou em qualquer outro dispositivo de memória (ROM, PROM, EPROM, EEPROM)
HARDWARE DE APOIO
Como as placas de controladores de discos e de vídeos, diversos itens que não estão diretamente relacionados com a manipulação de info nem com o microprocessador, mas que ajudam o computador a fazer tudo o que precisa para processar seu sw de forma apropriada. Entre eles se encontram.
Circuito de apoio - composto por CIs, resistores e outros acessórios que dão suporte ao Microprocessador, BIOS, RAM e as unidades de discos, fazendo com que tudo funcione em conjunto, a tempo e em ordem.
Placas de expansão - são placas de encaixar que se tornam parte de seu sistema ex.: placas de som e modem. Essas placas são conectadas a um barramento (que é a linha direta de comunicações entre o microprocessador e as placas de expansão). Slots, que alojarão os conectores que estão na lateral inferior das placas de expansão.
Podemos ainda incluir e comentar sobre:
Fonte de Alimentação
Retiram a eletricidade da parede, condicionam-na para uso no PC e a distribuem entre as diversas partes.
Monitor/Teclado (fora da unidade principal do sistema)Linhas de comunicação com o PC. O teclado é por onde o usuário faz as entradas e o monitor é onde o usuário vê o resultado.
Periféricos (fora da unidade do sistema) Itens adicionais usados pelo computador.
Impressora - obtém um registro permanente dos resultados
Modems, traçadores gráficos, scanners, mouse, digitalizadores de vídeo, sintetizadores de música, etc...São eles que tornam o computador a ferramenta mais flexível que existe.
DISPOSITIVOS DE ENTRADA
Convertem dados e informação em sinais eletrônicos que o computador pode utilizar, armazenar e processar. São divididos em manuais e automáticos.
o Manuais:
o teclado
mesa digitalizadora ou mesa gráfica digitalizador de imagem ou dispositivo de varredura manual
o telas ou superfícies sensíveis ao toque
o Automáticos:
o dispositivos de entrada/saída unidade de disco unidade de fita modem
o dispositivos de varredura ótica - Scanners
leitora de caractere ótico impresso com tinta magnética - MICR
leitora de caractere ótico - OCR
leitora de códigos de barras
o leitora de cartão perfurado (ultrapassado)
DISPOSITIVOS DE SAÍDA
Convertem sinais elétricos internamente armazenados para formas úteis externamente.
A informação pode sair do sistema em 5 (cinco) formas diferentes:
o dados: caracteres alfanuméricos arranjados na forma de dados.
Alguns dispositivos podem apresentar mais de uma forma de saída; outros são voltados para uma única forma.
o unidade de disco
DISPOSITIVOS DE SAÍDA TEMPORÁRIO/VOLÁTIL
o monitores de vídeo
DISPOSITIVOS DE SAÍDA PERMANENTE
o impressoras - de impacto (matricial/serial, linear, margarida) não impacto (jato de tinta, térmica, eletrostática, laser)
o traçadores de gráficos, plotters
2. Fundamentos do Software
O Software ultrapassou o Hardware como a chave para o sucesso de muitos sistemas baseados em computador. Seja o computador usado para dirigir um negócio, controlar um produto ou capacitar um sistema, o software é um fator que diferencia. O software através do oferecimento de informações, capacidade de ser "amigável ao ser humano", a inteligência e a função é o que diferencia 2 produtos de consumo ou indústrias idênticas.
A IMPORTÂNCIA DO SOFTWARE
Durante as 3 primeiras décadas da era do computador, o principal desafio era desenvolver um hardware que reduzisse o custo de processamento e armazenagem de dados. Ao longo da década de 1980, avanços na microeletrônica resultaram em maior poder de computação a um custo cada vez mais baixo. Hoje o problema é diferente, o principal desafio durante a década de 1990 é melhorar a qualidade (e reduzir o custo) de soluções baseadas em computador - soluções que são implementadas com o software.
O poder de um computador mainframe da década de 1980 agora está à disposição sobre uma escrivaninha. As assombrosas capacidades de processamento e armazenagem do moderno hardware representam um grande potencial de computação. O software é o mecanismo que nos possibilita aproveitar e dar vazão a esse potencial.
O PAPEL EVOLUTIVO DO SOFTWARE
1950 ~ 1965 : O hardware dedicava-se à execução de um único programa, que por sua vez, dedicava-se a uma aplicação específica. O software era projetado sob medida e era desenvolvida e usada pela própria pessoa. Portanto, o projeto era realizado no cérebro de alguém e a documentação muitas vezes não existia.
1965 ~ 1975 : A 2ª era: A multiprogramação e os sistemas multiusuários introduziram novos conceitos de interação homem-máquina. Sistemas de tempo real podiam coletar, analisar e transformar dados de múltiplas fontes. 1ª geração de sistemas de G.B.D. "Softwares Houses" e Manutenção de Software (adaptar as condições do usuário e correção de falhas).
1975 ~ 1989 "até hoje": A 3ª era: Sistemas distribuídos, múltiplos computadores, cada um executando funções concorrentemente e comunicando-se um com o outro. As redes globais e locais. Uso dos microprocessadores, computadores pessoais e poderosas estações de trabalho (Workstations ) - produtos inteligentes.
Hardware - produto primário. Software - diferencia.
1985 ~ 2000 : A 4ª era: Tecnologia orientadas a objetos. Os sistemas especialistas e o software de Inteligência Artificial finalmente saíram do laboratório. O software rede neural artificial abriu possibilidades para o relacionamento de padrões e processamento de informações semelhantes às humanas. E portanto, são adotadas práticas de engenharia.
DEFINIÇÃO FORMAL
· Instruções (programas de computador) que quando executadas, produzem a função desempenhos desejados.
CARACTERÍSTICAS
· quando o hardware é construído, evolui para um produto físico (chips, placas, fontes, etc). O software, por sua vez, é um elemento de sistema lógico, e não físico.
· o hardware com o passar do tempo sofre os efeitos cumulativos de poeira, vibração, temperaturas extremas, já, o software não é sensível aos problemas ambientais, portanto o software não se desgasta, mas se deteriora, isto é, durante sua vida, o software enfrentará mudanças (manutenção) que quando estas são feitas, é provável que novos defeitos sejam introduzidos, logo depois outra mudança é solicitada, lentamente o nível de falhas começa a se elevar e o software está-se deteriorando devido às mudanças.
· quando se desgasta, um componente de hardware é substituído por uma "peça de reposição". Não existem peças de reposição para o software, toda falha de software indica um erro no projeto. Portanto, a manutenção de software envolve consideravelmente mais complexidade do que a manutenção do hardware.
o para o projeto de hardware, o projetista desenha um esquema simples do circuito digital e depois vai à estante onde existem catálogos de componentes. Cada circuito integrado (C.I) tem uma numeração de peça, uma função definida. Depois que cada componente é escolhido, o hardware pode ser encomendado. Infelizmente, os projetistas de software não podem permitir-se a esse luxo. A maioria dos softwares é feita sob medida em vez de ser montada à partir de componentes existentes Com poucas exceções, não existem catálogos de componentes de softwares. É possível encomendar software, mas somente como uma unidade completa, não como componentes que possam ser montados novamente em programas. (Esta situação está mudando rapidamente, o uso difundido de programas orientados a objeto resultou na criação de "CIs de Software" - "reusabilidade de software").
As formas de linguagem em uso são
Linguagem Linguagem Linguagem Linguagem não
Máquina Assembly Alto Nível procedimentais (4ª geração)
Linguagem de Máquina = representação simbólica de zeros e uns (0 ou 1).
Linguagem Assembly = representação simbólica de instrução da CPU.
Linguagem de Alto Nível = permite programa ser independente da máquina (necessitam de interpretadores e compiladores).
Tradicionais = COBOL e FORTRAN
Modernas = PASCAL, C e ADA
Orientada a Objetos = C ++, OBJECT, PASCAL, DELPHI, etc...
Especializadas = APL, LISP, OPS5, PROLOG ( p/ aplicações específicas )
Máquina, Assembly, Alto Nível = 3 primeiras gerações
ou linguagens procedimentais (específica a ação)
4ª geração ou Não-Procedimental = aplicação banco de dados (específica o resultado desejado)
O software é uma informação que existe em 2 formas básicas :
- Componentes não executáveis em máquina
- Componentes executáveis em máquina
SOFTWARE APLICATIVO
É o programa específico escrito ou testado para executar alguma operação (ou resolver um problema) de interesse do usuário. Em geral é escrito em Linguagem de Alto Nível pelo próprio usuário.
SOFTWARE BÁSICO
É o conjunto de programas que supervisionam e auxiliam a execução dos diversos softwares aplicativos. O software básico é. em geral, formado pelos seguintes programas principais:
· Sistema Operacional ou Programa Supervisor: que controla e supervisiona a execução de todos os outros programas (exemplos: CP/M, WINDOWS 95, UNIX, DOS, etc);
· Compiladores e Interpretadores: que traduzem ou interpretam os programas escritos em diferentes linguagens.
· Carregador - editor: que junta trechos de programas independentes em um único programa ou carrega um programa do disco magnético para a memória e vice-versa.
· Programa de utilidade: que efetua a conversão, cópia, classificação de diversos programas.
O software básico é fornecido pelo próprio fabricante do computador e, em geral, está escrito em linguagem de máquina.
Tanto o software aplicativo como o básico trabalham em linguagem de máquina, isto é, em código binário, que é a única codificação aceita pelo hardware ou arquitetura do computador.
O usuário. em geral, não manipula diretamente valores ou códigos binários, mas trabalha com valores decimais, hexadecimais e códigos Basic. Pascal, C, etc. Os programas do software básico encarregam-se de efetuar a tradução dos códigos e a conversão dos valores.
SOFTWARE BÁSICO
Programa para dar apoio a outros programas. Forte interação com o hardware.
Ex.: compiladores, editores.
SOFTWARE TEMPO REAL
Monitora, analisa e controla eventos do mundo real.
tempo real ≠ interativo ≠ time-sharing (tempo compartilhado).
Ex.: coleta de dados.
SOFTWARE COMERCIAL
Área de aplicação. Ex.: folhas de pagamento, contas à pagar.
SOFTWARE CIENTÍFICO E DE ENGENHARIA
Algoritmos numéricos convencionais e Novas aplicações. Ex.: CAD
SOFTWARE EMBUTIDO
Na ROM usado para produtos e sistemas. Ex.: BIOS
SOFTWARE COMPUTADOR PESSOAL
Interface com seres humanos.
Ex.: processador de textos, planilhas, computação gráfica, gerenciamento de dados.
SOFTWARE INTELIGÊNCIA ARTIFICIAL
Algoritmos não numéricos. Ex.: sistemas especialistas, reconhecimentos (voz e imagem)
O Sistema Operacional é responsável pela interface (interação) entre hardware e o usuário, o hardware e outros softwares aplicativos , como está representado na figura abaixo
|
Hardware |
|
Sistema Operacional |
|
Linguagens |
|
( Basic , Cobol , Pascal , C , ... ) |
|
Ferramentas ao usuário final : |
|
(Ex.: Versa CAD , Wordstar , ... ) |
|
Programas de Aplicação |
O Sistema Operacional deve ser adaptado ás características do hardware assim como as linguagens de programação e as ferramentas do usuários final devem ser adaptados ao Sistema Operacional.
Conhecer o Sistema 0peracional pode ajudar a resolver alguns problemas que a princípio nos parecem complicados. Além disso possue utilitários especiais para a formatação de discos, listagens em vídeo/impressora, criação/copia/exclusão e alterações de arquivos.
Podemos dizer que o Sistema 0peracional é um conjunto de rotinas, ou seja, uma lista de instruções passadas para o microprocessador com a finalidade promover a comunicação do usuário com o hardware.
Cada arquivo (Programa/Dados) possui um nome.
Arquivo Programa
Conjunto de instruções para o computador juntados em um só arquivo.
Arquivo Dados
Conjunto de caracteres (dados) que podem ser documentos, banco de dados e etc.
Devem ser utilizados nome de arquivos de fáceis associações ao assunto a que se referem. Os nomes de arquivos normalmente possuem duas partes separadas por um ponto. Sendo que a segunda parte (extensão) é o opcional.
Geralmente a extensão especifica o tipo de arquivo. Exemplos:
EXTENSÃO
.COM - Utilizado para arquivos de comandos (Programas)
.EXE - Utilizado para arquivos executáveis (Programas)
.BAT - Utilizado para arquivos de lote (Batch) - que são criados em um editor de texto qualquer e possuem uma seqüência de comandos do DOS
.PAS - Arquivos de Programas em Pascal
.C - Arquivos de Programas em C
.DBF - Arquivos de dados
.DOC - Arquivos de textos
.XLS - Arquivos de planilhas
Esses nomes de arquivos devem possuir de 1 a 8 (máximo) caracteres (essa limitação ocorre apenas no Sistema Operacional DOS) com extensão opcional de 1 a 3 (máximo) caracteres.
São uma "espécie" de armários e gavetas, cuja função é organizar os arquivos.
O Sistema Operacional DOS permite o gerenciamento dos arquivos (dados/programas) em forma de árvore onde cada galho é chamado Diretório/ Subdiretório.
Vejamos:
I. SISTEMAS OPERACIONAIS
Originalmente, os sistemas operacionais visavam somente gerenciar uma das operações mais complexas de entrada/saída:
o 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.
Sem um sistema operacional, cada programador teria que inventar, a partir de um esboço, como o programa faria certas funções, como por exemplo:
o apresentar o texto e a parte gráfica na tela
Entretanto, um sistema operacional faz mais do que facilitar a vida dos programadores. O sistema operacional cria uma plataforma comum a todos os programas utilizados. Sem ele, você provavelmente não seria capaz de gravar arquivos criados em programas diferentes no mesmo disco, porque cada um teria sua própria maneira de armazenar tais arquivos. O sistema operacional também fornece ferramentas para gerenciar todas as tarefas que você deseja executar fora do aplicativo, como por exemplo:
o apagar e copiar arquivos
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. Como será visto em seguida, quando algumas partes do sistema operacional são carregadas do disco, elas são acrescentadas ao BIOS, unidas através de drivers de dispositivos, e todas elas executam rotinas de funções de hardware.
O sistema operacional, na verdade, é formado por todos esses três componentes. Juntos, o BIOS, os drivers de dispositivos e o sistema operacional executam tantas funções que é impossível mostrar essa complexidade em algumas páginas de ilustrações. É simplista pensar no sistema operacional como sendo somente os arquivos contidos num certo disco que acompanha o PC.
A princípio para podermos carregar o sistema operacional devemos passar por algumas etapas, como visto a seguir:
Autoteste
Ao ligar o computador, nada de importante parece acontecer durante alguns segundos. Na verdade, ele está passando por um complexo conjunto de operações para verificar se todos os componentes estão funcionando de acordo e avisar se algo não está indo bem.
Esta operação é a primeira etapa de um processo um tanto complicado, chamado de partida (boot-up), ou simplesmente, boot. Num PC, este processo é necessário porque a máquina precisa ter uma forma de despertar todos os seus componentes e assim carregar o sistema operacional sem problemas. Em seguida, o sistema operacional encarrega-se de tarefas um pouco mais complicadas, que o código de boot não consegue gerenciar sozinho, inclusive a de fazer o equipamento interagir com os programas.
Mas mesmo antes de o PC tentar carregar um sistema operacional, ele precisa ter certeza de que todos os seus componentes estão rodando e que a CPU e a memória estão funcionando corretamente. Este é o trabalho do Autoteste inicial ou POST.
Boot
O computador pessoal não pode fazer nada de aproveitável se não possuir um sistema operacional (o programa que permite ao PC utilizar os demais programas). Mas antes de executar o sistema operacional, o PC precisa de uma forma de carregá-lo na memória de acesso aleatório (RAM). Esta forma é conhecida como bootstrap, ou apenas boot, um pequeno código que faz parte permanente do PC.
O bootstrap possui este nome porque permite que o PC execute algo por si só, sem o auxílio de um sistema operacional externo. Na verdade, a operação de boot não faz muita coisa. Ela possui somente duas funções:
o executar o POST ou Autoteste inicial (descrito anteriormente)
Ao terminar as duas funções, inicia-se o processo de leitura dos arquivos do sistema operacional e a cópia destes arquivos para a memória de acesso aleatório (RAM).
Por que os PCs usam esse tipo de método? Por que não integrar o sistema operacional no PC? Alguns computadores mais especializados ou mais básicos o fazem. Os primeiros modelos, utilizados principalmente para jogos, como Atari 400 e 800, e o recente palmtop LX95 da Hewlett-Packard possuem um sistema operacional permanente. O LX95 inclui até mesmo um aplicativo, o Lotus 1-2-3, num microchip especial. Mas, na maioria das vezes, o sistema operacional é carregado do disco por dois motivos.
É mais fácil atualizar a versão do sistema se este for carregado através de disco. Quando uma empresa como a Microsoft (fabricante do MS-DOS, WINDOWS-95 e 98, sistemas operacionais mais utilizado em PCs) deseja acrescentar novos recursos ou eliminar erros de programação (bugs), ela simplesmente lança um novo conjunto de discos com a nova versão. Às vezes, somente um único arquivo é inserido para corrigir uma falha no sistema operacional. É mais barato para a Microsoft distribuir disquetes ou CD-ROMs do que projetar um microchip que contenha o sistema operacional. E bem mais fácil para os usuários instalar um novo sistema operacional em disquetes do que trocar chips. Outra razão para se carregar o sistema operacional a partir de discos é permitir que o usuário possa escolher o sistema.
Embora a maioria dos PCs baseados em microprocessadores fabricados pela Intel utilizem o MS-DOS, há sistemas operacionais alternativos como o OS/2, o DR-DOS e o UNIX. Na configuração de alguns PCs, pode-se até definir qual sistema operacional será utilizado toda vez que se liga o computador.
OBS.: O nome do sistema operacional mais conhecido para PCs baseados no microprocessador INTEL : MS-DOS (MicroSoft Disk Operating System), significa disco de sistema operacional da MicroSoft .
TIPOS DE SISTEMAS OPERACIONAIS voltar
Os tipos de sistemas operacionais e sua evolução estão intimamente relacionados com a evolução do hardware e das aplicações por ele suportadas.
Muitos termos inicialmente introduzidos para definir conceitos e técnicas foram substituídos por outros, na tentativa de refletir uma nova maneira de interação ou processamento. Isto fica muito claro quando tratamos da unidade de execução do processador. Inicialmente, os termos programa ou job eram os mais utilizados, depois surgiu o conceito de processo e subprocesso e, mais recentemente, os conceitos de tarefa e de thread.
A evolução dos sistemas operacionais para computadores pessoais e estações de trabalho popularizou vários conceitos e técnicas, antes só conhecidos em ambientes de grande porte. A nomenclatura, no entanto não se manteve a mesma. Surgiram novos termos para conceitos já conhecidos, que foram apenas adaptados para uma nova realidade.
Neste capítulo abordaremos os diversos tipos de sistemas operacionais, suas características, vantagens e desvantagens (Fig. 1).
Tipos de
Sistemas
Operacionais
Sistemas Sistemas Sistemas com
Monoprogramáveis/ Multiprogramáveis/ Múltiplos
Monotarefa Multitarefa Processadores
Fig. 1 - Tipos de sistemas operacionais.
3.1 SISTEMAS MONOPROGRAMÁVEIS / MONOTAREFA
Os primeiros sistemas operacionais eram tipicamente voltados para a execução de único programa (job). Qualquer outro programa para ser executado, deveria aguardar o término do programa corrente. Os sistemas monoprogramáveis, como vieram a ser conhecidos, se caracterizam por permitir que o processador, a memória e os periféricos permaneçam exclusivamente dedicados à execução de um único programa.
Os sistemas monoprogramáveis estão tipicamente relacionados ao surgimento dos mainframes. Posteriormente, com a introdução dos primeiros computadores pessoais e estações de trabalho, estes tipos de sistemas voltaram a ser desenvolvidos para atender máquinas que, na época, eram utilizadas por apenas um usuário. Os sistemas monotarefa, como também são chamados, se caracterizam por permitir que todos os recursos do sistema fiquem exclusivamente dedicados a uma única tarefa.
Neste tipo de sistema, enquanto um programa aguarda por um evento, como a digitação de um dado, o processador permanece ocioso, sem realizar qualquer tipo de processamento. A memória é subutilizada caso o programa não a preencha totalmente, e os periféricos, como discos e impressoras, estão dedicados a um único usuário, nem sempre utilizados de forma integral.
Comparados a outros sistemas, os sistemas monoprogramáveis/monotarefa são de simples implementação, não existindo muita preocupação com problemas de proteção.
3.2 SISTEMAS MULTIPROGRAMÁVEIS/MULTITAREFA
Os sistemas multiprogramáveis, que vieram a substituir os monoprogramáveis, são mais complexos e eficientes. Enquanto em sistemas monoprogramáveis existe apenas um programa utilizando seus diversos recursos, nos multiprogramáveis vários programas dividem esses mesmos recursos.
Por exemplo, enquanto um programa espera por uma operação de leitura ou gravação em disco, outros programas podem estar sendo processados neste mesmo intervalo de tempo. Nesse caso, podemos observar o compartilhamento da memória e do processador. O sistema operacional se preocupa em gerenciar o acesso concorrente aos seus diversos recursos, como memória, processador e periféricos, de forma ordenada e protegida, entre os diversos programas.
As vantagens do uso de sistemas multiprogramáveis são o aumento da produtividade dos seus usuários e a redução de custos, a partir do compartilhamento dos diversos recursos do sistema.
Nos sistemas monoprogramáveis, apenas um único usuário pode interagir com o sistema, enquanto nos multiprogramáveis é permitido que mais de um usuário o utilize.
A partir do número de usuários que interagem com o sistema, podemos classificar os sistemas multiprogramáveis como monousuário e multiusuário.
O conceito de sistema multiprogramável está tipicamente associado aos mainframes e minicomputadores, onde existe a idéia do sistema sendo utilizado por vários usuários (multiusuário). No mundo dos computadores pessoais e estações de trabalho, apesar de existir apenas um único usuário interagindo com o sistema (monousuário), é possível que ele execute diversas tarefas concorrentemente ou mesmo simultaneamente. Os sistemas multitarefa, como também são chamados, se caracterizam por permitir que o usuário edite um texto, imprima um arquivo, copie um arquivo pela rede e calcule uma planilha.
Os sistemas multiprogramáveis/multitarefa podem ser classificados pela forma com que suas aplicações são gerenciadas, podendo ser divididos em sistemas batch, de tempo compartilhado ou de tempo real. Um sistema operacional pode suportar um ou mais desses tipos de processamento.
Sistemas Multiprogramáveis/
Multitarefa
Sistemas Sistemas de Sistemas de
Batch Tempo Compartilhado Tempo Real
Fig. 2 - Tipos de sistemas multiprogramáveis/ multitarefa
3.2.1 SISTEMAS BATCH
Os sistemas batch (lote) foram os primeiros sistemas multiprogramáveis a serem implementados e caracterizam-se por terem seus programas, quando submetidos, armazenados em disco ou fita, onde esperam para ser executados seqüencialmente. Normalmente, os programas, também chamados de jobs, não exigem interação com os usuários, lendo e gravando dados em discos ou fitas. Alguns exemplos de aplicações originalmente processadas em batch são compilações, linkedições, sorts, backups e todas aquelas onde não é necessária a interação com o usuário.
Esses sistemas, quando bem projetados, podem ser bastante eficientes, devido à melhor utilização do processador. Entretanto, podem oferecer tempos de resposta longos, em face do processamento puramente seqüencial e com uma variação alta dos seus tempos de execução.
3.2.2 SISTEMAS DE TEMPO COMPARTILHADO
Os sistemas de tempo compartilhado (time-sharing) permitem a interação dos usuários com o sistema, basicamente através de terminais que incluem vídeo, teclado e mouse. Dessa forma, o usuário pode interagir diretamente com o sistema em cada fase do desenvolvimento de suas aplicações e, se preciso, modificá-las imediatamente. Devido a esse tipo de interação, os sistemas de tempo compartilhado também ficaram conhecidos como sistemas on-line.
Esses sistemas possuem uma linguagem de controle que permite ao usuário comunicar-se diretamente com o sistema operacional para obter informações, como, por exemplo, verificar os arquivos que possui armazenados em disco. O sistema, normalmente, responde em poucos segundos à maioria desses comandos.
Para cada usuário, o sistema operacional aloca uma fatia de tempo (time-slice) do processador. Caso o programa do usuário não esteja concluído nesse intervalo de tempo, ele é substituído por um de outro usuário, e fica esperando por uma nova fatia de tempo. Não só o processador é compartilhado nesse sistema, mas também a memória e os periféricos, como discos e impressoras. O sistema cria para o usuário um ambiente de trabalho próprio, dando a impressão de que todo o sistema está dedicado, exclusivamente, a ele.
Sistemas de tempo compartilhado são de implementação complexa, porém, se levado em consideração o tempo de desenvolvimento e depuração de uma aplicação, aumentam consideravelmente a produtividade dos seus usuários, reduzindo os custos de utilização do sistema.
3.2.3 SISTEMAS DE TEMPO REAL
Os sistemas de tempo real (real-time) são bem semelhantes em implementação aos sistemas de tempo compartilhado. A maior diferença é o tempo de resposta exigido no processamento das aplicações.
Enquanto em sistemas de tempo compartilhado o tempo de resposta pode variar sem comprometer as aplicações em execução, nos sistemas de tempo real os tempos de resposta devem estar dentro de limites rígidos, que devem ser obedecidos, caso contrário poderão ocorrer problemas irreparáveis.
Nos sistemas de tempo real não existe a idéia de fatia de tempo, utilizada pelos sistemas de tempo compartilhado. Um programa detém o processador o tempo que for necessário, ou até que apareça outro prioritário em função de sua importância no sistema. Esta importância ou prioridade de execução é controlada pela própria aplicação e não pelo sistema operacional, como nos sistemas de tempo compartilhado.
Esses sistemas, normalmente, estão presentes em controle de processos, como no monitoramento de refinarias de petróleo, controle de tráfego aéreo, de usinas termoelétricas e nucleares, ou em qualquer aplicação onde o tempo de resposta é fator fundamental.
3.3 SISTEMAS COM MÚLTIPLOS PROCESSADORES
Os sistemas com múltiplos processadores caracterizam-se por possuir duas ou mais CPUs interligadas, trabalhando em conjunto. Um fator-chave no desenvolvimento de sistemas operacionais com múltiplos processadores é a forma de comunicação entre as CPUs e o grau de compartilhamento da memória e dos dispositivos de entrada e saída. Em função desses fatores, podemos classificar os sistemas em fortemente acoplados ou fracamente acoplados.
Sistemas com Múltiplos
Processadores
Sistemas Fortemente Sistemas Fracamente
Acoplados Acoplados
Sistemas Sistemas Sist. Operacionais Sist. Operacionais
Assimétricos Simétricos de Rede Distribuídos
Em sistemas fortemente acoplados existem dois ou mais processadores (multiprocessadores) compartilhando uma única memória e controlados por apenas um único sistema operacional. Tais sistemas são geralmente utilizados no processamento de aplicações que fazem uso intensivo da CPU, onde o processamento é voltado para a solução de um único problema.
Os sistemas fracamente acoplados caracterizam-se por possuir dois ou mais sistemas de computação (multicomputadores), conectados através de linhas de comunicação. Cada sistema funciona de forma independente, possuindo seu(s) próprio(s) processador(es), memória e dispositivos. A utilização de sistemas fracamente acoplados já é caracterizada pelo processamento distribuído entre os seus diversos processadores.
A grande diferença entre os dois tipos de sistemas é que em sistemas fortemente acoplados existe apenas um espaço de endereçamento (memória) compartilhado por todos os processadores, enquanto nos fracamente acoplados cada sistema tem sua própria memória individual. Além disso, a taxa de transferência entre CPUs e memória em sistemas fortemente acoplados é normalmente maior que nos fracamente acoplados.
Os conceitos utilizados no projeto de sistemas com múltiplos processadores incorporam os mesmos princípios apresentados para a multiprogramação, além de outras características e vantagens. Sistemas com múltiplos processadores possibilitam aumentar a capacidade computacional com menor custo (escalabilidade), além de permitir a reconfiguração e o balanceamento do sistema.
OBS.: A reconfiguração é a capacidade de um sistema poder continuar o processamento, mesmo se um dos processadores falhar ou parar de funcionar, embora com menor capacidade de computação. O balanceamento possibilita distribuir a carga de processamento entre os diversos sistemas da configuração, melhorando o desempenho como um todo.
3.3.1 SISTEMAS FORTEMENTE ACOPLADOS
Nos sistemas fortemente acoplados (tightly coupled) existem vários processadores compartilhando uma única memória e gerenciados por apenas um sistema operacional. Múltiplos processadores permitem que vários programas sejam executados ao mesmo tempo, ou que um programa seja dividido em subprogramas, para execução simultânea em mais de um processador. Dessa forma, é possível ampliar a capacidade de computação de um sistema, adicionando-se apenas novos processadores, com um custo muito inferior à aquisição de outros computadores.
A evolução desses sistemas se deve, em grande parte, ao elevado custo de desenvolvimento de processadores cada vez mais rápidos, utilizados nos sistemas com apenas um processador. Em função disso, passou-se a dar ênfase à arquitetura de computadores com múltiplos processadores, em vez de processadores de alta velocidade. Inicialmente, as configurações se limitavam a poucos processadores, mas, com o avanço tecnológico, já é possível desenvolver sistemas com milhares de processadores.
Com o multiprocessamento, novos problemas de concorrência foram introduzidos, pois vários processadores podem estar acessando as mesmas áreas de memória. Além disso, existe o problema de organizar de forma eficiente os processadores, a memória e os periféricos.
Uma conseqüência do multiprocessamento foi o surgimento dos computadores voltados, principalmente, para processamento científico, aplicado, por exemplo, ao desenvolvimento aeroespacial, prospecção de petróleo, simulações, processamento de imagens e CAD. A princípio qualquer aplicação que faça uso intensivo da CPU será beneficiada pelo acréscimo de processadores ao sistema.
Os sistemas fortemente acoplados podem ser divididos conforme a simetria existente entre seus processadores, ou seja, se todos os processadores podem executar ou não as mesmas funções. Os sistemas fortemente acoplados assimétricos caracterizam-se por possuir um processador primário, responsável pelo controle dos demais processadores (secundários) e pela execução do sistema operacional. Os processadores secundários apenas processam programas de usuários e, sempre que necessitam de um serviço do sistema, solicitam ao processador primário. Já nos sistemas fortemente acoplados simétricos, todos os processadores têm as mesmas funções, podendo executar o sistema operacional independentemente.
3.3.1.1 SISTEMAS ASSIMÉTRICOS
Na organização assimétrica ou mestre / escravo (master/slave), somente um processador (mestre) pode executar serviços do sistema operacional, como, por exemplo, realizar operações de entrada/saída. Sempre que um processador do tipo escravo precisar realizar uma operação de entrada/saída, terá de requisitar o serviço ao processador mestre. Dependendo do volume de operações de entrada/saída destinadas aos processadores escravos, o sistema pode se tornar ineficiente, devido ao elevado número de interrupções que deverão ser tratadas pelo mestre.
Outra conseqüência dessa organização é que, se o processador mestre falhar, todo o sistem