SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
1
SISTEMAS OPERACIONAIS
NOME.: ________________________________________ 1ºV7
PROFª.: Luziane Klitzeke de Oliveira
2
1. Conceitos Básicos
Introdução
Antes de começarmos a estudar os conceitos e os principais componentes de um
sistema operacional, devemos saber primeiramente quais são suas funções básicas.
Por mais complexo que possa parecer, um sistema operacional e apenas um
conjunto de rotinas executado pelo processador, da mesma forma que qualquer outro
programa. Sua principal função é controlar o funcionamento do computador, como um
gerente dos diversos recursos disponíveis no sistema.
O nome sistema operacional não é único para designar esse conjunto de
programas. Nomes como monitor, executivo, supervisor ou controlador possuam,
normalmente, o mesmo significado.
Um sistema operacional possui inúmeras funções e resumimos essas funções,
basicamente, em duas, descritas a seguir:
1.1.1 Facilidade de acesso aos recursos do sistema
Um sistema de computação, ao possui, normalmente, diversos componentes,
como terminais, impressoras, discos e fitas. Quando utilizamos um desses dispositivos,
não nos preocupamos com a maneira como é realizada esta comunicação e os inúmeros
detalhes envolvidos.
Para a maioria de nós uma operação cotidiana, como, por exemplo, a leitura de
um arquivo em disquete, pode parecer simples. Na realidade, existe um conjunto de
rotinas específicas, controladas pelo sistema operacional, responsável por acionar a
cabeça, a de leitura e gravação da unidade de disco, posicionar na trilha e setor onde
estão os dados, transferir os dados do disco para a memória e, finalmente, informar ao
programa a chegada dos dados.
O sistema operacional, então, serve de interface entre o usuário e os recursos
disponíveis no sistema, tornando esta comunicação transparente e permitindo ao
usuário um trabalho mais eficiente e com menores chances de erros (Figura 1).
3
Figura 1 - Visão do sistema operacional como interface entre os usuários e os recursos do
sistema.
Este conceito de ambiente simulado, criado pelo sistema operacional, e
denominado máquina virtual (virtual machine) e está presente, de alguma forma, na
maioria dos sistemas atuais.
É comum pensar-se que compiladores, linkers, bibliotecas, depuradores e outras
ferramentas fazem parte do sistema operacional, mas, na realidade, estas facilidades
são apenas utilitários, destinados a ajudar a interação do usuário com o computador.
1.1.2 Compartilhamento de recursos de forma organizada e protegida
Quando pensamos em sistemas multiusuários, onde vários usuários podem estar
compartilhando os mesmos recursos, como, por exemplo, memória e discos, é
necessário que todos tenham oportunidade de ter acesso a esses recursos, de forma
que um usuário não interfira no trabalho do outro.
Se imaginarmos, por exemplo, que uma impressora possa ser utilizada por vários
usuários do sistema, deverá existir algum controle para impedir que a impressão de um
usuário interrompa a impressão de outro. Novamente, o sistema operacional é
responsável por permitir o acesso concorrente a esse e a outros recursos, de forma
organizada e protegida, dando ao usuário a impressão de ser o único a utilizá-los.
O compartilhamento de recursos permite, também, a diminuição de custos, na
medida em que mais de um usuário possa utilizar as mesmas facilidades
concorrentemente, como discos, impressoras, linhas de comunicação etc.
Não é apenas em sistemas multiusuários que o sistema operacional é importante.
Se pensarmos que um computador pessoal nos permite executar várias tarefas, como
imprimir um documento, copiar um arquivo pela internet ou processar uma planilha, o
sistema operacional deve ser capaz de controlar a execução concorrentes de todas
essas tarefas.
4
Máquinas de Níveis
Um computador, visto somente como um gabinete composto de circuitos
eletrônicos, cabos e fontes de alimentação (hardware), não tem nenhuma utilidade. É
através de programas (software) que o computador consegue armazenar dados em
discos, imprimir relatórios, gerar gráficos, realizar cálculos, entre outras funções. O
hardware é o responsável pela execução das instruções de um programa, com a
finalidade de se realizar alguma tarefa.
Uma operação efetuada pelo software pode ser implementada em hardware,
enquanto uma instrução executada pelo hardware pode ser simulada via software. Esta
decisão fica a cargo do projetista do computador em função de aspectos como custo,
confiabilidade e desempenho. Tanto o hardware como o software são logicamente
equivalentes, interagindo de uma forma única para o usuário.
Nos primeiros computadores, a programação era realizada em painéis, através de
fios, exigindo um grande conhecimento do hardware e de sua linguagem de máquina.
Isso era uma grande dificuldade para os programadores da época.
A solução para esse problema foi o surgimento do sistema operacional, que
tornou a interação entre usuário e computador mais simples, confiável e eficiente. A
partir desse acontecimento, não existia mais a necessidade de o programador se
envolver com a complexidade do hardware para poder trabalhar; ou seja, a parte física
do computador tornou-se transparente para o usuário.
Figura 2 - Visão modular do computador pelo usuário.
Partindo desse princípio, podemos considerar o computador como uma máquina
de níveis ou camadas, onde inicialmente existem dois níveis: o nível 0 (hardware) e o
nível 1 (sistema operacional). Desta forma, o usuário pode enxergar a máquina como
sendo apenas o sistema operacional, ou seja, como se o hardware não existisse. Esta
visão modular é abstrata e é chamada máquina virtual.
Na realidade, um computador não possui apenas dois níveis, e sim tantos níveis
quanto forem necessários para adequar o usuário às suas diversas aplicações. Quando o
usuário está trabalhando em um desses níveis, não necessita da existência das outras
camadas, acima ou abaixo de sua máquina virtual.
Atualmente, a maioria dos computadores possui a estrutura mostrada na Figura
3, podendo conter mais ou menos camadas. A linguagem utilizada em cada um desses
níveis é diferente, variando da mais elementar (baixo nível) à mais sofisticada (alto
nível).
Sistema
Operacional
Hardware
5
Figura 3 - Máquina de níveis.
Histórico
A evolução dos sistemas operacionais está, em grande parte, relacionada ao
desenvolvimento de equipamentos cada vez mais velozes, compactos e de custos
baixos, e à necessidade de aproveitamento e controle desses recursos.
Neste histórico dividimos essa evolução em fases, onde destacamos, em cada
uma, suas principais características de hardware, software, interação com o sistema e
aspectos de conectividade.
Primeira Fase (1945-1955)
No início da Segunda Guerra Mundial, surgiram os primeiros computadores
digitais, formados por milhares de válvulas, que ocupavam áreas enormes, sendo de
funcionamento lento e duvidoso.
O ENIAC (Electronic Numerical Integrator and Computer) foi o primeiro
computador digital de propósito geral. Criado para a realização de cálculos balísticos,
sua estrutura possuía 18 mil válvulas, 10 mil capacitores, 70 mil resistores e pesava 30
toneladas. Quando em operação, consumia cerca de 140 quilowatts e era capaz de
realizar 5 mil adições por segundo.
Para trabalhar nessas máquinas, era necessário conhecer profundamente o
funcionamento do hardware, pois a programação era feita em painéis, através de fios,
utilizando linguagem de máquina. Nessa fase, ainda não existia o conceito de sistema
operacional.
Segunda Fase (1956-1965)
A criação do transistor e das memórias magnéticas contribui para o enorme
avanço dos computadores da época. O transistor permitiu o aumento da velocidade e da
confiabilidade do processamento, e as memórias magnéticas permitiram o acesso mais
rápido aos dados, maior capacidade de armazenamento e computadores menores.
Aplicativos
Utilitários
Sistema
Operacional
Linguagem de
Máquina
Hardw are
Dispositivos
Físicos
Microprogramação
6
Com o surgimento das primeiras linguagens de programação, como Assembly e
Fortran, os programas deixaram de ser feitos diretamente no hardware, o que facilitou
enormemente o processo de desenvolvimento de programas.
Já não era mais possível conviver com tantos procedimentos manuais como os
anteriores, que não permitiam o uso eficiente do computador e de seus recursos. Os
primeiros sistemas operacionais surgiram, justamente, para tentar automatizar as
tarefas manuais
Figura 4 - Processamento batch
Inicialmente, os programas passaram a ser perfurados em cartões, que,
submetidos a uma leitora, eram gravados em uma fita de entrada (Figura 4). A fita,
então, era lida pelo computador, que executava um programa de cada vez, gravando o
resultado do processamento em uma fita de saída (Figura 4). Ao terminar de todos os
programas, a fita de saída era lida e impressa (Figura 4). A esse tipo de processamento,
onde um lote (batch) de programas era submetido ao computador, deu-se o nome de
processamento batch.
Pode não parecer um avanço, mas anteriormente os programas eram submetidos
pelo operador, um a um, fazendo com que o processador ficasse ocioso entre a
execução, ao de um programa e outro. Com o processamento batch, um grupo de
programas era submetido de uma só vez, o que diminuía o tempo existente entre a
execução dos programas, permitindo, assim, melhor uso do processador.
Os sistemas operacionais passaram a ter seu próprio conjunto de rotinas para
operações de entrada/saída (Input/Output Control System—IOCS), que veio facilitar
bastante o processo de programação. O IOCS eliminou a necessidade de os
programadores desenvolverem suas próprias rotinas de leitura/gravação específicas
para cada dispositivo periférico. Essa facilidade de comunicação criou o conceito de
independência de dispositivos.
Terceira Fase (1966-1980)
Através dos circuitos integrados (CIs) e, posteriormente, dos microprocessadores,
foi possível viabilizar e difundir o uso de sistemas computacionais por empresas, devido
7
a diminuição de seus custos de aquisição. Além disso, houve grande aumento do poder
de processamento e diminuição no tamanho dos equipamentos.
Com base nessa nova tecnologia, a IBM lançou em 1964 a Série 360. Esse
lançamento causou uma revolução na indústria de informática, pois introduzia uma linha
(família) de computadores pequena, poderosa e, principalmente, compatível. Isso
permitiu que uma empresa adquirisse um modelo mais simples e barato e, conforme
suas necessidades, mudasse para modelos com mais recursos, sem comprometer suas
aplicações já existentes. Para essa série, foi desenvolvido o sistema operacional OS/360,
que tentava atender todos os tipos de aplicações e periféricos. Apesar de todos os
problemas desse equipamento e de seu tamanho físico, a Série 360 introduziu novas
técnicas, utilizadas ate hoje.
Na mesma época, a DEC lançou a linha PDP-8, também revolucionária, pois
apresentava uma linha de computadores de porte pequeno e baixo custo, se comparada
aos mainframes ate então comercializados, criando um novo mercado, o de
minicomputadores.
A evolução dos processadores de entrada/saída permitiu que, enquanto um
programa esperasse por uma operação de leitura/gravação, o processador executasse
um outro programa. Para tal, a memória foi dividida em partições, onde cada programa
esperava sua vez para ser processado. A essa técnica de compartilhamento da memória
principal e processador deu-se o nome de multiprogramação.
Com a substituição das fitas por discos no processo de submissão dos programas,
o processamento batch tornou-se mais eficiente, pois permitia a alteração na ordem de
execução das tarefas, ate então puramente seqüencial. A essa técnica de submissão de
programas chamou-se spooling, que, mais tarde, também viria a ser utilizada no
processo de impressão.
Os sistemas operacionais, mesmo implementando o processamento batch e a
multiprogramação, ou, ainda estavam limitados a processamentos que não exigiam
comunicação com o usuário. Para permitir a interação rápida entre o usuário e o
computador, foram adicionados terminais de vídeo e teclado (interação on-line).
A multiprogramação evoluiu preocupada em oferecer aos usuários tempos de
respostas razoáveis e uma interface cada vez mais amigável. Para tal, cada programa na
memória utilizaria o processador em pequenos intervalos de tempo. A esse sistema de
divisão de tempo do processador chamou-se time-sharing (tempo compartilhado).
Outro fato importante nessa fase foi o surgimento do sistema operacional Unix
(1969). Concebido inicialmente em um minicomputador PDP-7, baseado no sistema
MULTICS (Multiplexed Information and Computing Service), o Unix foi depois rescrito
em uma linguagem de alto nível (linguagem C), tornando-se conhecido por sua
portabilidade.
No final dessa fase, com a evolução dos microprocessadores, surgiram os
primeiros microcomputadores, muito mais baratos que qualquer um dos computadores
ate então comercializados. Entre eles, destacamos os micros de 8 bits da Apple e o
sistema operacional CP/M (Control Program Monitor).
8
Quarta Fase (1981-1990)
A integração em larga escala (Large Scale Integration-LSI) e a integração em
muito larga escala (Very Large Scale Integration-VLSI) levaram adiante o projeto de
miniaturização e barateamento dos equipamentos. Os mini e superminicomputadores se
firmaram no mercado e os microcomputadores ganharam um grande impulso.
Nesse quadro surgiram os microcomputadores PC (Personal Computer) de 16 bits
da IBM e o sistema operacional DOS (Disk Operation System), criando a filosofia dos
computadores pessoais. Na área dos minis e superminicomputadores ganharam impulso
os sistemas multiusuário, com destaque para os sistemas compatíveis com o Unix (Unix-
like) e o VMS (Virtual Memory System) da DEC. Surgem as estações de trabalho
(workstations) que, apesar de monousuárias, permitem que se executem diversas
tarefas concorrentemente, criando o conceito de multitarefa.
No final dos anos 80, os computadores tiveram um grande avanço, decorrente de
aplicações que exigiam um enorme volume de cálculos. Para acelerar o processamento,
foram adicionados outros processadores, exigindo dos sistemas operacionais novos
mecanismos de controle e sincronismo. Com o multiprocessamento, foi possível a
execução de mais de um programa simultaneamente, ou ate de um mesmo programa
por mais de um processador. Além de equipamentos com múltiplos processadores,
foram introduzidos processadores vetoriais e técnicas de paralelismo em diferentes
níveis, fazendo com que os computadores se tornassem ainda mais poderosos.
As redes distribuídas (Wide Area Network- WANs) se difundiram por todo o
mundo, permitindo o acesso a outros sistemas de computação, independentemente de
estado, país e, ate mesmo, fabricante. Nesse contexto são desenvolvidos inúmeros
protocolos de rede, alguns proprietários, como o DECnet da DEC e o SNA (System
Network Architecture) da IBM, e outros de domínio público, como o TCP/IP e o CCITT
X.25. Surgem as primeiras redes locais (Local Area Network—LANs) interligando
pequenas áreas. Os softwares de rede passaram a estar intimamente relacionados ao
sistema operacional e surgem os sistemas operacionais de rede.
Quinta Fase (1991- )
Grandes avanços em termos de hardware, software e telecomunicações podem
ser esperados ate o final deste século. Essas mudanças são conseqüência da evolução
das aplicações, que necessitam cada vez mais de capacidade de processamento e
armazenamento de dados. Sistemas especialistas, sistemas multimídia, banco de dados
distribuídos, inteligência artificial e redes neurais são apenas alguns exemplos da
necessidade cada vez maior.
A evolução da microeletrônica permitirá o desenvolvimento de processadores e
memórias cada vez mais velozes e baratos, Além de dispositivos menores, mais rápidos
e com maior capacidade de armazenamento. Os componentes baseados em tecnologia
VLSI (Very Large Scale Integration) evoluem rapidamente para o ULSI (Ultra Large
Scale Integration).
Os computadores da próxima geração têm de ser muito mais eficientes que os
atuais, para atender o volume cada vez maior de processamento. Para isso, está
ocorrendo uma mudança radical na filosofia de projeto de computadores. Arquiteturas
9
paralelas, baseadas em organizações de multiprocessadores não convencionais, já se
encontram em desenvolvimento em varies universidades e centros de pesquisa do
mundo.
A evolução do hardware encadeará modificações profundas nas disciplines de
programação para fazer melhor uso das arquiteturas paralelas. Assim, novas linguagens
e metodologias de programação concorrentes estão sendo desenvolvidas, em particular,
fazendo uso extensivo de inteligência artificial e CAD (Computer-Aided Design).
O conceito de processamento distribuído será explorado nos sistemas
operacionais, de forma que suas funções estejam espalhadas por vários processadores
através de redes de computadores. Isso só será possível devido a redução, ao dos
custos de comunicação e ao aumento na taxa de transmissão de dados.
A arquitetura cliente-servidor aplicada basicamente a redes locais passe a ser
oferecida em redes distribuídas, permitindo que qualquer pessoa tenha acesso a todo
tipo de informação, independentemente de onde esteja armazenada. Problemas de
segurança, gerência e desempenho tornam-se fatores importantes relacionados ao
sistema operacional e a rede.
A década de 90 foi definitiva para a consolidação dos sistemas operacionais
baseados em interfaces gráficas. Apesar da evolução da interface, a forma de interação
com os computadores sofrerá, talvez, uma das modificações mais visíveis. Novas
interfaces homem-máquina serão utilizadas, como linguagens naturais, sons e imagens,
fazendo essa comunicação mais inteligente, simples e eficiente.
Os conceitos e implementações só vistos em sistemas considerados de grande porte
estão sendo introduzidos na maioria dos sistemas desktop, como na família Windows da
Microsoft, no Unix e no OS/2 da IBM.
Conceitos de Hardware e Software
Hardware
Um computador digital é constituído por um conjunto de componentes
interligados, composto por processadores, memória principal e dispositiva físicos
(hardware). Esses dispositivos manipulam dados na forma digital, o que proporciona
uma maneira confiável de representação.
Todos os componentes de um computador são agrupados em três subsistemas
básicos: unidade central de processamento (UCP), memória principal, e dispositivos de
entrada e saída (Figura 5). Estes subsistemas, também chamados de unidades
funcionais, estão presentes em todo computador digital, apesar de suas
implementações variarem nas diferentes arquiteturas existentes e comercializadas pelos
diversos fabricantes de computadores. Neste item descrevemos os conceitos básicos dos
principais componentes desses sistemas.
Unidade Central de Processamento
A unidade central de processamento (UCP), ou processador, tem como função
principal unificar todo o sistema, controlando as funções realizadas por cada unidade
10
funcional. A UCP também é responsável pela execução de todos os programas do
sistema, que obrigatoriamente deverão estar armazenados na memória principal.
Um programa é composto por uma série de instruções que são executadas
seqüencialmente pela UCP, através de operações básicas como somar, subtrair,
comparar e movimentar dados. Desta forma, a UCP busca cada instrução na memória
principal e interpreta para sua execução.
Unidade Lógica
e Aritmética
(ULA)
Unidade
de Controle
(UC)
Registradores
Dispositivos de
Entrada e Saída
Memória Principal (MP)
Figura 5 - Unidades funcionais de um computador
A UCP é composta por dois componentes básicos: unidade de controle e unidade
lógica aritmética. A Unidade de controle (UC) é responsável por controlar as atividades
de todos os componentes do computador, mediante a emissão de pulsos elétricos
(sinais de controle) gerados por um dispositivo denominado clock. Este controle pode
ser a gravação de um dado no disco ou a busca de uma instrução da memória. A
unidade lógica e aritmética (ULA), como o nome indica, é responsável pela realização de
operações lógicas (testes e comparações) e aritméticas (somas e subtrações).
A especificação da velocidade de processamento de uma UCP é determinada pelo
número de instruções que o processador executa por unidade de tempo, normalmente
por segundo. Alguns fabricantes utilizam unidade processamento próprios, já que não
existe uma padronização, sendo as mais comuns o MIPS (milhões de instruções por
segundo) e o MFLOPS/GFLOPS (milhões/bilhões de instruções de ponto flutuante por
segundo). A mostra alguns processadores e suas respectivas velocidades de
processamento.
Clock
O clock é um dispositivo, localizado na UCP, que gera pulsos elétricos síncronos
em um determinado intervalo de tempo (sinal de clock). A quantidade de vezes que
este pulso se repete em um segundo define a freqüência do clock. O sinal de clock é
utilizado pela unidade de controle para a execução, das instruções.
A freqüência do clock de um processador é medida em Hertz (Hz), que significa o
número de pulsos elétricos gerados em um segundo de tempo. A freqüência também
pode ser utilizada como unidade de desempenho entre diferentes processadores, pois
11
quanto maior a freqüência, mais instruções podem ser executadas pela UCP em um
mesmo intervalo de tempo.
Registradores
Os registradores são dispositivos de alta velocidade, localizados fisicamente na
UCP, para armazenamento temporário de dados. O número de registradores varia em
função da arquitetura de cada processador. Alguns registradores são de uso específico e
têm propósitos especiais, enquanto outros são ditos de uso geral.
Entre os registradores de uso específico, merecem destaque:
 contador de instruções (CI) é o registrador responsável pelo armazenamento do
