Você está na página 1de 77

Apostila de Introdução

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.

O principal programa do sistema é o Sistema Operacional (SO), responsável por gerenciar o


acesso aos recursos do computador e prover serviços extras da máquina. Nos computadores
modernos, muitos são os dispositivos a serem gerenciados: um ou mais processadores, memória
principal, terminais de acesso, disco rígido, interfaces de rede e etc. Imagine a complexidade de
implementar um programa que faz uso de cada um destes dispositivos, controlando o acesso
concorrente de outros programas para não interferir no resultado final do seu.
O leitor deve perceber que seriam programações muito complexas e é uma das funções do
Sistema Operacional, permitir as aplicações de usuário o uso destes dispositivos de forma mais
simplificada. Para isso, o Sistema Operacional fornece as aplicações, uma coleção de funções pré-
programadas para atuarem sobre estes dispositivos, as chamadas do sistema (system calls).
Sistema de um computador: hardware, programas do sistema e aplicações.
Podemos observar na Figura 1, “Sistema de um computador: hardware, programas do sistema
e aplicações.” a arquitetura em camadas de um sistema computacional. Na camada inferior
encontram-se os circuitos integrados, fonte de energia, barramentos, placas de rede e etc.

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.

O Sistema Operacional como uma Máquina Estendida


A arquitetura, conjunto de instruções, organizações de memória, E/S e estrutura de
barramentos da maioria dos computadores em nível de linguagem de máquina é primitivo e de
difícil programação.

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.

Figura 1 - Imagem 2 - Multiprogramação em um Sistema Operacional

Entretanto os computadores desta época não tinham mais de um núcleo de processamento


