Escolar Documentos
Profissional Documentos
Cultura Documentos
a
Sistemas Operacionais
1
SUMÁRIO
Introdução.......................................................................................................................................................................5
Sistema operacional como Gerenciador de Recursos.................................................................................................... 7
Evolução dos Sistemas Operacionais....................................................................................................................................7
Computadores a Válvulas à Vácuo (1945-1955).............................................................................................................8
Transistores e Sistemas em Lote (1955-1965)................................................................................................................8
Circuitos Integrados e Multiprogramação (1965-1980)................................................................................................. 9
Computadores Pessoais (1980-1995)........................................................................................................................... 10
Tipos de Sistemas Operacionais....................................................................................................................................11
Computadores de Grande Porte............................................................................................................................. 11
Sistema Operacional de Servidores.........................................................................................................................11
Sistema Operacional de Multiprocessadores..........................................................................................................12
Sistema Operacional de Desktops e Notebooks..................................................................................................... 12
Sistema Operacional de Tempo Real...................................................................................................................... 12
Sistema Operacional Embarcado............................................................................................................................ 13
Sistema Operacional de Cartões Inteligentes......................................................................................................... 13
Elementos de Sistemas Operacionais.................................................................................................................................14
Processos.......................................................................................................................................................................14
Estados de Processos.............................................................................................................................................. 21
Em execução............................................................................................................................................................21
Pronto......................................................................................................................................................................21
Bloqueado............................................................................................................................................................... 22
Threads............................................................................................................................................................................... 22
Múltiplos Threads......................................................................................................................................................... 23
Ambiente Monothread.................................................................................................................................................. 23
Ambiente Multithread................................................................................................................................................... 24
Threads............................................................................................................................................................................... 25
Aplicações monothread e multithread...........................................................................................................................25
Os benefícios do uso de threads....................................................................................................................................25
Melhor desempenho com o uso de threads................................................................................................................... 25
Arquitetura e implementação de threads.......................................................................................................................26
Threads em Modo usuário.......................................................................................................................................26
Thread em Modo Kernel......................................................................................................................................... 26
Thread em Modo Híbrido........................................................................................................................................26
Scheduler Activations..............................................................................................................................................26
Gerenciamento de memória.......................................................................................................................................... 26
Monoprogramação...................................................................................................................................................27
Multiprogramação................................................................................................................................................... 27
Memória Virtual...................................................................................................................................................... 27
Entrada/Saída (E/S)................................................................................................................................................. 27
Dispositivos de E/S................................................................................................................................................. 27
Sistema de Arquivo.............................................................................................................................................................28
História dos Sistemas Operacionais....................................................................................................................................28
A primeira geração (1945-1955) – Válvulas..................................................................................................................30
A segunda geração (1955-1965) – Transisores e sistema em lotes (batch)................................................................. 30
Terceira geração (1965-1980) – CI’s e multiprogramação........................................................................................... 32
Detalhes da terceira geração.................................................................................................................................. 32
Avanços obtidos...................................................................................................................................................... 32
Linguagens e Sistemas Operacionais criados.......................................................................................................... 33
Principais Computadores da terceira geração........................................................................................................ 33
Dispositivos e Componentes criados na terceira geração...................................................................................... 33
Computação-Meio...................................................................................................................................................33
Quarta Geração (1980 – presente) – computadores pessoais............................................................................... 35
Revisão sobre Hardware de Computadores.......................................................................................................................36
Placa mãe ..................................................................................................................................................................... 36
O que faz uma placa-mãe ser melhor do que a outra?...........................................................................................36
2
Material e aspecto...................................................................................................................................................37
Soquete......................................................................................................................................................................... 38
Recursos embutidos......................................................................................................................................................38
O que é CPU?...........................................................................................................................................................39
A estrutura básica de uma CPU é dividida entre três partes principais:.................................................................39
Como o processador funciona?...............................................................................................................................39
Desempenho da CPU...............................................................................................................................................40
Barramentos..................................................................................................................................................................41
Clock interno................................................................................................................................................................. 42
FSB (Front Side Bus)...................................................................................................................................................... 42
Como os dados são gravados e lidos.......................................................................................................................44
Disco rígido em detalhes......................................................................................................................................... 44
Memória RAM .............................................................................................................................................................. 46
Fonte de Alimentação .................................................................................................................................................. 49
Inicialização do Computador.............................................................................................................................................. 50
CMOS é a abreviação de "Complementary Metal Oxide Semiconductor"...................................................................50
BIOS............................................................................................................................................................................... 51
História da BIOS............................................................................................................................................................ 52
Interface de usuário...................................................................................................................................................... 52
Passo a passo da inicialização do computador............................................................................................................. 52
Setor de boot................................................................................................................................................................ 53
Linha do Tempo.............................................................................................................................................................54
Gerações....................................................................................................................................................................... 57
Visão Geral dos Sistemas Operacionais..............................................................................................................................58
Introdução.....................................................................................................................................................................58
Funções de um Sistema Operacional............................................................................................................................58
Uma máquina em camadas...........................................................................................................................................59
O sistema operacional facilitando o desenvolvimento de software............................................................................ 59
Os Recursos dos sistemas operacionais........................................................................................................................59
Gerencia de dispositivos.....................................................................................................................................................60
A gerencia de dispositivos.............................................................................................................................................60
Uma camada para E/S...................................................................................................................................................60
Device Driver.................................................................................................................................................................60
OS grupos de camadas..................................................................................................................................................60
A camada Subsistema de E/S.................................................................................................................................. 60
As rotinas de entrada/saída.................................................................................................................................... 61
O Device Driver........................................................................................................................................................61
O Controlador de entrada e saída........................................................................................................................... 61
Dispositivos de entrada e saída...............................................................................................................................61
Desempenho, Redundância e Proteção de dados.................................................................................................. 62
Entre as técnicas RAID podemos destacar:.............................................................................................................62
Gerência de Sistema de Arquivos.......................................................................................................................................62
Introdução.....................................................................................................................................................................62
A Gerência do Sistema de Arquivos..............................................................................................................................62
Os Arquivos..............................................................................................................................................................63
Armazenamento de Arquivos..................................................................................................................................63
Informações dos Arquivos.......................................................................................................................................63
Organização de Arquivos.........................................................................................................................................63
Os Métodos de Acesso aos dados nos Arquivos...........................................................................................................64
Acesso Sequencial................................................................................................................................................... 64
Acesso Direto...........................................................................................................................................................64
Acesso Indexado ou Acesso por Chave................................................................................................................... 64
Operações de Entrada/Saída........................................................................................................................................ 64
Atributos dos Arquivos............................................................................................................................................ 64
Diretórios...................................................................................................................................................................... 65
Gerência de Espaço Livre em Disco.............................................................................................................................. 65
Existem diferentes formais de gerenciar a alocação do espaço livre em disco......................................................65
Gerência de Alocação de Espaço em Disco...................................................................................................................66
A Alocação Contígua................................................................................................................................................66
3
A Alocação Encadeada.............................................................................................................................................66
A Alocação Indexada............................................................................................................................................... 67
Proteção de acesso....................................................................................................................................................... 67
VPN................................................................................................................................................................................73
PROTOCOLO IPSEC........................................................................................................................................................ 74
Referencial bibliográfico............................................................................................................................................... 77
4
Introdução
Um sistema computacional moderno consiste em um ou mais processadores, memória
principal, discos, impressoras, teclado, monitor, interfaces de rede e outros dispositivos de
entrada e saída. Enfim é um sistema complexo. Desenvolver programas que mantenham o
controle de todos esses componentes e os utilizem corretamente e de maneira otimizada é um
trabalho extremamente difícil. Por isso, os computadores têm um dispositivo de software
denominado Sistema Operacional, cujo trabalho é gerenciar esses componentes e fornecer aos
programas do usuário uma interface com o hardware mais simples.
A maioria dos usuários de computador já teve alguma experiência com um Sistema Operacional,
mesmo assim é difícil reconhecer de modo preciso o que é um Sistema Operacional. Este
problema ocorre porque os Sistemas Operacionais realizam basicamente duas funções não
relacionadas: estender a máquina e gerenciar recursos. Logo, pretende-se neste capítulo
descrever suas principais funções para o usuário do computador.
Sem o software, um computador seria um pedaço de metal sem uso. Muitos consideram o
software como a alma do computador.
Existem dois tipos de software para computadores: programas do sistema, responsáveis por
operações de gerenciamento do próprio computador, e os programas aplicações, implementados
por usuários do computador para resolver seus problemas específicos.
5
Um conjunto de instruções é interpretado pela camada de Microprogramação. Esta camada
conversa diretamente com os dispositivos providenciando funcionalidades para a camada acima
através das instruções de máquina.
A principal função da camada do Sistema Operacional é diminuir a complexidade e fornecer ao
programador um conjunto de instruções de mais alto nível, sem a preocupação dos detalhes das
instruções, como a movimentação do cabeçote de leitura dos discos rígidos contidos na memória
secundária para ler os dados de um programa em execução.
Acima do Sistema Operacional, existem outros programas do sistema, como os Compiladores,
Editores e os Interpretadores de Comandos, que auxiliam as aplicações a fazerem uso das
funcionalidades do Sistema Operacional. E por fim, a camada de aplicações, escritas pelos usuários
para resolver seus problemas específicos, como processamento de imagens, serviços de
comunicação na rede, aplicações comerciais, científicas e etc.
Muito confundem o Sistema Operacional com a sua interface gráfica. No Windows, Sistema
Operacional da Microsoft, existe um programa do sistema, chamado gerenciador de janelas,
responsável por controlar as ações do usuário e ativar os recursos do Sistema Operacional, dando
assim uma falsa impressão que o mesmo seja o Sistema Operacional de fato. Para podermos
definir bem a fronteira do que é o papel do Sistema Operacional, elencamos e em seguida
descrevemos suas duas principais funções: Extensão da Máquina e Gerenciador de Recursos.
6
Examinando como é feita a E/S da unidade de discos flexíveis (disquete), são realizados
inúmeros comandos para leitura e escrita de dados, movimentação do braço do disco e
formatação de trilhas. Além da inicialização, sinalização, reinicialização e recalibração do
controlador e das unidades de disquetes.
Sem entrar em detalhes de fato, é claro que um programador de nível médio provavelmente
não se envolverá com os detalhes de programação das unidades de disco, em vez disso, busca
lidar com essas unidades de modo mais abstrato e simples.
Esse programa que oculta a “verdade” ao programador sobre o hardware e apresenta uma
visão simples é o Sistema Operacional, permitindo que o usuário trabalhe com o conceito de
arquivos com nomes para dividir o disco.
Em todo caso a abstração oferecida pelo sistema operacional é mais simples e mais fácil de
usar que a do hardware, oferecendo ao usuário o equivalente a uma máquina estendida.
Sistema operacional como Gerenciador de Recursos
O segundo trabalho do Sistema Operacional é fornecer uma alocação ordenada e controlada
de processadores, memórias e dispositivos de E/S entre vários programas que competem por
eles.
Imagine o que aconteceria se três programas em execução em algum computador tentassem
imprimir suas saídas simultaneamente na mesma impressora. As primeiras linhas poderiam ser do
programa 1, as linhas seguintes do programa 2 e algumas outras do programa 3. O resultado seria
uma confusão. O Sistema Operacional pode trazer ordem a essa confusão, armazenando
temporariamente no disco todas as saídas destinadas à impressora, tratando a impressão de cada
saída por vez.
Além disso, os usuários muitas vezes precisam compartilhar não somente hardware, mas
também informação (arquivo, banco de dados e etc).
O gerenciamento de recursos realiza o compartilhamento desses recursos de duas maneiras: no
tempo e no espaço. Quando o recurso é compartilhado no tempo, diferentes usuários aguardam
sua vez para utilizar um recurso. Por exemplo, com somente uma CPU e múltiplos programas, o
Sistema Operacional aloca a CPU a um programa, e depois que executou o suficiente, outro
programa obtém seu uso, então outro e por fim o primeiro programa novamente.
No compartilhamento do espaço, os usuários não esperam a sua vez, cada um ocupa sua parte
no recurso. Por exemplo, a memória principal é normalmente dividida entre vários programas em
execução, assim, cada um pode residir ao mesmo tempo na memória.
Evolução dos Sistemas Operacionais
A história dos Sistemas operacionais está diretamente ligada a arquitetura dos computadores
em que os mesmos iriam executar. Abordaremos exemplos desta evolução de hardware e
software.
7
Computadores a Válvulas à Vácuo (1945-1955)
Durante a segunda guerra mundial uma aceleração na evolução dos computadores ocorreu
devido à necessidade de aplicações que pudessem quebrar a codificação das mensagens dos
inimigos.
Neste período alguns pesquisadores como John Von Newman em Princeton, Konrad Zuse na
Alemanha e Howard Aiken em Harvad construíram dispositivos capazes de computar através de
tubos a vácuo, sendo estes equipamentos grandes o bastante para ocupar salas inteiras.
Nesta geração as instruções eram dadas diretamente em código de máquina. Não havia
linguagem de programação (nem mesmo linguagem de montagem). E os Sistemas Operacionais
não tinham qualquer funcionalidade, ou seja, não existiam.
Transistores e Sistemas em Lote (1955-1965)
Com o surgimento dos transistores, os computadores se tornaram confiáveis e passaram a ser
comercializados, isto em meados da década de 50.
O computador passou a ter mais clara a separação dos papeis de seus atores: os projetistas do
computador, programadores e os operadores da máquina. Antes estes papeis eram realizados
pelos mesmos desbravadores da Computação.
Para executar um programa, o programador desenvolvia seu algoritmo e entregava o cartão
contendo seu código ao operador. O operador era responsável por entrar com o cartão no
computador e acionar sua computação, ao final, a saída era impressa e o resultado entregue de
volta ao programador.
Como os computadores iniciais eram muito caros, uma empresa compartilhava seus diversos
processos em uma única máquina, para isso, desenvolveu-se o conceito de sistema em lote.
O sistema em lote trabalhava com fitas magnéticas que possuíam diversos programas a serem
executados em sequencia. Um programa especial (ancestral do Sistema Operacional) carregava
cada programa da fita, executava o programa e envia sua saída para a impressora. Após o
encerramento deste programa o sistema configurava a próxima atividade para entrar em
execução. Este ciclo se repetia até acabarem todas as atividades do lote.
8
Circuitos Integrados e Multiprogramação (1965-1980)
No início da década de 60, os computadores passaram a ter duas utilizações no mercado: os
computadores científicos de larga escala para a ciência e a engenharia e os computadores
comerciais adotados por bancos, companhias de seguro e departamentos de recursos humanos.
O principal responsável pela sua popularização foi a adoção da tecnologia de Circuitos
Integrados que diminuiu o tamanho e o preço dos computadores. O IBM 360 foi o principal
computador adotado pelos dois filões do mercado.
A principal mudança para os Sistemas Operacionais foi a criação da Multiprogramação,
permitindo que vários programas pudessem compartilhar a memória principal ao mesmo tempo
cada uma com seu espaço reservado na memória, compartilhamento do espaço (Figura 6.2,
“Multiprogramação em um Sistema Operacional, tipos de compartilhamento dos recursos do
computador.”(a)), podendo estas atividades ser executadas ao mesmo tempo.
9
Computadores Pessoais (1980-1995)
Com o advento dos minicomputadores na década de 80, o computador passou a ser usado na
vida privada das pessoas, passou-se a comprar computadores como se comprava vídeo cassete,
surgindo assim o conceito de Computador Pessoal (Personal Computer - PC).
A popularização do computador se deu pelas interfaces gráficas propostas pelos Sistemas
Operacionais, permitindo que leigos da área pudessem manipular suas aplicações pessoais, sem o
10
Tipos de Sistemas Operacionais
Como vimos na seção anterior, muitos Sistemas Operacionais possuem características distintas
devido à arquitetura do hardware em que irão executar. Esta seção traz alguns dos tipos de
Sistemas Operacionais existentes descrevendo suas principais características
Computadores de Grande Porte
Estes computadores distinguem dos PCs em termos de capacidade de E/S. Possui milhares de
discos com milhares de terabytes de dados. Atualmente ressurgiram como sofisticados servidores
web e servidores para transações entre empresas.
Seus Sistemas Operacionais são, sobretudo, orientados para o processamento simultâneo de
muitos jobs com quantidades volumosas de E/S. Esses sistemas oferecem normalmente três tipos
de serviços: em lote (batch), processamento de transações e tempo compartilhado.
11
compartilhar recursos de hardware e software. Seu Sistema Operacional deve prover um bom
gerenciamento de recursos, como serviços de impressão, serviços de arquivos ou serviços web.
Sistema Operacional de Multiprocessadores
Um módulo cada vez mais comum de obter potência computacional é conectar múltiplas CPUs
em um único sistema. Dependendo da forma como são interligados os processadores e o que os
mesmos compartilham, esses sistemas são denominados computadores paralelos,
multicomputadores ou multiprocessadores. São Sistemas Operacionais com aspectos especiais de
comunicação e conectividade.
Existem dois tipos de Sistema Operacionais de tempo real, o crítico, onde as ações precisam
ocorrer em determinados instantes. E o não crítico no qual o descumprimento ocasional de um
prazo é aceitável. Sistemas multimídia pertencem a esta última categoria.
12
Sistema Operacional Embarcado
Sistemas embarcados são pequenos computadores, geralmente computadores de mão,
celulares e set-top-box para TV Digital. Realizam um pequeno número de funções, seu Sistema
Operacional deve lidar com restrições de tamanho, memória e consumo de energia.
13
Elementos de Sistemas Operacionais
Todos os Sistemas Operacionais têm certos conceitos básicos, como processos, memória e
arquivos, que são fundamentais para entendê-los. Nesta seção iremos dar uma introdução sobre
seus principais conceitos.
Processos
Um processo é basicamente um programa em execução. Associado a cada processo está o seu
espaço de endereçamento e uma lista de posições de memória que este processo pode ler e
escrever. Também associado a cada processo está um conjunto de registradores, que inclui o
contador de programa, o ponteiro para a pilha de execução e demais informações necessárias
para executar um programa.
14
as informações relativas ao processo devem ser explicitamente salvas. Por exemplo, um processo
pode ter vários arquivos abertos para leitura. Existe um ponteiro associado a cada um desses
arquivos, que indica a posição atual, assim quando o processo retorna a execução, a chamada de
sistema read sobre o arquivo poderá ler os dados corretamente de sua última posição manipulada.
Em muitos sistemas operacionais os dados relativos ao processo, que não estejam em seu
espaço de endereçamento, são armazenados em uma tabela do Sistema Operacional chamada de
tabela de processos, contendo uma entrada para cada processo.
Processo
Introdução
O Conceito de Processo
O processador quando executa instruções de um processo não sabe qual programa encontra-se
em execuçao. O sistema operacional é que deve implementar a concorrência entre programas
gerenciando a alternância da execução de instruções na UCP de forma controlada a segura. Para
isso o sistema operacional faz uso do conceito de processos.
Um processo pode ser entendido como um programa em execução. Para que a execução
simultânea de diversos programas ocorra sem problemas é necessário que todas as informações
do processo interrompido sejam salvas para que quando este voltar a ser executado não lhe falte
nenhuma informação e possa continuar a execução exatamente no ponto onde estava quando foi
interrompido.
O conceito de processo pode ser definido como sendo o conjunto de informações necessárias
para que o sistema operacional implemente a concorrência de programas.
A concorrência de programas é implementada através da alternância de processos sendo
executados na UCP. A troca de um processo por outro processo é feita pelo sistema operacional e
é chamada por mudança de contexto. O conjunto de informações de um processo é chamado de
contexto do processo.
Ambiente do Processo
Um processo também pode ser definido em termos do ambiente onde um programa é
15
executado o que inclui a quantidade de recursos que o processo pode utilizar tais como espaço de
endereçamento da memória principal, tempo de processador e área em disco.
Caso um processo necessite de recursos não disponíveis o sistema operacional irá interromper
sua execução por falta de recursos disponíveis.
A Estrutura de um Processo
Todo processo é formado por três partes:
Contexto de hardware
Contexto de software
Espaço de endereçamento
O Contexto de hardware
O contexto de hardware armazena o conteúdo dos registradores gerais da UCP, além dos
registradores de uso específicos ( CI ou PC, stack pointer ). Quando um processo está em
execução, o seu conteúdo de hardware está armazenado nos registradores do processador.
O Contexto de software
O Contexto de software armazena informações sobre limites e características dos recursos que
podem ser alocados pelo processo, como o número máximo de arquivos abertos simultaneamente,
prioridade de execução e tamanho do buffer para operações de E/S. Estas características são
determinadas no momento da criação do processo e durante sua execução.
O Contexto de software é composto por três grupos de informações sobre o processo:
Identificação - Cada processo possui um identificador ( PID - process identification ) que é
representado por um número. O processo é identificado pelo sistema operacional através do PID.
O processo também possui a identificação do usuário ou processo que o criou ( owner ). Cada
usuário possui uma identificação no sistema ( UID - User identification ), atribuida ao processo no
momento de sua criação.
16
Quotas - As quotas são o limite de cada recurso do sistema que um processo pode alocar. Caso
uma quota seja o insuficiente o processo pode ser executado lentamente, ser interrompido ou até
não ser executado. São exemplos de quotas:
Numero máximo de arquivos abertos
Tamanho máximo da memória principal e secundária que pode ser alocada
Número máximo de operações de E/S pendentes
Tamanho máximo do buffer para operações de E/S
Número máximo de processos
Privilégios - Os privilégios ou direitos definem as ações que um processo pode fazer em relação
a ele mesmo, aos demais processos e ao sistema operacional.
Espaço de Endereçamento
O espaço de endereçamento é a área de memória pertencente ao processo onde instruções e
dados do programa são armazenados para execução. Cada processo possui seu próprio espaço de
endereçamento que é protegido pelo sistema operacional para que não haja acesso pelos demais
processos em execução.
OS PCBS de todos os processos são mantidos na memória principal em uma área exclusiva do
sistema operacional. O tamanho desta área de memória é controlado por parâmetro no sistema
operacional de acordo com o número máximo de processos que podem ser suportados pelo
sistema operacional.
17
A figura abaixo mostra algumas das informações do BCP de um processo:
Estados de um Processo
Em um sistema multi programado, os processos passam por vários estados durante a sua
execução, em função de eventos gerados pelo sistema operacional ou pelo próprio processo.
Um processo muda de estado durante seu processamento em virtude de eventos gerados pelo
sistema operacional ou pelo próprio processo. Existem quatro mudanças de estado que podem
ocorrer a um processo:
18
Pronto -> Execução - Após ser criado o processo é colocado em uma lista de execução em
estado de pronto onde fica aguardando sua vez de ser executado.
Execução -> Espera - Um estado em execução passa para o estado de espera por eventos
externos ou por eventos gerados pelo próprio processo. Por exemplo, uma operação de
entrada/saída.
Espera -> Pronto - Um processo em espera para para o estado de pronto quando o recurso
solicitado é concedido ou quando a operação solicitada é concluída. Um estado em espera sempre
terá que voltar ao estadp de pronto antes de prosseguir sua execução. Nenhum processo em
espera passa diretamente para execução.
Execução -> Pronto - Um processo em execução passa para o estado de pronto por eventos
gerados pelo sistema, como o término da fatia de tempo que o processo possui para sua execução.
Swapping de Processos
Um processo em estado pronto ou de espera pode nao estar na memória principal. Esta
condição ocorre quando não há espaço suficiente na memória principal para todos os processos.
Neste caso, o contexto do processo é saldo em memória secundária. Este mecanismo é chamado
swapping e consiste em retirar processos da memória principal e os trazer de volta à memória
principal de acordo com critérios de cada sistema operacional.
A criação de um processo ocorre quando o sistema operacional adiciona um novo PCB a 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. A partir desse momento é possível
gerenciar o processo e associar ao seu contexto um programa para ser executado.
Criação ( new ) - Um processo é dito no estado e criação quando o sistema operacional já criou
um novo PCB, porem ainda não pode coloca-lo na lista de processos do estado pronto. Alguns
sistemas operacionais limitam o número de processos ativos em função de recursos disponíveis ou
de desempenho. Por isso, os processos criados permanecem no estado de criação até que possam
ser colocados no estado pronto quando ficam ativos e aguardando para serem executados.
Terminado ( exit ) - Um processo no estado de terminado não poderá mais ter nenhum
19
programa executado no seu contexto nem ter nenhum recurso alocado. Porém o sistema
operacional ainda mantém informações do processo em memória. O processo no estado
terminado não é mais considerado ativo.
Os processos podem ser classificados de acordo com o uso do processador ou dos dispositivos
de E/S.
Um processo é definido como CPU-Bound quando passa a maior parte do tempo no estado de
execução, utilizando o processador, ou pronto. Este tipo de processo faz muito pouco uso de
leitura e escrita em dispositivos de E/S.
Um processo é definido como I/O Bound quando passa a maior parte do tempo no estado de
espera, pois realiza muitas operações de leitura e escrita. A maioria das aplicações comerciais
20
constitui este tipo de processo que faz consultas e atualizações em um banco de dados, por
exemplo, durante o uso pelos usuários.
Os processos também podem ser classificados pela forma de comunicação com o usuário ou
com outros processos. A comunicação dos processos é feita por canais de entrada e saída que
podem estar associados a terminais, impressoras, arquivos ou a outros processos.
Um processo é dito Background quando não permite a comunicação direta do usuário com o
processo durante a sua execução. O processamento batch é geralmente associado a processos
background.
Estados de Processos
Os processos em um Sistema Operacional possuem três estados ilustrados na Figura 6.3,
“Transição de estados de um processo.”, estes estados são:
Em execução
realmente usando a CPU naquele instante;
Pronto
executável, temporariamente parado para dar lugar a outro processo;
21
Bloqueado
incapaz de executar enquanto um evento externo esperado não ocorrer.
Threads
Os sistemas operacionais até o final dos anos 70 suportavam apenas um programa associado a
um processo. Este era o conceito mono thread que era usado na época. Os sistemas operacionais
não permitiam mais de um programa associado a um processo do sistema operacional.
Em 1979, durante o desenvolvimento do sistema operacional Toth foi introduzido o conceito de
processos peso leve ( lightweigth process ), onde o espaço de endereçamento de um processo era
compartilhado por vários programas. O conceito inovador entretanto não foi explorado
comercialmente.
Em 1980,com o desenvolvimento do sistema operacional Mach, foi introduzido o conceito de
separação entre processo e thread. Surgiu a partir daquele momento o conceito multi thread.
Em Sistemas Operacionais tradicionais, cada processo tem um espaço de endereçamento e um
único thread (fluxo) de controle. Na verdade, isso é quase uma definição de processo. Contudo,
frequentemente há situações em que é desejável ter múltiplos threads de controle no mesmo
espaço de endereçamento executando quase em paralelo como se fossem dois processos
separados. Este conceito, chamado de multithread, pode ser observado na Figura 6.4, “(a)Três
22
processos, cada um com um Thread de execução. (b) Um processo com três threads de
execução.”(a) a seguir.
Múltiplos Threads
A partir do conceito multi thread é possível implementar programas do usuário e serviços do
sistema operacional que são executados de forma concorrente.
Desta forma, um processo pode ter partes de seu código executadas de forma concorrente,
exigindo uma carga de processamento menor do sistema operacional.
Como as threads de um processo compartilham o mesmo espaço de endereçamento, a
comunicação entre as threads é feita de forma muito eficiente porque não exige os mecanismos
de comunicação entre processos.
O desenvolvimento de programas concorrentes não é simples. O paralelismo traz vantagens
mas traz também diversos problemas tais como a comunicação e sincronização entre threads.
Atualmente o conceito de multithread está presente em todos os sistemas operacionais, do Sun
Solaris ao MS Windows.
Este tipo de processamento está se tornando comum porque o uso de processadores com mais
de um núcleo ou até de sistemas multiprocessados se tornou comum com o modelo cliente-
servidor e com os sistemas distribuídos.
Ambiente Monothread
Um programa é sequência de instruções chamadas por procedimentos e funções. Em um
ambiente monothread um processo suporta apenas um único programa em seu espaço de
endereçamento. Neste ambiente os sistemas concorrentes são implementados com o uso de
múltiplos processos independentes ou subprocessos.
Com o conceito de múltiplos processos cada funcionalidade do software em execução implica
na criação de um novo processo.
O problema é que quanto mais processos em execução pelo sistema operacional mais recursos
são consumidos por estes processos. Sempre que um novo processo é criado, recursos são
alocados a ele. Mesmo quando o processo é finalizado, o sistema operacional dispensa tempo
para desalocar os recursos que haviam sido alocados a ele.
Outro problema é que como os processos são independentes, cada um tem seu próprio espaço
de endereçamento e por isso a comunicação entre os processos é mais difícil de ser feita e mais
lenta, pois utiliza mecanismos tais como troca de mensagem ou memória compartilhada.
23
São exemplos de sistemas operacionais monothread o MS-DOS e as primeiras versões do MS
Windows e do UNIX.
Ambiente Multithread
Em ambientes com multiplos threads não existe a idéia de programas associados a processos.
Os programas são associados a threads. O processo neste ambiente possui ao menos uma thread
em execução. Mais threads podem ser adicionadas a um processo. Neste caso o espaço de
endereçamento do processo é compartilhado por todas as threads associadas ao processo.
Uma thread pode ser entendida com uma sub-rotina de um programa que é executada de
forma assíncrona, executada de forma concorrente ao programa principal.
O programador ao criar uma thread deve associar a thread a uma sub-rotina que será
executada pela thread. É assim que em ambientes multithread é possível a execução concorrente
de várias sub-rotinas dentro de um mesmo processo.
Em ambientes multithread cada processo pode responder a várias solicitações
concorrentemente ou mesmo simultaneamente, no caso de haver mais de um processador.
A vantagem no uso de threads é minimizar a alocação de recursos com a criação de novos
processos.
24
Threads
Threads compartilham o processador da mesma forma que processos. Também passam por
mudanças de estados ( execução, espera e pronto ). Por exemplo, quando uma thread espera uma
operação de leitura de arquivo uma outra thread pode ser executada. Para permitir a troca de
contexto de thread cada thread possui seu contexto hardware com o conteúdo dos registradores
gerais, PC e SP.
Dentro de um processo as threads compartilham o espaço de endereçamento e o contexto de
software porém cada thread possui seu contexto de hardware individual.
Threads são implementadas internamente na memória principal através de uma estrutura de
dados chamada bloco de controle de thread ( Thread control block - TCB ). O TCB armazena mais
algumas informações relacionadas ao thread como prioridade, estado de execução e bits de
estado.
25
Arquitetura e implementação de threads
Os sistemas operacionais podem implementar o conceito de multithread de forma diferente,
considerando critérios de desempenho, concorrência e modularidade das aplicações multithread.
Threads em Modo usuário
Threads podem ser criadas através de uma biblioteca de funções fora do núcleo do sistema
operacional ( modo usuário ). Neste caso as threads são implementadas pela aplicação do usuário
e não pelo sistema operacional. É a aplicação que deve gerenciar as threads ( sincronização e
comunicação ).
Thread em Modo Kernel
Threads podem ser criadas pelo próprio núcleo do sistema operacional ( modo kernel ) através de
chamadas à rotinas do sistema que oferecem todas as funções para gerencia de threads
( sincronização e comunicação ). Neste caso é o sistema operacional quem cuida das threads e
decide qual thread vai ser executada pelo processador em um determinado momento
( escalonamento de threads ).
Thread em Modo Híbrido
Threads podem ser criadas por uma combinação de ambos ( modo híbrido ). Nesta implementação
um processo pode ter várias threads em modo kernel e cada thread em modo kernel pode ter
várias threads em modo usuário. O núcleo do sistema operacional reconhece as threads em modo
kernel e pode escalona-las individualmente. O problema desta implementação é que não é
possível a comunicação entre threads em modo usuário e threads em modo kernel.
Scheduler Activations
Threads em modo Scheduler Activations usam o melhor do modo kernel e do modo usuário. Usam
as facilidades do modo kernel com o desempenho e a flexibilidade do modo usuário. Nesta
implementação o nucleo do sistema troca informações com a biblioteca de threads utilizando uma
estrutura chamada scheduler activations. Esa implementação evita a troca de modo de acesso
( usuario-kernel-usuario ) pois o kernel e a biblioteca de threads se comunicam e trabalham de
forma cooperativa.
Threads distintos em um processo não são tão independentes quanto processos distintos.
Todos os threads têm exatamente o mesmo espaço de endereçamento, o que significa que eles
compartilham as mesmas variáveis globais.
Como os threads têm algumas das propriedades dos processos, eles são chamados de
processos leves. É importante perceber que cada thread tem sua própria pilha de execução. Logo
os estados dos processos são os mesmos para os threads, ocorrendo as mesmas transações de
estados, como se cada thread fosse um processo separado. Havendo a necessidade de salvar o
estado da pilha de execução de cada thread toda vez que o mesmo perder a vez na CPU, podendo
futuramente retornar a execução no ponto em que foi interrompido.
A vantagem de se criar thread está na rapidez de sua criação e no menor gasto de recursos do
sistema para o mesmo.
Gerenciamento de memória
O que todo programador deseja é dispor de uma memória infinitamente grande, rápida e não
volátil, a um custo muito baixo. Infelizmente, a tecnologias atuais não comportam essas memórias.
Por isso, a maioria dos computadores utiliza uma hierarquia de memórias, que combina: uma
26
pequena quantidade de memória cache, volátil, muito rápida e de alto custo; uma grande
memória principal (RAM), volátil com alguns gigabytes, de velocidade e custo médios; e uma
memória secundária, constituída de armazenamento não volátil em disco, com centenas de
gigabytes e custo baixo. Cabe ao Sistema Operacional coordenar a utilização dessas memórias.
A parte do Sistema Operacional, responsável pela gerência das hierarquias de memória, é
denominado gerenciador de memória. Sua função é manter o controle de quais partes da
memória estão em uso e quais não estão, alocando memória aos processos quando precisam e
liberando a memória quando os processos terminam.
Monoprogramação
Quando se utiliza o esquema mais simples de gerenciamento de memória, a mesma é
compartilhada entre o programa e o Sistema Operacional, e somente um programa é executado
por vez.
Tão logo um usuário tecle um comando, o Sistema Operacional carrega o programa solicitado
do disco na memória e o executa. Quando o processo finaliza, o Sistema Operacional espera por
um novo comando. Ao receber um novo comando, carregará o novo programa na memória, no
espaço de endereçamento ocupado pelo programa anterior.
Multiprogramação
A maioria dos sistemas modernos permite a multiprogramação, onde múltiplos processos
estejam em execução simultânea, coexistindo na memória principal, através do particionamento
da memória entre os processos. Das técnicas de compartilhamento e gerenciamento desta
memória a mais utilizada nos microcomputadores é a Memória Virtual.
Memória Virtual
O conceito básico da Memória Virtual é que um programa pode está com sua parte ativa em
memória e o restante em disco, por exemplo, um programa com 16MB de memória pode rodar
em um computador de 4MB de memória, sendo parte do programa dinamicamente carregado em
memória de acordo com a necessidade de execução.
Na multiprogramação vários programas podem ter pedaços ativos deles em memória,
enquanto o resto se encontra em disco. Ficando como responsabilidade do Sistema Operacional o
controle de indicar que programas devem ficar na memória e quais devem ficar em disco,
chaveando estes programa a medida que forem sendo exigidos pelo usuário.
Entrada/Saída (E/S)
O Sistema Operacional deve controlar todos os dispositivos de E/S de um computador. Deve
emitir comandos para os dispositivos, interceptar interrupções e tratar os erros, deve também
fornecer uma interface simples e fácil de usar, na medida do possível, esta interface deveria ser a
mesma para todos os dispositivos. Ou seja, para o usuário ler dados de um arquivo ou de um
dispositivo de rede as chamadas ao sistema são iguais, mudando apenas os parâmetros de entrada.
Dispositivos de E/S
Os dispositivos de E/S podem ser de modo genérico, divididos em duas categorias: dispositivos
de blocos e dispositivos de caractere.
Um dispositivo de bloco é aquele que armazena informação em blocos de tamanho fixo, cada
um com seu próprio endereço. Os tamanhos de blocos variam de 512 bytes a 32.768 bytes. A
propriedade essencial de um dispositivo de blocos é que cada bloco pode ser lido ou escrito
independente de todos os outros. Discos são dispositivos de blocos mais comuns.
27
O outro tipo de dispositivos de E/S é o dispositivo de caractere, o qual envia ou recebe um fluxo
de caracteres, sem considerar qualquer estrutura de blocos. Ele não é endereçável e não dispõe
de qualquer operação de posicionamento. Impressoras, interface de rede, mouses e a maior parte
de outros dispositivos que são diferentes do disco são considerados dispositivos de caractere.
Sistema de Arquivo
Um problema em manter a informação dentro do espaço de endereçamento do processo é
quando o mesmo termina, e sua informação é perdida. Em muitas aplicações a informação precisa
ficar retida por semanas, meses ou até para sempre.
A solução usual para esse problema é armazenar a informação em disco, em unidades
chamadas arquivos. Chamadas ao sistema são obviamente necessárias para criar, remover, ler e
escrever arquivos. Antes que possa ser lido, um arquivo deve ser localizado no disco, aberto e
depois de lido, fechado. Desse modo, chamadas ao sistema são fornecidas para realizar estas
tarefas.
Para ter um local para guardar os arquivos, a maioria dos Sistemas Operacionais fornece o
conceito de diretório como um modo de agrupar arquivos. São necessárias chamadas ao sistema
para criar e remover diretórios. São também fornecidas chamadas para colocar um arquivo em um
diretório e removê-los de lá. Entrada para diretórios também podem ser outros diretórios,
formando uma hierarquia de diretórios como ilustrado na Figura “Sistema de Arquivos de um
computador pessoal.”.
Figura Sistema de Arquivos de um computador pessoal.
Antes que possa ser lido ou escrito, um arquivo precisa ser aberto e, nesse momento as
permissões são verificadas. Se o acesso ao arquivo, pelo usuário, for permitido, o sistema retorna
o descritor de arquivo para usá-lo em operações subseqüentes. Se o acesso for proibido, um
código de erro é retornado.
História dos Sistemas Operacionais
O primeiro computador digital foi projetado pelo matemático inglês Charles Babbage (1792-
1871). Embora Babbage tenha empregado a maior parte de sua vida e de sua fortuna para
construir a sua ‘maquina analítica’, ele nunca consegui vê-la funcionando de modo apropriado pois
28
era inteiramente mecânica e a tecnologia de sua época não poderia produzir as rodas, as
engrenagens e as correias de alta precisão que eram necessárias. É obvio que a máquina analítica
não possuía sistema operacional.
29
A primeira geração (1945-1955) – Válvulas
Depois dos infrutiferos esforços de Babbage, surgiram-se poucos processos na construção de
computadores digitais até a segunda guerra mundial, que estimulou uma explosão de atividades.
O professor John Atanasoff e seu então aluno de graduação Clifford Berry construiram oque
considera-se o primeiro computador digital em funcionamento, na Universidade do Estado de
Iowa. Ele usava 300 válvulas. Quase ao mesmo tempo, Konrad Zuse, em Berlim, construiu o
computador Z3 de relés.
30
porte (mainframes) – ficavam isoladas em salas especiais com ar-condicionados.
Por causa do alto custo do equipamento, era natural que se começasse a buscar maneiras de
reduzir o desperdício de tempo no uso da máquina. A solução geralmente adotada era a
do sistema em lote (batch).
A segunda geração de computadores (1959-1964) foi caracterizada pela criação dos
transístores, que vieram a substituir as válvulas eletrônicas. Esses componentes, além de serem
menores, eram mais eficientes e mais baratos.
O computador passou por diversas transformações e foi se aperfeiçoando ao longo do tempo,
acompanhando o avanço das áreas da matemática, engenharia, eletrônica. É por isso que não
existe somente um inventor.
Foram nos anos Pós-Segunda Guerra Mundial, que com a incorporação das novas tecnologias
então desenvolvidas, o projeto computador se tornou realidade. De acordo com os sistemas e
ferramentas utilizados, a história da computação está dividida em Cinco gerações de
computadores.
O marco da segunda geração (1955-1964) foi a substituição das válvulas para o transistores,
revolucionou a eletrônica em geral, assim com os computadores trazendo consigo vantagens
como a diminuição de peso, um computador que antes pesava cerca de 30 toneladas, no caso
do ENIAC, passou a pesar cerca de apenas 1 tonelada ou menos, a proporção dos transistores é
muito menor em relação as válvulas, tornando assim também o tamanho dos computadores
menores, os transistores não exigiam um tempo de pré-aquecimento como as válvulas, o custo
mais barato, consumiam menos energia, a geração de calor era bem menor.
A programação desse tipo de máquina era feita diretamente em sua linguagem, conhecida
como Assembly, essa linguagem era feita através da perfuração de cartões, esse processo de
perfuração demandava uma grande quantidade de tempo, o armazenamento era feito por meio
de fitas magnéticas.
31
Terceira geração (1965-1980) – CI’s e multiprogramação
No início da década de 1960, a maioria dos fabricantes de computador oferecia duas linhas
de produtos distintas e totalmente incompatíveis. de uma lado havia computadores científicos de
grande escala e orientado a palavras como o 7094, usados para cálculos numéricos na ciência e na
engenharia. De outro, existiam os computadores comercias orientados a caracteres, como 1401,
amplamente usados por bancos e companhas de seguros para ordenação e impressão em feitas. O
IBM 360 foi a primeira linha de computador a usar circuitos integrados (CI’s) em pequena escala,
propiciando, assim, uma melhor relação custo-beneficio em comparação à segunda geração de
maquinas construídas com transistores.
A terceira geração de computadores, com início em 1965, teve como evolução primordial a
implementação de circuitos integrados. O lançamento do primeiro Microprocessador, em 1971,
marca o término desta geração e começo da próxima.
Detalhes da terceira geração
Na década de 50, Geoffrey W. A. Dummer desenvolveu a ideia inicial de um Circuito
integrado (CI). Dummer deu varias palestras para a propagação de sua ideia e, em 1958, Robert
Noyce, Jean Hoerni, Jack Kilby e Kurt Lehovec, iniciaram o desenvolvimento de circuitos integrados.
Esperava-se que tal tecnologia tornassem os computadores até ali obsoletos.
Avanços obtidos
O uso de transistores passou a ser substituído pelo de circuitos integrados, unidades de
encapsulamento semicondutoras que agrupam transistores, resistores, diodos e outros
componentes elétricos interligados em uma pastilha de Silício e Germânio, que passaram a ser
conhecidos como chips.
As duas variedades de circuitos integrados da geração eram o SSI (Small-scale integration –
32
Circuitos de pequena escala) com cerca de 10 transistores por chip e os MSI (Medium-scale
integration - Circuitos de média escala) com cerca de 100 transistores por chip.
Essa compactação nos componentes possibilitou a diminuição do tamanho dos computadores
(mas o menor deles ainda pesava mais de 20 kg), do aquecimento e do consumo de energia.
Por outro lado, a proximidade dos circuitos possibilitou um aumento na velocidade de
processamento dos computadores, chegando à velocidade de 1.000.000 de operações por
segundo (nanossegundos), e no número de operações simultâneas (pois os diferentes circuitos do
chip poderiam se comunicar com hardwares distintos ao mesmo tempo), além de um aumento na
confiabilidade da máquina.
Além de tudo isso, agora era possível aumentar a capacidade de um computador de acordo
com a necessidade.
Os custo de produção de um computador começavam a cair, atingindo uma faixa de mercado
que abrangia empresas de médio porte, centros de pesquisa e universidades menores, fazendo
com que os computadores não fossem mais exclusivos para uso militar e científico.
O uso domiciliar ainda não era comum pois sua aquisição era difícil devido a eles ainda serem
grandes, robustos e necessitarem de muita energia para seu resfriamento do sistema digestivo.
Linguagens e Sistemas Operacionais criados
A substituição de válvulas por transistores possibilitou a criação de linguagens tipo assembly, e
no início da década de 60 surgiram as primeiras linguagens de alto nível, com o intuito de facilitar
a programação, tais como COBOL, FORTRAN, e ALGOL.
Com o lançamento da ideia de família de computadores com os modelos da IBM System/360,
que tentou resolver o problema da total incompatibilidade das linhas de computadores usados até
então (científicos e comerciais) ao proporcionar uma camada de software entre os usuários e o
hardware, começou-se a perder a visão centrada em hardware e ganhou foco o ambiente do
software, o que impulsionou o desenvolvimento da programação de softwares e de sistemas
operacionais.
No final da geração, surgiram mais linguagens, CPL, PL/I, BASIC e Linguagem B (de baixo nível),
que deram força à programação.
Principais Computadores da terceira geração
Os primeiros computadores a usarem circuitos integrados foram os modelos B3500 e o B3600
produzidos pela Burroughs Corporation e os computadores da linha IBM System/360, compatíveis
em nível de software, que foram um sucesso na época, vendendo milhares de K350
Dispositivos e Componentes criados na terceira geração
Armazenamento: Fita magnética, Disquetes e também o uso dos primeiros discos rígidos que
possibilitou o melhor acesso aos arquivos.
Inovações: Mouse, criado em 1968 por Douglas Engelbart, do Instituto de pesquisas de
Stanford. Essa versão inicial era de madeira e possuía apenas um botão.
Computação-Meio
Computadores foram fortemente usados pelos governos estadunidense e soviético durante
a Guerra Fria para projetar misseis, aviões e decodificar códigos e mais ainda durante a Corrida
espacial.
O Projeto Apollo tinha computadores de bordo com capacidade de processamento quase igual
33
a de um relógio digital. O AGC (Apollo Guidance Computer), possuia aproximadamente 4100
circuitos integrados e uma velocidade de processamento de 1024MHz. Ele foi usado no sistema de
navegação e tinha total controle sobre os demais sistemas da nave.
34
Quarta Geração (1980 – presente) – computadores pessoais
Com o desenvolvimento de circuitos integrados em larga escala (large scale integratios – LSI),
que são chips contendo milhares de transistores em um centímetro quadrado de silício, surgiu a
era dos computadores pessoais. Em 1974, a Intel lançou o 8080, a primeira CPU de 8 bits de uso
geral, e buscava um sistema operacional para o 8080, em parte para testa-lo.
35
Revisão sobre Hardware de Computadores
Placa mãe
Placa Mãe
Computadores são sistemas que dependem do funcionamento equilibrado entre diversos
componentes, e todos eles necessitam de uma placa-mãe confiável para funcionar.
Na placa-mãe, todos os componentes que formam o computador são unidos e ligados entre si.
Pode-se entender a placa como uma central que resolve problemas de espaço, uma vez que une
todas as partes do sistema numa só, rede de fios, porque dispõe de caminhos que permitem a
troca de informação entre processadores, memórias, placas e etc. Além de permitir o tráfego de
informação, a placa também alimenta alguns periféricos com a energia elétrica que recebe da
fonte do gabinete. Todas essas funções tornam o nome “mãe” algo bem lógico: sem ela, o
computador é apenas um amontoado de chips e placas independentes.
É responsável por realizar a comunicação entre todos os componentes internos e externos. É
ela que determina quais as características que o computador irá ter: quantidade de memória, qual
processador irá acessar e qual placa de vídeo irá aceitar. Ou seja, ela é uma peça chave na hora de
escolhermos entre desempenho ou praticidade.
O que faz uma placa-mãe ser melhor do que a outra?
Embora muita gente pense no processador e memória como decisão de compra e esqueça da
placa-mãe, vale ressaltar que ela desempenha um papel decisivo na vocação de um sistema. Um
36
computador mais simples, claro, pode abrir mão de algumas tecnologias para conter custos e
caber melhor no estilo de vida do usuário. Já o oposto é obrigatório em um PC voltado para um
sujeito mais exigente.
37
Painel traseiro da placa mostra recursos embutidos e, em azul, os enormes dissipadores de calor
da Asus P8 Z68 (Foto: Reprodução)
Soquete
É o slot horizontal onde é instalado o processador de seu sistema. Evidente que toda placa-mãe
possui um. Entretanto, cada geração de processadores, independentemente do fabricante, exige
um tipo específico de soquete. Então é possível ter uma ideia da capacidade da placa e do seu
compasso com as novas tecnologias a partir do tipo de soquete oferecido no modelo.
Recursos embutidos
Além de servir de base para que os componentes de hardware sejam instalados e conversem
entre si, a placa-mãe também costuma carregar diversos recursos. Alguns modelos oferecem, por
exemplo, saída de vídeo. Nestes casos, a placa possui um processador gráfico embutido, ou usa as
capacidades gráficas do processador da máquina.
Processador
O processador, basicamente, é o "cérebro" do computador. Praticamente tudo passa por ele,
já que ele é responsável por executar todas as instruções necessárias.
38
O que é CPU?
CPU é a sigla em inglês para Unidade Central de Processamento, o componente do computador
que concentra todas as principais operações que permitem a seu PC, celular, tablet ou videogame
a funcionar. Não é exagero, portanto, se referir à CPU como o “cérebro” desses dispositivos.
A estrutura básica de uma CPU é dividida entre três partes principais:
Unidade Lógica e Aritmética (ULA ou ALU): a encarregada de executar as quatro operações
básicas (adição, subtração, multiplicação e divisão) e operações lógicas de Álgebra Booleana (IF,
AND e OR);
Unidade de Controle (UC): responsável por extrair dados da memória, decodifica-los e executa-
los, consultado a ULA quando necessários;
Registradores: unidades de memória da CPU, as mais rápidas e consequentemente, as mais
caras de sua categoria, sendo reservadas ao uso apenas em CPU, que dependem de velocidades
de acesso altas.
39
essa velocidade do processador de “clock”.
Quando um processador traz impresso nele um clock de 2 GHz, isso significa que ele transfere
dados a uma velocidade de 2 bilhões de ciclos por segundo. No entanto, a potência do
componente depende de outros fatores além do clock, como largura dos barramentos, a
quantidade de memória cache, a arquitetura e etc.
Desempenho da CPU
Embora existam processadores de 32-bits e 64-bits, as versões de 32-bits praticamente não são
mais vendidas, uma vez que os modelos de 64-bits permitem que o processador possa trabalhar
com uma quantidade maior de dados por vez, além de suportar mais memória RAM.
Para efeito de comparação, enquanto os processadores de 32-bits não reconhecem memórias
maiores que 4 GB, os de 64-bits suportam até 168 GB. É importante ressaltar que mesmo que a
CPU seja de 64-bits, seu Windows pode ser de 32-bits, e isso também limita os dados trabalhados
pela máquina.
A quantidade de núcleos influencia na capacidade do seu processador em desempenhar
atividades multitarefas. Quanto maior for o número de núcleos, maior é a capacidade do seu
computador em lidar com vários programas abertos ao mesmo tempo.
As CPUs single core, com apenas um núcleo, são as mais antigas, e podem operar apenas uma
tarefa de cada vez. Como elas não possibilitavam o bom desempenho de mais de uma tarefa (a
cada nova operação iniciada, o computador ficava mais lento), logo surgiram as CPUs dual-core,
que duplicaram o desempenho dos processadores e permitiram trabalhar com atividades
multitarefa com muito mais eficiência.
Os processadores quad-core são ainda mais eficientes porque têm quatro núcleos,
possibilitando que a máquina opere ainda mais funções sem perder desempenho e dê conta de
programas mais pesados com maior velocidade. No entanto, vale lembrar que nem todos os
programas conseguem usar todos os núcleos do PC. Grande parte deles é otimizada para usar dois
ou até quatro núcleos. Por isso, processadores com mais de quatro núcleos ainda são úteis para
poucas pessoas. Em geral, apenas alguns editores de imagem e vídeo são capazes de usar mais de
quatro núcleos.
Além da quantidade de núcleos a velocidade do processador, medida em megahertz ou
gigahertz, também faz diferença na rapidez com que os programas são rodados. A velocidade
descreve o número máximo de cálculos por segundo que o processador pode executar. Quanto
maior o número, mais rápido e potente é o processador.
40
Barramentos
A imagem a seguir ilustra um esquema hipotético (e bastante abstrato) de comunicação entre o
processador, a memória e o conjunto de dispositivos de entrada e saída, representando o
funcionamento básico do computador. Note que a conexão entre estes itens é indicada por setas.
Isso é feito para que você possa entender a função dos barramentos (bus).
Barramentos em um processador
De maneira geral, os barramentos são responsáveis pela interligação e comunicação dos
dispositivos em um computador. Note que, para o processador se comunicar com a memória e o
conjunto de dispositivos de entrada e saída, há três setas, isto é, barramentos: um se
chama barramento de endereços (address bus); outro, barramento de dados (data bus); o
terceiro, barramento de controle (control bus).
O barramento de endereços, basicamente, indica de onde os dados a serem processados
devem ser retirados ou para onde devem ser enviados. A comunicação por este meio é
unidirecional, razão pela qual só há seta em uma das extremidades da linha no gráfico que
representa a sua comunicação.
41
Clock interno
Em um computador, todas as atividades necessitam de sincronização. O clock interno (ou
apenas clock) serve justamente a este fim, ou seja, basicamente, atua como um sinal para
sincronismo. Quando os dispositivos do computador recebem o sinal de executar suas atividades,
dá-se a esse acontecimento o nome de "pulso de clock". Em cada pulso, os dispositivos executam
suas tarefas, param e vão para o próximo ciclo de clock.
A medição do clock é feita em hertz (Hz), a unidade padrão de medidas de frequência, que
indica o número de oscilações ou ciclos que ocorre dentro de uma determinada medida de tempo,
no caso, segundos. Assim, se um processador trabalha à 800 Hz, por exemplo, significa que ele é
capaz de lidar com 800 operações de ciclos de clock por segundo.
Kilohertz (KHz) é utilizado para indicar 1000 Hz, assim como o termo megahertz (MHz) é usado
para referenciar 1000 KHz (ou 1 milhão de hertz). De igual forma, gigahertz (GHz) é a denominação
usada quando se tem 1000 MHz e assim por diante. Com isso, se um processador conta com, por
exemplo, uma frequência de 800 MHz, significa que pode trabalhar com 800 milhões de ciclos por
segundo.
Neste ponto, você provavelmente deve ter entendido que é daqui que vem expressões como
"processador Intel Core i5 de 2,8 GHz", por exemplo.
42
Front Side Bus
43
Hard Disk (HD) - Disco Rígido
HD ou Disco Rígido, é uma unidade de armazenamento permanente. Ele é responsável pelo
armazenamento de dados, como: músicas, fotos, vídeos, documentos de texto, etc. E é onde o
Sistema Operacional é instalado.
É responsável por armazenar todos os arquivos de seu computador. O Windows, programas e
jogos são softwares, ou seja, arquivos e, portanto, são armazenados na HD. Ou seja, o tamanho da
HD não irá influenciar no desempenho da máquina, apenas na quantidade de informações que
você poderá ter no computador.
44
Para gravar as sequências de bits 1 e 0 que formam os dados, a polaridade da cabeça magnética
é mudada alguns milhões de vezes por segundo, sempre seguindo ciclos bem determinados. Cada
bit é formado no disco por uma sequência de várias moléculas. Quanto maior for a densidade do
disco, menos moléculas serão usadas para armazenar cada bit, e teremos um sinal magnético mais
fraco. Precisamos, então, de uma cabeça magnética mais precisa. Quando é preciso ler os dados
gravados, a cabeça de leitura capta o campo magnético gerado pelas moléculas alinhadas. A
variação entre os sinais magnéticos positivos e negativos gera uma pequena corrente elétrica que
caminha através dos fios da bobina. Quando o sinal chega à placa lógica do HD, ele é interpretado
como uma sequência de bits 1 e 0. Desse jeito, o processo de armazenamento de dados em discos
magnéticos parece ser simples, e realmente era nos primeiros discos rígidos (como o 305 RAMAC
da IBM), que eram construídos de maneira praticamente artesanal. Apesar de nos discos
modernos terem sido incorporados vários aperfeiçoamentos, o processo básico continua sendo o
mesmo.
Disco rígido ou disco rígido, chamado de HD (derivação de HDD do inglês hard disk drive),
"memória de massa" ou "memória secundária", é onde são armazenados os dados.
O disco rígido é uma memória não volátil, as informações não são perdidas quando o
computador é desligado considerado o principal meio de armazenamento de dados em massa.
A memória não volátil é necessária para poder executar novamente programas e carregar
arquivos contendo os dados inseridos anteriormente quando ligamos o computador.
45
Nos sistemas operacionais mais recentes, ele é também utilizado para expandir a memória
RAM através da memória virtual.
Há vários tipos de interfaces para discos rígidos diferentes: IDE/ATA, Serial ATA, SCSI, Fibre
channel, SAS, SSD
Memória RAM
Memória Principal
A memória principal é a memória de armazenamento temporário, que armazena os programas
e os dados que estão sendo processados, somente durante o processamento. É uma memória
volátil (RAM), pois os dados só permanecem nela armazenados enquanto houver energia elétrica.
Na falta de energia, quando o computador for desligada, todos os dados são perdidos.
46
Há alguns conceitos que devem ser conhecidos para que se possa melhor compreender a
memória principal nos computadores atuais:
RAM - Random Access Memory (Memória de Acesso Aleatório ou Randômico)
É usada para o armazenamento temporário de dados ou instruções.
Quando escrevemos um texto num computador, as informações são armazenadas na memória
RAM, assim como os dados de entrada.
A RAM também é conhecida como memória de escrita e leitura, pois lemos ou escrevemos
informações neste tipo de memória.
47
Cooler
Leitor de Cartão
O leitor de cartão serve como porta de entrada para que uma unidade de cartão de memória ou
usb seja conectada ao computador.
Unidade de CD/DVD-ROM
48
A unidade de CD/DVD-ROM serve como porta de entrada para que uma unidade de cd ou dvd seja
inserida no computador.
Fonte de Alimentação
49
Inicialização do Computador
Após ligar entra em ação o BIOS (Basic Input/Output System — Sistema Básico de
Entrada/Saída em português). O BIOS é um tipo de memória ROM (Memória Somente para
Leitura). Isso significa que todo o conteúdo do BIOS já foi, na fábrica, gravado neste chip e não
pode ser mais alterado.
Uma memória do tipo ROM só pode ser lida, utilizada, mas seu conteúdo não pode ser alterado
pelos usuários. Um programa gravado em uma memória ROM é chamado de Firmware.
50
CMOS é a abreviação de "Complementary Metal Oxide Semiconductor".
O CMOS é uma pequena área de memória volátil, alimentada por uma bateria, que é usada
para gravar as configurações do Setup da placa mãe.
Como elas (as configurações) representam um pequeno volume de informações, ele é bem
pequeno em capacidade. Assim como a memória RAM principal, ele é volátil, de forma que as
configurações são perdidas quando a alimentação elétrica é cortada. Por isso, toda placa-mãe
inclui uma bateria, que mantém as configurações quando o micro é desligado.
A mesma bateria alimenta também o relógio de tempo real (real time clock), que, apesar do
nome pomposo, é um relógio digital comum, que é o responsável por manter atualizada a hora do
sistema, mesmo quando o micro é desligado.
O principal motivo das configurações do Setup serem armazenadas no CMOS, ao invés de
serem diretamente gravadas no chip de memória Flash (não volátil) que armazena o BIOS é
justamente permitir que você possa zerar as configurações do Setup (removendo a bateria, ou
mudando a posição do jumper) em casos onde o micro deixar de inicializar por causa de alguma
configuração incorreta.
BIOS
Em computação , BIOS (Basic Input / Output syistem) e também conhecido como o BIOS do
sistema , BIOS ROM ou PC BIOS ) é firmware usado para executar a inicialização
do hardware durante o processo de inicialização ( inicialização ao ligar) e para fornecer serviços de
tempo de execução para sistemas operacionais e programas. O firmware do BIOS vem pré-
instalado na placa de sistema de um computador pessoal e é o primeiro software a ser executado
quando ligado. O nome se origina do Basic Input / Output System usado no sistema
operacional CPM em 1975.
O BIOS originalmente proprietário do IBM PC foi submetido a engenharia reversa por algumas
empresas (como Phoenix Technologies ) procurando criar sistemas compatíveis. A interface desse
sistema original serve como um padrão de fato .
O BIOS em PCs modernos inicializa e testa os componentes de hardware do sistema e carrega
um carregador de boot de um dispositivo de armazenamento em massa que inicializa um sistema
operacional. Na era do DOS , o BIOS fornecia chamadas de interrupção do BIOS para teclado,
monitor, armazenamento e outros dispositivos de entrada / saída (E / S) que padronizavam uma
interface para programas aplicativos e o sistema operacional. Os sistemas operacionais mais
recentes não usam as chamadas de interrupção do BIOS após a inicialização.
A maioria das implementações de BIOS é projetada especificamente para funcionar com um
determinado computador ou modelo de placa - mãe , fazendo interface com vários dispositivos
que compõem o chipset do sistema complementar .
Originalmente, o firmware do BIOS era armazenado em um chip ROM na placa-mãe do PC. Em
sistemas de computador modernos, o conteúdo do BIOS é armazenado na memória flash para que
possa ser reescrito sem remover o chip da placa-mãe. Isso permite atualizações fáceis do usuário
final para o firmware do BIOS para que novos recursos possam ser adicionados ou bugs possam
ser corrigidos, mas também cria a possibilidade de o computador ser infectado com rootkits
do BIOS . Além disso, uma atualização do BIOS que falhe pode bloquear a placa-mãe.
A Unified Extensible Firmware Interface (UEFI) é uma sucessora da BIOS do PC legado, com o
objetivo de solucionar suas limitações técnicas.
51
História da BIOS
O termo BIOS (Basic Input / Output System) foi criado por Gary Kildall [7] [8] e apareceu pela
primeira vez no sistema operacional CPM em 1975, descrevendo a parte específica da máquina do
CP / M carregada durante o tempo de inicialização que faz interface diretamente com
o hardware. (Uma máquina CP / M geralmente possui apenas um carregador de
inicialização simples em sua ROM.)
As versões do MS-DOS , PC DOS ou DR-DOS contêm um arquivo denominado " IO.SYS ",
" IBMBIO.COM ", "IBMBIO.SYS" ou "DRBIOS.SYS"; esse arquivo é conhecido como "DOS BIOS"
(também conhecido como "DOS I / O System") e contém a parte específica do hardware de nível
inferior do sistema operacional. Juntamente com o "BIOS do Sistema" específico do hardware,
mas independente do sistema operacional, que reside na ROM , ele representa o análogo ao
" BIOS CP / M ".
O BIOS originalmente proprietário do IBM PC foi submetido a engenharia reversa por algumas
empresas (como a Phoenix Technologies ) que buscavam criar sistemas compatíveis.
Com a introdução das máquinas PS / 2, a IBM dividiu o BIOS do sistema em partes de modo real
e modo protegido. A parte de modo real foi concebida para fornecer compatibilidade com
sistemas operacionais existentes, como DOS e, portanto, foi chamada de "CBIOS" (para "BIOS de
compatibilidade"), enquanto o "ABIOS" (para "BIOS avançada") fornecia novas interfaces
especificamente adequado para sistemas operacionais multitarefa, como OS / 2 .
Interface de usuário
O BIOS do IBM PC e XT original não tinha interface de usuário interativa. Códigos ou mensagens
de erro foram exibidos na tela, ou uma série de sons codificados foram gerados para sinalizar
erros quando o autoteste de inicialização (POST) não prosseguiu até o ponto de inicializar com
sucesso um adaptador de vídeo. As opções no IBM PC e XT foram definidas por interruptores e
jumpers na placa principal e em placas de expansão .
A partir de meados da década de 1990, tornou-se comum que a ROM do BIOS incluísse
um "utilitário de configuração do BIOS" (BCU ) ou "utilitário de configuração do BIOS", acessado na
inicialização do sistema por uma sequência de teclas específica. Este programa permitia ao usuário
definir as opções de configuração do sistema, do tipo anteriormente definido por chaves DIP , por
meio de um sistema de menu interativo controlado pelo teclado. Nesse ínterim, PCs compatíveis
com IBM - incluindo o IBM AT - colocaram as definições de configuração em RAM com bateria e
usaram um programa de configuração inicializável em disquete, não na ROM, para definir as
opções de configuração contidas nesta memória.
O disquete foi fornecido com o computador e, se fosse perdido, as configurações do sistema
não poderiam ser alteradas. O mesmo se aplica em geral a computadores com barramento EISA ,
para os quais o programa de configuração foi denominado EISA Configuration Utility (ECU).
Um computador moderno compatível com Wintel fornece uma rotina de configuração
essencialmente inalterada na natureza dos utilitários de configuração do BIOS residentes na ROM
do final da década de 1990; o usuário pode configurar as opções de hardware usando o teclado e a
tela de vídeo. A máquina Wintel moderna pode armazenar as definições de configuração do BIOS
na ROM flash, talvez na mesma ROM flash que contém a própria BIOS.
Passo a passo da inicialização do computador
1. Acessa a memória CMOS, um circuito integrado que grava informações referentes ao hardware.
Nela, o BIOS estabelece reconhecimento e comunicação com peças como placas de vídeo e
memória RAM.
52
2. A segunda fase, conhecida como Power-on Self Test (POST) nada mais é do que um conjunto
de teste que a BIOS realiza para saber se tudo está se inicializando da maneira correta. Quando
alguns componentes essenciais estão faltando, alguns beeps ou mensagens na tela alertam o
usuário.
3. A etapa seguinte consiste na procura de alguma fonte para inicializar o sistema operacional.
Tal fonte é configurável e pode ser um disco rígido (padrão), CD-ROM, pendrive, disquete, entre
outros.
4. Agora, o BIOS lê o setor zero (que contém apenas 512 bytes, denominado Master Boot Record)
do HD. Essa área contém um código que alavanca a inicialização do sistema operacional. Outros
dispositivos de boot (CDs, disquetes etc.) têm a capacidade de emular esse setor zero.
5. No caso do Windows, o Master Boot Record (MBR) verifica qual partição do HD está ativa
(configurada como Master) e inicializa o “setor um” dela — essa área tem um código com a
simples missão de carregar o setor dois.
7. A partir dele, é inicializado o núcleo (kernel). Assim como o BIOS estabelece a ligação entre
hardware e sistema, o kernel serve para firmar uma comunicação estável entre hardware e
software. Nessa fase, é ele quem assume o controle do computador.
9. No entanto, o kernel não carrega todos os processos para não sobrecarregar o sistema —
somente as operações essenciais são colocadas em atividade para possibilitar o início do Windows.
10. A tela de escolha de usuários é exibida e, após o logon, os programas relacionados para
começar junto com o sistema são carregados.
Setor de boot
O computador é ligado, o POST (Power-on Self Test), gravado em um chip ROM na placa-mãe,
Dá a partida”, tentará inicializar o sistema operacional. Independentemente de qual sistema de
arquivos se esteja usando, o primeiro setor do disco rígido será reservado para armazenar
informações sobre a localização do sistema operacional, que permitem ao BIOS "achá-lo" e iniciar
seu carregamento.
No setor de boot é registrado onde o sistema operacional está instalado, com qual sistema de
53
arquivos o disco foi formatado e quais arquivos devem ser lidos para inicializar o computador.
Um setor é a menor divisão física do disco, e possui na grande maioria das vezes 512 Bytes (nos
CD-ROMs e derivados é de 2048 Bytes).
Um cluster, também chamado de agrupamento, é a menor parte reconhecida pelo sistema
operacional, e pode ser formado por vários setores.
O setor de boot também é conhecido como "trilha MBR", "trilha 0' etc. Como dito, no disco
rígido existe um setor chamado Trilha 0, e nele está gravado o (MBR) (Master Boot Record), que
significa "Registro de Inicialização Mestre", um estilo de formatação, onde são encontradas
informações sobre como está dividido o disco (no sentido lógico)e sobre a ID de cada tabela de
partição do disco, que dará o boot.
O MBR é lido pelo BIOS, que interpreta a informação e em seguida ocorre o chamado
"bootstrap", "levantar-se pelo cadarço", lê as informações de como funciona o sistema de
arquivos e efetua o carregamento do sistema operacional. O MBR e a ID da tabela de partição
ocupam apenas um setor de uma trilha, o restante dos setores desta trilha não são ocupados,
permanecendo vazios, servindo como área de proteção do MBR. É nesta mesma área que alguns
54
Em 1973 o próprio Ken Thompson em conjunto com Dennis Ritchie reescreve o Unix em
linguagem C, um marco histórico. A linguagem C é uma linguagem de programação mais simples
de ser entendida por nós seres humanos, ao contrário do Assembly, a mais leve das linguagens,
mas extremamente complexo. Apesar de ser uma linguagem de alto nível, a Linguagem C
permanece pequena, leve e otimizada o suficiente para se escrever um sistema operacional. O uso
da linguagem C é considerada uma das principais razões para a rápida difusão do Unix, isso
permitiu que outras plataformas tivessem maior portabilidade, o que fez com que o sistema
passassem de algumas dezenas de instalações com um crescimento apreciável.. O Unix herdou do
Multics suas Características: Multi processadores, multi usuários, múltiplas interfaces e multi
aplicativos.
Incontáveis sistemas operacionais desenvolvidos posteriormente foram baseados no Unix em C
(como pode ser visto na imagem ao lado), herdando suas excelentes características acima
descritas.
1976 – Apple 2
Em 1976 Steve Jobs o guru da Apple, tem uma ideia que revolucionou o mundo, um
computador pequeno, portátil e barato o suficiente para que qualquer pessoa pudesse ter um, o
apple 2, (o apple 1 era apenas uma placa de computador ligada a um teclado). O apple 2 rodava
um interpretador basic, gravado em uma memória rom, através de fitas k7 ou disquetes os
programas concebidos em basic podiam ser salvos e carregados de volta ao sistema.
1980 – PC - MS-DOS
Em 1980 a gigante dos computadores de grande porte, a IBM (International Business Machines),
decide entrar para o mercado dos computadores pessoais, mas seu computador pessoal, o PC
(Personal Computer) assim batizado pela IBM, não possuía nenhum programa para rodar nele. A
IBM fechou contrato com a Microsoft de Bill Gates, para ela fornecer o Sistema Operacional de
seu PC's. Bill Gates, um visionário homem de negócios, fechou na época o que é considerado por
muitos o melhor negócio de todos os tempos: vendeu para a IBM o que não tinha, um Sistema
Operacional. Bill Gates procurou Tim Paterson _que desenvolveu o QDOS_ e comprou dele por
míseros US$50.000; rebatizou o sistema de MS-DOS e vendia a licença de uso para os
computadores da IBM. A rápida popularização dos PC's provocou um crescimento meteórico da
então pequena Microsoft. Mais tarde Bill Gates contratou Tim Paterson para trabalhar na
Microsoft: Tim Paterson, que podia ter se tornado o homem mais rico do mundo, por ironia,
trabalhava para Bill Gates. Ao contrário do Unix, o MS-DOS é um sistema operacional pensado
para ser simples, único usuário, só funciona nos processadores Intel, só executa um programa por
vez, originalmente não trabalhava em rede.
1984 – Apple Machintosh – Mac OS
Em 1984 Steve Jobs Rouba da Xerox, como ele mesmo admite, a ideia de um sistema
operacional baseado em objetos clicáveis com um mouse, e a Apple lança no mercado o
Machintosh ou para os mais íntimos simplesmente Mac. O Mac OS, possui seu código
desenvolvido pela Apple, é fechado e proprietário. O Mac OS foi desenvolvido do zero, desta
formas era incompatível com os programas feitos para o apple 2, o machintosh tornou o apple 2
obsoleto.
1984 – GNU – GNU não é Unix
Neste mesmo ano Richard Stallman começa a desenvolver o Projeto GNU (uma abreviação
recursiva em inglês, que significa "GNU Não é Unix"). Surge a Filosofia de Software Livre: o GNU
deveria ter as mesmas características do Unix sem aproveitar seu código; no software livre,
qualquer pessoa pode copiar e redistribuir cópias, modificar o código sem e aprimorar o programa
55
e compartilhar com a comunidade, além de estudar o funcionamento do programa e executá-lo
para qualquer fim. Essa filosofia baseia-se no fato de que para desenvolver um programa não é
preciso começar do zero, pode-se aproveitar o trabalho de programadores que vieram antes, a
assim, “Crescer sobre o ombro de Gigantes”. Gnu é o nome, também, de um mamífero africana
bastante adaptado à savana, animal esse que originou a logo do GNU
1986 – Windows
Em 1986 a Microsoft lança o Windows 1, este nem mesmo era um S.O. Era um aplicativo de
janelas que rodava em cima do MS-DOS. O lançamento do Windows manteve compatibilidade dos
programas feitos para o MS-DOS, e adicionou a interface clicável com mouse. Como sabemos, a
dobradinha MS-DOS e Windows praticamente monopolizou o mercado de computadores pessoais.
Ao contrário do Machintosh, não precisava de um computador novo para ter o Windows, bastava
instalar 4 disquetes no seu velho IBM-PC e pronto.
1987 - Minix
Em 1987 Andrew Stuart Tanenbaum cria o Minix para demonstrar seu livro "Operating
Systems Design and Implementation". O Minix é um Unix-like compacto escrito em 12.000 linhas
de código, gratuito e com o código fonte conhecido, roda até mesmo em um 286 com apenas
16mb de memoria RAM, e é possível rodar através de um "live-CD" sem necessidade de instalação.
1990 - GNU Hurd
Começa o desenvolvimento do microkernel GNU Hurd, com atraso de 3 anos por conta de
Stallman preferir esperar a liberação do Mach microkernel do MCU em uma licença compatível
com a GNU/GPL ao invés de usar um BSD-like.
1991 - Linux
Em 1991 Linus Torvalds, inspirado pelo Minix, lança publicamente como software livre o Linux.
Posteriormente, faz tão grande sucesso que recebe contribuição de milhares de programadores ao
redor do mundo, grandes empresas também contribuem na programação de seu código como
IBM, Sun Microsystems, Hewlett-Packard (HP), Red Hat, Novell, Oracle, Google, Mandriva e
Canonical , e atualmente o Linux é o kernel mais utilizado, desde computadores de grande porte,
passando por computadores pessoais, DVD player, roteadores, celulares.
1993 – Windows NT
1993 é a data do lançamento do Windows NT. Esse SO da família Windows é o primeiro a
pensar no ambiente de rede e ser independente do MS-DOS. Ele possui um emulador de MS-DOS
em janela, onde também é possível passar comandos para o SO. O Windows NT trouxe o sistema
de arquivos NTFS, o sistema anterior ( FAT ) é funcional e relativamente simples, porém com o uso
provoca fragmentação dos arquivos gravados. O sistema de arquivos NTFS foi pensado para suprir
as deficiências do sistema FAT, bem como passa a trabalhar com criptografia nativa de dados,
múltiplos usuários e suporta tamanhos maiores de discos.
1994 – Mac RISC – Power PC
Em 1994 são lançados os Mac's com processadores Power-PC da IBM, de arquitetura RISC.
Essas máquinas surgem de uma aliança entre Apple-IBM-Motorola; devido a mudança de
plataforma, o Mac inteiro teve que ser reescrito; para manter a compatibilidade com programas
escritos para o antigo Mac foi usado um emulador que provocava lentidão; à medida que os
aplicativos foram sendo reescritos para o novo padrão, o emulador deixou de ser usado.
2001 – Windows XP
Em 2001 é lançado o Windows XP; as implementação do Windows NT direcionadas ao
56
ambiente corporativo chegam ao usuário doméstico; o MS Windows XP mantém compatibilidade
de software com todas as versões anteriores: essa escolha por parte dos programadores deste só
resultou em seu sucesso. O Windows foi e é atualmente o sistema operacional mais utilizado em
Desktops e Laptops; neste setor é o SO que tem a maior variedade de aplicativos.
2006 – Apple Intel – Mac OSX
Em 2006 os Mac's passaram a utilizar os processadores Intel, a mudança de plataforma exigiu
mais uma vez a mudança de S.O. A Apple passou a utilizar o núcleo open-source Darwin, um
comprovado estável kernel Unix-like. Os programadores da Apple tinham então liberdade, para
dedicar-se a programação da interface gráfica e sua estabilidade. O Mac também cresce nos
ombros de gigantes.
2008 - Android
Em 2008 a gigante Google lança no mercado o Sistema Operacional open-source Android, com
seu núcleo em Linux, é o S.O. Unix-like atualmente (2014) de maior uso em Smartphones, 80%
dos 4,5 bilhões aparelhos são Android.
Gerações
1ª. Geração: os programadores desenvolviam o programa e as funções que, atualmente, estão
sob a supervisão do S.O;
2ª. Geração: o sistema de processamento em lote, que constituía no armazenamento prévio de
diversos jobs para serem processados sequencialmente no computador, marcou esta geração. Um
job só iniciava seu processamento quanto o seu antecessor terminava;
3ª. Geração: desenvolvimento do conceito de multiprogramação, ou seja, a partição da
57
memória do computador em diversas parcelas para que múltiplos jobs pudessem ser executados,
dando a sensação para o usuário de um paralelismo não existente. Por exemplo, enquanto um job
esperava por uma operação de E/S (potencialmente mais demorada), a CPU poderia realizar o
processamento de outro job já armazenado na memória;
4ª. Geração: com o surgimento das estações de trabalho e dos computadores pessoais, o
desenvolvimento de interfaces gráficas se torna comum. As redes de computadores impulsionam
o surgimento de sistemas operacionais de rede e os sistemas operacionais distribuídos
58
Em sistemas onde diversos usuários acessam os mesmos recursos é necessário que exista um
controle no uso destes recursos e que permita o compartilhamento dos recursos para os vários
usuários. Esta também é uma responsabilidade do sistema operacional que deve controlar e
gerenciar o acesso concorrente aos recursos do computador. Imagine uma impressora
compartilhada em um departamento por vários funcionários que trabalham no departamento.
A função de controlar e gerenciar o compartilhamento de recursos é necessária mesmo em
sistemas mono usuário onde podemos ter a execução de mais de uma tarefa ao mesmo tempo.
Nestes sistemas é também o sistema operacional que deve controlar o acesso concorrente aos
recursos.
Uma máquina em camadas
O computador pode ser entendido com uma máquina de camadas. Inicialmente temos duas
camadas: o hardware e o sistema operacional, sendo que podem ser necessárias outras camadas
para atender às necessidades do usuário.
Os computadores de primeira geração não faziam uso ainda dos sistemas operacionais o que
obrigava as aplicações dos usuários a interagir diretamente com o hardware do computador. Com
o surgimento dos primeiros sistemas operacionais, surgiu o conceito de maquina em camadas
onde o sistema operacional é uma camada intermediária entre as aplicações dos usuários e o
hardware do computador.
Na verdade existem várias camadas adicionais formadas por programas utilitários, bibliotecas,
maquinas virtuais e micro programação. Na prática a máquina em camadas está mais para algo
assim:
Em cada camada temo uma linguagem de programação diferente, variando entre as linguagens
de baixo nível ( hardware ) e as linguagens de alto nível ( aplicativos e utilitários ).
59
mais um processo basicamente compartilhando o tempo do processador com os processos em
execução.
Multi programação - É a capacidade de um sistema operacional executar vários programas na
memória simultaneamente.
Time-sharing - É a capacidade de um sistema operacional de compartilhar o uso do processador
ao longo do tempo entre os vários processos em execução. Os processos são executados, um de
cada vez, sequencialmente, mas como a fatia de tempo dada a cada processo é muito pequena, há
a ilusão de que os processos estão sendo executados simultaneamente.
Memória virtual - É a capacidade de um sistema operacional de usar a memória secundária
como um cache para armazenamento temporário, permitindo o compartilhamento seguro e
eficiente da memória principal entre vários processos e também para remover as limitações de
memória.
Gerencia de dispositivos
A gerencia de dispositivos
A gerencia de dispositivos de entrada/saída é uma das principais e mais complexas funções do
sistema operacional. A gerencia de dispositivos de entrada/saída é estruturada em camadas onde
as camadas de mais baixo nível escondem características dos dispositivos físicos das camadas
superiores isolando as aplicações do usuário de ter que conhecer a arquitetura do hardware usado
para operações de entrada/saída.
60
dados e das aplicações.
As rotinas de entrada/saída
O subsistema de E/S torna simples as operações de entrada/saída para o usuário e para as
aplicações através do uso de um conjunto de rotinas especiais denominado rotinas de
entrada/saída. Estas rotinas cuidam dos detalhes das operações de leitura e escrita como em qual
trilha gravar o arquivo, a partir de qual setor, qual o tipo de formatação do disco, sem que os
usuários ou as aplicações tenham que se preocupar com estes detalhes.
Com isso podemos construir um programa java que grave um arquivo de dados não importa se
no disco rígido local, em um disco da rede, em um pen drive, em uma fita magnética, etc.
O Device Driver
O device driver implementa a comunicação entre o subsistema de E/S com os dispositivos
através de controladores de E/S. Enquanto o subsistema de E/S trata de funções ligadas a todos os
dispositivos, os drivers tratam apenas dos seus aspectos particulares.
Assim os device drivers recebem comandos gerais de leitura e escrita e os traduzem em
comandos específicos de leitura e escrita que podem ser executados por um controlador de um
dispositivo específico.
Por exemplo, em uma operação de leitura de um dado em disco o device driver recebe a
solicitação de leitura de um determinado bloco mas informa ao controlador exatamente qual o
disco, cilindro, trilha e setor em que o bloco se localiza. O controlador então executa a operação
de leitura.
O Controlador de entrada e saída
Os controladores são dispositivos de hardware que manipulam diretamente os dispositivos de
entrada e saída. O device driver comunica-se com os dispositivos indiretamente através do
controlador. Existe assim um controlador para cada tipo de dispositivo físico de entrada /saída
( disco, impressora, fita, etc. ).
Em geral o controlador pode ser um placa independente acoplada a CPU por um slot ou pode
ser implementado diretamente na placa do processador.
Dispositivos de entrada e saída
Os dispositivos de entrada e saída permitem a comunicação entre o computador e o mundo
externo. Podem ser classificados como entrada de dados, saída de dados ou ainda entrada e saída
de dados.
A transferência dos dados é sempre feita em blocos de informação através dos controladores
de dispositivos.
Os dispositivos de entrada e saída podem ser classificados em estruturados e não estruturados.
São ditos estruturados quando operam com blocos de tamanho fixo. Os discos são exemplos de
dispositivos de entrada saída estruturados.
Os dispositivos de entrada e saída estruturados podem ser classificados como sendo de acesso
direto ou acesso sequencial conforme a forma de acesso aos dados. Os dispositivos de acesso
sequencial acessam os dados bloco por bloco, ou seja, para ler o bloco 3 o dispositivo precisa
antes ler o bloco 3. As unidades de fita são exemplos de dispositivos de acesso sequencial. Os
dispositivos de acesso direto acessam diretamente o bloco através do endereço. As unidades de
disco são exemplos clássicos de dispositivos de acesso direto.
61
Os dispositivos de entrada saída não estruturados são aqueles que leem ou gravam uma
sequencia de caracteres sem formato de bloco. Por isso, a sequencia não possui endereço, não
permitindo acesso direto ao dado. Dispositivos como impressora, terminais e interface de rede são
exemplos de dispositivos de entrada saída não estruturados.
Desempenho, Redundância e Proteção de dados
Para assegurar segurança e proteção nos dados durante operações de entrada/saida foram
desenvolvidas técnicas por pesquisadores da Universidade da Califórnia no final dos anos 80. As
técnicas ficaram conhecidas com RAID ( Redundant, Arrays of Inexpensive Disk ). Estas técnicas
trabalhavam com gerenciamento dos discos e otimizavam as operações de E/S e implementavam
redundância e proteção nos dados.
Estas técnicas podem ser implementadas por software , através do sistema operacional ou um
software gerenciador de discos, denominado subsistema JBOD, ou diretamente nos controladores
de dispositivos, conhecidos como RAID Externo.
Esta técnica usa um dispositivo virtual um disco virtual que fisicamente é composto por um
conjunto de discos que funcionam em conjunto. Este conjunto de discos também conhecido como
array de discos é tratado pelo sistema operacional como se fosse um disco só e possui grande
capacidade de armazenamento, alto desempenho e confiabilidade nos dados armazenados.
Entre as técnicas RAID podemos destacar:
RAIS 0 - Striping - Distribui os dados entre os discos do array de discos para otimizar o
desempenho;
RAID 1 - Espelhamento - Replica dos dados do disco principal nos outros discos do array para
aumentar a confiabilidade nos dados, fazendo uso de redundância;
RAID 5 - Acesso independente com paridade distribuída - Faz uso das duas técnicas anteriores,
ou seja, distribui os dados nos discos e implementa redundância baseada em paridade.
62
do sistema de arquivos é a parte mais visível do sistema operacional para o usuário pois ele está
sempre manipulando arquivos, seja para criar ou editar seus documentos ou seja executando
programas, que são arquivos, no computador.
Os Arquivos
Conceitualmente um arquivo é um conjunto de informações logicamente relacionadas. Este
conjunto de informações podem ser um conjunto de dados ou um conjunto de instruções. Um
arquivo executável possui instruções em linguagem de máquina que são executadas pelo sistema
operacional. Um arquivo também pode ser um arquivo de dados, com dados estruturados,
contendo um determinado número de campos, com tamanhos definidos, posição inicial e posição
final, etc. Um arquivo pode conter conteúdo multimídia, imagem, áudio, som, vídeo, etc. Do ponto
de vista do usuários temos diferentes tipos de arquivos porém para o sistema operacional um
arquivo é tão somente um conjunto de registros definido pelo sistema de arquivos.
Armazenamento de Arquivos
Os arquivos são armazenados pelo sistema operacional em diferentes dispositivos físicos como
fitas magnéticas, discos magnéticos, discos ópticos. O tipo de dispositivo onde o arquivo é
armazenado deve ser isolado do sistema operacional, de forma que exista uma independência
entre os arquivos a serem manipulados e o meio de armazenamento. O sistema operacional, deve
ser capaz de manipular arquivos independente do dispositivo físico onde estão armazenados.
Informações dos Arquivos
Um arquivo precisa ser identificado pelo sistema operacional através de um nome. Em todos os
sistemas operacionais existem regras particulares para a definição de nomes de arquivos tais
como tamanho do nome, caracteres usados para o nome do arquivo, distinção entre caracteres
maiúsculos e minúsculos, etc. Alguns sistemas operacionais incluem uma extensão como sendo
parte do nome do arquivo. A extensão serve para identificar o tipo do conteúdo do arquivo. Em
todos os sistemas operacionais é válida a regra de não ser permitido dois arquivos com o mesmo
nome no mesmo diretório.
Organização de Arquivos
A organização de arquivos consistem em como os dados estão internamente armazenados. A
estrutura dos dados podem variar em função do tipo de informação do arquivo. Arquivos texto e
arquivos executáveis são muito diferentes e possuem propósitos diferentes, consequentemente
estruturas diferentes podem se ajustar melhor a um tipo de arquivo do que a outro tipo.
Quando um arquivo é criado, o programa que o cria, determina a estrutura que será utilizada
para armazenar os dados no arquivo.
A organização de arquivo mais simples é aquela em que os dados são organizados em uma
sequência não estruturada de bytes. Neste tipo de organização não existe uma estrutura lógica
definida para os dados. Esta forma de organização oferece grande flexibilidade para armazenar os
dados. Entretanto, o acesso aos dados não permite um acesso direto a um dado do arquivo. Como
não há estrutura definida não é possível calcular o endereço de um dado dentro do arquivo. Sem o
endereço não é possível o acesso direto.
Alguns sistemas operacionais possuem diferentes organizações de arquivos e neste caso cada
arquivo criado deve seguir alguma organização suportada pelo sistema de arquivos. As
organizações mais conhecidas são a sequencial, a relativa e a indexada.
63
Nestas organizações os dados são organizados em registros que podem ter tamanho fixo ou
tamanho variável.
Os Métodos de Acesso aos dados nos Arquivos
Em função de como o arquivo está organizado o sistema de arquivos pode recuperar registros
de diferentes maneiras.
Acesso Sequencial
Os primeiros sistemas operacionais só armazenavam arquivos em fitas magnéticas.
Consequentemente a organização sequencial dos arquivos era usada. O acesso aos registros era
feito na ordem em que os registros eram gravados. Não era possível acessar diretamente um
registro. A gravação de registros era feita no final do arquivo.
Acesso Direto
Com o surgimento dos discos magnéticos, foi possível o uso de novos métodos de acesso mais
eficientes. O primeiro método a surgir foi o acesso direto que permite a leitura/gravação de um
registro diretamente na sua posição. Este acesso é realizado através do número do registro que é
a sua posição relativa ao início do arquivo. No acesso direto não há restrição com relação à ordem
em que os registros são lidos ou gravados, sendo sempre necessário informar o número do
registro.
O acesso direto somente é possível quando o arquivo é definido com registros de tamanho fixo.
Isto porque é feito um cálculo da posição do registro dentro do arquivo com base no tamanho do
registro e do número do registro. Este cálculo de deslocamento permite encontrar a posição exata
do registro dentro do arquivo e com isso o acesso direto é possível.
O acesso direto pode ser combinado com o acesso sequencial. Pode ser feito o acesso a um
registro qualquer e depois acessar sequencialmente os demais registros do arquivo.
Acesso Indexado ou Acesso por Chave
O acesso indexado tem como base o acesso direto sendo que arquivos com organização
indexada devem possuir uma área de índice onde existem ponteiros para os diversos registros.
Quando o programa acessa um registro deve ser informada a chave do registro. Com essa chave o
sistema de arquivos busca na área de índice o ponteiro correspondente à chave do registro. A
partir do ponteiro o sistema de arquivos realiza um acesso direto ao registro no arquivo.
Operações de Entrada/Saída
Todas as operações de entrada/saída são gerenciadas pela gerencia do sistema que arquivos
que possui um conjunto de operações de entrada/saída tais como tradução de nomes em
endereços, leitura e gravação de dados e criação e eliminação de arquivos. Na realidade as rotinas
de entrada/saída tem como função disponibilizar uma interface simples e uniforme entre a
aplicação e os dispositivos de entrada/saída.
Os programas ao realizarem uma operação de leitura/gravação se comunicam com as rotinas
de entrada/saída do sistema de arquivos e desta forma desconhecem detalhes dos dispositivos
físicos.
Atributos dos Arquivos
Para suportar as operações de entrada/saída o sistema de arquivos mantem informações de
64
cada arquivo criado. As informações são também chamadas de atributos dos arquivos e permitem
ao sistema de arquivos conhecer entre outras coisas o tamanho de um arquivo, qual o usuário
dono do arquivo, a data de criação, qual a organização do arquivo, quais as permissões de
leitura/gravação/execução do arquivo, data do ultimo backup, senha para acesso ao arquivo.
Os atributos de um arquivo podem variar de acordo com o sistema operacional. Porém alguns
atributos como tamanho, data de criação e permissões estão presentes em todos os sistemas
operacionais.
Diretórios
O sistema de arquivos organiza os arquivos em estruturas conhecidas como diretórios. O
diretório é uma estrutura de dados em árvore que contem elementos associados aos arquivos
onde cada elemento armazena informações como a localização física, nome, organização do
arquivo e demais atributos do arquivo.
Quando um arquivo é aberto o sistema de arquivos busca sua entrada na estrutura de
diretórios e armazena a localização e nome do arquivo em uma tabela mantida na memória
principal. Esta tabela mantem todos os arquivos abertos e é mantida em memória por questões de
desempenho das operações de arquivos. É importante que ao término de uso do arquivo o mesmo
seja fechado para que os dados da tabela sejam liberados.
A implementação mais simples de uma estrutura de diretórios é chamada de nível único. Neste
caso não existem subdiretórios, apenas um único diretório. contendo todos os arquivos do disco.
Este modelo é muito limitado e não é bom para segurança dos arquivos.
Na maioria dos sistemas operacionais o diretório é tratado com um arquivo tendo identificação
( um nome ) e atributos.
Gerência de Espaço Livre em Disco
A criação de arquivos existe que seja feito um gerenciamento do espaço livre, quais blocos e
setores estão livres para criação de arquivos. Este controle é feito através de uma estrutura de
dados em memória que possui uma lista ou tabela onde podemos identificar blocos livres que
pode ser alocados a um arquivo. Neste caso o espaço é removido da lista para que não seja
alocado a outro arquivo. Da mesma forma, quando um arquivo é removido, os blocos são
liberados e colocados de volta na lista de blocos livres.
Existem diferentes formais de gerenciar a alocação do espaço livre em disco.
Uma forma mais simples é usar uma tabela de bits ou mapa de bits. Cada entrada na tabela é
associada a um bloco do disco representado por um bit, podendo assumir valor igual a 0 ( bloco
livre ) ou 1 ( bloco alocado a algum arquivo ).
Uma outra forma é usar uma estrutura de dados de lista encadeada de todos os blocos livres do
disco. Nesta forma de alocação de espaço livre, cada bloco possui o endereço do próximo bloco no
disco. A partir do primeiro bloco livre encontrado é possível encontrar outros blocos livres para
alocação ao arquivo através do acesso de forma encadeada.
uma outra forma é considerar que blocos contínuos são geral alocados ou liberados
simultaneamente. Com isso podemos enxergar disco como um conjunto de segmentos de blocos
livres. Desta forma, mantem-se uma tabela com o endereço do primeiro bloco de cada segmento
e o número de blocos livres que se seguem. Esta técnica é conhecida com técnica de blocos livres.
65
Gerência de Alocação de Espaço em Disco
O sistema de arquivos também precisa gerenciar o espaço alocado aos arquivos pois na medida
em que o tempo passa e atualizações são feitas, os arquivos mudam e com isso a necessidade de
espaço para armazenamento também muda. Como o recurso é limitado, o espaço em disco, é
necessário gerenciar também o espaço alocado aos arquivos.
Existem diferentes técnicas para gerenciamento do espaço alocado aos arquivos. As principais
técnicas são as seguintes:
A Alocação Contígua
66
de leitura do dispositivo terá que se movimentar várias vezes sobre a superfície do disco para fazer
a leitura de todos os segmentos de blocos.
A alocação encadeada só permite acesso sequencial aos blocos do arquivo. Esta é uma das
principais desvantagens desta técnica já que não é possível o acesso direto a um bloco.
A Alocação Indexada
Na alocação indexada é possível o acesso direto ao bloco. Para isso os endereços de todos os
blocos são mantidos em uma estrutura em memória chamada bloco de índice.
A alocação indexada não usa informações de controle nos blocos de dados ( ponteiros ) como
na alocação encadeada.
Proteção de acesso
Todo sistema de arquivo deve permitir o compartilhamento de arquivos por diversos usuários e
processos mas daí surge o problema de proteção de acesso aos arquivos compartilhados por
processos e usuários não autorizados. O sistema de arquivos deve garantir que somente usuários
autorizados tenham acesso aos arquivos compartilhados.
A proteção de acesso é implementada através de controle de concessão de operações de
leitura, gravação, execução e em alguns casos remoção aos usuários do sistema operacional. Em
sistemas operacionais UNIX/LINUX é possível ampliar as concessões dessas operações aos usuários
que pertençam ao mesmo grupo do usuário dono do arquivo ou ainda a outros usuários que não
pertençam ao grupo do usuário dono do arquivo.
A proteção de acesso aos diretórios é implementada para as operações de visualizar os
arquivos de um diretório, criar/remover arquivos em um diretório e remover um diretório.
Basicamente, existem 3 mecanismos de proteção de acesso que estão disponíveis na maioria
dos sistemas operacionais:
Senha de Acesso - O uso de senha de acesso ao arquivo é o mais simples. O usuário tem ou não
acesso ao arquivo mediante o conhecimento da senha de acesso do arquivo. Caso o arquivo seja
compartilhado este mecanismo não poderá ser usado pois todos os usuários teriam que saber a
senha de acesso ao arquivo.
Grupos de Usuário - Cada usuário é associado a um grupo de usuários. Os usuários do mesmo
grupo compartilham arquivos sem problemas. Este mecanismo na realidade implementa as
permissões de leitura/ gravação e execução de arquivos que pertençam a um usuário, a um grupo
de usuários e a outros usuários. Este mecanismo é usado em sistemas UNIX/LINUX.
Lista de Controle de Acesso - Cada arquivo possui uma lista de controle de acesso contendo
quais usuários podem acessar o arquivo e quais as permissões que cada usuário possui. Esta lista
pode ficar muito grande para arquivos compartilhados para muitos usuários. Existem também
uma sobrecarga adicional pois a lista é consultada toda a vez que o arquivo é acessado. Este
mecanismo é usado em sistemas Windows.
Sistemas com múltiplos processadores
Introdução
Sistemas com múltiplos processadores possuem duas ou mais UCP interligadas e que
funcionam em conjunto na execução de tarefas independentes ou no processamento simultâneo
de uma mesma tarefa.
67
Inicialmente os sistemas operacionais executavam um programa de cada vez mas com o
surgimento dos sistemas operacionais com suporte a múltiplos processadores o processamento
paralelo foi expandido.
Os primeiros sistemas com múltiplos processadores surgiram nos anos 60 com o objetivo de
diminuir o tempo de processamento para sistema que envolviam número elevado de cálculos
complexos ou que processavam alto volume de dados. Eram usados em aplicações científicas nas
universidades ou em aplicações restritas do governo.
Foi nos anos 80 que os sistemas com múltiplos processadores começaram a ser usados
amplamente pelas empresas. Principalmente com a redução do curso do hardware ficou mais
barato comprar sistemas com muitos processadores ou adicionar processadores a um sistema
multi processado.
Atualmente a maioria dos sistemas operacionais suportam multi processamento.
A motivação para o uso de múltiplos processadores
Existem alguns fatores que motivaram o desenvolvimento de sistemas com múltiplos
processadores:
O elevado custo para o desenvolvimento de processadores mais rápidos levou ao
desenvolvimento de sistemas com múltiplos processadores ao invés de sistemas com um único
processador de alto desempenho.
Aplicações que requerem alto desempenho ou poder computacional. As aplicações atuais cada
vez mais demandam poder de processamento e desempenho que seriam dificilmente alcançados
por uma arquitetura co um único processador com alto desempenho.
Os diversos benefícios dos sistemas com multi processadores
Inicialmente o desempenho foi o principal fator para o desenvolvimento dos sistemas multi
processados porém posteriormente as empresas perceberam outros benefícios, antes não
atingidos, que os sistemas multi processados oferecem.
Aumento da Confiabilidade - Com mais de um processador, caso haja falha de hardware em um
processador os demais processadores mantem os sistemas em funcionamento. Desta forma os
sistemas multi processados aumentam a confiabilidade da infraestrutura de TI e dos serviços e
sistemas da empresa.
Escalabilidade - Se antes era necessário trocar o sistema computacional por um outro sistema
computacional com mais poder de processamento, e isso custava muito caro, com os sistemas
multi processados basta adicionar novos processadores conforme a demanda de processamento.
Ou seja, o sistema multi processado é escalável, ele pode ser expandido conforme a necessidade
de poder computacional da organização com a simples adição de novos processadores.
Alta disponibilidade - Pelo mesmo motivo do aumento da confiabilidade, os sistemas multi
processados oferecem alta disponibilidade dos serviços pois em caso de falha de um ou mais
processadores, os outros processadores garantem a disponibilidade do serviço ou seja que o
serviço não será interrompido.
Balanceamento de carga - Todo o processamento pesado pode ser distribuído pelos vários
processadores disponíveis no sistema, dividindo a carga do processamento e conseguindo
melhores resultados em desempenho. Esta abordagem não seria possível em um sistema com um
único processador de alto desempenho.
Atualmente os servidores de banco de dados, servidores de arquivos, servidores web usam
sistemas com múltiplos processadores justamente para atender a estes requisitos de
68
infraestrutura.
A partir destes fatores os sistemas com múltiplos processadores podem ser classificados em
69
fortemente acoplados ou fracamente acoplados.
Clusters
São sistemas fracamente acoplados formados por vários sistemas computacionais chamados
nós que são conectados por uma rede que precisa ser de alto desempenho. Cada nó da rede é
denominado membro do cluster e possui seus próprios recursos como processadores, memória,
dispositivos E/S e sistema operacional.
Geralmente os membros do cluster são do mesmo fabricante por questões de
incompatibilidade de sistemas operacionais.
Como cada nó do cluster possui sua memória principal a comunicação entre os nós é feita
através de troca de mensagens.
Geralmente a rede de conexão é dedicada aos nós do cluster e o acesso aos serviços é feito
através de uma outra rede.
Este sistema oferece alta disponibilidade e tolerância a falhas.
O usuário que acessa um cluster não tem conhecimento dos nós que compõem o cluster. Do
ponto de vista do usuário é como se ele tivesse acessando um único sistema fortemente acoplado.
Sistemas Operacionais de Rede ( SOR )
Os sistemas operacionais de rede são o melhor exemplo de um ambiente fracamente acoplado.
Cada sistema, nó da rede, possui seus próprios recursos de hardware e são independentes dos
70
demais nós da rede, sendo interconectados por uma rede formando uma rede de computadores.
Os SOR são usados tanto em redes locais como em redes Ethernet e redes distribuídas ( WAN ),
sendo a comunicação feita através de uma interface de rede que possibilita o acesso aos demais
componentes da rede.
Não existe limite quanto ao número de nós que podem fazer parte da rede de computadores.
Como cada nó possui seu próprio sistema operacional e os sistemas operacionais podem ser
diferentes existe um protocolo que garante a comunicação entre os nós. No caso o protocolo
TCP/IP.
A grande maioria dos SORs e seus protocolos de rede implementa o modelo cliente-servidor.
Neste modelo existe um ou mais servidores que oferecem serviços como servidor de impressão,
servidor de arquivos, servidor de correio eletrônico, servidor de banco de dados. Os servidores
oferecem os serviços aos clientes da rede.
O Windows Server e o Novell Netware são exemplos de SORs voltados para oferecer este tipo
de serviço.
Sistemas Distribuídos
Um sistema distribuído é um conjunto de sistemas autônomos que são interconectados por
uma rede de comunicação e que funciona como se fosse um sistema fortemente acoplado mas de
fato não é.
Os sistemas operacionais dos componentes que compõem um sistema distribuído podem ser
heterogêneos.
O que diferencia um sistema distribuído dos demais sistema fracamente acoplados é que existe
um relacionamento mais forte entre seus componentes. Do ponto de vista físico, o hardware é
independente, fracamente acoplado, porém do ponto de vista lógico, existe um relacionamento
forte entre o software existente nos sistemas.
Os componentes de um sistema distribuidos podem ser conectados por uma rede local ou
através de uma rede distribuída. A localização de um componente não é considerada e nem as
características físicas da rede.
71
A escalabilidade de um sistema distribuído é, ao menos à princípio, ilimitada pois basta
acrescentar novos componentes à rede em função da necessidade.
Para o Usuário e suas aplicações é como se houvesse um único sistema fortemente acoplado ao
invés de uma rede conectando sistemas heterogêneos e independentes. Este conceito é chamado
de imagem única do sistema.
Transparência
Transparência de acesso
Transparência de localização
Transparência de concorrência
Transparência de desempenho
Transparência de escalabilidade
Transparência a falhas
Transparência de migração
A tolerância a falhas
72
A tolerância a falhas de hardware é garantida através de redundância de componentes como
fontes duplicadas, vários processadores, técnicas de RAID, memória com detecção e correção de
erros, etc. Ainda temos redundância dos meios de conexão, placas de rede, linhas de comunicação
e dispositivos de rede.
A tolerância a falhas de software é mais difícil de implementar. Caso haja uma falha no sistema
operacional, a aplicação deve continuar como se não houve havido falha, sem que o usuário
perceba que houve a falha. Neste caso, como as aplicações estão distribuídas em vários sistemas,
caso ocorra algum problema com um dos componentes é possível que um deles assuma de forma
transparente o papel do sistema defeituoso.
Por exemplo: Ao acessar um sistema de suporte houve falha na conexão com o banco de dados.
O servidor de banco de dados, o serviço de banco de dados estava fora do ar. Neste caso o sistema
de suporte se conecta a outro servidor de banco de dados, servidor de contingencia e o sistema de
suporte prossegue como se não tivesse havido falha na conexão ao banco de dados.
VPN
VPN ou Virtual Private Network (Rede Privada Virtual) trata-se de uma rede privada construída
sobre a infraestrutura de uma rede pública.
Essa é uma forma de conectar dois computadores através de uma rede pública, como a
Internet. Ao invés de realizar esse procedimento por meio de links dedicados ou redes de pacotes,
como Frame Relay e X.25, utiliza-se a infraestrutura da internet para conectar redes distantes e
remotas.
A Rede Privada Virtual possui a grande vantagem de ser bem mais barata que os links
dedicados. Além disso, a Internet está presente em todo o mundo com pontos de acesso
espalhados por todos os lugares.
As redes VPN são muito utilizadas pelas grandes empresas, especialmente nas companhias em
que funcionários trabalham remotamente, seja nas ruas ou no sistema home office, para se
conectar à estrutura interna mesmo estando longe.
Usuários comuns também aproveitam a tecnologia das redes VPN para construírem redes
privadas virtuais. O nível de custo-benefício das redes VPN em comparação com os links dedicados
aumenta à medida que as distâncias entre as conexões também aumentam.
Os links dedicados são muito caros, apesar de possuírem uma melhor privacidade e segurança
em relação às redes Virtual Private Network. Por ser baseada em uma rede pública, onde existe
uma enorme quantidade de tráfego de dados que podem ser transmitidos e recebidos por
qualquer equipamento atualmente, a VPN não disponibiliza um alto nível de confiabilidade e
segurança para com as informações que transitam por ela.
Porém, por meio da criptografia nas informações e nas comunicações entre hosts da rede
privada é possível aumentar consideravelmente a confidenciabilidade dos dados que trafegam
pela rede. Por meio do sistema de tunelamento, os dados podem ser enviados sem que outros
usuários tenham acesso, e mesmo que os tenham, ainda os receberão criptografados. Por isso, é
73
fundamental que os dispositivos responsáveis por cuidar da rede VPN devem ser capazes de
garantir segurança e integridade das informações e dos dados que são transmitidos.
PROTOCOLO IPSEC
O IPSec (IP Security Protocol) é uma suite de protocolos criado para a construção de túneis
seguros sobre redes de internet e intranet. Essa ferramenta permite que todos os dados passem
pelo gateway para serem cifrados antes de percorrerem o caminho para a máquina de destino ou
decifrado antes do recebimento dos dados.
Outro problema que a rede VPN pode trazer é em relação à dependência da velocidade da
Internet disponível, ainda mais se a quantidade de tráfego que ela envia for bastante grande. Por
isso, algumas empresas podem ter dificuldades em utilizá-la caso as suas conexões não forem
estáveis e velozes. Conexões ruins podem acarretar problemas técnicos e atrasos sem que o
usuário tenha controle sobre isso.
Obviamente, para se criar uma rede VPN é necessário ter pelo menos dois computadores
conectados à internet, além de um programa de gerenciamento de rede VPN instalado em cada
máquina. Para enviar os dados, o programa criptografa e encapsula as informações, além de
adicionar o número de IP da máquina remetente para que o computador de destino possa
identificar quem enviou os dados. Por meio do sistema de tunelamento, os dados percorrem o
caminho até chegar à máquina receptora que identifica imediatamente as informações de IP que
foram enviadas pela máquina remetente. Após isso, o processo inverso é realizado, com a
"descriptografação" e armazenamento dos dados no computador de destino.
Sugestão de software de VPN : NordVPN, Surfshark, RusVPN, Cyberghost VPN
Existe ainda um outro procedimento um pouco distinto para a criação da rede VPN. É possível
criar uma rede em que o receptor e o remetente sejam hosts que interligam entre si várias
máquinas.
VPN ou Virtual Private Network (Rede Privada Virtual) trata-se de uma rede privada construída
sobre a infraestrutura de uma rede pública. Essa é uma forma de conectar dois computadores
através de uma rede pública, como a Internet. Ao invés de realizar esse procedimento por meio de
links dedicados ou redes de pacotes, como Frame Relay e X.25, utiliza-se a infraestrutura da
internet para conectar redes distantes e remotas.
A Rede Privada Virtual possui a grande vantagem de ser bem mais barata que os links
74
dedicados. Além disso, a Internet está presente em todo o mundo com pontos de acesso
espalhados por todos os lugares. As redes VPN são muito utilizadas pelas grandes empresas,
especialmente nas companhias em que funcionários trabalham remotamente, seja nas ruas ou no
sistema home office, para se conectar à estrutura interna mesmo estando longe. Usuários comuns
também aproveitam a tecnologia das redes VPN para construírem redes privadas virtuais.
O nível de custo-benefício das redes VPN em comparação com os links dedicados aumenta à
medida que as distâncias entre as conexões também aumentam. Os links dedicados são muito
caros, apesar de possuírem uma melhor privacidade e segurança em relação às redes Virtual
Private Network. Por ser baseada em uma rede pública, onde existe uma enorme quantidade de
tráfego de dados que podem ser transmitidos e recebidos por qualquer equipamento atualmente,
a VPN não disponibiliza um alto nível de confiabilidade e segurança para com as informações que
transitam por ela.
Porém, por meio da criptografia nas informações e nas comunicações entre hosts da rede
privada é possível aumentar consideravelmente a confidenciabilidade dos dados que trafegam
pela rede. Por meio do sistema de tunelamento, os dados podem ser enviados sem que outros
usuários tenham acesso, e mesmo que os tenham, ainda os receberão criptografados. Por isso, é
fundamental que os dispositivos responsáveis por cuidar da rede VPN devem ser capazes de
garantir segurança e integridade das informações e dos dados que são transmitidos.
O IPSec (IP Security Protocol) é uma suite de protocolos criado para a construção de túneis
seguros sobre redes de internet e intranet. Essa ferramenta permite que todos os dados passem
pelo gateway para serem cifrados antes de percorrerem o caminho para a máquina de destino ou
decifrado antes do recebimento dos dados.
Outro problema que a rede VPN pode trazer é em relação à dependência da velocidade da
Internet disponível, ainda mais se a quantidade de tráfego que ela envia for bastante grande. Por
isso, algumas empresas podem ter dificuldades em utilizá-la caso as suas conexões não forem
estáveis e velozes. Conexões ruins podem acarretar problemas técnicos e atrasos sem que o
usuário tenha controle sobre isso.
Obviamente, para se criar uma rede VPN é necessário ter pelo menos dois computadores
conectados à internet, além de um programa de gerenciamento de rede VPN instalado em cada
máquina. Para enviar os dados, o programa criptografa e encapsula as informações, além de
adicionar o número de IP da máquina remetente para que o computador de destino possa
identificar quem enviou os dados. Por meio do sistema de tunelamento, os dados percorrem o
caminho até chegar à máquina receptora que identifica imediatamente as informações de IP que
foram enviadas pela máquina remetente. Após isso, o processo inverso é realizado, com a
75
"descriptografação" e armazenamento dos dados no computador de destino.
Sugestão de software de VPN : NordVPN, Surfshark, RusVPN, Cyberghost VPN
Existe ainda um outro procedimento um pouco distinto para a criação da rede VPN. É possível
criar uma rede em que o receptor e o remetente sejam hosts que interligam entre si várias
máquinas.
76
Referencial bibliográfico
https://pt.wikipedia.org/wiki/Terceira_gera%C3%A7%C3%A3o_de_computadores
https://computadoribm360.wordpress.com
calihttps://computerworld.com.br/plataformas/o-mainframe-aos-50-como-system-360-da-ibm-
revolucionou-a-ti-corporativa/
https://estudoderedes.wordpress.com/2011/12/29/historia-dos-sistemas-operacionias/
http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-
livro/livro/livro.chunked/ch06s03.html
http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-
livro/livro/livro.chunked/ch07.html
https://www.tecmundo.com.br/sistema-operacional/113499-8-sistemas-operacionais-
alternativos-windows-voce-precisa-conhecer.htm
http://bloghardwaremicrocamp.com.br/manutencao/revisao-de-hardware-1%C2%AAparte/
https://www.techtudo.com.br/artigos/noticia/2012/04/o-que-e-placa-mae-e-como-funciona.html
https://tecnoblog.net/303335/o-que-e-cpu/
http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-
livro/livro/livro.chunked/ch04s01.html
https://sites.google.com/site/proffernandosiqueiraso/aulas/4-estrutura-do-sistema-operacional
77