endereço da próxima instrução que a UCP deverá executar. Toda vez que a UCP
execute uma instrução, o PC é atualizado com um novo endereço;
 o apontador da pilha (AP) e o registrador que contém memória o endereço de
memória do topo da pilha, que é a estrutura de dados onde o sistema mantém
informações sobre tarefas que estavam sendo processadas e tiveram que ser
interrompidas por algum motivo;
 o registrador de estado, também chamado em alguns equipamentos de é o
registrador responsável por armazenar informações sobre a execução do programa,
como a ocorrência de carry e overflow. A cada instrução executada, o registrador de
estado é alterado conforme o resultado gerado pela instrução.
Memória Principal
A memória principal, também conhecida como memória primária ou real, é a
parte do computador onde são armazenados instruções e dados. Ela é composta por
unidades de acesso chamadas células, sendo cada célula composta por um determinado
número de bits (binary digit). O bit é a unidade básica de memória, podendo assumir o
valor 0 ou 1. Atualmente, a grande maioria dos computadores utilize o byte (8 bits)
como tamanho de célula, porém encontramos computadores de gerações passadas com
células de 16, 32 e ate mesmo 64 bits. Podemos concluir, então, que a memória, é
formada por um conjunto de células, onde cada célula possui um determinado número
de bits (Figura 6).
0
1
2
M - 1
Célula = n bits
Endereços
Figura 6 - Memória principal
12
O acesso ao conteúdo de uma célula é realizado através da especificação, ao de
um número chamado endereço. O endereço é uma referência única, que podemos fazer
a uma célula de memória Quando um programa deseja ler ou escrever um dado em
uma célula, deve primeiro especificar qual o endereço de memória desejado, para
depois realizar a operação.
A especificação, ao do endereço, é realizada através de um registrador
denominado registrador de endereço de memória (memory register address - MAR).
Através do conteúdo deste registrador, a unidade de controle sabe qual a célula de
memória que será acessada. Outro registrador usado em operações com a memória é o
registrador de dados da memória (memory buffer register—MBR) . Este registrador é
utilizado para guardar o conteúdo de uma ou mais células de memória após uma
operação de leitura, ou para guardar o dado que será transferido para a memória em
uma operação de gravação. Este ciclo de leitura e gravação é mostrado na Figura 7.
Operação de Leitura Operação de gravação
1. A UCP armazena no MAR, o endereço da
célula a ser lida.
2. A UCP gera um sinal de controle para a
memória principal, indicando que uma
operação de leitura deve ser realizada.
3. 0 conteúdo da(s) célula(s), identificada(s)
pelo endereço contido no MAR, e transferido
para o MBR.
1. A UCP armazena no MAR, o endereço da
célula que será gravada.
2. A UCP armazena no MBR, a informação
que deverá ser gravada.
3. A UCP gera um sinal de controle para a
memória principal, indicando que uma
operação de gravação deve ser realizada.
4. A informação contida no MBR e transferida
para a célula de memória endereçada pelo
MAR.
Figura 7 - Ciclo de leitura e gravação
A capacidade de uma memória é limitada pelo tamanho do MAR. No caso do
registrador possuir n bits, a memória principal poderá no máximo endereçar 2n
células,
isto é , do endereço 0 ao 2n
-1.
A memória principal pode ser classificada em função de sua volatilidade, que é a
capacidade de memória preservar o seu conteúdo mesmo sem uma fonte de
alimentação. As memórias chamadas voláteis se caracterizam por poderem ser lidas ou
gravadas, como o tipo RAM (random access memory), que constitui quase que a
totalidade da memória principal de um computador. O outro tipo, chamado de não
volátil, não permite alterar ou apagar seu conteúdo. Este tipo de memória conhecido
como ROM (read-only memory), já vem pré-gravado do fabricante, geralmente com
algum programa, e seu conteúdo e preservado mesmo quando a alimentação e
desligada. Uma variação da ROM é a EPROM (erasable programmable ROM), onde
podemos gravar e regravar a memória através exposição de luz ultravioleta por um
dispositivo especial.
Atualmente, uma série de memórias com diferentes características, existe para
diversas aplicações, como a EEPROM, EAROM, EAPROM, NOVRAM entre outras.
13
Memória Cache
A MEMÓRIA cache é uma memória volátil de alta velocidade. O tempo de acesso
a um dado nela contido é muito menor que se o mesmo estivesse na memória principal.
Toda vez que o processador fez referência a um dado armazenado na memória
principal, ele "olha" antes na memória cache. Se o processador encontrar o dado na
cache, não ha necessidade do acesso a memória principal; do contrário, o acesso é
obrigatório. Neste último o processador, a partir do dado referenciado, transfere um
bloco de dados para a cache. O tempo de transferência entre as memórias é pequeno,
se comparado com o aumento do desempenho obtido com a utilização, ao desse tipo de
memória.
Apesar de ser uma memória de acesso rápido, seu uso é limitado em função do
alto custo. A Tabela 2.2 mostra a relação entre as memórias cache e principal em
alguns equipamentos.
HP 9000/855S IBM 3090/600S VAX 9000/440
Tamanho máximo
Memória principal
256 Mb 512 Mb 512 Mb
Tamanho máximo
Memória cache
256 Kb 128 Kb por UCP 128 Kb por UCP
Tabela 1 - Relação entre as memórias cache e principal
Memória Secundária
A memória secundária é um meio permanente (não volátil) de armazenamento
de programas e dados. Enquanto a memória principal precisa estar sempre energizada
para manter suas informações, a memória secundária não precisa de alimentação.
O acesso a memória secundária é lenta, se comparado com o acesso a memória
cache ou à principal, porém seu custo e baixo e sua capacidade de armazenamento é
bem superior a da memória principal. Enquanto a unidade de acesso a memória
secundária e da ordem de milissegundos, o acesso a memória principal e de
nanossegundos. Podemos citar, como exemplos de memórias secundárias, a fita
magnética, o disco magnético e o disco óptico.
A Figura 8 mostra a relação entre os diversos tipos de dispositivos de
armazenamento apresentados, comparando custo, velocidade e capacidade de
armazenamento.
14
Registradores
Memória Cache
Memória Principal
Memória Secundária
Maior Custo e
Maior Velocidade
de Acesso
Maior Capacidade
de armazenamento
Figura 8 - Relação entre os diversos tipos de dispositivos de armazenamento.
Dispositivos de Entrada e Saída
Os dispositivos de entrada e saída (E/S) são utilizados para permitir a comunicação
entre o computador e o mundo externo. Através desses dispositivos, a UCP e a
memória principal podem se comunicar, tanto com usuários quanto com memórias
secundárias, a fim de realizar qualquer tipo de processamento.
Os dispositivos de E/S podem ser divididos em duas categorias: os que são utilizados
como memória secundária e os que servem para a interface homem-máquina.
Os dispositivos utilizados como memória secundária, como discos e fitas magnéticas
se caracterizam por armazenar de três a quatro vezes mais informações que a
memória principal. Seu custo e relativamente baixo, porém o tempo de acesso a
memória secundária e de quatro a seis vezes maior que o acesso a memória
principal.
Alguns dispositivos servem para a comunicação, ao homem-máquina, como teclados,
monitores de vídeo, impressoras, plotters, entre outros. Com o avanço no
desenvolvimento de aplicações de uso cada vez mais geral, procure-se aumentar a
facilidade de comunicação entre o usuário e o computador. A implementação, de
interfaces mais amigáveis permite, cada vez mais, que pessoas sem conhecimento
específico sobre informática possam utilizar o computador. Scanner, caneta ótica,
mouse, dispositivos sensíveis a voz humana e ao calor do corpo humano são alguns
exemplos desses tipos de dispositivos.
Barramento
A UCP, a memória principal e os dispositivos de E/S são interligados através de
linhas de comunicação denominadas barramentos, barras ou vias. Um barramento
(bus) e um conjunto de fios paralelos (linhas de transmissão), onde trafegam
informações, como dados, endereços ou Sinais de controle. Ele pode ser classificado
como unidirecional (transmissão em um só sentido) ou bidirecional (transmissão em
ambos os sentidos).
Na ligação entre UCP e memória principal, podemos observar que três barramentos
são necessários para que a comunicação seja realizada. O barramento de dados
transmite informações entre a memória principal e a UCP. O barramento de
endereços é utilizado pela UCP para especificar o endereço, o da célula de memória
que será acessada. Finalmente, o barramento de controle e por onde a UCP envia os
pulsos de controle relativos as operações de leitura e gravação.
15
Pipelining
O conceito de processamento pipeline se assemelha muito a uma linha de
montagem, onde uma tarefa e dividida em uma seqüência de subtarefas, executadas
em diferentes estágios, dentro da linha de produção.
UCP
Memória
Principal
Dispositivos
de E/S UCP
Memória
Principal
Dispositivos
de E/S
Figura 9 - Configurações de sistema
Da mesma forma que em uma linha de montagem, a execução de uma instrução
pode ser dividida em subtarefas, como as fases de busca da instrução e dos operando,
execução e armazenamento dos resultados. O processador, através de suas várias
unidades funcionais pipeline, funciona de forma a permitir que, enquanto uma instrução
se encontra na fase de execução possa estar na fase de busca simultaneamente.
A técnica de pipelining pode ser empregada em sistemas com um ou mais
processadores, em diversos níveis, e tem sido a técnica de paralelismo mais utilizada
para maior desempenho dos sistemas de computadores.
Ativação e desativação do Sistema
O sistema operacional é essencial para o funcionamento de um computador. Sem
ele, grande parte dos recursos do sistema não estaria disponível, ou se apresentaria de
uma forma complexa para utilização pelos usuários.
Toda vez que um computador é ligado, é necessário que o sistema operacional
seja carregado da memória secundária para a memória principal. Esse processo,
denominado ativação do sistema (boot), é realizado por um programa localizado em um
posição específica do disco (disco block), geralmente o primeiro bloco. O procedimento
de ativação varia em função do equipamento, podendo ser realizado através do teclado,
de um terminal ou por manipulação de chaves de um painel (Figura 10).
Disco Memória
Principal
Sistema
Operacional
Boot
Figura 10 - Ativação do sistema
16
Além da carga do sistema operacional, a ativação do sistema também consiste na
execução de arquivos de inicialização. Nestes arquivos são especificados procedimentos
de inicialização de hardware e software específicos para cada ambiente.
Na maioria dos sistemas, também existe o processo de desativação (shutdown).
Este procedimento permite que as aplicações e componentes do sistema sejam
desativados de forma ordenada. Garantindo a integridade do sistema.
Arquiteturas RISC e CISC
Um processador com arquitetura RISC (Reduced Instruction Set Computer) se
caracteriza por possuir poucas instruções de máquina, em geral bastante simples, que
são executadas diretamente pelo hardware. Na sua maioria, estas instruções não
acessam a memória principal, trabalhando principalmente com registradores que, neste
tipo de processador, se apresentam em grande número. Estas características, além de
ajudarem as instruções serem executadas em alta velocidade, facilitam a
implementação do pipeline. Como exemplos de processadores RISC podemos citar o
Sparc (SUN), RS-6000 (IBM), PA-RISC (HP), Alpha AXP (DEC) e Rx000 (MIPS).
Os processadores CISC (Complex Instruction Set computers) já possuam
instruções complexas que são interpretadas por microprogramas. O número de
registradores é pequeno e qualquer instrução pode referenciar a memória principal.
Neste tipo de arquitetura, a implementação do pipeline é mais difícil. São exemplos de
processadores CISC o VAX (DEC), 80x86 e o Pentium (Intel), e o 68xx (Motorola).
Software
O Hardware por si só não tem a menor utilidade. Para torná-lo útil existe um
conjunto de programas, utilizado como interface entre as necessidades do usuário e as
capacidades do hardware. A utilização de softwares adequados às diversas tarefas e
aplicações (conceitos de camadas) torna o trabalho do usuários muito mais simples e
eficiente.
Tradutor
Nos sistemas operacionais antigos, o ato de programar era bastante complicado,
já que o programador deveria possuir conhecimento do hardware e programar em
painéis através de fios.
Esses programas eram desenvolvidos em linguagem de máquina e carregados
diretamente na memória principal para execução.
Com o surgimento das primeiras linguagens de montagem (assembly languages)
e das linguagens de alto nível, o programador deixou de se preocupar com muitos
aspectos pertinentes ao hardware, como em qual região da memória o programa
deveria ser carregado ou quais endereços de memória seriam reservados para as
variáveis. A utilização dessas linguagens facilitou a construção de programas em muitos
aspectos. Desse modo, um programa poderia ser escrito de uma forma bem
documentada e com facilidades para realizar alterações.
17
O tradutor, pelo tipo de linguagem de programação utilizada, pode ser chamado
de montador ou compilador (Figura 11).
Programa-Fonte Programa-Fonte Programa-Objeto
Linguagem de
Montagem Módulo-Objeto
Módulo-Objeto
Montador
Compilador
Linguagem de
Alto Nível
Figura 11 - Tradutor
Compilador
É o utilitário responsável por gerar, a partir de um programa escrito em uma
linguagem de alto nível, um programa em linguagem de máquina não executável.
As linguagens de alto nível, como pascal, fortran, cobol não tem nenhuma
relação direta com a máquina, ficando essa preocupação exclusivamente com o
compilador.
Interpretador
O interpretador é considerado um tradutor que não gera código-objeto. A partir
de um programa fonte, escrito em linguagem de alto nível, o interpretador, no momento
da execução do programa, traduz cada instrução e executa em seguida.
Linker
O linker (ligador), também chamado de linkagem, é o utilitário responsável por
gerar, a partir de um ou mais módulos-objetos, um único programa executável.
Loader
Também chamado carregador é o utilitário responsável por colocar fisicamente
na memória um programa para execução. O procedimento de carga varia com o código
gerado pelo linker, em função deste, o loader é classificado como sendo do tipo
absoluto ou relocável.
Tipo absoluto - o loader só necessita conhecer o endereço de memória inicial e o
tamanho do módulo para realizar o carregamento. Então, ele transfere o programa da
memória secundária para a memória principal e inicia sua execução.
18
No caso de código relocável, o programa pode ser carregado em qualquer
posição de memória, e o loader é responsável pela relocação no momento do
carregamento.
Depurador
O desenvolvimento de programas está sujeito a erros de lógica,
independentemente de metodologias utilizadas pelo programador. A depuração é um
dos estágios desse desenvolvimento, e a utilização de ferramentas adequadas é
essencial para acelerar o processo de correção de programas.
O depurador é o utilitário que permite ao usuário controlar a execução de um
programa a fim de detectar erros na sua estrutura. Este utilitário oferece ao usuário
recursos como:
 Acompanhar a execução de um programa instrução por instrução;
 Possibilitar a alteração e visualização do conteúdo de variáveis;
 Implementar pontos de parada dentro do programa, de forma que, durante a
execução, o programa para nesses pontos;
 Especificar que, toda vez que o conteúdo de uma variável for modificado, o