(processador), logo era de responsabilidade do Sistema Operacional, dividir o uso do único
processador com os diversos programas em execução durante pequenas frações de tempo,
compartilhamento do tempo (Figura 2, “Multiprogramação em um Sistema Operacional, tipos de
compartilhamento dos recursos do computador.

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

auxílio dos antigos operados de máquina.

Os principais Sistemas operacionais da época foram o MS-DOS, precursor do Windows da


Microsoft, o Unix, base para as diversas distribuições do Linux, Sistema Operacional aberto ao
público (podendo usa-lo e modificar seu código) e o Mac OS, sistema criado pela Apple que trouxe
a revolução na Interface Gráfica, adotado até hoje nos Sistemas Operacionais modernos.
No final da década de 80, começou-se a criar Sistemas Operacionais para manipular
computadores interligados por redes de comunicação, chamados Sistemas Operacionais de Rede
ou de Sistemas Distribuídos. Nele o usuário passou a controlar diversos computadores ao mesmo
tempo, podendo até se logar em um computador remoto, localizado a quilômetros de distância, e
controla-lo como se estivesse usando seu teclado ou mouse local.

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.

Sistema Operacional de Servidores


Servidores são computadores pessoais grandes, estações de trabalho e até computadores de
grande porte. Eles servem múltiplos usuários de uma vez em uma rede e permitem-lhe

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.

Sistema Operacional de Desktops e Notebooks


Seu trabalho é oferecer uma boa interface para um único usuário. São amplamente usados
para processadores de texto, planilha e acesso a internet.
Sistema Operacional de Tempo Real
Os Sistemas Operacionais de tempo real são caracterizados por terem o tempo como um
parâmetro fundamental. Por exemplo, em sistemas de controle de processos industriais é muito
comum a existência de prazos rígidos para a execução de determinadas tarefas, podendo uma
ação, ocorrendo em um momento incorreto, soldar uma região errada de uma peça, estragando o
produto final.

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.

Sistema Operacional de Cartões Inteligentes


Sistemas de Cartões Inteligentes são dispositivos do tamanho de cartões de crédito que contém
um chip de CPU. Possui restrições severas de consumo de energia e de memória. Alguns deles
podem realizar apenas uma única função, como pagamentos eletrônicos, mas outros podem tratar
múltiplas funções. O gerenciamento dos recursos e a proteção das mesmas são tratados pelo
Sistema Operacional, geralmente muito primitivo, contido no cartão.

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.

Em um sistema multiprogramado, a CPU salta de programa para programa, executando cada


um deles por dezenas ou centenas de vezes por segundo. Estritamente falando, enquanto a cada
instante a CPU executa somente um programa, no decorrer de um segundo ela pode trabalhar
sobre vários programas, dando a ilusão de um verdadeiro paralelismo. Fala-se em
pseudoparalelismo para contrastar com o real paralelismo dos sistemas multiprocessadores.
Quando um processo é suspenso temporariamente dessa maneira, ele deverá ser reiniciado
mais tarde, exatamente do mesmo ponto em que ele estava quando foi interrompido. Logo, todas

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

Vimos que em um ambiente multi programado o sistema operacional gerencia os diversos


programas executados e controla o compartilhamento dos recursos por estes programas que são
executados de forma concorrente.
Para que isso aconteça todo programa executado deve estar sempre associado a um processo.
O conceito de processo é a base para a implementação de um sistema multi programado.
A gerência de processos é uma das funções do sistema operacional, possibilitando a alocação
de recursos aos programas, o compartilhamento de dados e arquivos, a troca de informações
entre programas e a sincronização de suas tarefas. Tudo isso é feito através da gerência de
processos.
Em sistemas com múltiplos processadores existe a execução simultânea de processos em
diferentes processadores.

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.

O resultado da execução de um mesmo programa pode variar em função do ambiente em que


ele é executado devido aos recursos disponíveis no momento de sua execução.

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.

Bloco de Controle de Processo


O processo é implementado pelo sistema operacional através de uma estrutura de dados
chamada bloco de controle do processo ( PCB - Process Control Block ). O sistema operacional,
através do PCB, mantém todas as informações sobre o contexto de hardware, contexto de
software e espaço de endereçamento. Cada processo possui seu PCB que mantêm todas as suas
informações.

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 ativo pode encontrar-se em um de três diferentes estados:

Execução ( Running ) - Quando o processo está em execução pela UCP.


Pronto ( Ready ) - Quando o processo aguarda para ser executado. O sistema operacional
determina a ordem e o critério para que um processo em estado de pronto possa ter acesso ao
processador. Este processo é chamado de escalonamento de processos.
Espera ( wait ) - Quando o processo aguarda um evento externo ou por algum recurso para
prosseguir seu processamento. Por exemplo, o termino da gravação de um arquivo ou a espera de
determinada hora para iniciar a execução de processo.

Mudanças de Estado de um 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.

Criação e Eliminação de Processos

Processos são criados e eliminados o tempo todo pelo 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.

A eliminação de um processo desaloca todos os recursos associados ao processo e remove o


PCB criado para o processo.

Existem dois estados adicionais para representar a criação e eliminação de processos.

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.

Um processo pode passar para o estado terminado por razões como:


término normal de execução;
eliminação por um outro processo;
eliminação forçada por ausência de recursos disponíveis no sistema.

A figura abaixo mostra um diagrama de estados de um processo:

Processos CPU-Bound e I/O Bound

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.

Processos foreground e background

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 Foreground quando permite a comunicação direta do usuario com o


processo durante o seu processamento. Os canais de entrada e saida são geralmente o teclado e o
terminal, respectivamente. Desta forma, existe interação entre o usuário e o processo durante a
execução do processo.

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.

As transições entre os estados também estão ilustradas na Figura “Transição de estados de um


processo.”, estas transições são:
Processo bloqueia aguardando um entrada dos dispositivos de E/S.
O escalador de processos seleciona outro processo.
O escalador de processos seleciona este processo.
A entrada torna-se disponível.
A transição 1 ocorre quando um processo descobre que ele não pode prosseguir. No UNIX,
quando um processo lê de um arquivo especial e não há entrada disponível, o processo é
automaticamente bloqueado.
As transições 2 e 3 são causadas pelo escalonador de processos sem que o processo saiba disso.
A transição 2 ocorre quando o escalonador decide que o processo em execução já teve tempo
suficiente de CPU e é momento de deixar outro processo ocupar o tempo de CPU. A transição 3
ocorre quando o escalonador define que é justo que o processo retorne a ser executado, após ter
compartilhado a CPU com outros processos.
A transição 4 ocorre quando um evento externo pelo qual um processo estava aguardando (por
exemplo, a chegada de uma dado vindo da placa de rede). Note que a transição 4 não leva o
processo diretamente para o estado “Em Execução”, pois pode existir um outro processo em
execução e este processo que estava bloqueado deve aguardar sua vez no escalonador.

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.

Outro problema é o compartilhamento de recursos tais como arquivos entre os múltiplos


processos, cada um com seu próprio contexto de hardware, contexto de software e espaço de
endereçamento.

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.

Aplicações monothread e multithread


A grande diferença entre aplicações monothread e aplicações multithread está no uso do espaço
de endereçamento. Processos são independentes e portanto cada processo possui seu próprio
espaço de endereçamento, enquanto que as threads compartilham o mesmo espaço de
endereçamento de um processo.
Este compartilhamento de memória permite que a troca de dados entre threads de um mesmo
processo seja simples e rápida se comparado a comunicação de processos em um ambiente
monothread.
Como threads de um mesmo processo compartilham o mesmo espaço de endereçamento é
necessário garantir que uma thread não altere dados de outra thread. O programador deve usar
técnicas de sincronização e comunicação entre threads para garantir o acesso seguro aos dados
compartilhados no mesmo espaço de endereçamento.

Os benefícios do uso de threads


O uso de threads proporciona uma série de benefícios. Programas concorrentes com multiplos
threads são mais rapidos do que implementados com multiplos processos pois operações como
criação, troca de contexto e eliminação dos threads geram menor sobrecarga no sistema
operacional.
Alem disso, como os threads compartilham o mesmo espaço de endereçamento, a comunicação
entre as threads é feita de forma mais simples e mais eficiente e mais rápida.
Finalmente, as threads de um mesmo processo podem compartilhar outros recursos como
arquivos, temporizadores, sinais, atributos de segurança, etc.

Melhor desempenho com o uso de threads


O uso de threads pode ajudar a melhorar o desempenho do sistema operacional. Em sistemas
cliente-servidor uma solicitação de serviço remoto pode ser executada em uma thead de forma
assíncrona liberando o sistema para outras tarefas. Em um sistema monothread, se uma aplicação
solicita um serviço remoto ela deve esperar o resultado antes de poder prosseguir sua execução.

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.

A segunda geração (1955-1965) – Transisores e sistema em lotes (batch)


A introdução dos transistores ocorreu em meados da década de 1950 e mudou radicalmente
o quadro. Pela primeira vez, havia uma separação entre projetistas, fabricantes, programadores e
técnicos de manutenção. Essas máquinas – então denominadas computadores de grande

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.

Placa-mãe (Foto: Reprodução)


Quando você investiga as qualidades de um chipset e, portanto, de uma placa, vai precisar
dominar alguns termos e tecnologias. Conhecendo o chipset da placa você sabe qual é o soquete,
suporte a que tipo de memórias, quantas portas USB a placa oferece e etc.
Material e aspecto
Não que seja obrigatório, mas em geral placas voltadas para consumidores mais exigentes são
pensadas para suportar hardware de ponta, como mais de uma placa de vídeo funcionando em
paralelo, e também aguentar sem traumas o processo do overclock, que consiste em
sobrealimentar de energia processadores, memórias e GPU.

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.

Em suma, a CPU é a responsável por processar todas as principais operações de funcionamento


de um computador. Por isso, ela é comumente chamada de processador.
Como o processador funciona?
Os processadores modernos funcionam com um oscilador a cristal, que utiliza o efeito
piezoelétrico (emissão de tensão elétrica por pressão mecânica) para sincronizar e informar a
medida de tempo de transferência de dados. Essa velocidade é medida em ciclos por segundo ou
Hertz (Hz), sendo atribuída à velocidade do processador em si. Nós também costumamos chamar

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.

Intel 8086: lançado em 1978, foi o primeiro microprocessador x86

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.

FSB (Front Side Bus)


Você já sabe: as frequências com as quais os processadores trabalham são conhecidas como
clock interno. Mas, os processadores também contam com o que chamamos de clock
externo ou Front Side Bus (FSB) ou, ainda, barramento frontal.
O FSB existe porque, devido a limitações físicas, os processadores não podem se comunicar
com o chipset e com a memória RAM - mais precisamente, com o controlador da memória, que
pode estar na ponte norte (northbridge) do chipset - utilizando a mesma velocidade do clock
interno. Assim, quando esta comunicação é feita, o clock externo, de frequência mais baixa, é que
entra em ação.
Note que, para obter o clock interno, o processador faz uso de um procedimento de
multiplicação do clock externo. Para entender melhor, suponha que um determinado processador
tenha clock externo de 100 MHz. Como o seu fabricante indica que este chip trabalha à 1,6 GHz
(ou seja, tem clock interno de 1,6 GHz), seu clock externo é multiplicado por 16: 100 x 16 = 1600
MHz ou 1,6 GHz.

42
Front Side Bus

É importante deixar claro, no entanto, que se dois processadores diferentes - um da Intel e


outro da AMD, por exemplo - tiverem clock interno de mesmo valor - 3,2 GHz, para exemplificar -,
não significa que ambos trabalham com a mesma velocidade. Cada processador tem um projeto
distinto e conta com características que determinam o quão rápido podem ser. Assim, um
determinado processador pode levar, por exemplo, 2 ciclos de clock para executar uma instrução.
Em outro processador, esta mesma instrução pode requerer 3 ciclos.
Vale ressaltar também que muitos processadores - especialmente os mais recentes -
transferem 2 ou mais dados por ciclo de clock, dando a entender que um chip que realiza, por
exemplo, transferência de 2 dados por ciclo e que trabalha com clock externo de 133 MHz, o faz à
266 MHz. Por este e outros motivos, é um erro considerar apenas o clock interno como parâmetro
de comparação entre processadores diferentes.

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.

Como os dados são gravados e lidos


Os discos magnéticos de um disco rígido são recobertos por uma camada magnética
extremamente fina. Na verdade, quanto mais fina for a camada de gravação, maior será sua
sensibilidade, e consequentemente maior será a densidade de gravação permitida por ela.
Poderemos, então, armazenar mais dados num disco do mesmo tamanho, criando HDs de maior
capacidade. Os primeiros discos rígidos, assim como os discos usados no início da década de 80,
utilizavam a mesma tecnologia de mídia magnética utilizada em disquetes, chamada coated media,
que além de permitir uma baixa densidade de gravação, não é muito durável. Os discos atuais já
utilizam mídia laminada (plated media), uma mídia mais densa, de qualidade muito superior, que
permite a enorme capacidade de armazenamento dos discos modernos.
Disco rígido em detalhes
A cabeça de leitura e gravação de um disco rígido funciona como um eletroímã semelhante aos
que estudamos nas aulas de ciências e física do colegial, sendo composta de uma bobina de fios
que envolve um núcleo de ferro. A diferença é que, num disco rígido, este eletroímã é
extremamente pequeno e preciso, a ponto de ser capaz de gravar trilhas (pistas em Portugal)
medindo menos de um centésimo de milímetro de largura. Quando estão sendo gravados dados
no disco, a cabeça utiliza seu campo magnético para organizar as moléculas de óxido de ferro da
superfície de gravação, fazendo com que os pólos positivos das moléculas fiquem alinhados com o
pólo negativo da cabeça e, conseqüentemente, com que os pólos negativos das moléculas fiquem
alinhados com o pólo positivo da cabeça. Usamos, neste caso, a velha lei "os opostos se atraem".
Como a cabeça de leitura e gravação do HD é um eletroímã, sua polaridade pode ser alternada
constantemente. Com o disco girando continuamente, variando a polaridade da cabeça de
gravação, variamos também a direção dos pólos positivos e negativos das moléculas da superfície
magnética. De acordo com a direção dos pólos, temos um bit 1 ou 0 (sistema binário).

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 RAM é uma unidade de armazenamento volátil, ou seja, quando o computador é


desligado todos os dados contidos nela se perdem.
A memória é um componente que tem por função armazenar internamente toda informação que
é manipulada pela máquina: os programas (conjunto de instruções) e os dados. A capacidade de
armazenar um programa é uma característica que permite o processamento automático de dados.
A memória é em geral, classificada em dois tipos:
Memória Principal (MP)
Memória Secundária (MS) ou auxiliar ou de massa

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.

ROM - Read Only Memory (Memória só de Leitura)


É usada para armazenar instruções e/ou dados permanentes ou raramente alterados. A
informação geralmente é colocada no chip de armazenamento quando ele é fabricado e o
conteúdo da ROM não pode ser alterado por um programa de usuário. Por esse motivo é uma
memória só de leitura.
A ROM se constitui em um chip que possui um software determinado e não apagável pelo
usuário. Desta forma a ROM incorpora as idéias de hardware e software (a isto se dá o nome
de firmware).
Portanto, firmware, é um hardware que contém um software já determinado, associando assim
as duas capacidades. Ex: fita de videogame
Em resumo, a informação armazenada em ROM não é volátil, ou seja, não é perdida quando o
fornecimento de energia externa do computador é interrompido. Já a RAM é volátil, pois as
informações armazenadas são perdidas quando a energia é cortada.
Memória Secundária
A memória secundária é a memória de armazenamento permanente, que armazena os dados
permanentemente no sistema, sem a necessidade de energia elétrica e, por esse motivo,
conhecida como memória não volátil. Ela funciona como complemento da memória principal para
guardar dados.
O computador só consegue processar o que está na memória principal, assim como ocorre
conosco. Na verdade, só conseguimos processar o que está na nossa memória. Por exemplo, só
podemos discar um número telefônico do qual nos lembramos, o qual esteja na nossa memória.
Se não lembrarmos, temos que recorrer a uma memória auxiliar, representada neste caso por
uma agenda telefônica e só então estaremos em condições de discar.
Como exemplos de memória secundária podemos citar o disquete, o disco rígido e o CD-ROM.

47
Cooler

Cooler é o equipamento responsável pela refrigeração da parte interna do computador.

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

A fonte de alimentação é o equipamento responsável pelo fornecimento de energia aos


dispositivos do computador.

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.

A etapa seguinte consiste na leitura de um arquivo de configuração de boot, o Boot Loader


(quando falamos do Windows, trata-se do NTLDR).

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.

8. O kernel carrega os arquivos principais e informações básicas do sistema operacional


(incluindo o registro), além de relacionar os componentes de hardware com as respectivas DLLs e
drivers.

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

vírus (Vírus de Boot) se alojam.


Linha do Tempo
1964 - Multics
Em 1964, com um time de programadores ( naquela época engenheiros) das empresas AT&T
(Laboratórios Bell), da General Electric (GE) e liderados pela Universidade MIT (Massachusetts
Institute of Technology) idealizaram o Multics, um Sistema Operacional, Multi processadores,
multi usuários, múltiplas interfaces e multi aplicativos para trabalhar em rede através de terminais.
Um projeto muito além de seu tempo, teve que aguardar alguns anos para entrar em operação,
pois na época não possuia hardware para rodar esse S.O. O último sistema em operação foi
desligado em 2000.
1969 – Unics ou Unix
Em 1969 surge o primeiro Fork da história da informática, Fork é uma bifurcação, ou seja, um
programa com características semelhantes, onde são introduzidas modificações. Ken Thompson e
Dennis Ritche, que trabalhava no projeto do Multics, precisaram reescrever o código, pois eles
haviam criado um jogo - Space War - e queriam dar sequência no mesmo, refazendo o código para
um computador DEC-PDP-7 de 4 kbytes. O nome Unix é um trocadilho com Unics, que se
pronuncia da mesma forma e é devido a UNiplex Information and Computing Service. Thompson
finalizou o trabalho em 1969, com base na linguagem BCPL.
1973 – Unix em C

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

Visão Geral dos Sistemas Operacionais


Introdução

Um sistema operacional é um conjunto de rotinas e serviços executado pelo computador que


tem como objetivo facilitar o uso do computador pelo usuário e gerenciar e controlar o uso dos
recursos do computador.
O sistema operacional funciona como uma interface entre o usuário e o computador, tornando
o uso do computador mais simples, eficiente e seguro.
Para isso o computador controla o funcionamento do computador através do gerenciamento
dos diversos recursos do computador tais como memória, processador, dispositivos de entrada e
saída, etc.
Enquanto os programas do usuário são executados de forma linear, com inicio, meio e fim as
rotinas e serviços do sistema operacional são executados de forma assíncrona e concorrente em
função de eventos que podem ocorrer a qualquer momento.

Funções de um Sistema Operacional


Um sistema operacional possui duas funções principais a saber:
- Facilidade de acesso aos recursos do computador;
- Compartilhamento dos recursos do computador de forma organizada e protegida;
Facilidade de acesso aos recursos do computador
Um computador possui diversos recursos tais como memória, discos, impressora, gravador de
dvd, etc.
Para que o usuário possa utilizar estes recursos ele solicita ao sistema operacional que execute
uma operação que é executada sem que o usuário tenha que se preocupar com os detalhes de
como a operação é executada ou como os recursos são utilizados durante a operação.
Se mais de um usuário solicitam a mesma operação ou recurso, é responsabilidade do sistema
operacional administrar o compartilhamento de recursos.
O sistema operacional atua como uma interface entre os usuários e os recursos disponíveis no
computador, facilitando a comunicação e a utilização de tais recursos.

Compartilhamento de recursos de forma organizada e protegida

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 ).