programa envie uma mensagem.
Linguagem de Controle
Também denominada a linguagem de comando, é a forma mais direta de um
usuário se comunicar com o sistema operacional. Esta linguagem é oferecida por cada
sistema operacional para que, através de comandos simples, o usuário possa ter acesso
a rotinas especificas do sistema.
Interpretador de Comandos (Shell)
O sistema operacional é o código executor de chamadas de sistema. Os editores,
compiladores, montadores, ligadores e interpretadores de comando não fazem parte do
Programa
Executável
Módulo
Objeto
Compilador
Módulo
Fonte
Módulo
Objeto
Módulo
Fonte
LinkerCompilador
Módulo
Objeto
Módulo
Fonte
Compilador
19
sistema operacional, apesar de serem softwares muito importantes e muito úteis. Esses
comandos quando digitados pelos usuários, são interpretados pelo Shell, verifica sua
sintaxe, envia mensagens de erro e faz chamadas a rotinas do sistema. Dessa forma o
usuário dispõe de uma interface interativa com o sistema operacional, para realizar
tarefas como acessar uma arquivo em disco ou consultar um diretório.
Linguagem de Máquina
A linguagem de máquina de um computador é a linguagem de programação que
o processador realmente consegue entender. Cada processador possui um conjunto
único de instruções de máquina, definido pelo próprio fabricante. As instruções
especificam detalhes, como registradores, modos de endereçamento e tipos de dados,
que caracterizam um processador e suas potencialidades.
Microprogramação
Um programa em linguagem de máquina é executado diretamente pelo hardware
em processadores de arquitetura RISC, porém em máquinas CISC isto não acontece.
Neste caso, como podemos observar na Figura 3, entre os níveis de linguagem de
máquina e do hardware, existem ainda o da microprogramação.
Os microprogramas definem a linguagem de máquina de cada computador.
Apesar de cada computador possui níveis de microprogramação diferentes, existem
muitas semelhanças nessa camada se compararmos os diversos equipamentos. Uma
máquina possui, aproximadamente 25 microinstruções básicas, que são interpretadas
pelos circuitos eletrônicos.
Processos
Um conceito chave da teoria dos sistemas operacionais é o conceito de processo.
Um processo é basicamente um programa em execução, sendo constituído do código
executável, dos dados referentes ao código.
Chamadas de Sistema
Os programas de usuário solicitam serviços do sistema operacional através da
execução de chamadas de sistema. A cada chamada corresponde um procedimento de
uma biblioteca de procedimentos que o programa do usuário pode chamar.
Arquivos
Arquivos são mecanismos de abstração que fornece uma forma de armazenar
recuperar informações em disco. Isto deve ser feito de uma forma que mantenha o
usuário isolado dos detalhes a respeito de como as informações são armazenadas, e de
como os discos efetivamente trabalha.
20
2. Tipos de Sistemas Operacionais
Tipos de
Sistemas Operacionais
Sistemas
Monoprogramáveis/
Monotarefa
Sistemas
Multiprogramáveis/
Multitarefa
Sistemas
Com Múltiplos
Processadores
2.1 Sistemas Monoprogramáveis/Monotarefa
Os primeiros sistemas operacionais eram voltados tipicamente para a execução
de um único programa. Qualquer outra aplicação, para ser executada, deveria aguardar
o término do programa corrente. Neste tipo de sistema, o processador, a memória e os
periféricos permanecem exclusivamente dedicados à execução de um único programa.
Os sistemas monoprogramáveis estão diretamente ligados ao surgimento, na
década de 50/60, dos primeiros computadores. Embora os sistemas operacionais já
tivessem evoluído com as tecnologias de multitarefa e multiprogramáveis, os sistemas
monoprogramáveis voltaram a ser utilizados na plataforma de microcomputadores
pessoais e estações de trabalho devido à baixa capacidade de armazenamento destas
máquinas, na época.
Era muito clara a desvantagem deste tipo de sistema, no que diz respeito à
limitação de tarefas (uma de cada vez), o que provocava um grande desperdício de
recursos de hardware.
Sistema Monoprogramável/Monotarefa
CPU
Memória
Principal
_______
_______
_______
_______
_______
Programa/Tarefa
Dispositivo
s E/S
21
Comparados a outros sistemas, os monoprogramáveis são de simples
implementação, não existindo muita preocupação com problemas decorrentes do
compartilhamento de recursos como memória, processador e dispositivos de E/S.
2.2 Sistemas Multiprogramáveis/Multitarefa
Constituindo-se uma evolução dos sistemas monoprogramáveis, neste tipo de
sistema os recursos computacionais são compartilhados entre os diversos usuários e
aplicações: enquanto um programa espera por um evento, outros programas podem
estar processando neste mesmo intervalo de tempo. Neste caso, podemos observar o
compartilhamento da memória e do processador. O sistema operacional se incumbe de
gerenciar o acesso concorrente aos seus diversos recursos, como processador, memória
e periféricos, de forma ordenada e protegida, entre os diversos programas.
As vantagens do uso deste tipo de sistema são a redução do tempo de resposta
das aplicações, além dos custos reduzidos devido ao compartilhamento dos recursos do
sistema entre as diferentes aplicações. Apesar de mais eficientes que os
monoprogramáveis, os sistemas multiprogramáveis são de implementação muito mais
complexa.
Sistema Multiprogramável/Multitarefa
CPU
Memória
Principal
_______
_______
_______
_______
_______
Dispositiv os E/S
_______
_______
_______
_______
_______
_______
_______
_______
_______
_______ _______
_______
_______
_______
_______Programa/Tarefa
Programa/Tarefa
Programa/Tarefa Programa/Tarefa
22
Os sistemas multiprogramáveis/multitarefa podem ser classificados de acordo
com a forma com que suas aplicações são gerenciadas, podendo ser divididos em
sistemas batch, de tempo compartilhado e de tempo real, de acordo com a figura
abaixo.
Sistemas
Multiprogramáveis/
Multitarefa
Sistemas BATCH
Sistemas de
Tempo Compartilhado
Sistemas de
Tempo Real
2.2.1 Sistemas BATCH
Foram os primeiros sistemas multiprogramáveis a serem implementados na
década de 60. Nesta modalidade, os programas eram submetidos para execução através
de cartões perfurados e armazenados em disco ou fita, para posterior execução. Vem
daí o nome batch (lote de cartões). O processamento em batch tem como característica
não exigir interação do usuário com o sistema ou com a aplicação. Todas as entradas
ou saídas são implementadas por meio de algum tipo de memória secundária,
geralmente disco ou fita. Aplicações deste tipo eram utilizadas em cálculo numérico,
compilações, back-ups, etc.
Estes sistemas, se bem projetados, podem ser bastante eficientes devido à
melhor utilização do processador, mas podem oferecer tempos de resposta bastante
longos. Atualmente, os sistemas operacionais simulam este tipo de processamento, não
havendo sistemas dedicados a este tipo de execução.
2.2.2 Sistemas de Tempo Compartilhado
Também chamados sistemas de time-sharing, permitem que diversos programas
sejam executados a partir da divisão de tempo do processador em pequenos intervalos,
denominados fatia de tempo (ou time-slice). Caso a fatia de tempo não seja suficiente
para a conclusão do programa, este é interrompido pelo sistema operacional e
substituído no processador por outro, enquanto aguarda nova fatia de tempo. Neste
tipo de processamento, cada usuário tem a impressão de que a máquina está dedicada
ao seu programa, como se ele fosse o único usuário a se utilizar do sistema.
Geralmente permitem interação do usuário com a aplicação através de
terminais compostos por monitor, teclado e mouse. Estes sistemas possuam uma
linguagem de controle que permite ao usuário interagir com o sistema operacional
através de comandos. Assim, é possível verificar arquivos armazenados em disco ou
23
cancelar execução de programas. Normalmente, o sistema responde em apenas alguns
segundos à maioria destes comandos, o que se levou a chamá-los também de sistemas
on-line.
A maioria das aplicações comerciais atualmente é processada em ambiente de
tempo compartilhado, que oferece tempos baixos de respostas a seus usuários e
menores custos, em função do alto grau de compartilhamento dos diversos recursos do
sistema.
2.2.3 Sistemas de Tempo Real
Este tipo de sistema é implementado de forma bastante semelhante ao de tempo
compartilhado. O que caracteriza a diferença entre eles é o tempo exigido no
processamento das aplicações.
Enquanto nos sistemas de tempo compartilhado o tempo de processamento pode
variar sem comprometer as aplicações em execução, nos sistemas de tempo real os
tempos de execução devem estar dentro de limites rígidos, que devem ser obedecidos,
caso contrário poderão ocorrer problemas irreparáveis.
No sistema de tempo real não existe a idéia de fatia de tempo como nos sistemas
de tempo compartilhado. Um programa ocupa o processador o tempo que for
necessário ou até que apareça outro com um nível de prioridade maior. Esta prioridade
de execução é definida pela própria aplicação e não pelo sistema operacional, como nos
sistemas de tempo compartilhado.
Estes sistemas são utilizados em aplicações de controle de processos, como
monitoramento de refinarias de petróleo, controle de tráfego aéreo, de usinas, ou em
qualquer aplicação onde o tempo de processamento é fator fundamental.
2.3 Sistemas com Múltiplos Processadores
Os sistemas com múltiplos processadores caracterizam-se por possuir duas ou mais
CPUs interligadas e trabalhando em conjunto. A vantagem deste tipo de sistema é
permitir que vários programas sejam executados ao mesmo tempo ou que um
mesmo programa seja subdividido em várias partes para serem executadas
simultaneamente em mais de um processador.
Esta técnica permitiu a criação de sistemas computacionais voltados para
processamento científico, prospecção de petróleo, simulações, processamento de
imagens e CAD.
Um fator chave no desenvolvimento dos sistemas multiprocessados é a forma de
comunicação entre as CPUs e o grau de compartilhamento da memória e dos
24
dispositivos de E/S. Em função destes fatores, podemos classificar os sistemas
multiprocessados de acordo com a figura a seguir:
Sistemas
Com
Múltiplos
Processadores
Sistemas
Fortemente
Acoplados
Sistemas
Fracamente
Acoplados
Simétricos Assimétricos Redes Distribuídos
Tipos de Sistemas com Múltiplos Processadores
Na figura podemos perceber a divisão dos sistemas multiprocessados em duas
categorias iniciais: sistemas fortemente acoplados e fracamente acoplados. A grande
diferença entre estas duas categorias é que nos sistemas fortemente acoplados
existe apenas uma memória a ser compartilhada pelos processadores do conjunto,
enquanto que nos fracamente acoplados cada sistema tem sua própria memória
individual. A taxa de transferência entre processadores e
memória em sistemas fortemente acoplados é muito maior que nos fracamente
acoplados.
Nos sistemas fortemente acoplados a memória principal e os dispositivos de E/S
são gerenciados por um único sistema operacional. Quando todos os processadores
na arquitetura são iguais, diz-se que o sistema é simétrico. No entanto, quando os
processadores são diferentes, dá-se à arquitetura a denominação assimétrica.
Nos sistemas fracamente acoplados, como os processadores estão em
arquiteturas diferentes, somente interligados por cabos de interconexão, todos os
CPU constitui uma máquina independente, com memória própria, dispositivos de E/S
e sistemas operacionais independentes.
Nesta subdivisão, temos como exemplo as redes e os sistemas distribuídos.
No ambiente de rede, existem dois ou mais sistemas independentes (hosts),
interligados por linhas telefônicas, que oferecem algum tipo de serviço aos demais,
permitindo que um host compartilhe seus recursos, como impressora e diretórios,
com os outros hosts da rede.
25
Enquanto nos sistemas em rede os usuários têm conhecimento dos hosts e seus
serviços, nos sistemas distribuídos os sistema operacional esconde os detalhes dos
hosts individuais e passa a tratá-los como um conjunto único, como se fosse um
sistema só, fortemente acoplado. Os sistemas distribuídos permitem, por exemplo,
que uma aplicação seja dividida em partes e que cada parte seja executada por
hosts diferentes na rede. Para os usuários e suas aplicações é como se não existisse
a rede, mas um único sistema centralizado.
Outros exemplos de sistemas distribuídos são os clusters. Em um cluster podem
existir dois ou mais servidores ligados por algum tipo de conexão de alto
desempenho, e o usuário não conhece os nomes dos membros do cluster e nem
quantos são. Quando é necessário algum serviço, basta solicitar ao cluster para
obtê-lo, sem se preocupar com quem vai dispor e oferecer tal serviço. Clusters são
muito utilizados em servidores de bancos de dados e Web.
3. Sistemas Multiprogramáveis
Um Sistema Operacional pode ser visto como um conjunto de rotinas que executam
concorrentemente de forma ordenada. A possibilidade de um processador executar
instruções em paralelo com operações de entrada e saída permite que diversas tarefas
sejam executadas concorrentemente. É este conceito de concorrência o princípio
fundamental para o projeto e implementação de sistemas multiprogramáveis.
Os sistemas multiprogramáveis surgiram a partir das limitações dos sistemas
monoprogramáveis onde os recursos computacionais como processador, memória e
dispositivos de E/S eram utilizados de maneira muito pouco eficiente, limitando seu
desempenho, com muitos destes recursos permanecendo ociosos por longos períodos
de tempo.
Nos sistemas monoprogramáveis somente um programa pode estar em execução de
cada vez, permanecendo o processador dedicado exclusivamente a uma tarefa, ficando
ocioso enquanto uma operação de leitura em disco é realizada. O tempo de espera é
relativamente longo, já que as operações de E/S são muito lentas se comparadas à
velocidade de operação do processador.
Outro aspecto a ser considerado é a sub-utilização da memória principal, onde um
programa nem sempre ocupa todo o espaço disponível, ficando o restante inutilizado.
Nos sistemas multiprogramáveis vários programas podem ser alocados na memória,
concorrendo pelo uso do processador. Dessa forma, quando um programa solicita uma
operação de E/S, outros programas poderão utilizar o processador, deixando a CPU
menos ociosa e tornando o uso da memória mais eficiente, pois existem vários
residentes e se revezando na utilização do processador.
26
A utilização concorrente da CPU deve ser feita de maneira que, quando um
programa perde o uso do processador e depois retorna para continuar sua execução,
seu estado deve ser idêntico ao do momento em que foi interrompido. O programa
deverá continuar sua execução exatamente na instrução seguinte àquela onde havia
parado, aparentando ao usuário que nada aconteceu. Em sistemas de tempo
compartilhado existe a impressão de que o computador está inteiramente dedicado ao
usuário, ficando esse mecanismo totalmente transparente aos usuários.
Quanto ao uso dos periféricos, é comum nos sistemas monoprogramáveis é comum
termos, por exemplo, impressoras paradas por um grande período de tempo e discos
com acesso restrito a um único usuário. Esses problemas são minimizados nos sistemas
multiprogramáveis, onde é possível compartilhar os dispositivos de E/S, como
impressoras e discos, entre diversos usuários e aplicativos.
3.1 Interrupção e Exceção
Durante a execução de um programa, alguns eventos inesperados podem
ocorrer, ocasionando um desvio forçado no seu fluxo normal de execução. Esses
eventos são conhecidos como interrupção ou exceção, e podem ser resultado de
sinalizações de algum dispositivo de hardware externo ao ambiente
memória/processador. A diferença entre interrupção e exceção é dada pelo tipo de
evento ocorrido, embora alguns autores e fabricantes não façam tal distinção.
A interrupção é o mecanismo que permitiu a implementação da concorrência nos
computadores, sendo o fundamento básico dos sistemas multiprogramáveis/multitarefa.
Uma interrupção é sempre gerada por um evento externo ao programa e, sendo
assim, independe da instrução que está sendo executada. Um exemplo de interrupção é
quando um dispositivo avisa ao processador que alguma operação de E/S está
completa. Neste caso, o processador deve interromper o programa para tratar o término
da operação.
Ao término de cada instrução a Unidade de Controle (situada dentro do
processador) verifica a ocorrência de algum tipo de interrupção. Desta forma, o
programa em execução é interrompido e seu controle é desviado para uma rotina do
sistema responsável por tratar o evento ocorrido, denominada rotina de tratamento de
interrupção. Para que o programa interrompido possa retornar posteriormente à sua
execução é necessário que, no momento da interrupção, um certo conjunto de
informações sobre sua execução seja preservado.
27
Essas informações consistem basicamente no conteúdo dos registradores internos
da CPU, que deverão ser restaurados para a continuação do programa.
Programa
Salva
Contexto
Identifica
a origem
Interrupção
Trata a
Interrupção
Rotina
De
Restaura
Contexto
Tratamento
Mecanismo de interrupção/exceção
Para cada tipo de interrupção existe uma rotina de tratamento associada, para
onde o fluxo do programa é desviado. A identificação do tipo de evento ocorrido é
fundamental para determinar o endereço da rotina adequada ao tratamento da
interrupção.
As interrupções podem ser geradas:
- Pelo programa do usuário (entrada de dados pela console ou teclado)
- Pelo hardware (operações de E/S)
- Pelo sistema operacional (ao término da fatia de tempo do processador destinada
ao programa)
As interrupções sempre são tratadas pelo Sistema Operacional.
A exceção é um evento semelhante à interrupção, pois também de fato
interrompe um programa.
A principal diferença é que a exceção é o resultado da execução de uma
instrução dentro do próprio programa, como a divisão por zero ou a ocorrência de
um overflow (estouro de capacidade de um campo) numa operação aritmética.
Na maioria das vezes, a exceção provoca um erro fatal no sistema, causando o
término anormal do programa. Isto se deve ao fato de que a exceção é melhor
tratada dentro do próprio programa, com instruções escritas pelo programador.
28
3.2 Buffer
A técnica de buffering consiste nua utilização de uma área em memória principal,
denominada buffer, criada e mantida pelo Sistema Operacional, com a finalidade de
auxiliar a transferência de dados entre dispositivos de E/S e a memória. O buffer
permite minimizar a disparidade de velocidade entre o processador e os dispositivos
de E/S, e tem como objetivo principal manter tanto os dispositivos de E/S como o
processador ocupados a maior parte do tempo.
A unidade de transferência do mecanismo de buffering é o registro. O buffer
deve permitir o armazenamento de vários registros, de forma que o processador
tenha à sua disposição dados suficientes para processar sem ter que interromper o
programa a cada leitura/gravação no dispositivo de E/S. Enquanto o processador
está ocupado processando, os dispositivos de E/S estão efetuando operações para
outros processos.
3.3 SPOOL
A técnica de spooling foi criada inicialmente para auxiliar a submissão de
processos ao sistema, sendo os processos gravados em fita para posterior leitura e
execução.
Com o aparecimento dos terminais para acesso ao sistema, esta técnica teve sua
função adaptada para armazenar o resultado da impressão dos programas em
execução.
Isto é conseguido através da criação e manutenção, pelo Sistema Operacional de
uma grande área em disco, com a finalidade de simular uma impressora. Desta
forma, todos os usuários e seus programas imprimem, na verdade, para este arquivo
em disco, liberando a associação dos dispositivos de impressão diretamente aos
programas que estão executando.
O usuário consegue visualizar o resultado de seus programas na tela dos
terminais, gerando assim mais eficiência e economia de papel e fita de impressão. À
proporção que vão sendo gerados no SPOOL, os relatórios vão sendo liberados para
impressão pelo operador do sistema, de forma ordenada e seqüencial. Para cada
usuário, é como se ele tivesse uma impressora associada para si.
3.4 Reentrância
É comum, em sistemas multiprogramáveis, vários usuários utilizarem os
mesmos aplicativos simultaneamente, como editores de texto, compiladores e outros
utilitários. Nesta situação, se cada usuário que utilizasse um destes aplicativos
trouxesse o código executável para a memória, haveria então diversas cópias de um
29
mesmo programa ocupando espaço na memória, o que causaria um grande
desperdício de espaço.
Reentrância é a capacidade de um código executável (código reentrante) ser
compartilhado por vários usuários, exigindo apenas uma cópia do programa em
memória. A reentrância permite que cada usuário esteja executando um trecho
diferente do código reentrante, manipulando dados próprios, exclusivos de cada
usuário.
Normalmente códigos reentrantes são utilizados em utilitários do sistema, como
editores, compiladores e linkers, promovendo um uso mais eficiente da memória e
um desempenho maior do sistema. Alguns sistemas operacionais permitem a
possibilidade de se implementar o conceito de reentrância em aplicações
desenvolvidas pelo próprio usuário, mas não é comum.
3.5 Segurança e Proteção do Sistema
A eficiência proporcionada por um ambiente multiprogramável implica em
maior complexidade do sistema operacional, já que alguns problemas de proteção
surgem como decorrência deste tipo de implementação.
Considerando-se que diversos usuários estão compartilhando os mesmos
recursos, como memória, processador e dispositivos de E/S, faz-se então necessário
existir mecanismos de proteção para garantir a confiabilidade e a integridade dos
dados e programas dos usuários, além do próprio sistema operacional.
Como vários programas ocupam a memória principal simultaneamente, cada
usuário possui uma área reservada onde seus programas e dados são armazenados
durante o processamento. O sistema operacional deve possuir mecanismos de
proteção a essas áreas, de forma a preservar as informações nela contidas. Caso um
programa tente acessar uma posição de memória fora de sua área, um erro
indicando a violação de acesso deve ocorrer, sendo responsabilidade do sistema
operacional o controle eficiente do compartilhamento dos recursos e a sincronização
da comunicação, evitando problemas de consistência.
Semelhante ao compartilhamento da memória, um disco também armazena
arquivos de diferentes usuários. Novamente o sistema operacional deve garantir a
integridade e confiabilidade dos dados de cada usuário.
Todo o controle da segurança do sistema é implementado pelo sistema
operacional, a partir de mecanismos como grupos de usuários, perfis de usuários e
direitos de acesso.
30
A proteção começa geralmente no procedimento de login, quando o usuário
faz a conexão inicial ao sistema, através de nome do usuário e senha. A partir daí,
toda uma estrutura de controle é iniciada, em função da identificação do usuário, no
sentido de proteger as áreas alocadas em memória, em disco, e até mesmo o uso do
processador.
A proteção e segurança do sistema pode ser implementada também a nível do
programa do usuário, com a inserção de rotinas específicas dentro do programa para
controlar o acesso de usuários ao aplicativo, além de controlar internamente quais
telas e funções tal usuário pode acessar.
3.6 Operações de Entrada e Saída
Nos primeiros sistemas computacionais, a comunicação entre o processador e os
periféricos era direta, sendo o processador responsável por efetuar as operações de
leitura/gravação nos dispositivos.
O surgimento do controlador de E/S permitiu ao processador agir de maneira
independente dos dispositivos de E/S. Com esse novo elemento, o processador não
mais se comunicava diretamente com os periféricos, mas sim via controlador.
Passou a existir então três maneiras básicas de se implementar operações de
E/S:
- por programa: o processador sincronizava-se com o periférico e iniciava a
transferência de dados, ficando permanentemente testando o estado do
periférico para saber quando a operação chegaria ao seu final. O
processador ficava ocupado até o término da operação de E/S.
- por interrupção: evoluindo o processo anterior, após o início da
transferência de dados o processador passou a ficar livre para realizar
outras tarefas. Assim, em determinados intervalos de tempo o sistema
operacional deveria testar o estado dos periféricos para saber se a operação
de E/S tinha terminado. Este tipo de operação permitiu um certo grau de
paralelismo, já que um programa poderia ser processado enquanto uma
operação de leitura/gravação em periférico estava sendo efetuada. Isto
permitiu a implementação dos primeiros sistemas multiprogramáveis.
31
Dispositivos de E/S
- A necessidade de se transmitir cada vez um volume maior de informações
trouxe uma evolução significativa nas operações de E/S. Em vez de o
processador ser interrompido várias vezes para interrogar os dispositivos
para saber do resultado das operações, o que diminuía sua eficiência devido
ao excesso de interrupções, foi criado um dispositivo de transferência de
dados chamado de DMA – Direct Memory Access. Esta técnica permite que
um bloco de dados seja transferido entre a memória e os dispositivos de E/S
sem a intervenção do processador, a não ser no início (quando a operação é
solicitada) e no final da transferência (quando o processador é notificado
sobre o término da operação). Na figura a seguir, podemos ver a
implementação do canal de E/S gerenciando vários controladores e, ligados
a estes, vários periféricos.
CPU
Memória
Principal
Controlador
32
O canal de E/S funciona então como uma interface entre os controladores e
a CPU, como mostra a figura a seguir:
CPU
Memória
Principal
Controlador Controlador
Canal de E/S
Dispositivos de E/S Dispositivos de E/S
33
4. Estrutura do Sistema Operacional
4.1 Estrutura do Sistema
USUÁRIO
UTILITÁRIOS
NÚCLEO
DO SISTEMA
HARDWARE
Hierarquia do Sistema Operacional
O sistema operacional é formado por um conjunto de rotinas que oferecem
serviços essenciais aos usuários, às suas aplicações, e também ao próprio sistema. A
esse conjunto de rotinas dá-se o nome de núcleo do sistema ou kernel.
É fundamental não se confundir o núcleo do sistema com aplicações, utilitários ou
o interpretador de comandos, que acompanham o sistema operacional. As aplicações
são utilizadas pelos usuários de maneira transparente, escondendo todos os detalhes
da interação com o sistema. Os utilitários, como os compiladores, editores de texto e
interpretadores de comandos permitem aos usuários, desenvolvedores e
administradores de sistema uma interação amigável com o sistema.
Existe uma grande dificuldade em compreender a estrutura e o funcionamento do
sistema operacional, pois ele não é executado como uma aplicação tipicamente
seqüencial, com início, meio e fim. Os procedimentos do sistema são executados
concorrentemente sem uma ordem específica ou predefinida, com base em eventos
dissociados do tempo. Muitos desses eventos estão relacionados ao hardware e a
tarefas internas do próprio sistema operacional.
4.2 Funções do Sistema
As principais funções do núcleo encontradas na maioria dos sistemas comerciais
são as seguintes:
34
- Tratamento de interrupções e exceções: já explicados anteriormente, em
detalhes;
- Criação e eliminação de processos: função responsável por alocar em memória
todos os recursos necessários à execução do processo. É esta função que aloca
em memória, além do executável, o contexto do processo, o buffer de
leitura/gravação (se necessário), além de listas e estruturas de controle utilizadas
pelo sistema operacional. Nesta função também são estabelecidos vínculos físicos
a arquivos em disco, fitas e outros periféricos que serão usados no
processamento. Quando do fim da execução do programa, é esta função que
desaloca todos os espaços em memória ocupados pelo processo, liberando-os
para futuras alocações a outros processos;
- Escalonamento e controle de processos: função responsável por organizar a fila
de acesso ao processador. Utiliza parâmetros do sistema e do perfil do usuário
para estabelecer a ordem em que os processos permanecerão à espera pela
liberação da CPU, para então entrarem em execução;
- Gerência de memória: função responsável por fornecer à função de
criação/eliminação de processos os endereços em memória disponíveis para
alocação;
- Gerência de sistemas de arquivos: responsável pelo gerenciamento dos arquivos,
bem como seu compartilhamento pelos diversos usuários, implementando
mecanismos de controle da segurança e direitos de acesso às áreas utilizadas
pelos usuários nos diversos dispositivos;
- Gerência de dispositivos de E/S: responsável por gerenciar os dispositivos,
prestando auxílio à criação/eliminação de processos e á gerência de sistemas de
arquivos no que diz respeito ao endereçamento e associação de arquivos em
periféricos;
- Suporte a redes e teleprocessamento: é esta função que executa todos os
serviços de rede, fazendo o empacotamento das mensagens vindas dos terminais
para a CPU central e vice-versa, além de controlar e confirmar o envio e
recebimento de todas as mensagens que trafegam pela rede;
- Contabilização de uso do sistema: responsável por contabilizar o uso de todos os
recursos do sistema consumidos pelos usuários e suas aplicações. São
registrados: tempo de CPU, tempo corrido, quantidade de área alocada em
memória, em disco, linhas impressas, páginas de papel, entre outros. Isto se faz
necessário para servir de subsídio para análise de performance, estatísticas de
35
gastos com material de consumo e também para definição de custos de
processamento.;
- Auditoria e segurança do sistema: função extremamente importante, pois detecta
e registra (num arquivo especial de LOG) todas as ocorrências de erro e violação
de direitos de acesso ao sistema, aos arquivos, à memória e a todos os recursos
do sistema. O arquivo de LOG é usado pela gerência de sistemas, com o intuito
de verificar e aperfeiçoar os mecanismos de segurança e proteção ao sistema.
A estrutura do sistema, a maneira como ele é organizado e o inter-relacionamento
entre seus diversos componentes pode variar conforme a concepção do projeto do
sistema.
4.3 System Calls
Uma grande preocupação no projeto de sistemas operacionais se refere à
implementação de mecanismos de proteção ao núcleo do sistema e também o controle
de acesso aos serviços oferecidos pelo sistema. Caso uma aplicação que tenha acesso
ao núcleo realize alguma operação que altere sua integridade, todo o sistema poderá
ficar comprometido e inoperante.
As system calls podem ser entendidas como uma porta de entrada para acesso ao
núcleo do sistema e aos seus serviços. Sempre que um usuário ou uma aplicação
necessita de algum serviço do sistema, é realizada uma chamada a uma de suas rotinas
através de uma system call.
Através dos parâmetros fornecidos na system call, a solicitação é processada e
uma resposta é enviada à aplicação juntamente com um estado de conclusão indicando
o sucesso ou não da operação. Para cada serviço disponível existe uma system call
associada, e cada sistema operacional possui seu próprio conjunto de chamadas, com
nomes, parâmetros e formas de ativação específicos. Isto explica por que uma aplicação
desenvolvida utilizando serviços de um determinado sistema operacional não pode ser
diretamente portada para um outro sistema.
[]
Aplicação
System Call
Núcleo do
Sistema
Operacional
Biblioteca Hardware
36
4.4 Modos de Acesso
Existem certas instruções que não podem ser colocadas diretamente à disposição
das aplicações, pois a sua utilização indevida poderia ocasionar sérios problemas à
integridade do sistema. Imagine que uma aplicação atualize um arquivo em disco. O
programa, por si só, não pode especificar diretamente as instruções que acessam seus
dados no disco pois, como o disco é um recurso compartilhado, sua utilização deve ser
gerenciada unicamente pelo sistema operacional. Tal procedimento evita que a
aplicação possa ter acesso a qualquer área do disco indiscriminadamente, o que poderia
comprometer a segurança e a integridade do sistema de arquivos.
Assim, fica claro que existem certas instruções que só podem ser executadas pelo
sistema operacional ou sob sua supervisão. As instruções que têm o poder de
comprometer o sistema são chamadas de instruções privilegiadas, enquanto as
instruções que não comprometem o funcionamento do sistema chamam-se instruções
não-privilegiadas.
Para que uma aplicação possa executar uma instrução privilegiada, é preciso que
haja um mecanismo de proteção no processador, chamado modos de acesso. Existem
basicamente dois modos de acesso ao processador: modo usuário e modo kernel.
Quando o processador trabalha no modo usuário, somente instruções não-privilegiadas
podem ser executadas, tendo assim acesso a um número limitado de instruções do
processador. Já no modo kernel (ou supervisor), a aplicação pode ter acesso ao
conjunto total de instruções do processador.
A melhor maneira de controlar o acesso às instruções privilegiadas é permitir que
apenas o sistema operacional tenha acesso a elas. Sempre que uma aplicação necessita
executar uma instrução privilegiada, a solicitação deve ser feita através de uma system
call, que altera o modo de acesso ao processador do modo usuário para o modo kernel.
Ao término da execução da rotina do sistema, o modo de acesso retorna para o modo
usuário.
4.5 Arquiteturas: Sistemas monolíticos, em camadas e microkernel
- Arquitetura monolítica: é caracterizada por possuir seus módulos compilados
separadamente mas linkados formando um único e enorme programa executável.
Onde os módulos podem interagir livremente. Os primeiros sistemas operacionais
foram desenvolvidos com base nesta arquitetura, o que tornava seu
desenvolvimento e, principalmente, sua manutenção muito difíceis. Como
vantagens desta arquitetura podemos citar a rapidez de execução e simplicidade
de implementação. Como desvantagens, a limitação quanto a inovações futuras e
a dificuldade de manutenção.
37
-
-
Modo Usuário
Modo Kernel
Arquitetura monolítica
- Arquitetura em camadas: com o aumento do tamanho do código dos sistemas
operacionais, técnicas de programação estruturada e modular foram incorporadas
em seu projeto.Na arquitetura em camadas, o sistema é dividido em níveis
sobrepostos. Cada camada oferece um conjunto de funções que podem ser
utilizadas somente pelas camadas superiores. Neste tipo de implementação as
camadas mais internas são mais privilegiadas que as camadas mais externas. A
vantagem da estruturação em camadas é o isolamento das funções do sistema,
facilitando sua manutenção. Uma desvantagem é o desempenho, comprometido
devido às várias mudanças de estado do processador provocado pela mudança
de camadas. A figura a seguir mostra esta arquitetura.
Aplicação Aplicação
System call
Hardware
Núcleo
do
Sistema
38
Arquitetura em camadas
-
-
-
- Arquitetura microkernel (cliente x servidor): uma tendência nos sistemas
operacionais modernos é tornar o núcleo do sistema o menor e o mais simples
possível. Para implementar esta idéia, os serviços do sistema são disponibilizados
através de processos, onde cada um é responsável por oferecer um conjunto
específico de funções, como gerência de arquivos, gerência de processos,
gerência de memória e escalonamento. Sempre que uma aplicação deseja algum
serviço, é realizada uma solicitação ao processo responsável. Neste caso, a
aplicação que está solicitando o serviço é chamada de cliente, enquanto o
processo que responde à solicitação é chamado de servidor. Um cliente, que
pode ser uma aplicação do usuário ou um outro componente do sistema
operacional, solicita um serviço enviando uma mensagem para o servidor. O
servidor responde ao cliente através de uma outra mensagem. A principal função
do núcleo é realizar a comunicação, ou seja, a troca de mensagens entre o
cliente e o servidor. A utilização deste modelo permite que os servidores operem
em modo usuário, não tendo acesso direto a certos componentes do sistema.
Apenas o núcleo do sistema, responsável pela comunicação entre clientes e
servidores, executa em modo kernel. Como conseqüência, se ocorrer um erro em
algum servidor,este poderá parar, mas o sistema não ficará inteiramente
comprometido, aumentando assim a sua disponibilidade. Como os servidores se
comunicam através de trocas de mensagens, não importa se os clientes e
servidores processam em um sistema com um único processador, com vários
processadores ou ainda em um ambiente de sistema distribuído. A arquitetura
microkernel permite isolar as funções do sistema operacional por diversos
servidores pequenos e dedicados a serviços específicos, tornando o núcleo
menor, mais fácil de depurar (procurar e solucionar erros) e, com isso,
aumentando a sua confiabilidade. Apesar de todas as vantagens deste modelo,
sua implementação é muito difícil. A começar pelo desempenho, comprometido
devido às várias trocas de modo de acesso a cada troca de mensagens entre
Camada Usuário
Camada Supervisor
Camada Executivo
Kernel
39
cliente e servidor. Outro problema é que certas funções do sistema operacional,
como operações de E/S, exigem acesso direto ao hardware. Assim, o núcleo do
sistema, além de promover a comunicação entre clientes e servidores, passa a
incorpora funções críticas do sistema, como escalonamento, tratamento de
interrupções e gerência de dispositivos.
Modo Usuário
Modo Kernel
9. BIBLIOGRAFIA
Arquitetura de Sistemas Operacionais
Francis B. Machado
Ed. LTC
Sistemas Operacionais: Conceitos e Aplicações
Abraham Silberschatz
Ed. Campus
Sistemas Operacionais Modernos
A.S. Tanenbaum
Ed. Campus
Microkernel
Hardware
Servidor
Arquivo
Servidor
Process
o
Servidor
Memória
Servidor
Impressã
o
Servidor
Rede