O sistema operacional facilitando o desenvolvimento de software


O surgimento dos sistemas operacionais ajudou a acelerar o desenvolvimento de software. Não
apenas facilitando o uso do computador e gerenciando os recursos mas também ajudando a
simplificar a tarefa de desenvolver software.
Ocorre que nos primeiros computadores a programação era realizada em linguagem de
máquina, 0 e 1, sendo uma tarefa muito difícil. O programador daquela época tinha que conhecer
muito bem a arquitetura de hardware da máquina e isso não era fácil. Além disso, os programas
eram escritos para computadores com uma arquitetura especifica. Se um programa fosse
executado em outro computador com uma arquitetura diferente ele simplesmente não iria rodar.
Isso comprometia muito a portabilidade dos programas que praticamente não existia.
O surgimento dos sistemas operacionais resolveu este problema tornando a interação com o
hardware mais simples e eficiente. Não era mais necessário conhecer a arquitetura da máquina
para se construir programas. O hardware tornou-se transparente para o usuário pois as aplicações
agora interagem com o sistema operacional como se o hardware não existisse.
Os Recursos dos sistemas operacionais
Antes de prosseguir, é importante conhecer alguns conceitos básicos sobre recursos comuns
nos sistemas operacionais.
Multiprocessamento - É a capacidade de um sistema operacional realizar dois ou mais
processos simultaneamente. Claro que para isso é necessário ter mais de um processador no
computador. Não confundir com multi-tarefa pois esta apenas simula a execução simultânea de

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.

Uma camada para E/S


Como existem muitos dispositivos de entrada/saída com muitos modelos e características
diferentes o sistema operacional implementa uma camada de subsistema de E/S. com a função de
isolar a complexidade dos dispositivos físicos. Dessa forma, é possível ao sistema operacional ser
flexível permitindo a comunicação das aplicações com qualquer tipo de periférico.
Device Driver
Todos os aspectos técnicos como velocidade de operação, unidade de transferência,
representação de dados, tipos de operações são tratados pela camada device driver faz a
comunicação dos dispositivos com a camada subsistema de E/S.
OS grupos de camadas
As camadas são divididas em dois grupos. O primeiro grupo visualiza todos os dispositivos de
modo único e o segundo grupo é específico para cada dispositivo. A maior parte das camadas
trabalha de forma independente dos dispositivos físicos.
Veja abaixo uma figura demonstrando os grupos de camadas da gerencia de dispositivos.

A camada Subsistema de E/S


Esta camada deve tornar as operações de E/S o mais simples possível para o usuário e para as
aplicações. O subsistema isola a complexidade dos dispositivos e das operações de E/S para cada
tipo de dispositivo cada camada de sistema de arquivos, do sistema gerenciador de banco de

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.

Gerência de Sistema de Arquivos


Introdução
O armazenamento e a recuperação de informações são atividades comuns para qualquer tipo
de aplicação. Todo programa armazena e recupera dados da memória secundária. Essa é uma
atividade essencial em praticamente todos os programas e processos executados pelo sistema
operacional.
Um processo deve ser capaz de ler e gravar dados de forma permanente nos dispositivos como
discos, pen-drive e fitas, sob a forma de arquivos. Alem disso, um processo deve poder
compartilhar estes arquivos com outros processos, especialmente em sistemas multi processados.
Os arquivos são a forma como o sistema operacional permite a gravação e leitura de dados. Os
dados gravados ou lidos estão armazenados em arquivos que possuem uma estrutura definida. Os
arquivos podem armazenar tanto dados como programas do usuário.
A Gerência do Sistema de Arquivos
A parte do sistema operacional que gerencia os arquivos e as operações de arquivos é a
gerência do sistema de arquivos. A gerência do sistema de arquivos também cuida da segurança
no acesso aos arquivos, garantindo que um usuário não tenha acesso não autorizado a um arquivo
que pertence a outro usuário. A gerência de arquivos também cuida do compartilhamento dos
arquivos, através de uma rede, por vários processos e usuários do sistema operacional. A gerência

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