Weitere ähnliche Inhalte

Was ist angesagt?

Gerência de processos
Gerência de processosGerência de processos
Gerência de processosVirgínia
 
Sistema operacional
Sistema operacionalSistema operacional
Sistema operacionalMichael Soto
 
Noções básicas de Sistemas Operacionais
Noções básicas de Sistemas OperacionaisNoções básicas de Sistemas Operacionais
Noções básicas de Sistemas OperacionaisLuciano Crecente
 
Sistemas Operacionais - 03 - Tipos e Estrutura dos SO
Sistemas Operacionais - 03 - Tipos e Estrutura dos SOSistemas Operacionais - 03 - Tipos e Estrutura dos SO
Sistemas Operacionais - 03 - Tipos e Estrutura dos SOMauro Duarte
 
Sistemas Operacionais - 2 - Tipos de Sistemas Computacionais
Sistemas Operacionais - 2 - Tipos de Sistemas ComputacionaisSistemas Operacionais - 2 - Tipos de Sistemas Computacionais
Sistemas Operacionais - 2 - Tipos de Sistemas ComputacionaisMauro Duarte
 
SO-01 Introdução aos Sistemas Operacionais
SO-01 Introdução aos Sistemas OperacionaisSO-01 Introdução aos Sistemas Operacionais
SO-01 Introdução aos Sistemas OperacionaisEduardo Nicola F. Zagari
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas OperacionaisAdir Kuhn
 
Componentes do Sistema operacional
Componentes do Sistema operacional Componentes do Sistema operacional
Componentes do Sistema operacional Rodrigo Rodrigues
 
Sistemas Operacionais - Parte 1
Sistemas Operacionais - Parte 1Sistemas Operacionais - Parte 1
Sistemas Operacionais - Parte 1Rodrigo Piovesana
 
Questoesde fso
Questoesde fsoQuestoesde fso
Questoesde fsopaulocsm
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas OperativosJoseVieira75
 
Tipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisTipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisJesse Teixeira
 
Silberschatz sistemas operacionais
Silberschatz   sistemas operacionaisSilberschatz   sistemas operacionais
Silberschatz sistemas operacionaisDeryk Sedlak
 
2010 02 26 Sistemas Operacionais Aula1
2010 02 26 Sistemas Operacionais Aula12010 02 26 Sistemas Operacionais Aula1
2010 02 26 Sistemas Operacionais Aula1Universal.org.mx
 
Cap05 processos e threads
Cap05   processos e threadsCap05   processos e threads
Cap05 processos e threadsfernandao777
 
Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Pepe Rocker
 

Was ist angesagt? (18)

Gerência de processos
Gerência de processosGerência de processos
Gerência de processos
 
S.o aula 5678
S.o aula 5678S.o aula 5678
S.o aula 5678
 
Sistema operacional
Sistema operacionalSistema operacional
Sistema operacional
 
Noções básicas de Sistemas Operacionais
Noções básicas de Sistemas OperacionaisNoções básicas de Sistemas Operacionais
Noções básicas de Sistemas Operacionais
 
Sistemas Operacionais - 03 - Tipos e Estrutura dos SO
Sistemas Operacionais - 03 - Tipos e Estrutura dos SOSistemas Operacionais - 03 - Tipos e Estrutura dos SO
Sistemas Operacionais - 03 - Tipos e Estrutura dos SO
 
Sistemas Operacionais - 2 - Tipos de Sistemas Computacionais
Sistemas Operacionais - 2 - Tipos de Sistemas ComputacionaisSistemas Operacionais - 2 - Tipos de Sistemas Computacionais
Sistemas Operacionais - 2 - Tipos de Sistemas Computacionais
 
SO-01 Introdução aos Sistemas Operacionais
SO-01 Introdução aos Sistemas OperacionaisSO-01 Introdução aos Sistemas Operacionais
SO-01 Introdução aos Sistemas Operacionais
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Componentes do Sistema operacional
Componentes do Sistema operacional Componentes do Sistema operacional
Componentes do Sistema operacional
 
Sistemas Operacionais - Parte 1
Sistemas Operacionais - Parte 1Sistemas Operacionais - Parte 1
Sistemas Operacionais - Parte 1
 
Sistemas Operacionais e Mercado de Trabalho
Sistemas Operacionais e Mercado de TrabalhoSistemas Operacionais e Mercado de Trabalho
Sistemas Operacionais e Mercado de Trabalho
 
Questoesde fso
Questoesde fsoQuestoesde fso
Questoesde fso
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Tipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisTipos de Sistemas Operacionais
Tipos de Sistemas Operacionais
 
Silberschatz sistemas operacionais
Silberschatz   sistemas operacionaisSilberschatz   sistemas operacionais
Silberschatz sistemas operacionais
 
2010 02 26 Sistemas Operacionais Aula1
2010 02 26 Sistemas Operacionais Aula12010 02 26 Sistemas Operacionais Aula1
2010 02 26 Sistemas Operacionais Aula1
 
Cap05 processos e threads
Cap05   processos e threadsCap05   processos e threads
Cap05 processos e threads
 
Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)
 

Ähnlich wie Apostila de sistemas operacionais emi mario gurgel

Sistemas Operacionais parte 1
Sistemas Operacionais parte 1Sistemas Operacionais parte 1
Sistemas Operacionais parte 1Matheus Brito
 
Sistemas operacionais introdução
Sistemas operacionais introduçãoSistemas operacionais introdução
Sistemas operacionais introduçãoCarlos Melo
 
Hardware e software
Hardware e softwareHardware e software
Hardware e softwarejotacabral
 
Apostila computacao
Apostila computacaoApostila computacao
Apostila computacaowebphotoshop
 