A alocação contígua consistem em armazenar um arquivo em blocos sequencialmente


dispostos no disco. Neste tipo de alocação, o sistema de arquivos localiza um arquivo através do
primeiro bloco e da sua extensão em blocos ( tamanho do arquivo ).
O principal problema para esta técnica de alocação de espaço é que caso um arquivo seja
criado é necessário que haja blocos livres contíguos suficiente no disco para permitir a alocação.
Nem sempre isso é possível pois com o tempo ocorre a fragmentação do disco.
O acesso feito a arquivos dispostos contiguamente é sequencial ou direto.
No momento em que o sistema de arquivo aloca um segmento de blocos contíguos a um
arquivo pode ser que haja mais de um segmento disponível com o tamanho necessário para o
arquivo. Neste caso existem algoritmos que são usados para escolher qual segmento de blocos
será utilizado:
First-fit - Considera o primeiro segmento de blocos encontrado com tamanho suficiente para
alocação ao arquivo.
Best-fit - Considera o segmento de blocos com menor tamanho suficiente para alocação ao
arquivo.
Worst-fit - Considera o segmento de blocos com o maior tamanho para alocação ao arquivo.
Independente da técnica usada pelo sistema de arquivos a fragmentação de blocos no disco é o
principal problema de se usar esta forma de alocação de espaço. Entretanto, este problema pode
ser tratado com utilitários de desfragmentação do sistema de arquivos que pode ser usado
periodicamente para resolver este problema.
Outro problema é que nem sempre é possível determinar o tamanho definitivo de um arquivo
no momento de sua criação. Imagine um arquivo de carga por exemplo que vai sendo gravado
com dados de uma consulta em um banco de dados. Neste caso a busca por um segmento de
blocos com tamanho suficiente para alocar ao arquivo pode ser uma busca complexa.
A Alocação Encadeada
Na alocação encadeada um arquivo pode ser organizado com um conjunto de blocos ligados
logicamente no disco, independente de sua localização física ou seja, não é necessário que os
blocos sejam fisicamente contíguos no disco. Neste caso cada bloco possui um ponteiro para o
bloco seguinte do arquivo e assim sucessivamente. É a mesma implementação da lista encadeada
que aprendemos na disciplina de Estrutura de Dados.
Nesta técnica a fragmentação do disco não apresenta problema pois os blocos são ligados uns
aos outros através do ponteiro e não necessitam estar fisicamente contíguos no disco.
Entretanto, a fragmentação pode comprometer operações de leitura do arquivo pois a cabeça

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.

Tipos de Sistemas Computacionais


Os sistemas são classificados conforme o grau de paralelismo no processamento de instruções.
Um modelo proposto define quatro tipos de sistemas computacionais:
SISD ( Single Instruction Single Data ) - Sistemas que suportam uma única sequencia de
instruções e apenas uma sequencia de dados. Os sistemas com um único processador estão nessa
categoria. Estes sistemas simulam paralelismo com a utilização de uma técnica conhecida como
pipeline.
SIMD ( Single Instruction Multiple Data ) - Sistemas que com uma única sequencia de instruções
tratam multiplas sequencias de dados. São sistemas que trabalham com vetores inteiros
simultaneamente, possibilitando a execução uma mesma instrução ou bloco de instruções sobre
diferentes elementos de um ou mais vetores.
MISD ( Multiple Instruction Single Data ) - Sistemas que permitem a execução de múltiplas
sequencias de instruções em uma única sequencia de dados. Não existe até o momento nenhum
sistema computacional criado com esta arquitetura.
MIMD ( Multiple Instruction Multiple Data ) - Sistema que permitem a execução de múltiplas
sequencias de instruções sobre múltiplas sequências de dados. Esta categoria engloba os sistemas
com multiplos processadores.
Sistemas Fortemente acoplados e fracamente acoplados
Os sistemas com múltiplos processadores usam a arquitetura MIMD e podem ser classificados
em função de diversos fatores, como compartilhamento da memória principal, tempo de acesso à
memória principal, mecanismos de comunicação e sincronização utilizados e velocidade de
comunicação dos processadores.