Sistemas Operacionais aula 01
Sistemas Operacionais aula 01Sistemas Operacionais aula 01
Sistemas Operacionais aula 01Diego Rodrigues
 
REVISAO GERAL DE SO- ofiicial para o simulado.pptx
REVISAO GERAL DE SO- ofiicial para o simulado.pptxREVISAO GERAL DE SO- ofiicial para o simulado.pptx
REVISAO GERAL DE SO- ofiicial para o simulado.pptxTAMARAFRANCIELLEBRIT
 
TA1 Slides Acessibilidade - Preto e Branco.pdf
TA1 Slides Acessibilidade - Preto e Branco.pdfTA1 Slides Acessibilidade - Preto e Branco.pdf
TA1 Slides Acessibilidade - Preto e Branco.pdfSandroPolizelLaurent
 
Trabalho de sistemas operativos
Trabalho de sistemas operativosTrabalho de sistemas operativos
Trabalho de sistemas operativosFrank macoo
 
SISTEMAS OPERACIOANIS 20.01.2023.pptx
SISTEMAS OPERACIOANIS 20.01.2023.pptxSISTEMAS OPERACIOANIS 20.01.2023.pptx
SISTEMAS OPERACIOANIS 20.01.2023.pptxADASVIEIRAArmazmPara
 
Evolução dos sistemas operativos
Evolução dos sistemas operativosEvolução dos sistemas operativos
Evolução dos sistemas operativosLeo Simões
 
ApresentaçãO2 Sistema Operacional
ApresentaçãO2  Sistema OperacionalApresentaçãO2  Sistema Operacional
ApresentaçãO2 Sistema OperacionalCláudia Costa
 
Infraestrutura de Software - Introdução
Infraestrutura de Software - IntroduçãoInfraestrutura de Software - Introdução
Infraestrutura de Software - IntroduçãoRodrigo Rodrigues
 
resumo-conceitos-de-sistemas-operacionais.pdf
resumo-conceitos-de-sistemas-operacionais.pdfresumo-conceitos-de-sistemas-operacionais.pdf
resumo-conceitos-de-sistemas-operacionais.pdfRafaelPilan1
 
M1_Sistemas Operativos.pptx
M1_Sistemas Operativos.pptxM1_Sistemas Operativos.pptx
M1_Sistemas Operativos.pptxDoraestevao
 
sistemas operativos.ppt
sistemas operativos.pptsistemas operativos.ppt
sistemas operativos.pptssuserb52d9e
 

Ähnlich wie Apostila de sistemas operacionais emi mario gurgel (20)

Apostila SO
Apostila SOApostila SO
Apostila SO
 
Sistemas Operacionais parte 1
Sistemas Operacionais parte 1Sistemas Operacionais parte 1
Sistemas Operacionais parte 1
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Sistemas operacionais introdução
Sistemas operacionais introduçãoSistemas operacionais introdução
Sistemas operacionais introdução
 
Hardware e software
Hardware e softwareHardware e software
Hardware e software
 
Hardware e software
Hardware e softwareHardware e software
Hardware e software
 
Apostila computacao
Apostila computacaoApostila computacao
Apostila computacao
 
Sistemas Operacionais aula 01
Sistemas Operacionais aula 01Sistemas Operacionais aula 01
Sistemas Operacionais aula 01
 
So cap01
So cap01So cap01
So cap01
 
REVISAO GERAL DE SO- ofiicial para o simulado.pptx
REVISAO GERAL DE SO- ofiicial para o simulado.pptxREVISAO GERAL DE SO- ofiicial para o simulado.pptx
REVISAO GERAL DE SO- ofiicial para o simulado.pptx
 
TA1 Slides Acessibilidade - Preto e Branco.pdf
TA1 Slides Acessibilidade - Preto e Branco.pdfTA1 Slides Acessibilidade - Preto e Branco.pdf
TA1 Slides Acessibilidade - Preto e Branco.pdf
 
Trabalho de sistemas operativos
Trabalho de sistemas operativosTrabalho de sistemas operativos
Trabalho de sistemas operativos
 
SISTEMAS OPERACIOANIS 20.01.2023.pptx
SISTEMAS OPERACIOANIS 20.01.2023.pptxSISTEMAS OPERACIOANIS 20.01.2023.pptx
SISTEMAS OPERACIOANIS 20.01.2023.pptx
 
Evolução dos sistemas operativos
Evolução dos sistemas operativosEvolução dos sistemas operativos
Evolução dos sistemas operativos
 
ApresentaçãO2 Sistema Operacional
ApresentaçãO2  Sistema OperacionalApresentaçãO2  Sistema Operacional
ApresentaçãO2 Sistema Operacional
 
Portugues
PortuguesPortugues
Portugues
 
Infraestrutura de Software - Introdução
Infraestrutura de Software - IntroduçãoInfraestrutura de Software - Introdução
Infraestrutura de Software - Introdução
 
resumo-conceitos-de-sistemas-operacionais.pdf
resumo-conceitos-de-sistemas-operacionais.pdfresumo-conceitos-de-sistemas-operacionais.pdf
resumo-conceitos-de-sistemas-operacionais.pdf
 
M1_Sistemas Operativos.pptx
M1_Sistemas Operativos.pptxM1_Sistemas Operativos.pptx
M1_Sistemas Operativos.pptx
 
sistemas operativos.ppt
sistemas operativos.pptsistemas operativos.ppt
sistemas operativos.ppt
 

Mehr von Pablo Mariano

Lista 01 - Sistemas Operacionais
Lista 01 - Sistemas OperacionaisLista 01 - Sistemas Operacionais
Lista 01 - Sistemas OperacionaisPablo Mariano
 
Lista 01- Montagem e Manutenção de Micros
Lista 01- Montagem e Manutenção de MicrosLista 01- Montagem e Manutenção de Micros
Lista 01- Montagem e Manutenção de MicrosPablo Mariano
 
Apostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelApostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelPablo Mariano
 
Apostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelApostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelPablo Mariano
 
Apostila de montagem e manutenção de computadores emi mario gurgel
Apostila de montagem e manutenção de computadores emi mario gurgelApostila de montagem e manutenção de computadores emi mario gurgel
Apostila de montagem e manutenção de computadores emi mario gurgelPablo Mariano
 

Mehr von Pablo Mariano (10)

Evolucao
EvolucaoEvolucao
Evolucao
 
Lista 01 - Sistemas Operacionais
Lista 01 - Sistemas OperacionaisLista 01 - Sistemas Operacionais
Lista 01 - Sistemas Operacionais
 
Lista 01- Montagem e Manutenção de Micros
Lista 01- Montagem e Manutenção de MicrosLista 01- Montagem e Manutenção de Micros
Lista 01- Montagem e Manutenção de Micros
 
Apostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelApostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgel
 
Apostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelApostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgel
 
Apostila de montagem e manutenção de computadores emi mario gurgel
Apostila de montagem e manutenção de computadores emi mario gurgelApostila de montagem e manutenção de computadores emi mario gurgel
Apostila de montagem e manutenção de computadores emi mario gurgel
 
Talento
TalentoTalento
Talento
 
Resiliência
ResiliênciaResiliência
Resiliência
 
Talento
TalentoTalento
Talento
 
Pense Sustentável
Pense SustentávelPense Sustentável
Pense Sustentável
 

Kürzlich hochgeladen

Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...
Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...
Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...LizanSantos1
 
A experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxA experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxfabiolalopesmartins1
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfHenrique Pontes
 
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOInvestimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOMarcosViniciusLemesL
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfaulasgege
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresLilianPiola
 
Mesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasMesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasRicardo Diniz campos
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISVitor Vieira Vasconcelos
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
Atividade com a letra da música Meu Abrigo
Atividade com a letra da música Meu AbrigoAtividade com a letra da música Meu Abrigo
Atividade com a letra da música Meu AbrigoMary Alvarenga
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresaulasgege
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 

Kürzlich hochgeladen (20)

Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...
Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...
Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...
 
A experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxA experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptx
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
 
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOInvestimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdf
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
 
Mesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasMesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecas
 
Em tempo de Quaresma .
Em tempo de Quaresma                            .Em tempo de Quaresma                            .
Em tempo de Quaresma .
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGIS
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
Atividade com a letra da música Meu Abrigo
Atividade com a letra da música Meu AbrigoAtividade com a letra da música Meu Abrigo
Atividade com a letra da música Meu Abrigo
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autores
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 