A partir destes fatores os sistemas com múltiplos processadores podem ser classificados em

69
fortemente acoplados ou fracamente acoplados.

Nos sistemas fortemente acoplados os processadores compartilham a memória principal e são


controlados por apenas um único sistema operacional.

Nos sistemas fracamente acoplados temos dois ou mais sistemas computacionais


independentes conectados por uma rede de comunicação, tendo cada sistemas seus
processadores, memoria principal, dispositivos E/S e sistema operacional.
A grande diferença entre estes dois sistemas é que em sistemas fortemente acoplados existe
apenas um espaço de endereçamento compartilhado por todos os processadores, chamado de
memoria compartilhada. Nos sistemas fracamente acoplados cada sistema tem sua memória
principal, seu espaço de endereçamento individual e a comunicação entre os sistemas é feita
através de troca de mensagens.
Sistemas com Multiprocessadores Simétricos ( SMP )
São sistemas fortemente acoplados que compartilham o mesmo espaço de endereçamento e
são gerenciados por um único sistema operacional. São também conhecidos como sistemas SMP.
O tempo de acesso à memória principal pelos vários processadores é uniforme. Não importa a
localização física do processador. Esta arquitetura é chamada por UMA ( Uniform Memory Access ).
Sistemas SMP implementam a simetria dos processadores, onde todos os processadores
realizam as mesmas funções. Poucas funções ficam a cargo de um processador central, como por
exemplo, a inicialização do sistema. Como todos os processadores executam as mesmas funções
existe um melhor balanceamento da carga e das operações de E/S.

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.

Os SORs e o Modelo Cliente Servidor

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 é.

Cada componente de um sistema distribuído possui seus próprios recursos e sistema


operacional.

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.

Imagem única do sistema

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

Em um sistema distribuído quando um usuário se conecta ao sistema não é necessário


informar o nome do componente a que estará conectado. Independente da localização física dos
componentes, o usuário terá acesso a todos os arquivos, diretórios e demais recursos de forma
transparente. Ao executar uma aplicação o usuário nem mesmo saberá em quais componentes a
sua aplicação está rodando. Caso ocorra um erro em um desses componentes o usuário não terá
conhecimento ficando sob responsabilidade do sistema operacional a resolução de todos os
problemas.
Este conceito é chamado transparência. A partir deste conceito, o conjunto de componentes
parece ser um sistema único, criando a imagem única do sistema.

A transparência aqui é feita a partir de vários aspectos de um sistema distribuído:

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

Para que um sistema distribuído ofereça transparência em todos os aspectos acima


mencionados é necessário que haja tolerância a falhas. Falhas tanto de hardware quanto de
software. Neste caso o sistema tem que garantir que em caso de problema em algum componente
as aplicações continuem sendo processadas sem qualquer interrupção do usuário, de forma
totalmente transparente.

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

Você também pode gostar