Apostila de sistemas operacionais emi mario gurgel

  • 2. 2 1. Conceitos Básicos Introdução Antes de começarmos a estudar os conceitos e os principais componentes de um sistema operacional, devemos saber primeiramente quais são suas funções básicas. Por mais complexo que possa parecer, um sistema operacional e apenas um conjunto de rotinas executado pelo processador, da mesma forma que qualquer outro programa. Sua principal função é controlar o funcionamento do computador, como um gerente dos diversos recursos disponíveis no sistema. O nome sistema operacional não é único para designar esse conjunto de programas. Nomes como monitor, executivo, supervisor ou controlador possuam, normalmente, o mesmo significado. Um sistema operacional possui inúmeras funções e resumimos essas funções, basicamente, em duas, descritas a seguir: 1.1.1 Facilidade de acesso aos recursos do sistema Um sistema de computação, ao possui, normalmente, diversos componentes, como terminais, impressoras, discos e fitas. Quando utilizamos um desses dispositivos, não nos preocupamos com a maneira como é realizada esta comunicação e os inúmeros detalhes envolvidos. Para a maioria de nós uma operação cotidiana, como, por exemplo, a leitura de um arquivo em disquete, pode parecer simples. Na realidade, existe um conjunto de rotinas específicas, controladas pelo sistema operacional, responsável por acionar a cabeça, a de leitura e gravação da unidade de disco, posicionar na trilha e setor onde estão os dados, transferir os dados do disco para a memória e, finalmente, informar ao programa a chegada dos dados. O sistema operacional, então, serve de interface entre o usuário e os recursos disponíveis no sistema, tornando esta comunicação transparente e permitindo ao usuário um trabalho mais eficiente e com menores chances de erros (Figura 1).
  • 3. 3 Figura 1 - Visão do sistema operacional como interface entre os usuários e os recursos do sistema. Este conceito de ambiente simulado, criado pelo sistema operacional, e denominado máquina virtual (virtual machine) e está presente, de alguma forma, na maioria dos sistemas atuais. É comum pensar-se que compiladores, linkers, bibliotecas, depuradores e outras ferramentas fazem parte do sistema operacional, mas, na realidade, estas facilidades são apenas utilitários, destinados a ajudar a interação do usuário com o computador. 1.1.2 Compartilhamento de recursos de forma organizada e protegida Quando pensamos em sistemas multiusuários, onde vários usuários podem estar compartilhando os mesmos recursos, como, por exemplo, memória e discos, é necessário que todos tenham oportunidade de ter acesso a esses recursos, de forma que um usuário não interfira no trabalho do outro. Se imaginarmos, por exemplo, que uma impressora possa ser utilizada por vários usuários do sistema, deverá existir algum controle para impedir que a impressão de um usuário interrompa a impressão de outro. Novamente, o sistema operacional é responsável por permitir o acesso concorrente a esse e a outros recursos, de forma organizada e protegida, dando ao usuário a impressão de ser o único a utilizá-los. O compartilhamento de recursos permite, também, a diminuição de custos, na medida em que mais de um usuário possa utilizar as mesmas facilidades concorrentemente, como discos, impressoras, linhas de comunicação etc. Não é apenas em sistemas multiusuários que o sistema operacional é importante. Se pensarmos que um computador pessoal nos permite executar várias tarefas, como imprimir um documento, copiar um arquivo pela internet ou processar uma planilha, o sistema operacional deve ser capaz de controlar a execução concorrentes de todas essas tarefas.
  • 4. 4 Máquinas de Níveis Um computador, visto somente como um gabinete composto de circuitos eletrônicos, cabos e fontes de alimentação (hardware), não tem nenhuma utilidade. É através de programas (software) que o computador consegue armazenar dados em discos, imprimir relatórios, gerar gráficos, realizar cálculos, entre outras funções. O hardware é o responsável pela execução das instruções de um programa, com a finalidade de se realizar alguma tarefa. Uma operação efetuada pelo software pode ser implementada em hardware, enquanto uma instrução executada pelo hardware pode ser simulada via software. Esta decisão fica a cargo do projetista do computador em função de aspectos como custo, confiabilidade e desempenho. Tanto o hardware como o software são logicamente equivalentes, interagindo de uma forma única para o usuário. Nos primeiros computadores, a programação era realizada em painéis, através de fios, exigindo um grande conhecimento do hardware e de sua linguagem de máquina. Isso era uma grande dificuldade para os programadores da época. A solução para esse problema foi o surgimento do sistema operacional, que tornou a interação entre usuário e computador mais simples, confiável e eficiente. A partir desse acontecimento, não existia mais a necessidade de o programador se envolver com a complexidade do hardware para poder trabalhar; ou seja, a parte física do computador tornou-se transparente para o usuário. Figura 2 - Visão modular do computador pelo usuário. Partindo desse princípio, podemos considerar o computador como uma máquina de níveis ou camadas, onde inicialmente existem dois níveis: o nível 0 (hardware) e o nível 1 (sistema operacional). Desta forma, o usuário pode enxergar a máquina como sendo apenas o sistema operacional, ou seja, como se o hardware não existisse. Esta visão modular é abstrata e é chamada máquina virtual. Na realidade, um computador não possui apenas dois níveis, e sim tantos níveis quanto forem necessários para adequar o usuário às suas diversas aplicações. Quando o usuário está trabalhando em um desses níveis, não necessita da existência das outras camadas, acima ou abaixo de sua máquina virtual. Atualmente, a maioria dos computadores possui a estrutura mostrada na Figura 3, podendo conter mais ou menos camadas. A linguagem utilizada em cada um desses níveis é diferente, variando da mais elementar (baixo nível) à mais sofisticada (alto nível). Sistema Operacional Hardware
  • 5. 5 Figura 3 - Máquina de níveis. Histórico A evolução dos sistemas operacionais está, em grande parte, relacionada ao desenvolvimento de equipamentos cada vez mais velozes, compactos e de custos baixos, e à necessidade de aproveitamento e controle desses recursos. Neste histórico dividimos essa evolução em fases, onde destacamos, em cada uma, suas principais características de hardware, software, interação com o sistema e aspectos de conectividade. Primeira Fase (1945-1955) No início da Segunda Guerra Mundial, surgiram os primeiros computadores digitais, formados por milhares de válvulas, que ocupavam áreas enormes, sendo de funcionamento lento e duvidoso. O ENIAC (Electronic Numerical Integrator and Computer) foi o primeiro computador digital de propósito geral. Criado para a realização de cálculos balísticos, sua estrutura possuía 18 mil válvulas, 10 mil capacitores, 70 mil resistores e pesava 30 toneladas. Quando em operação, consumia cerca de 140 quilowatts e era capaz de realizar 5 mil adições por segundo. Para trabalhar nessas máquinas, era necessário conhecer profundamente o funcionamento do hardware, pois a programação era feita em painéis, através de fios, utilizando linguagem de máquina. Nessa fase, ainda não existia o conceito de sistema operacional. Segunda Fase (1956-1965) A criação do transistor e das memórias magnéticas contribui para o enorme avanço dos computadores da época. O transistor permitiu o aumento da velocidade e da confiabilidade do processamento, e as memórias magnéticas permitiram o acesso mais rápido aos dados, maior capacidade de armazenamento e computadores menores. Aplicativos Utilitários Sistema Operacional Linguagem de Máquina Hardw are Dispositivos Físicos Microprogramação
  • 6. 6 Com o surgimento das primeiras linguagens de programação, como Assembly e Fortran, os programas deixaram de ser feitos diretamente no hardware, o que facilitou enormemente o processo de desenvolvimento de programas. Já não era mais possível conviver com tantos procedimentos manuais como os anteriores, que não permitiam o uso eficiente do computador e de seus recursos. Os primeiros sistemas operacionais surgiram, justamente, para tentar automatizar as tarefas manuais Figura 4 - Processamento batch Inicialmente, os programas passaram a ser perfurados em cartões, que, submetidos a uma leitora, eram gravados em uma fita de entrada (Figura 4). A fita, então, era lida pelo computador, que executava um programa de cada vez, gravando o resultado do processamento em uma fita de saída (Figura 4). Ao terminar de todos os programas, a fita de saída era lida e impressa (Figura 4). A esse tipo de processamento, onde um lote (batch) de programas era submetido ao computador, deu-se o nome de processamento batch. Pode não parecer um avanço, mas anteriormente os programas eram submetidos pelo operador, um a um, fazendo com que o processador ficasse ocioso entre a execução, ao de um programa e outro. Com o processamento batch, um grupo de programas era submetido de uma só vez, o que diminuía o tempo existente entre a execução dos programas, permitindo, assim, melhor uso do processador. Os sistemas operacionais passaram a ter seu próprio conjunto de rotinas para operações de entrada/saída (Input/Output Control System—IOCS), que veio facilitar bastante o processo de programação. O IOCS eliminou a necessidade de os programadores desenvolverem suas próprias rotinas de leitura/gravação específicas para cada dispositivo periférico. Essa facilidade de comunicação criou o conceito de independência de dispositivos. Terceira Fase (1966-1980) Através dos circuitos integrados (CIs) e, posteriormente, dos microprocessadores, foi possível viabilizar e difundir o uso de sistemas computacionais por empresas, devido
  • 7. 7 a diminuição de seus custos de aquisição. Além disso, houve grande aumento do poder de processamento e diminuição no tamanho dos equipamentos. Com base nessa nova tecnologia, a IBM lançou em 1964 a Série 360. Esse lançamento causou uma revolução na indústria de informática, pois introduzia uma linha (família) de computadores pequena, poderosa e, principalmente, compatível. Isso permitiu que uma empresa adquirisse um modelo mais simples e barato e, conforme suas necessidades, mudasse para modelos com mais recursos, sem comprometer suas aplicações já existentes. Para essa série, foi desenvolvido o sistema operacional OS/360, que tentava atender todos os tipos de aplicações e periféricos. Apesar de todos os problemas desse equipamento e de seu tamanho físico, a Série 360 introduziu novas técnicas, utilizadas ate hoje. Na mesma época, a DEC lançou a linha PDP-8, também revolucionária, pois apresentava uma linha de computadores de porte pequeno e baixo custo, se comparada aos mainframes ate então comercializados, criando um novo mercado, o de minicomputadores. A evolução dos processadores de entrada/saída permitiu que, enquanto um programa esperasse por uma operação de leitura/gravação, o processador executasse um outro programa. Para tal, a memória foi dividida em partições, onde cada programa esperava sua vez para ser processado. A essa técnica de compartilhamento da memória principal e processador deu-se o nome de multiprogramação. Com a substituição das fitas por discos no processo de submissão dos programas, o processamento batch tornou-se mais eficiente, pois permitia a alteração na ordem de execução das tarefas, ate então puramente seqüencial. A essa técnica de submissão de programas chamou-se spooling, que, mais tarde, também viria a ser utilizada no processo de impressão. Os sistemas operacionais, mesmo implementando o processamento batch e a multiprogramação, ou, ainda estavam limitados a processamentos que não exigiam comunicação com o usuário. Para permitir a interação rápida entre o usuário e o computador, foram adicionados terminais de vídeo e teclado (interação on-line). A multiprogramação evoluiu preocupada em oferecer aos usuários tempos de respostas razoáveis e uma interface cada vez mais amigável. Para tal, cada programa na memória utilizaria o processador em pequenos intervalos de tempo. A esse sistema de divisão de tempo do processador chamou-se time-sharing (tempo compartilhado). Outro fato importante nessa fase foi o surgimento do sistema operacional Unix (1969). Concebido inicialmente em um minicomputador PDP-7, baseado no sistema MULTICS (Multiplexed Information and Computing Service), o Unix foi depois rescrito em uma linguagem de alto nível (linguagem C), tornando-se conhecido por sua portabilidade. No final dessa fase, com a evolução dos microprocessadores, surgiram os primeiros microcomputadores, muito mais baratos que qualquer um dos computadores ate então comercializados. Entre eles, destacamos os micros de 8 bits da Apple e o sistema operacional CP/M (Control Program Monitor).
  • 8. 8 Quarta Fase (1981-1990) A integração em larga escala (Large Scale Integration-LSI) e a integração em muito larga escala (Very Large Scale Integration-VLSI) levaram adiante o projeto de miniaturização e barateamento dos equipamentos. Os mini e superminicomputadores se firmaram no mercado e os microcomputadores ganharam um grande impulso. Nesse quadro surgiram os microcomputadores PC (Personal Computer) de 16 bits da IBM e o sistema operacional DOS (Disk Operation System), criando a filosofia dos computadores pessoais. Na área dos minis e superminicomputadores ganharam impulso os sistemas multiusuário, com destaque para os sistemas compatíveis com o Unix (Unix- like) e o VMS (Virtual Memory System) da DEC. Surgem as estações de trabalho (workstations) que, apesar de monousuárias, permitem que se executem diversas tarefas concorrentemente, criando o conceito de multitarefa. No final dos anos 80, os computadores tiveram um grande avanço, decorrente de aplicações que exigiam um enorme volume de cálculos. Para acelerar o processamento, foram adicionados outros processadores, exigindo dos sistemas operacionais novos mecanismos de controle e sincronismo. Com o multiprocessamento, foi possível a execução de mais de um programa simultaneamente, ou ate de um mesmo programa por mais de um processador. Além de equipamentos com múltiplos processadores, foram introduzidos processadores vetoriais e técnicas de paralelismo em diferentes níveis, fazendo com que os computadores se tornassem ainda mais poderosos. As redes distribuídas (Wide Area Network- WANs) se difundiram por todo o mundo, permitindo o acesso a outros sistemas de computação, independentemente de estado, país e, ate mesmo, fabricante. Nesse contexto são desenvolvidos inúmeros protocolos de rede, alguns proprietários, como o DECnet da DEC e o SNA (System Network Architecture) da IBM, e outros de domínio público, como o TCP/IP e o CCITT X.25. Surgem as primeiras redes locais (Local Area Network—LANs) interligando pequenas áreas. Os softwares de rede passaram a estar intimamente relacionados ao sistema operacional e surgem os sistemas operacionais de rede. Quinta Fase (1991- ) Grandes avanços em termos de hardware, software e telecomunicações podem ser esperados ate o final deste século. Essas mudanças são conseqüência da evolução das aplicações, que necessitam cada vez mais de capacidade de processamento e armazenamento de dados. Sistemas especialistas, sistemas multimídia, banco de dados distribuídos, inteligência artificial e redes neurais são apenas alguns exemplos da necessidade cada vez maior. A evolução da microeletrônica permitirá o desenvolvimento de processadores e memórias cada vez mais velozes e baratos, Além de dispositivos menores, mais rápidos e com maior capacidade de armazenamento. Os componentes baseados em tecnologia VLSI (Very Large Scale Integration) evoluem rapidamente para o ULSI (Ultra Large Scale Integration). Os computadores da próxima geração têm de ser muito mais eficientes que os atuais, para atender o volume cada vez maior de processamento. Para isso, está ocorrendo uma mudança radical na filosofia de projeto de computadores. Arquiteturas
  • 9. 9 paralelas, baseadas em organizações de multiprocessadores não convencionais, já se encontram em desenvolvimento em varies universidades e centros de pesquisa do mundo. A evolução do hardware encadeará modificações profundas nas disciplines de programação para fazer melhor uso das arquiteturas paralelas. Assim, novas linguagens e metodologias de programação concorrentes estão sendo desenvolvidas, em particular, fazendo uso extensivo de inteligência artificial e CAD (Computer-Aided Design). O conceito de processamento distribuído será explorado nos sistemas operacionais, de forma que suas funções estejam espalhadas por vários processadores através de redes de computadores. Isso só será possível devido a redução, ao dos custos de comunicação e ao aumento na taxa de transmissão de dados. A arquitetura cliente-servidor aplicada basicamente a redes locais passe a ser oferecida em redes distribuídas, permitindo que qualquer pessoa tenha acesso a todo tipo de informação, independentemente de onde esteja armazenada. Problemas de segurança, gerência e desempenho tornam-se fatores importantes relacionados ao sistema operacional e a rede. A década de 90 foi definitiva para a consolidação dos sistemas operacionais baseados em interfaces gráficas. Apesar da evolução da interface, a forma de interação com os computadores sofrerá, talvez, uma das modificações mais visíveis. Novas interfaces homem-máquina serão utilizadas, como linguagens naturais, sons e imagens, fazendo essa comunicação mais inteligente, simples e eficiente. Os conceitos e implementações só vistos em sistemas considerados de grande porte estão sendo introduzidos na maioria dos sistemas desktop, como na família Windows da Microsoft, no Unix e no OS/2 da IBM. Conceitos de Hardware e Software Hardware Um computador digital é constituído por um conjunto de componentes interligados, composto por processadores, memória principal e dispositiva físicos (hardware). Esses dispositivos manipulam dados na forma digital, o que proporciona uma maneira confiável de representação. Todos os componentes de um computador são agrupados em três subsistemas básicos: unidade central de processamento (UCP), memória principal, e dispositivos de entrada e saída (Figura 5). Estes subsistemas, também chamados de unidades funcionais, estão presentes em todo computador digital, apesar de suas implementações variarem nas diferentes arquiteturas existentes e comercializadas pelos diversos fabricantes de computadores. Neste item descrevemos os conceitos básicos dos principais componentes desses sistemas. Unidade Central de Processamento A unidade central de processamento (UCP), ou processador, tem como função principal unificar todo o sistema, controlando as funções realizadas por cada unidade
  • 10. 10 funcional. A UCP também é responsável pela execução de todos os programas do sistema, que obrigatoriamente deverão estar armazenados na memória principal. Um programa é composto por uma série de instruções que são executadas seqüencialmente pela UCP, através de operações básicas como somar, subtrair, comparar e movimentar dados. Desta forma, a UCP busca cada instrução na memória principal e interpreta para sua execução. Unidade Lógica e Aritmética (ULA) Unidade de Controle (UC) Registradores Dispositivos de Entrada e Saída Memória Principal (MP) Figura 5 - Unidades funcionais de um computador A UCP é composta por dois componentes básicos: unidade de controle e unidade lógica aritmética. A Unidade de controle (UC) é responsável por controlar as atividades de todos os componentes do computador, mediante a emissão de pulsos elétricos (sinais de controle) gerados por um dispositivo denominado clock. Este controle pode ser a gravação de um dado no disco ou a busca de uma instrução da memória. A unidade lógica e aritmética (ULA), como o nome indica, é responsável pela realização de operações lógicas (testes e comparações) e aritméticas (somas e subtrações). A especificação da velocidade de processamento de uma UCP é determinada pelo número de instruções que o processador executa por unidade de tempo, normalmente por segundo. Alguns fabricantes utilizam unidade processamento próprios, já que não existe uma padronização, sendo as mais comuns o MIPS (milhões de instruções por segundo) e o MFLOPS/GFLOPS (milhões/bilhões de instruções de ponto flutuante por segundo). A mostra alguns processadores e suas respectivas velocidades de processamento. Clock O clock é um dispositivo, localizado na UCP, que gera pulsos elétricos síncronos em um determinado intervalo de tempo (sinal de clock). A quantidade de vezes que este pulso se repete em um segundo define a freqüência do clock. O sinal de clock é utilizado pela unidade de controle para a execução, das instruções. A freqüência do clock de um processador é medida em Hertz (Hz), que significa o número de pulsos elétricos gerados em um segundo de tempo. A freqüência também pode ser utilizada como unidade de desempenho entre diferentes processadores, pois
  • 11. 11 quanto maior a freqüência, mais instruções podem ser executadas pela UCP em um mesmo intervalo de tempo. Registradores Os registradores são dispositivos de alta velocidade, localizados fisicamente na UCP, para armazenamento temporário de dados. O número de registradores varia em função da arquitetura de cada processador. Alguns registradores são de uso específico e têm propósitos especiais, enquanto outros são ditos de uso geral. Entre os registradores de uso específico, merecem destaque:  contador de instruções (CI) é o registrador responsável pelo armazenamento do endereço da próxima instrução que a UCP deverá executar. Toda vez que a UCP execute uma instrução, o PC é atualizado com um novo endereço;  o apontador da pilha (AP) e o registrador que contém memória o endereço de memória do topo da pilha, que é a estrutura de dados onde o sistema mantém informações sobre tarefas que estavam sendo processadas e tiveram que ser interrompidas por algum motivo;  o registrador de estado, também chamado em alguns equipamentos de é o registrador responsável por armazenar informações sobre a execução do programa, como a ocorrência de carry e overflow. A cada instrução executada, o registrador de estado é alterado conforme o resultado gerado pela instrução. Memória Principal A memória principal, também conhecida como memória primária ou real, é a parte do computador onde são armazenados instruções e dados. Ela é composta por unidades de acesso chamadas células, sendo cada célula composta por um determinado número de bits (binary digit). O bit é a unidade básica de memória, podendo assumir o valor 0 ou 1. Atualmente, a grande maioria dos computadores utilize o byte (8 bits) como tamanho de célula, porém encontramos computadores de gerações passadas com células de 16, 32 e ate mesmo 64 bits. Podemos concluir, então, que a memória, é formada por um conjunto de células, onde cada célula possui um determinado número de bits (Figura 6). 0 1 2 M - 1 Célula = n bits Endereços Figura 6 - Memória principal
  • 12. 12 O acesso ao conteúdo de uma célula é realizado através da especificação, ao de um número chamado endereço. O endereço é uma referência única, que podemos fazer a uma célula de memória Quando um programa deseja ler ou escrever um dado em uma célula, deve primeiro especificar qual o endereço de memória desejado, para depois realizar a operação. A especificação, ao do endereço, é realizada através de um registrador denominado registrador de endereço de memória (memory register address - MAR). Através do conteúdo deste registrador, a unidade de controle sabe qual a célula de memória que será acessada. Outro registrador usado em operações com a memória é o registrador de dados da memória (memory buffer register—MBR) . Este registrador é utilizado para guardar o conteúdo de uma ou mais células de memória após uma operação de leitura, ou para guardar o dado que será transferido para a memória em uma operação de gravação. Este ciclo de leitura e gravação é mostrado na Figura 7. Operação de Leitura Operação de gravação 1. A UCP armazena no MAR, o endereço da célula a ser lida. 2. A UCP gera um sinal de controle para a memória principal, indicando que uma operação de leitura deve ser realizada. 3. 0 conteúdo da(s) célula(s), identificada(s) pelo endereço contido no MAR, e transferido para o MBR. 1. A UCP armazena no MAR, o endereço da célula que será gravada. 2. A UCP armazena no MBR, a informação que deverá ser gravada. 3. A UCP gera um sinal de controle para a memória principal, indicando que uma operação de gravação deve ser realizada. 4. A informação contida no MBR e transferida para a célula de memória endereçada pelo MAR. Figura 7 - Ciclo de leitura e gravação A capacidade de uma memória é limitada pelo tamanho do MAR. No caso do registrador possuir n bits, a memória principal poderá no máximo endereçar 2n células, isto é , do endereço 0 ao 2n -1. A memória principal pode ser classificada em função de sua volatilidade, que é a capacidade de memória preservar o seu conteúdo mesmo sem uma fonte de alimentação. As memórias chamadas voláteis se caracterizam por poderem ser lidas ou gravadas, como o tipo RAM (random access memory), que constitui quase que a totalidade da memória principal de um computador. O outro tipo, chamado de não volátil, não permite alterar ou apagar seu conteúdo. Este tipo de memória conhecido como ROM (read-only memory), já vem pré-gravado do fabricante, geralmente com algum programa, e seu conteúdo e preservado mesmo quando a alimentação e desligada. Uma variação da ROM é a EPROM (erasable programmable ROM), onde podemos gravar e regravar a memória através exposição de luz ultravioleta por um dispositivo especial. Atualmente, uma série de memórias com diferentes características, existe para diversas aplicações, como a EEPROM, EAROM, EAPROM, NOVRAM entre outras.
  • 13. 13 Memória Cache A MEMÓRIA cache é uma memória volátil de alta velocidade. O tempo de acesso a um dado nela contido é muito menor que se o mesmo estivesse na memória principal. Toda vez que o processador fez referência a um dado armazenado na memória principal, ele "olha" antes na memória cache. Se o processador encontrar o dado na cache, não ha necessidade do acesso a memória principal; do contrário, o acesso é obrigatório. Neste último o processador, a partir do dado referenciado, transfere um bloco de dados para a cache. O tempo de transferência entre as memórias é pequeno, se comparado com o aumento do desempenho obtido com a utilização, ao desse tipo de memória. Apesar de ser uma memória de acesso rápido, seu uso é limitado em função do alto custo. A Tabela 2.2 mostra a relação entre as memórias cache e principal em alguns equipamentos. HP 9000/855S IBM 3090/600S VAX 9000/440 Tamanho máximo Memória principal 256 Mb 512 Mb 512 Mb Tamanho máximo Memória cache 256 Kb 128 Kb por UCP 128 Kb por UCP Tabela 1 - Relação entre as memórias cache e principal Memória Secundária A memória secundária é um meio permanente (não volátil) de armazenamento de programas e dados. Enquanto a memória principal precisa estar sempre energizada para manter suas informações, a memória secundária não precisa de alimentação. O acesso a memória secundária é lenta, se comparado com o acesso a memória cache ou à principal, porém seu custo e baixo e sua capacidade de armazenamento é bem superior a da memória principal. Enquanto a unidade de acesso a memória secundária e da ordem de milissegundos, o acesso a memória principal e de nanossegundos. Podemos citar, como exemplos de memórias secundárias, a fita magnética, o disco magnético e o disco óptico. A Figura 8 mostra a relação entre os diversos tipos de dispositivos de armazenamento apresentados, comparando custo, velocidade e capacidade de armazenamento.
  • 14. 14 Registradores Memória Cache Memória Principal Memória Secundária Maior Custo e Maior Velocidade de Acesso Maior Capacidade de armazenamento Figura 8 - Relação entre os diversos tipos de dispositivos de armazenamento. Dispositivos de Entrada e Saída Os dispositivos de entrada e saída (E/S) são utilizados para permitir a comunicação entre o computador e o mundo externo. Através desses dispositivos, a UCP e a memória principal podem se comunicar, tanto com usuários quanto com memórias secundárias, a fim de realizar qualquer tipo de processamento. Os dispositivos de E/S podem ser divididos em duas categorias: os que são utilizados como memória secundária e os que servem para a interface homem-máquina. Os dispositivos utilizados como memória secundária, como discos e fitas magnéticas se caracterizam por armazenar de três a quatro vezes mais informações que a memória principal. Seu custo e relativamente baixo, porém o tempo de acesso a memória secundária e de quatro a seis vezes maior que o acesso a memória principal. Alguns dispositivos servem para a comunicação, ao homem-máquina, como teclados, monitores de vídeo, impressoras, plotters, entre outros. Com o avanço no desenvolvimento de aplicações de uso cada vez mais geral, procure-se aumentar a facilidade de comunicação entre o usuário e o computador. A implementação, de interfaces mais amigáveis permite, cada vez mais, que pessoas sem conhecimento específico sobre informática possam utilizar o computador. Scanner, caneta ótica, mouse, dispositivos sensíveis a voz humana e ao calor do corpo humano são alguns exemplos desses tipos de dispositivos. Barramento A UCP, a memória principal e os dispositivos de E/S são interligados através de linhas de comunicação denominadas barramentos, barras ou vias. Um barramento (bus) e um conjunto de fios paralelos (linhas de transmissão), onde trafegam informações, como dados, endereços ou Sinais de controle. Ele pode ser classificado como unidirecional (transmissão em um só sentido) ou bidirecional (transmissão em ambos os sentidos). Na ligação entre UCP e memória principal, podemos observar que três barramentos são necessários para que a comunicação seja realizada. O barramento de dados transmite informações entre a memória principal e a UCP. O barramento de endereços é utilizado pela UCP para especificar o endereço, o da célula de memória que será acessada. Finalmente, o barramento de controle e por onde a UCP envia os pulsos de controle relativos as operações de leitura e gravação.
  • 15. 15 Pipelining O conceito de processamento pipeline se assemelha muito a uma linha de montagem, onde uma tarefa e dividida em uma seqüência de subtarefas, executadas em diferentes estágios, dentro da linha de produção. UCP Memória Principal Dispositivos de E/S UCP Memória Principal Dispositivos de E/S Figura 9 - Configurações de sistema Da mesma forma que em uma linha de montagem, a execução de uma instrução pode ser dividida em subtarefas, como as fases de busca da instrução e dos operando, execução e armazenamento dos resultados. O processador, através de suas várias unidades funcionais pipeline, funciona de forma a permitir que, enquanto uma instrução se encontra na fase de execução possa estar na fase de busca simultaneamente. A técnica de pipelining pode ser empregada em sistemas com um ou mais processadores, em diversos níveis, e tem sido a técnica de paralelismo mais utilizada para maior desempenho dos sistemas de computadores. Ativação e desativação do Sistema O sistema operacional é essencial para o funcionamento de um computador. Sem ele, grande parte dos recursos do sistema não estaria disponível, ou se apresentaria de uma forma complexa para utilização pelos usuários. Toda vez que um computador é ligado, é necessário que o sistema operacional seja carregado da memória secundária para a memória principal. Esse processo, denominado ativação do sistema (boot), é realizado por um programa localizado em um posição específica do disco (disco block), geralmente o primeiro bloco. O procedimento de ativação varia em função do equipamento, podendo ser realizado através do teclado, de um terminal ou por manipulação de chaves de um painel (Figura 10). Disco Memória Principal Sistema Operacional Boot Figura 10 - Ativação do sistema
  • 16. 16 Além da carga do sistema operacional, a ativação do sistema também consiste na execução de arquivos de inicialização. Nestes arquivos são especificados procedimentos de inicialização de hardware e software específicos para cada ambiente. Na maioria dos sistemas, também existe o processo de desativação (shutdown). Este procedimento permite que as aplicações e componentes do sistema sejam desativados de forma ordenada. Garantindo a integridade do sistema. Arquiteturas RISC e CISC Um processador com arquitetura RISC (Reduced Instruction Set Computer) se caracteriza por possuir poucas instruções de máquina, em geral bastante simples, que são executadas diretamente pelo hardware. Na sua maioria, estas instruções não acessam a memória principal, trabalhando principalmente com registradores que, neste tipo de processador, se apresentam em grande número. Estas características, além de ajudarem as instruções serem executadas em alta velocidade, facilitam a implementação do pipeline. Como exemplos de processadores RISC podemos citar o Sparc (SUN), RS-6000 (IBM), PA-RISC (HP), Alpha AXP (DEC) e Rx000 (MIPS). Os processadores CISC (Complex Instruction Set computers) já possuam instruções complexas que são interpretadas por microprogramas. O número de registradores é pequeno e qualquer instrução pode referenciar a memória principal. Neste tipo de arquitetura, a implementação do pipeline é mais difícil. São exemplos de processadores CISC o VAX (DEC), 80x86 e o Pentium (Intel), e o 68xx (Motorola). Software O Hardware por si só não tem a menor utilidade. Para torná-lo útil existe um conjunto de programas, utilizado como interface entre as necessidades do usuário e as capacidades do hardware. A utilização de softwares adequados às diversas tarefas e aplicações (conceitos de camadas) torna o trabalho do usuários muito mais simples e eficiente. Tradutor Nos sistemas operacionais antigos, o ato de programar era bastante complicado, já que o programador deveria possuir conhecimento do hardware e programar em painéis através de fios. Esses programas eram desenvolvidos em linguagem de máquina e carregados diretamente na memória principal para execução. Com o surgimento das primeiras linguagens de montagem (assembly languages) e das linguagens de alto nível, o programador deixou de se preocupar com muitos aspectos pertinentes ao hardware, como em qual região da memória o programa deveria ser carregado ou quais endereços de memória seriam reservados para as variáveis. A utilização dessas linguagens facilitou a construção de programas em muitos aspectos. Desse modo, um programa poderia ser escrito de uma forma bem documentada e com facilidades para realizar alterações.
  • 17. 17 O tradutor, pelo tipo de linguagem de programação utilizada, pode ser chamado de montador ou compilador (Figura 11). Programa-Fonte Programa-Fonte Programa-Objeto Linguagem de Montagem Módulo-Objeto Módulo-Objeto Montador Compilador Linguagem de Alto Nível Figura 11 - Tradutor Compilador É o utilitário responsável por gerar, a partir de um programa escrito em uma linguagem de alto nível, um programa em linguagem de máquina não executável. As linguagens de alto nível, como pascal, fortran, cobol não tem nenhuma relação direta com a máquina, ficando essa preocupação exclusivamente com o compilador. Interpretador O interpretador é considerado um tradutor que não gera código-objeto. A partir de um programa fonte, escrito em linguagem de alto nível, o interpretador, no momento da execução do programa, traduz cada instrução e executa em seguida. Linker O linker (ligador), também chamado de linkagem, é o utilitário responsável por gerar, a partir de um ou mais módulos-objetos, um único programa executável. Loader Também chamado carregador é o utilitário responsável por colocar fisicamente na memória um programa para execução. O procedimento de carga varia com o código gerado pelo linker, em função deste, o loader é classificado como sendo do tipo absoluto ou relocável. Tipo absoluto - o loader só necessita conhecer o endereço de memória inicial e o tamanho do módulo para realizar o carregamento. Então, ele transfere o programa da memória secundária para a memória principal e inicia sua execução.
  • 18. 18 No caso de código relocável, o programa pode ser carregado em qualquer posição de memória, e o loader é responsável pela relocação no momento do carregamento. Depurador O desenvolvimento de programas está sujeito a erros de lógica, independentemente de metodologias utilizadas pelo programador. A depuração é um dos estágios desse desenvolvimento, e a utilização de ferramentas adequadas é essencial para acelerar o processo de correção de programas. O depurador é o utilitário que permite ao usuário controlar a execução de um programa a fim de detectar erros na sua estrutura. Este utilitário oferece ao usuário recursos como:  Acompanhar a execução de um programa instrução por instrução;  Possibilitar a alteração e visualização do conteúdo de variáveis;  Implementar pontos de parada dentro do programa, de forma que, durante a execução, o programa para nesses pontos;  Especificar que, toda vez que o conteúdo de uma variável for modificado, o programa envie uma mensagem. Linguagem de Controle Também denominada a linguagem de comando, é a forma mais direta de um usuário se comunicar com o sistema operacional. Esta linguagem é oferecida por cada sistema operacional para que, através de comandos simples, o usuário possa ter acesso a rotinas especificas do sistema. Interpretador de Comandos (Shell) O sistema operacional é o código executor de chamadas de sistema. Os editores, compiladores, montadores, ligadores e interpretadores de comando não fazem parte do Programa Executável Módulo Objeto Compilador Módulo Fonte Módulo Objeto Módulo Fonte LinkerCompilador Módulo Objeto Módulo Fonte Compilador
  • 19. 19 sistema operacional, apesar de serem softwares muito importantes e muito úteis. Esses comandos quando digitados pelos usuários, são interpretados pelo Shell, verifica sua sintaxe, envia mensagens de erro e faz chamadas a rotinas do sistema. Dessa forma o usuário dispõe de uma interface interativa com o sistema operacional, para realizar tarefas como acessar uma arquivo em disco ou consultar um diretório. Linguagem de Máquina A linguagem de máquina de um computador é a linguagem de programação que o processador realmente consegue entender. Cada processador possui um conjunto único de instruções de máquina, definido pelo próprio fabricante. As instruções especificam detalhes, como registradores, modos de endereçamento e tipos de dados, que caracterizam um processador e suas potencialidades. Microprogramação Um programa em linguagem de máquina é executado diretamente pelo hardware em processadores de arquitetura RISC, porém em máquinas CISC isto não acontece. Neste caso, como podemos observar na Figura 3, entre os níveis de linguagem de máquina e do hardware, existem ainda o da microprogramação. Os microprogramas definem a linguagem de máquina de cada computador. Apesar de cada computador possui níveis de microprogramação diferentes, existem muitas semelhanças nessa camada se compararmos os diversos equipamentos. Uma máquina possui, aproximadamente 25 microinstruções básicas, que são interpretadas pelos circuitos eletrônicos. Processos Um conceito chave da teoria dos sistemas operacionais é o conceito de processo. Um processo é basicamente um programa em execução, sendo constituído do código executável, dos dados referentes ao código. Chamadas de Sistema Os programas de usuário solicitam serviços do sistema operacional através da execução de chamadas de sistema. A cada chamada corresponde um procedimento de uma biblioteca de procedimentos que o programa do usuário pode chamar. Arquivos Arquivos são mecanismos de abstração que fornece uma forma de armazenar recuperar informações em disco. Isto deve ser feito de uma forma que mantenha o usuário isolado dos detalhes a respeito de como as informações são armazenadas, e de como os discos efetivamente trabalha.
  • 20. 20 2. Tipos de Sistemas Operacionais Tipos de Sistemas Operacionais Sistemas Monoprogramáveis/ Monotarefa Sistemas Multiprogramáveis/ Multitarefa Sistemas Com Múltiplos Processadores 2.1 Sistemas Monoprogramáveis/Monotarefa Os primeiros sistemas operacionais eram voltados tipicamente para a execução de um único programa. Qualquer outra aplicação, para ser executada, deveria aguardar o término do programa corrente. Neste tipo de sistema, o processador, a memória e os periféricos permanecem exclusivamente dedicados à execução de um único programa. Os sistemas monoprogramáveis estão diretamente ligados ao surgimento, na década de 50/60, dos primeiros computadores. Embora os sistemas operacionais já tivessem evoluído com as tecnologias de multitarefa e multiprogramáveis, os sistemas monoprogramáveis voltaram a ser utilizados na plataforma de microcomputadores pessoais e estações de trabalho devido à baixa capacidade de armazenamento destas máquinas, na época. Era muito clara a desvantagem deste tipo de sistema, no que diz respeito à limitação de tarefas (uma de cada vez), o que provocava um grande desperdício de recursos de hardware. Sistema Monoprogramável/Monotarefa CPU Memória Principal _______ _______ _______ _______ _______ Programa/Tarefa Dispositivo s E/S
  • 21. 21 Comparados a outros sistemas, os monoprogramáveis são de simples implementação, não existindo muita preocupação com problemas decorrentes do compartilhamento de recursos como memória, processador e dispositivos de E/S. 2.2 Sistemas Multiprogramáveis/Multitarefa Constituindo-se uma evolução dos sistemas monoprogramáveis, neste tipo de sistema os recursos computacionais são compartilhados entre os diversos usuários e aplicações: enquanto um programa espera por um evento, outros programas podem estar processando neste mesmo intervalo de tempo. Neste caso, podemos observar o compartilhamento da memória e do processador. O sistema operacional se incumbe de gerenciar o acesso concorrente aos seus diversos recursos, como processador, memória e periféricos, de forma ordenada e protegida, entre os diversos programas. As vantagens do uso deste tipo de sistema são a redução do tempo de resposta das aplicações, além dos custos reduzidos devido ao compartilhamento dos recursos do sistema entre as diferentes aplicações. Apesar de mais eficientes que os monoprogramáveis, os sistemas multiprogramáveis são de implementação muito mais complexa. Sistema Multiprogramável/Multitarefa CPU Memória Principal _______ _______ _______ _______ _______ Dispositiv os E/S _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ _______Programa/Tarefa Programa/Tarefa Programa/Tarefa Programa/Tarefa
  • 22. 22 Os sistemas multiprogramáveis/multitarefa podem ser classificados de acordo com a forma com que suas aplicações são gerenciadas, podendo ser divididos em sistemas batch, de tempo compartilhado e de tempo real, de acordo com a figura abaixo. Sistemas Multiprogramáveis/ Multitarefa Sistemas BATCH Sistemas de Tempo Compartilhado Sistemas de Tempo Real 2.2.1 Sistemas BATCH Foram os primeiros sistemas multiprogramáveis a serem implementados na década de 60. Nesta modalidade, os programas eram submetidos para execução através de cartões perfurados e armazenados em disco ou fita, para posterior execução. Vem daí o nome batch (lote de cartões). O processamento em batch tem como característica não exigir interação do usuário com o sistema ou com a aplicação. Todas as entradas ou saídas são implementadas por meio de algum tipo de memória secundária, geralmente disco ou fita. Aplicações deste tipo eram utilizadas em cálculo numérico, compilações, back-ups, etc. Estes sistemas, se bem projetados, podem ser bastante eficientes devido à melhor utilização do processador, mas podem oferecer tempos de resposta bastante longos. Atualmente, os sistemas operacionais simulam este tipo de processamento, não havendo sistemas dedicados a este tipo de execução. 2.2.2 Sistemas de Tempo Compartilhado Também chamados sistemas de time-sharing, permitem que diversos programas sejam executados a partir da divisão de tempo do processador em pequenos intervalos, denominados fatia de tempo (ou time-slice). Caso a fatia de tempo não seja suficiente para a conclusão do programa, este é interrompido pelo sistema operacional e substituído no processador por outro, enquanto aguarda nova fatia de tempo. Neste tipo de processamento, cada usuário tem a impressão de que a máquina está dedicada ao seu programa, como se ele fosse o único usuário a se utilizar do sistema. Geralmente permitem interação do usuário com a aplicação através de terminais compostos por monitor, teclado e mouse. Estes sistemas possuam uma linguagem de controle que permite ao usuário interagir com o sistema operacional através de comandos. Assim, é possível verificar arquivos armazenados em disco ou
  • 23. 23 cancelar execução de programas. Normalmente, o sistema responde em apenas alguns segundos à maioria destes comandos, o que se levou a chamá-los também de sistemas on-line. A maioria das aplicações comerciais atualmente é processada em ambiente de tempo compartilhado, que oferece tempos baixos de respostas a seus usuários e menores custos, em função do alto grau de compartilhamento dos diversos recursos do sistema. 2.2.3 Sistemas de Tempo Real Este tipo de sistema é implementado de forma bastante semelhante ao de tempo compartilhado. O que caracteriza a diferença entre eles é o tempo exigido no processamento das aplicações. Enquanto nos sistemas de tempo compartilhado o tempo de processamento pode variar sem comprometer as aplicações em execução, nos sistemas de tempo real os tempos de execução devem estar dentro de limites rígidos, que devem ser obedecidos, caso contrário poderão ocorrer problemas irreparáveis. No sistema de tempo real não existe a idéia de fatia de tempo como nos sistemas de tempo compartilhado. Um programa ocupa o processador o tempo que for necessário ou até que apareça outro com um nível de prioridade maior. Esta prioridade de execução é definida pela própria aplicação e não pelo sistema operacional, como nos sistemas de tempo compartilhado. Estes sistemas são utilizados em aplicações de controle de processos, como monitoramento de refinarias de petróleo, controle de tráfego aéreo, de usinas, ou em qualquer aplicação onde o tempo de processamento é fator fundamental. 2.3 Sistemas com Múltiplos Processadores Os sistemas com múltiplos processadores caracterizam-se por possuir duas ou mais CPUs interligadas e trabalhando em conjunto. A vantagem deste tipo de sistema é permitir que vários programas sejam executados ao mesmo tempo ou que um mesmo programa seja subdividido em várias partes para serem executadas simultaneamente em mais de um processador. Esta técnica permitiu a criação de sistemas computacionais voltados para processamento científico, prospecção de petróleo, simulações, processamento de imagens e CAD. Um fator chave no desenvolvimento dos sistemas multiprocessados é a forma de comunicação entre as CPUs e o grau de compartilhamento da memória e dos
  • 24. 24 dispositivos de E/S. Em função destes fatores, podemos classificar os sistemas multiprocessados de acordo com a figura a seguir: Sistemas Com Múltiplos Processadores Sistemas Fortemente Acoplados Sistemas Fracamente Acoplados Simétricos Assimétricos Redes Distribuídos Tipos de Sistemas com Múltiplos Processadores Na figura podemos perceber a divisão dos sistemas multiprocessados em duas categorias iniciais: sistemas fortemente acoplados e fracamente acoplados. A grande diferença entre estas duas categorias é que nos sistemas fortemente acoplados existe apenas uma memória a ser compartilhada pelos processadores do conjunto, enquanto que nos fracamente acoplados cada sistema tem sua própria memória individual. A taxa de transferência entre processadores e memória em sistemas fortemente acoplados é muito maior que nos fracamente acoplados. Nos sistemas fortemente acoplados a memória principal e os dispositivos de E/S são gerenciados por um único sistema operacional. Quando todos os processadores na arquitetura são iguais, diz-se que o sistema é simétrico. No entanto, quando os processadores são diferentes, dá-se à arquitetura a denominação assimétrica. Nos sistemas fracamente acoplados, como os processadores estão em arquiteturas diferentes, somente interligados por cabos de interconexão, todos os CPU constitui uma máquina independente, com memória própria, dispositivos de E/S e sistemas operacionais independentes. Nesta subdivisão, temos como exemplo as redes e os sistemas distribuídos. No ambiente de rede, existem dois ou mais sistemas independentes (hosts), interligados por linhas telefônicas, que oferecem algum tipo de serviço aos demais, permitindo que um host compartilhe seus recursos, como impressora e diretórios, com os outros hosts da rede.
  • 25. 25 Enquanto nos sistemas em rede os usuários têm conhecimento dos hosts e seus serviços, nos sistemas distribuídos os sistema operacional esconde os detalhes dos hosts individuais e passa a tratá-los como um conjunto único, como se fosse um sistema só, fortemente acoplado. Os sistemas distribuídos permitem, por exemplo, que uma aplicação seja dividida em partes e que cada parte seja executada por hosts diferentes na rede. Para os usuários e suas aplicações é como se não existisse a rede, mas um único sistema centralizado. Outros exemplos de sistemas distribuídos são os clusters. Em um cluster podem existir dois ou mais servidores ligados por algum tipo de conexão de alto desempenho, e o usuário não conhece os nomes dos membros do cluster e nem quantos são. Quando é necessário algum serviço, basta solicitar ao cluster para obtê-lo, sem se preocupar com quem vai dispor e oferecer tal serviço. Clusters são muito utilizados em servidores de bancos de dados e Web. 3. Sistemas Multiprogramáveis Um Sistema Operacional pode ser visto como um conjunto de rotinas que executam concorrentemente de forma ordenada. A possibilidade de um processador executar instruções em paralelo com operações de entrada e saída permite que diversas tarefas sejam executadas concorrentemente. É este conceito de concorrência o princípio fundamental para o projeto e implementação de sistemas multiprogramáveis. Os sistemas multiprogramáveis surgiram a partir das limitações dos sistemas monoprogramáveis onde os recursos computacionais como processador, memória e dispositivos de E/S eram utilizados de maneira muito pouco eficiente, limitando seu desempenho, com muitos destes recursos permanecendo ociosos por longos períodos de tempo. Nos sistemas monoprogramáveis somente um programa pode estar em execução de cada vez, permanecendo o processador dedicado exclusivamente a uma tarefa, ficando ocioso enquanto uma operação de leitura em disco é realizada. O tempo de espera é relativamente longo, já que as operações de E/S são muito lentas se comparadas à velocidade de operação do processador. Outro aspecto a ser considerado é a sub-utilização da memória principal, onde um programa nem sempre ocupa todo o espaço disponível, ficando o restante inutilizado. Nos sistemas multiprogramáveis vários programas podem ser alocados na memória, concorrendo pelo uso do processador. Dessa forma, quando um programa solicita uma operação de E/S, outros programas poderão utilizar o processador, deixando a CPU menos ociosa e tornando o uso da memória mais eficiente, pois existem vários residentes e se revezando na utilização do processador.
  • 26. 26 A utilização concorrente da CPU deve ser feita de maneira que, quando um programa perde o uso do processador e depois retorna para continuar sua execução, seu estado deve ser idêntico ao do momento em que foi interrompido. O programa deverá continuar sua execução exatamente na instrução seguinte àquela onde havia parado, aparentando ao usuário que nada aconteceu. Em sistemas de tempo compartilhado existe a impressão de que o computador está inteiramente dedicado ao usuário, ficando esse mecanismo totalmente transparente aos usuários. Quanto ao uso dos periféricos, é comum nos sistemas monoprogramáveis é comum termos, por exemplo, impressoras paradas por um grande período de tempo e discos com acesso restrito a um único usuário. Esses problemas são minimizados nos sistemas multiprogramáveis, onde é possível compartilhar os dispositivos de E/S, como impressoras e discos, entre diversos usuários e aplicativos. 3.1 Interrupção e Exceção Durante a execução de um programa, alguns eventos inesperados podem ocorrer, ocasionando um desvio forçado no seu fluxo normal de execução. Esses eventos são conhecidos como interrupção ou exceção, e podem ser resultado de sinalizações de algum dispositivo de hardware externo ao ambiente memória/processador. A diferença entre interrupção e exceção é dada pelo tipo de evento ocorrido, embora alguns autores e fabricantes não façam tal distinção. A interrupção é o mecanismo que permitiu a implementação da concorrência nos computadores, sendo o fundamento básico dos sistemas multiprogramáveis/multitarefa. Uma interrupção é sempre gerada por um evento externo ao programa e, sendo assim, independe da instrução que está sendo executada. Um exemplo de interrupção é quando um dispositivo avisa ao processador que alguma operação de E/S está completa. Neste caso, o processador deve interromper o programa para tratar o término da operação. Ao término de cada instrução a Unidade de Controle (situada dentro do processador) verifica a ocorrência de algum tipo de interrupção. Desta forma, o programa em execução é interrompido e seu controle é desviado para uma rotina do sistema responsável por tratar o evento ocorrido, denominada rotina de tratamento de interrupção. Para que o programa interrompido possa retornar posteriormente à sua execução é necessário que, no momento da interrupção, um certo conjunto de informações sobre sua execução seja preservado.
  • 27. 27 Essas informações consistem basicamente no conteúdo dos registradores internos da CPU, que deverão ser restaurados para a continuação do programa. Programa Salva Contexto Identifica a origem Interrupção Trata a Interrupção Rotina De Restaura Contexto Tratamento Mecanismo de interrupção/exceção Para cada tipo de interrupção existe uma rotina de tratamento associada, para onde o fluxo do programa é desviado. A identificação do tipo de evento ocorrido é fundamental para determinar o endereço da rotina adequada ao tratamento da interrupção. As interrupções podem ser geradas: - Pelo programa do usuário (entrada de dados pela console ou teclado) - Pelo hardware (operações de E/S) - Pelo sistema operacional (ao término da fatia de tempo do processador destinada ao programa) As interrupções sempre são tratadas pelo Sistema Operacional. A exceção é um evento semelhante à interrupção, pois também de fato interrompe um programa. A principal diferença é que a exceção é o resultado da execução de uma instrução dentro do próprio programa, como a divisão por zero ou a ocorrência de um overflow (estouro de capacidade de um campo) numa operação aritmética. Na maioria das vezes, a exceção provoca um erro fatal no sistema, causando o término anormal do programa. Isto se deve ao fato de que a exceção é melhor tratada dentro do próprio programa, com instruções escritas pelo programador.
  • 28. 28 3.2 Buffer A técnica de buffering consiste nua utilização de uma área em memória principal, denominada buffer, criada e mantida pelo Sistema Operacional, com a finalidade de auxiliar a transferência de dados entre dispositivos de E/S e a memória. O buffer permite minimizar a disparidade de velocidade entre o processador e os dispositivos de E/S, e tem como objetivo principal manter tanto os dispositivos de E/S como o processador ocupados a maior parte do tempo. A unidade de transferência do mecanismo de buffering é o registro. O buffer deve permitir o armazenamento de vários registros, de forma que o processador tenha à sua disposição dados suficientes para processar sem ter que interromper o programa a cada leitura/gravação no dispositivo de E/S. Enquanto o processador está ocupado processando, os dispositivos de E/S estão efetuando operações para outros processos. 3.3 SPOOL A técnica de spooling foi criada inicialmente para auxiliar a submissão de processos ao sistema, sendo os processos gravados em fita para posterior leitura e execução. Com o aparecimento dos terminais para acesso ao sistema, esta técnica teve sua função adaptada para armazenar o resultado da impressão dos programas em execução. Isto é conseguido através da criação e manutenção, pelo Sistema Operacional de uma grande área em disco, com a finalidade de simular uma impressora. Desta forma, todos os usuários e seus programas imprimem, na verdade, para este arquivo em disco, liberando a associação dos dispositivos de impressão diretamente aos programas que estão executando. O usuário consegue visualizar o resultado de seus programas na tela dos terminais, gerando assim mais eficiência e economia de papel e fita de impressão. À proporção que vão sendo gerados no SPOOL, os relatórios vão sendo liberados para impressão pelo operador do sistema, de forma ordenada e seqüencial. Para cada usuário, é como se ele tivesse uma impressora associada para si. 3.4 Reentrância É comum, em sistemas multiprogramáveis, vários usuários utilizarem os mesmos aplicativos simultaneamente, como editores de texto, compiladores e outros utilitários. Nesta situação, se cada usuário que utilizasse um destes aplicativos trouxesse o código executável para a memória, haveria então diversas cópias de um
  • 29. 29 mesmo programa ocupando espaço na memória, o que causaria um grande desperdício de espaço. Reentrância é a capacidade de um código executável (código reentrante) ser compartilhado por vários usuários, exigindo apenas uma cópia do programa em memória. A reentrância permite que cada usuário esteja executando um trecho diferente do código reentrante, manipulando dados próprios, exclusivos de cada usuário. Normalmente códigos reentrantes são utilizados em utilitários do sistema, como editores, compiladores e linkers, promovendo um uso mais eficiente da memória e um desempenho maior do sistema. Alguns sistemas operacionais permitem a possibilidade de se implementar o conceito de reentrância em aplicações desenvolvidas pelo próprio usuário, mas não é comum. 3.5 Segurança e Proteção do Sistema A eficiência proporcionada por um ambiente multiprogramável implica em maior complexidade do sistema operacional, já que alguns problemas de proteção surgem como decorrência deste tipo de implementação. Considerando-se que diversos usuários estão compartilhando os mesmos recursos, como memória, processador e dispositivos de E/S, faz-se então necessário existir mecanismos de proteção para garantir a confiabilidade e a integridade dos dados e programas dos usuários, além do próprio sistema operacional. Como vários programas ocupam a memória principal simultaneamente, cada usuário possui uma área reservada onde seus programas e dados são armazenados durante o processamento. O sistema operacional deve possuir mecanismos de proteção a essas áreas, de forma a preservar as informações nela contidas. Caso um programa tente acessar uma posição de memória fora de sua área, um erro indicando a violação de acesso deve ocorrer, sendo responsabilidade do sistema operacional o controle eficiente do compartilhamento dos recursos e a sincronização da comunicação, evitando problemas de consistência. Semelhante ao compartilhamento da memória, um disco também armazena arquivos de diferentes usuários. Novamente o sistema operacional deve garantir a integridade e confiabilidade dos dados de cada usuário. Todo o controle da segurança do sistema é implementado pelo sistema operacional, a partir de mecanismos como grupos de usuários, perfis de usuários e direitos de acesso.
  • 30. 30 A proteção começa geralmente no procedimento de login, quando o usuário faz a conexão inicial ao sistema, através de nome do usuário e senha. A partir daí, toda uma estrutura de controle é iniciada, em função da identificação do usuário, no sentido de proteger as áreas alocadas em memória, em disco, e até mesmo o uso do processador. A proteção e segurança do sistema pode ser implementada também a nível do programa do usuário, com a inserção de rotinas específicas dentro do programa para controlar o acesso de usuários ao aplicativo, além de controlar internamente quais telas e funções tal usuário pode acessar. 3.6 Operações de Entrada e Saída Nos primeiros sistemas computacionais, a comunicação entre o processador e os periféricos era direta, sendo o processador responsável por efetuar as operações de leitura/gravação nos dispositivos. O surgimento do controlador de E/S permitiu ao processador agir de maneira independente dos dispositivos de E/S. Com esse novo elemento, o processador não mais se comunicava diretamente com os periféricos, mas sim via controlador. Passou a existir então três maneiras básicas de se implementar operações de E/S: - por programa: o processador sincronizava-se com o periférico e iniciava a transferência de dados, ficando permanentemente testando o estado do periférico para saber quando a operação chegaria ao seu final. O processador ficava ocupado até o término da operação de E/S. - por interrupção: evoluindo o processo anterior, após o início da transferência de dados o processador passou a ficar livre para realizar outras tarefas. Assim, em determinados intervalos de tempo o sistema operacional deveria testar o estado dos periféricos para saber se a operação de E/S tinha terminado. Este tipo de operação permitiu um certo grau de paralelismo, já que um programa poderia ser processado enquanto uma operação de leitura/gravação em periférico estava sendo efetuada. Isto permitiu a implementação dos primeiros sistemas multiprogramáveis.
  • 31. 31 Dispositivos de E/S - A necessidade de se transmitir cada vez um volume maior de informações trouxe uma evolução significativa nas operações de E/S. Em vez de o processador ser interrompido várias vezes para interrogar os dispositivos para saber do resultado das operações, o que diminuía sua eficiência devido ao excesso de interrupções, foi criado um dispositivo de transferência de dados chamado de DMA – Direct Memory Access. Esta técnica permite que um bloco de dados seja transferido entre a memória e os dispositivos de E/S sem a intervenção do processador, a não ser no início (quando a operação é solicitada) e no final da transferência (quando o processador é notificado sobre o término da operação). Na figura a seguir, podemos ver a implementação do canal de E/S gerenciando vários controladores e, ligados a estes, vários periféricos. CPU Memória Principal Controlador
  • 32. 32 O canal de E/S funciona então como uma interface entre os controladores e a CPU, como mostra a figura a seguir: CPU Memória Principal Controlador Controlador Canal de E/S Dispositivos de E/S Dispositivos de E/S
  • 33. 33 4. Estrutura do Sistema Operacional 4.1 Estrutura do Sistema USUÁRIO UTILITÁRIOS NÚCLEO DO SISTEMA HARDWARE Hierarquia do Sistema Operacional O sistema operacional é formado por um conjunto de rotinas que oferecem serviços essenciais aos usuários, às suas aplicações, e também ao próprio sistema. A esse conjunto de rotinas dá-se o nome de núcleo do sistema ou kernel. É fundamental não se confundir o núcleo do sistema com aplicações, utilitários ou o interpretador de comandos, que acompanham o sistema operacional. As aplicações são utilizadas pelos usuários de maneira transparente, escondendo todos os detalhes da interação com o sistema. Os utilitários, como os compiladores, editores de texto e interpretadores de comandos permitem aos usuários, desenvolvedores e administradores de sistema uma interação amigável com o sistema. Existe uma grande dificuldade em compreender a estrutura e o funcionamento do sistema operacional, pois ele não é executado como uma aplicação tipicamente seqüencial, com início, meio e fim. Os procedimentos do sistema são executados concorrentemente sem uma ordem específica ou predefinida, com base em eventos dissociados do tempo. Muitos desses eventos estão relacionados ao hardware e a tarefas internas do próprio sistema operacional. 4.2 Funções do Sistema As principais funções do núcleo encontradas na maioria dos sistemas comerciais são as seguintes:
  • 34. 34 - Tratamento de interrupções e exceções: já explicados anteriormente, em detalhes; - Criação e eliminação de processos: função responsável por alocar em memória todos os recursos necessários à execução do processo. É esta função que aloca em memória, além do executável, o contexto do processo, o buffer de leitura/gravação (se necessário), além de listas e estruturas de controle utilizadas pelo sistema operacional. Nesta função também são estabelecidos vínculos físicos a arquivos em disco, fitas e outros periféricos que serão usados no processamento. Quando do fim da execução do programa, é esta função que desaloca todos os espaços em memória ocupados pelo processo, liberando-os para futuras alocações a outros processos; - Escalonamento e controle de processos: função responsável por organizar a fila de acesso ao processador. Utiliza parâmetros do sistema e do perfil do usuário para estabelecer a ordem em que os processos permanecerão à espera pela liberação da CPU, para então entrarem em execução; - Gerência de memória: função responsável por fornecer à função de criação/eliminação de processos os endereços em memória disponíveis para alocação; - Gerência de sistemas de arquivos: responsável pelo gerenciamento dos arquivos, bem como seu compartilhamento pelos diversos usuários, implementando mecanismos de controle da segurança e direitos de acesso às áreas utilizadas pelos usuários nos diversos dispositivos; - Gerência de dispositivos de E/S: responsável por gerenciar os dispositivos, prestando auxílio à criação/eliminação de processos e á gerência de sistemas de arquivos no que diz respeito ao endereçamento e associação de arquivos em periféricos; - Suporte a redes e teleprocessamento: é esta função que executa todos os serviços de rede, fazendo o empacotamento das mensagens vindas dos terminais para a CPU central e vice-versa, além de controlar e confirmar o envio e recebimento de todas as mensagens que trafegam pela rede; - Contabilização de uso do sistema: responsável por contabilizar o uso de todos os recursos do sistema consumidos pelos usuários e suas aplicações. São registrados: tempo de CPU, tempo corrido, quantidade de área alocada em memória, em disco, linhas impressas, páginas de papel, entre outros. Isto se faz necessário para servir de subsídio para análise de performance, estatísticas de
  • 35. 35 gastos com material de consumo e também para definição de custos de processamento.; - Auditoria e segurança do sistema: função extremamente importante, pois detecta e registra (num arquivo especial de LOG) todas as ocorrências de erro e violação de direitos de acesso ao sistema, aos arquivos, à memória e a todos os recursos do sistema. O arquivo de LOG é usado pela gerência de sistemas, com o intuito de verificar e aperfeiçoar os mecanismos de segurança e proteção ao sistema. A estrutura do sistema, a maneira como ele é organizado e o inter-relacionamento entre seus diversos componentes pode variar conforme a concepção do projeto do sistema. 4.3 System Calls Uma grande preocupação no projeto de sistemas operacionais se refere à implementação de mecanismos de proteção ao núcleo do sistema e também o controle de acesso aos serviços oferecidos pelo sistema. Caso uma aplicação que tenha acesso ao núcleo realize alguma operação que altere sua integridade, todo o sistema poderá ficar comprometido e inoperante. As system calls podem ser entendidas como uma porta de entrada para acesso ao núcleo do sistema e aos seus serviços. Sempre que um usuário ou uma aplicação necessita de algum serviço do sistema, é realizada uma chamada a uma de suas rotinas através de uma system call. Através dos parâmetros fornecidos na system call, a solicitação é processada e uma resposta é enviada à aplicação juntamente com um estado de conclusão indicando o sucesso ou não da operação. Para cada serviço disponível existe uma system call associada, e cada sistema operacional possui seu próprio conjunto de chamadas, com nomes, parâmetros e formas de ativação específicos. Isto explica por que uma aplicação desenvolvida utilizando serviços de um determinado sistema operacional não pode ser diretamente portada para um outro sistema. [] Aplicação System Call Núcleo do Sistema Operacional Biblioteca Hardware
  • 36. 36 4.4 Modos de Acesso Existem certas instruções que não podem ser colocadas diretamente à disposição das aplicações, pois a sua utilização indevida poderia ocasionar sérios problemas à integridade do sistema. Imagine que uma aplicação atualize um arquivo em disco. O programa, por si só, não pode especificar diretamente as instruções que acessam seus dados no disco pois, como o disco é um recurso compartilhado, sua utilização deve ser gerenciada unicamente pelo sistema operacional. Tal procedimento evita que a aplicação possa ter acesso a qualquer área do disco indiscriminadamente, o que poderia comprometer a segurança e a integridade do sistema de arquivos. Assim, fica claro que existem certas instruções que só podem ser executadas pelo sistema operacional ou sob sua supervisão. As instruções que têm o poder de comprometer o sistema são chamadas de instruções privilegiadas, enquanto as instruções que não comprometem o funcionamento do sistema chamam-se instruções não-privilegiadas. Para que uma aplicação possa executar uma instrução privilegiada, é preciso que haja um mecanismo de proteção no processador, chamado modos de acesso. Existem basicamente dois modos de acesso ao processador: modo usuário e modo kernel. Quando o processador trabalha no modo usuário, somente instruções não-privilegiadas podem ser executadas, tendo assim acesso a um número limitado de instruções do processador. Já no modo kernel (ou supervisor), a aplicação pode ter acesso ao conjunto total de instruções do processador. A melhor maneira de controlar o acesso às instruções privilegiadas é permitir que apenas o sistema operacional tenha acesso a elas. Sempre que uma aplicação necessita executar uma instrução privilegiada, a solicitação deve ser feita através de uma system call, que altera o modo de acesso ao processador do modo usuário para o modo kernel. Ao término da execução da rotina do sistema, o modo de acesso retorna para o modo usuário. 4.5 Arquiteturas: Sistemas monolíticos, em camadas e microkernel - Arquitetura monolítica: é caracterizada por possuir seus módulos compilados separadamente mas linkados formando um único e enorme programa executável. Onde os módulos podem interagir livremente. Os primeiros sistemas operacionais foram desenvolvidos com base nesta arquitetura, o que tornava seu desenvolvimento e, principalmente, sua manutenção muito difíceis. Como vantagens desta arquitetura podemos citar a rapidez de execução e simplicidade de implementação. Como desvantagens, a limitação quanto a inovações futuras e a dificuldade de manutenção.
  • 37. 37 - - Modo Usuário Modo Kernel Arquitetura monolítica - Arquitetura em camadas: com o aumento do tamanho do código dos sistemas operacionais, técnicas de programação estruturada e modular foram incorporadas em seu projeto.Na arquitetura em camadas, o sistema é dividido em níveis sobrepostos. Cada camada oferece um conjunto de funções que podem ser utilizadas somente pelas camadas superiores. Neste tipo de implementação as camadas mais internas são mais privilegiadas que as camadas mais externas. A vantagem da estruturação em camadas é o isolamento das funções do sistema, facilitando sua manutenção. Uma desvantagem é o desempenho, comprometido devido às várias mudanças de estado do processador provocado pela mudança de camadas. A figura a seguir mostra esta arquitetura. Aplicação Aplicação System call Hardware Núcleo do Sistema
  • 38. 38 Arquitetura em camadas - - - - Arquitetura microkernel (cliente x servidor): uma tendência nos sistemas operacionais modernos é tornar o núcleo do sistema o menor e o mais simples possível. Para implementar esta idéia, os serviços do sistema são disponibilizados através de processos, onde cada um é responsável por oferecer um conjunto específico de funções, como gerência de arquivos, gerência de processos, gerência de memória e escalonamento. Sempre que uma aplicação deseja algum serviço, é realizada uma solicitação ao processo responsável. Neste caso, a aplicação que está solicitando o serviço é chamada de cliente, enquanto o processo que responde à solicitação é chamado de servidor. Um cliente, que pode ser uma aplicação do usuário ou um outro componente do sistema operacional, solicita um serviço enviando uma mensagem para o servidor. O servidor responde ao cliente através de uma outra mensagem. A principal função do núcleo é realizar a comunicação, ou seja, a troca de mensagens entre o cliente e o servidor. A utilização deste modelo permite que os servidores operem em modo usuário, não tendo acesso direto a certos componentes do sistema. Apenas o núcleo do sistema, responsável pela comunicação entre clientes e servidores, executa em modo kernel. Como conseqüência, se ocorrer um erro em algum servidor,este poderá parar, mas o sistema não ficará inteiramente comprometido, aumentando assim a sua disponibilidade. Como os servidores se comunicam através de trocas de mensagens, não importa se os clientes e servidores processam em um sistema com um único processador, com vários processadores ou ainda em um ambiente de sistema distribuído. A arquitetura microkernel permite isolar as funções do sistema operacional por diversos servidores pequenos e dedicados a serviços específicos, tornando o núcleo menor, mais fácil de depurar (procurar e solucionar erros) e, com isso, aumentando a sua confiabilidade. Apesar de todas as vantagens deste modelo, sua implementação é muito difícil. A começar pelo desempenho, comprometido devido às várias trocas de modo de acesso a cada troca de mensagens entre Camada Usuário Camada Supervisor Camada Executivo Kernel
  • 39. 39 cliente e servidor. Outro problema é que certas funções do sistema operacional, como operações de E/S, exigem acesso direto ao hardware. Assim, o núcleo do sistema, além de promover a comunicação entre clientes e servidores, passa a incorpora funções críticas do sistema, como escalonamento, tratamento de interrupções e gerência de dispositivos. Modo Usuário Modo Kernel 9. BIBLIOGRAFIA Arquitetura de Sistemas Operacionais Francis B. Machado Ed. LTC Sistemas Operacionais: Conceitos e Aplicações Abraham Silberschatz Ed. Campus Sistemas Operacionais Modernos A.S. Tanenbaum Ed. Campus Microkernel Hardware Servidor Arquivo Servidor Process o Servidor Memória Servidor Impressã o Servidor Rede