Você está na página 1de 20

1 – INTRODUÇÃO A SISTEMAS OPERACIONAIS........................................................................................

2
HISTÓRICO DOS SISTEMAS OPERACIONAIS ....................................................................................................... 2
Primeira fase (1945-1955)....................................................................................................................... 2
Segunda fase (1956-1965)...................................................................................................................... 2
Terceira fase (1966-1980)....................................................................................................................... 2
Quarta fase (1981-1990)......................................................................................................................... 2
Quinta fase (1991-2005).......................................................................................................................... 3
Sexta Fase (2006-????).......................................................................................................................... 3
O QUE É UM SISTEMA OPERACIONAL............................................................................................................... 3
A DIVISÃO DO HARDWARE DE UM COMPUTADOR............................................................................................... 5
SISTEMAS OPERACIONAIS DE HOJE................................................................................................................. 6
CTSS....................................................................................................................................................... 7
Multics..................................................................................................................................................... 7
UNIX........................................................................................................................................................ 8
CLASSIFICAÇÕES DE SISTEMAS OPERACIONAIS................................................................................................. 8
ARQUITETURA DE SISTEMAS OPERACIONAIS.................................................................................................. 12
Componentes do SO............................................................................................................................. 12
Gerenciador de processos................................................................................................................................... 12
Gerenciador de memória...................................................................................................................................... 12
Gerência de arquivos........................................................................................................................................... 12
Sistema de Entrada e Saída................................................................................................................................. 12
Gerência de Armazenamento Secundário........................................................................................................... 13
Redes................................................................................................................................................................... 13
Proteção............................................................................................................................................................... 13
Interpretador de comandos.................................................................................................................................. 13
Serviços do SO...................................................................................................................................... 13
Execução de Programas...................................................................................................................................... 13
Operações de E/S................................................................................................................................................ 13
Manipulação do Sistema de Arquivos.................................................................................................................. 13
Comunicação........................................................................................................................................................ 14
Detecção de Erros................................................................................................................................................ 14
Alocação de Recursos.......................................................................................................................................... 14
Contabilização...................................................................................................................................................... 14
Proteção............................................................................................................................................................... 14
Chamadas de Sistema.......................................................................................................................... 14
Tipos de chamadas de sistema............................................................................................................................ 14
Programas de Sistema.......................................................................................................................... 15
Estrutura do sistema operacional.......................................................................................................... 15
Estrutura simples.................................................................................................................................................. 15
Estrutura em camadas......................................................................................................................................... 16
Microkernel........................................................................................................................................................... 16
Máquina virtual...................................................................................................................................... 16
Máquina virtual Java............................................................................................................................................. 16
TIPOS DE SISTEMAS OPERACIONAIS.............................................................................................................. 17
POSIX / UNIX-like.................................................................................................................................. 17
Microsoft Windows................................................................................................................................. 17
Apple / Macintosh.................................................................................................................................. 18
Amiga.................................................................................................................................................... 18
Atari ST.................................................................................................................................................. 18
Be-like.................................................................................................................................................... 18
DOS....................................................................................................................................................... 18
IBM........................................................................................................................................................ 18
Digital / Compaq.................................................................................................................................... 18
PDAs..................................................................................................................................................... 18
Outros.................................................................................................................................................... 19
1 – Introdução a Sistemas Operacionais

Histórico dos sistemas operacionais

Faremos um breve resumo da história dos sistemas operacionais com objetivo ilustrativo, apenas
para termos uma idéia da ordem cronológica de fatos importantes. A evolução do software dos
computadores, especialmente os sistemas operacionais, está relacionada ao desenvolvimento de
equipamentos cada vez mais velozes, menores no tamanho e com custo cada vez menor, e à
necessidade de aproveitamento e controle desses recursos.

Primeira fase (1945-1955)


- Computadores baseados em válvulas (ENIAC, criado para fins militares de cálculos
balísticos, com 18 mil válvulas, 30 toneladas, consumo de cerca de 140.000 watts;
EDVAC, utilizado por universidades e também órgãos militares; UNIVAC I, criado para
auxiliar no censo americano de 1950, aplicação comercial);
- Ausência de sistema operacional: programação feita por painéis, através de fios, sem uso
de linguagens de programação.

Segunda fase (1956-1965)


- Criação do transistor (maior velocidade e confiabilidade no processamento, menor
dissipação de energia) e das memórias magnéticas (acesso mais rápido aos dados, maior
capacidade de armazenamento e diminuição do tamanho dos computadores);
- Surgimento das primeiras linguagens de programação (Assembly e Fortran) – os
programas deixam de ser feitos diretamente no hardware;
- Seqüenciamento da execução dos programas, sem intervenção do operador, conhecido
como processamento batch (em lote);
- Importantes avanços com a linha de computadores 7094 da IBM

Terceira fase (1966-1980)


- Diminuição do tamanho e dos custos de aquisição do hardware com a criação dos circuitos
integrados (CIs) e, posteriormente, dos microprocessadores – lançamento da série 360 de
computa-dores da IBM e da linha PDP-8 da DEC;
- Evolução dos processadores de E/S, possibilitando a utilização da técnica de
compartilhamento da memória e do processador denominada multiprogramação;
- Substituição das fitas por discos magnéticos, possibilitando a alteração na ordem de
submissão dos programas em lote (spooling);
- Surgimento em 1969 do sistema operacional UNIX.

Quarta fase (1981-1990)


- Miniaturização e barateamento dos computadores através da integração cada vez maior
dos componentes;
- Surgimento dos microcomputadores pessoais (PCs) e do sistema operacional DOS (Disk
Operating System);
- Sistemas multiusuário e multitarefa, permitindo a execução de diversas tarefas de forma
concorrente;
2
- Equipamentos com múltiplos processadores, processadores vetoriais e diversas técnicas
de paralelismo em diferente níveis (multiprocessamento);
- As redes de computadores se difundiram por todo mundo – software de redes intimamente
relacionados ao sistema operacional e surgimento dos sistemas operacionais de rede.

Quinta fase (1991-2005)


- Grandes avanços de hardware (microeletrônica), software e telecomunicações –
processadores e memórias cada vez menores e mais baratos;
- Processamento distribuído em sistemas operacionais;
- Novas interfaces homem/máquina – linguagens naturais, sons e imagens;
- Sistemas multimídia, bancos de dados distribuídos e inteligência artificial.

Sexta Fase (2006-????)


- Crescimento de novas tecnologias
- Novas arquiteturas paralelas
- Maior avanço em sistemas multimídia, bancos de dados distribuídos, inteligência artificial.
- Processadores e sistemas operacionais voltados a sistemas embarcados

O que é um Sistema Operacional

Sistema Operacional é um conjunto de ferramentas necessárias para que um


computador possa ser utilizado de forma adequada. Consiste na camada intermediária
entre o aplicativo e o hardware da máquina.
Este conjunto é constituído por um Kernel, ou núcleo, e um conjunto de Software básicos,
que executam operações simples, mas que juntos fazem uma grande diferença.
Se não existissem sistemas desse tipo, todo software desenvolvido deveria “saber” se
comunicar com os dispositivos do computador de que precisasse.
Quando temos um Sistema Operacional, é ele quem precisa “saber” lidar com os
dispositivos, “sabendo falar” com a placa de som, a internet, os disquetes... Assim, um
software que seja feito para funcionar neste sistema não precisará de informações
específicas do equipamento. Ao invés disso, ele chamará a função do kernel e o Sistema
Operacional é que fará a comunicação, repassando os resultados.
Cada Sistema Operacional pode ter uma linguagem de máquina própria e distinta. Por
isso é comum que softwares feitos para um Sistema Operacional não funcionem em
outro.

Linguagem de máquina: Todo computador possui um conjunto de instruções que seu processador é
capaz de executar. Essas instruções são representadas por seqüências de bits, normalmente limitadas pelo
número de bits do registrador principal da CPU.

Outras definições e funções para sistema operacional:

 Um programa que atua como um intermediário entre um usuário de um computador e o


hardware do computador.
 Um conjunto de programas indispensáveis ao funcionamento do computador e cuja função
é servir de interface (ligação, elo) entre o homem e a máquina; fazer a comunicação entre
o usuário, o computador e seus periféricos;
 Um conjunto de rotinas executadas pelo processador, da mesma forma que os nossos
programas. Controla o funcionamento do computador, como um gerente dos vários
recursos disponíveis no sistema;
3
Metas de um SO:

 Executar os programas dos usuários e fazer a solução de problemas mais fácil.


 Tornar o sistema de computação mais conveniente ao uso.
 Utilizar o hardware do computador de um modo eficiente.

FIGURA 1 – O que é um Sistema Operacional

Desta forma o sistema operacional facilita do acesso aos recursos do sistema,


transparente para o usuário, e no caso de muitos usuários, proporciona compartilhamento
de recursos de forma organizada e protegida.
Algumas atividades que envolvem o sistema operacional:

 leitura de um disquete (acionar a cabeça de leitura e gravação, posicionar trilha e setor,


dados do disco para a memória);
 quando um usuário solicita a execução de um programa, o sistema operacional deve
alocar espaço na memória para carregar e acessar o programa.

Quais são as etapas anteriores à carga do sistema operacional em um microcomputador?

Quando o microcomputador é ligado, realiza o POST (Power On Self Test) que consiste em um
conjunto de testes para determinar se o hardware está funcionando corretamente (verificação da
RAM, vídeo e outros dispositivos; localização da unidade de disco de inicialização; etc.). Estes
testes são realizados a partir do BIOS (Basic Input Output System, podendo variar conforme cada
fabricante).

Se o BIOS for compatível com a tecnologia Plug and Play, algumas rotinas adicionais serão
realizadas para reconhecimento dos dispositivos. Após a inicialização dos dispositivos, o
computador localiza e lê o setor de inicialização, contendo o arquivo carregador, que será carregado
para a memória principal e passará a controlar a carga do sistema operacional (boot).

4
A divisão do hardware de um computador

Para entendermos o funcionamento de um Sistema Operacional, devemos conhecer a divisão


básica de um hardware. Os componentes do hardware de um computador são divididos em três
grupos/subsistemas básicos:

1. Unidade Central de Processamento (UCP ou processador) – é o cérebro


do computador, responsável pela execução de todos os programas armazenados na memória
principal. A UCP é composta de várias partes:

 ULA (Unidade Lógica e Aritmética) que realiza operações tais como adições e
deslocamento, necessárias à execução das instruções;
 UC (Unidade de Controle) que é responsável pela busca das instruções e determinação de
seus tipos;
 Registradores (PC, IR, MAR, MBR, SP e outros) que consistem em áreas de memória para
armazenamento de resultados temporários e informações de controle. Dois registradores
importantes são o Program Counter (PC), que guarda o endereço da próxima instrução a
ser executada, e o Instruction Register (IR) que armazena a instrução que está sendo
executada;
 Clock é um dispositivo interno ao processador 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, medida em Hertz. O sinal de clock é
utilizado pela unidade de controle para a execução das instruções.
Cada programa é formado por uma seqüência de instruções que será executada pelo processador
do computador. O próprio sistema operacional é conjunto de programas que devem ser
executados pelo processador para controlar o funcionamento do próprio computador. A
importância da execução desse conjunto de programas, porém, é evidente, pois sem isto os
outros programas de usuário do computador não seriam executados.

2. Memória Principal (RAM) – É a parte do computador onde programas (instruções) e


dados são armazenados, sendo composta por unidades de acesso chamadas células, sendo que:

- A célula é a menor unidade endereçável. A maioria dos fabricantes de computador


padronizam a célula em 8bits de tamanho (byte). Bytes são agrupados em palavras; um
computador com palavra de 16bitas tem 2bytes/palavra, enquanto que um computador
com palavra de 32bits tem 4bytes/palavra. O significado de uma palavra é que a maioria
das instruções operam em palavras inteiras, por exemplo, somando duas palavras. Então
uma máquina de 16bits terá registradores de 16bits e instruções que manipulam palavras
de 16bits;
- Todas as células em uma memória possuem o mesmo número de bits;
- Cada célula da memória possui um endereço único; a quantidade de bits do endereço, que
nada tem haver com a quantidade de bits da célula, está relacionado ao número máximo
de células endereçáveis. Por exemplo, com 16bits podemos endereçar 65536
combinações diferentes, ou seja, uma memória de 64K de capacidade de armazenamento.

Depois do processador, que é o componente que executa as instruções dos programas, a


memória é o componente mais disputado pelos programas, uma vez que os programas devem
estar carregados na memória principal para ser “enxergado” e executado pelo processador. Esta
memória é classificada como volátil, ou seja, não tem capacidade de preservar o seu conteúdo

5
sem uma fonte de alimentação. Por esse motivo devemos sempre gravar nossos
programas/arquivos quando estes forma alterados e permanecem na memória principal.

O tempo de acesso aos dados contidos na memória principal pode ser agilizado quando se coloca
no computador uma memória auxiliar, chamada memória cache. A memória cache é uma
memória volátil de alta velocidade, localizada na placa-mãe do computador. O tempo de acesso a
um dado nela contido é muito menor que se estivesse na memória principal. Toda vez que o
processador faz 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 há necessidade do acesso à
memória principal; do contrário, o acesso é obrigatório. Neste último caso, o processador, a partir
do dado referenciado, transfere um bloco de dados para o cache. O tempo de transferência entre
as memórias é pequeno, se comparado com o aumento do desempenho obtido com a utilização
desse tipo de memória. Existe também um outro nível de memória cache que é encontrado em
alguns processadores da linha PC existentes no mercado, cujo funcionamento é semelhante,
tendo velo-cidade de acesso ainda superior ao da memória cache da placa-mãe.

3. Dispositivos de Entrada/Saída – São os componentes que permitem a comunicação


entre o computador e o mundo externo. Podem ser divididos em duas categorias:

- os que servem apenas de interface homem/máquina - através deles, o processador e a


memória principal podem comunicar-se com os usuários (teclado, monitor, impressoras,
scanner, caneta ótica, mouse). O desenvolvimento de interfaces cada vez mais amigáveis
permite que as pessoas sem conhecimento específico sobre informática possam fazer uso
de computadores;
- aqueles destinados ao armazenamento de programas e dados (discos e fitas magnéticas),
chamados de memórias secundárias. Seu custo é relativamente baixo, porém o tempo de
acesso é maior quanto comparado ao tempo de acesso à memória principal ou mesmo à
memória cache.

Não podemos esquecer que a UCP, a memória principal e os dispositivos de E/S encontra-se
interligados fisicamente através de linhas de comunicação denominadas barramento. Um barra-
mento (bus) pode ser visto como um conjunto de fios paralelos, onde trafegam informações.

Sistemas Operacionais de Hoje


No início da computação os primeiros "sistemas operacionais" eram únicos, pois cada
mainframe vendido necessitava de um sistema operacional específico. Este problema era
resultado de arquiteturas diferentes e da linguagem utilizada, no caso assembly
(linguagem de baixo nível). Após essa fase, iniciou-se a pesquisa de sistemas
operacionais que automatizassem a troca de jobs (tarefas), pois os sistemas eram mono-
usuário e tinham cartões perfurados como entradas (eliminando, assim, o trabalho de
pessoas que eram contratadas apenas para trocar os cartões perfurados). Um dos
primeiros sistemas operacionais foi o CTSS, desenvolvido no MIT. Outro que na época
revolucionou o conceito de sistema operacional foi o Multics, desenvolvido nos
laboratórios da AT&T. Os sistemas operacionais eram geralmente programados em
assembly, até mesmo o UNIX em seu início. Após poucas versões, o UNIX começou a ser
desenvolvido através de uma nova linguagem (a Linguagem C) e teve em seus princípios
muitas inovações do Multics. O UNIX criou um ecossistema de versões e inovações, entre
6
estes, destacam-se: System V e derivados - família BSD (FreeBSD, NetBSD, OpenBSD,
etc..), Linux (e derivados), HP-UX, AIX, e até o Mac OS X (que é uma variante dos BSDs).
Na década de 70, quando começaram a aparecer os computadores pessoais, houve a
necessidade de um sistema operacional de utilização mais fácil. Em 1980, William (Bill)
Gates e seu colega de faculdade, Paul Allen, fundadores da Microsoft, compram o
sistema QDOS ("Quick and Dirty Operating System") de Tim Paterson por $50.000,
batizam-no de DOS (Disk Operating System) e venderam licenças à IBM. O DOS vendeu
muitas cópias, como o sistema operacional padrão para os computadores pessoais
desenvolvidos pela IBM.
No começo da década de 1990, um estudante de computação finlandês postou um
comentário numa lista de discussão dizendo que estava desenvolvendo um kernel de
sistema operacional e perguntou se alguém gostaria de auxiliá-lo na tarefa. Este
estudante chamava-se Linus Torvalds e o primeiro passo em direção ao tão conhecido
Linux foi dado naquele momento.

Um mainframe é um computador de grande porte, dedicado normalmente ao processamento de um volume


grande de informações. Os mainframes são capazes de oferecer serviços de processamento a milhares de
usuários através de milhares de terminais conectados diretamente ou através de uma rede. (O termo
mainframe se refere ao gabinete principal que alojava a unidade central de processamento nos primeiros
computadores.).

O Massachusetts Institute of Technology, mais conhecido pela sua sigla MIT, é um centro universitário
de educação e pesquisa localizado em Cambridge, nos EUA. O MIT é um dos líderes mundiais em ciência e
tecnologia, bem como outros campos, como administração, economia, lingüística, ciência política e filosofia.

AT&T (Abreviação em inglês para American Telephone and Telegraph) Corporation é uma companhia
estadounidense de telecomunicações. AT&T provê serviços de telecomunicação de voz, vídeo, dados e
Internet para empresas, particulares e agência governamentais. Durante sua longa história, AT&T foi a
maior companhia telefônica e o maior operador de televisão por cabo do mundo, constituindo por vezes um
monopólio.

CTSS

CTSS é a sigla para Compatible Time-Sharing System (Sistema compatível de divisão por
tempo) CTSS foi escrito por um time do Centro Computacional do MIT, liderado pelo Prof.
Fernando J. Corbató, conhecido por todos como Corby. Muito da pesquisa do CTSS foi
patrocinada pela Fundação Nacional de Ciência dos Estados Unidos (US National
Science Foundation)
A versão do CTSS que foi disponibilizada para usuários foi demonstrada no IBM 7090 no
MIT em novembro de 1961. O CTSS foi descrito como um Sistema de compatilhamento
no tempo experimental, por Fernando J. Corbató, Marjorie Merwin Daggett e Robert C.
Daley na primavera de 1962 durante uma conferência intitulada Spring Joint Computer
Conference. Na época, o software ainda não estava funcionando bem no IBM 7090.
Em 1963, O CTSS já funcionava bem e era suportado pelo hardware RPQs no IBM 7090,
e pesquisadores de computadores por todo os Estados Unidos usavam o CTSS para
computação interativa.

Multics

O Multics (Multiplexed Information and Computing Service) era um sistema modular


montado em uma bancada de processadores, memórias e equipamentos de comunicação
7
de alta velocidade. Pelo desenho, partes do computador poderiam ser desligadas para
manutenção sem que outras partes ou usuários fossem afetados. O objetivo era prover
serviço 24 horas por dia 365 dias por ano - um computador que poderia ser tornado mais
rápido adicionando mais partes.

UNIX

UNIX é um sistema operacional multitarefa e multiusuário originalmente criado por um


grupo de programadores da AT&T e dos Bell Labs, que incluem Ken Thompson, Dennis
Ritchie e Douglas McIlroy.

Em 1969 Thomson escreveu o primeiro sistema UNIX totalmente em assembly e


destinado a funcionar em máquinas PDP-7, com objetivo de criar um sistema operacional,
de respostas rápidas, com os mesmos conceitos do OS Multics (que ele ajudou a
desenvolver), mas que pudesse ser rodado em computadores de pequeno porte como o
PDP-7. Mais tarde Ken Thompson e Dennis Ritchie reescreveram ainda em assembly o
UNIX para as plataformas PDP-11 e PDP-20. Apenas no início da década de 1970 o
UNIX passou a ser desenvolvido usando exclusivamente a nova linguagem C (criada
também por Ritchie nessa época) e começou a tornar forma semelhante à que possui
atualmente e a tornar-se portátil através de várias plataformas. Finalmente, ao longo dos
anos 70 e 80 foram sendo desenvolvidas as primeiras distribuições de grande dimensão
como os sistemas BSD (na Universidade de Berkeley na Califórnia) e os System III e
System V (nos Bell Labs).

Atualmente, UNIX (ou *NIX) é o nome dado a uma grande família de Sistemas
Operacionais que partilham muitos dos conceitos dos Sistemas UNIX originais, sendo
todos eles desenvolvidos em torno de standards como o POSIX (Portable Operating
System Interface) e outros. Alguns dos Sistemas Operacionais UNIX atuais são: BSD
(FreeBSD, OpenBSD e NetBSD), Solaris (anteriormente conhecido por SunOS), IRIX,
AIX, HP-UX, Tru64, Linux (nas suas milhares de distribuições), e até o Mac OS X
(baseado num kernel Mach BSD chamado Darwin).

Classificações de sistemas operacionais

Os sistemas operacionais podem ser classificados sob três pontos de vista diferentes:

1) Do ponto de vista do número de usuários que utilizam o sistema, podemos ter um sistema
operacional:

 monousuário – apenas um e só um usuário trabalha de cada vez. Ex.: DOS, Windows


95/98.
 multiusuário – permite o uso da máquina por vários usuários ao mesmo tempo, ou seja,
cada usuário pode executar um ou mais programas simultaneamente. Ex.: Unix, Linux,
Windows XP.

2) Dependendo da forma como os programas são executados, de forma seqüencial ou


concorrente, os sistemas operacionais podem ser classificados como:

8
 monoprogramado ou monotarefa - o sistema operacional só tem capacidade de controlar e
gerenciar um programa de cada vez. São de simples implementação, se comparados a
outros sistemas, não havendo muita preocupação com problemas de proteção, pois só
existe um usuário/programa utilizando-o. Exemplos:
o Estão tipicamente relacionados ao surgimento dos mainframes e a introdução dos
computadores pessoais e estações de trabalho
o O sistema DOS pode ser considerado um sistema monoprogramado com algumas
características especiais; os programas TSR (Terminate and Stay Resident) têm a
capacidade guardar o contexto do que estava sendo executado, desviando o fluxo
original de execução, ou seja, pode haver um número arbitrário de processos na
memória, mas somente um deles pode estar ativo; apesar de suportar a existência
simultânea de vários processos, ele não é um sistema multiprogramando.
 Sistema multiprogramado ou multitarefa - Os recursos da máquina são alocados de modo
dinâmico entre o número de programas ativos de acordo com o nível de prioridade ou o
estágio de execução de cada um dos programas. O sistema operacional gerencia o acesso
concorrente aos seus diversos recursos, de forma ordenada e protegida, pelos diversos
programas. Dessa forma é possível aumentar a produtividade e reduzir os custos de
utilização do sistema, aproveitando melhor o hardware. Por exemplo, enquanto um
programa espera por uma operação de leitura ou gravação em disco, outros programas
podem estar sendo processados no mesmo intervalo de tempo. São mais complexos e
eficientes do que os sistemas monoprogramados, já que vários programas utilizam os
mesmos recursos. Resumindo, o Sistema Operacional pode controlar e gerenciar mais de
um programa em execução ao mesmo tempo. Podem ser classificados pela forma com
que suas aplicações são gerenciadas/interação com os usuários, sendo que um sistema
operacional pode suportar um ou mais desses tipos de processamento:
o BATCH (LOTE) - Os programas quando executados são armazenados em disco ou
fita, onde esperam para serem ‘atendidos’. Normalmente, os programas (jobs ou
tarefas) que são executados nesses sistemas não exigem interação com os
usuários (por exemplo, compilações e linkedições);
o TIME-SHARING (TEMPO-COMPARTILHADO) - O sistema operacional aloca uma
‘fatia de tempo’ (time-slice) do processador para cada usuário. Caso o programa do
usuário não esteja concluído nesse intervalo de tempo, ele é substituído por um de
outro usuário, e fica esperando por uma nova fatia de tempo. Permitem a interação
dos usuários com o sistema;
o REAL-TIME (TEMPO-REAL) - Semelhante ao time-sharing, sendo a maior
diferença o tempo de resposta exigido na execução. Enquanto em sistemas de
tempo compartilhado o tempo de resposta pode variar sem comprometer as
aplicações em execução, nos sistemas de tempo real os tempos de resposta
devem estar dentro de limites rígidos. Não existe a i-déia de fatia de tempo, um
programa executa o tempo que for necessário, ou até que apareça outro prioritário
em função de sua importância. Essa importância ou prioridade de execução é
controlada pela própria aplicação e não pelo sistema operacional, como acontece
no sistema de tempo-compartilhado. Esse tipo de sistema está normalmente
presente em controle de processos, como no monitoramento de refinarias de
petróleo, controle de tráfego aéreo, usinas termoelétricas e nucleares, ou em
qualquer aplicação onde a segurança é fator fundamental.

Ex.: Windows 95/98/XP/NT/2003, OS/2, UNIX e LINUX, entre outros.

3) Do ponto de vista do número de processadores, podemos ter:

 Sistema Operacional Monoprocessado – O SO controla e gerencia apenas um


processador. Ex.: Windows 95/98, DOS, Windows XP Home Edition.

9
Um sistema monoprocessado (diferente de Sistema Operacional Monoprocessado)
caracteriza-se por possuir um único processador, sendo este controlado pelo sistema
operacional instalado. Ex.: Microcomputador PC com Windows 98.

 Sistema Operacional Multiprocessado – O SO pode controlar e gerenciar dois ou mais


processadores ao mesmo tempo. Ex.: Windows XP Professional, Linux...
Um sistema multiprocessado (diferente de Sistema Operacional Multiprocessado)
caracteriza-se por possuir mais de um processador, sendo que estes podem compartilhar
o mesmo sistema operacional, ou cada um pode possuir o seu próprio sistema. Múltiplos
processadores permitem que vários programas sejam executados ao mesmo tempo, ou
que um programa seja dividido em subprogramas, para execução simultânea por mais de
um processador. Sistemas com múltiplos processadores possibilitam aumentar a
capacidade computacional com menor custo (escalabilidade), além de permitirem a
reconfiguração e o balanceamento do sistema. A reconfiguração é a capacidade de um
sistema poder continuar o processamento, mesmo se um dos processadores falhar ou
parar de funcionar, embora com menor capacidade de computação. O balanceamento
possibilita distribuir a carga de processamento entre os diversos sistemas da configuração,
melhorando o desempenho como um todo. O multiprocessamento mantém todos os
conceitos de multiprogramação, só que aplicados a vários processadores. Com o
multiprocessamento, novos problemas de concorrência foram surgindo, pois vários
processadores podem estar acessando as mesmas áreas de memória, além da dificuldade
de interligação eficiente dos processadores, memória e periféricos. Para o
desenvolvimento de sistemas operacionais com múltiplos processadores é importante que
se conheça a forma de comunicação entre esses processadores e o grau de
compartilhamento da memória principal e dos dispositivos de E/S. Em função desses
fatores, podemos classificar os sistemas em:

o fortemente acoplados – dois ou mais processadores (multiprocessadores)


compartilhando uma única memória e controlados por apenas um único sistema
operacional. Podem ser divididos conforme a simetria existente entre os
processadores, ou seja, se todos os processadores podem executar ou não as
mesmas funções:
 nos sistemas assimétricos ou mestre/escravo somente um processador
(mestre) pode executar serviços do sistema operacional, como realizar
operações de E/S. Sempre que um processador do tipo escravo precisar
realizar uma operação de E/S, terá que requisitar o serviço ao processador
mestre;
 nos sistemas simétricos (SMP – Simmetric MultiProcessing) todos os
processadores realizam as mesmas funções, ficando a cargo de um único
processador algumas poucas funções, como, por exemplo, a inicialização
(boot). Ex.: microcomputadores PC com vários processadores que servem
de servidores de redes departamentais com sistema operacional Windows
NT, que implementa SMP;
o fracamente acoplados – caracterizam-se por possuir dois ou mais processadores
(multicomputadores), conectados através de linhas de comunicação, onde cada um
desses sistemas funciona de forma independente, possuindo seu(s) próprio(s)
processador(es), memória principal e dispositivos de E/S. Em uma rede
multicomputadores, onde existem dois um mais sistemas independentes, também
chamados de nós, hosts ou estações, podemos classificar os sistemas como
sendo:
 Sistemas operacionais de redes – cada nó possui seu próprio SO, além de
hardware e software que possibilitam ao sistema ter acesso o outros nós da
rede. Cada nó é totalmente in-dependente um do outro, podendo inclusive
possuir sistemas operacionais diferentes. Os sistemas operacionais de
redes permitem copia de arquivos, impressão e até gerência re-motas, além

10
de serviços de correio eletrônico, emulação de terminais. A idéia é prover o
compartilhamento de recursos e troca de informações. Ex.: Redes locais
 Sistemas operacionais distribuídos – cada nó também possui seu próprio
sistema operacional, memória principal, processador e dispositivos de E/S.
Porém, existe um “relacionamento” mais forte entre esses nós, que,
geralmente, possuem o mesmo SO. Para o usuário e suas aplicações, o
conjunto de computadores é “visto” como um único sistema, como se não
existisse uma rede de computadores. A grande vantagem é a possibilidade
do balance-amento de carga, ou seja, quando um programa é admitido para
execução, o sistema escolha o nó que está com menor carga de
processamento e este vai executá-lo. Também é permitido o
compartilhamento de recursos independentemente do computador em que a
aplicação estiver sendo executado. Esse tipo de sistema distribuído é
muitas vezes chamado de cluster. Ex.: Rede de computadores com sistema
operacional UNIX SOLARIS da SUN.

SISTEMAS

OPERACIONAIS

MONOPROGRAMADOS /
MONOTAREFA

MULTIPROGRAMADOS / Tipos de processamento:


MULTITAREFA
BATCH
TIME-
MONOPROCESSADOS SHARING REAL-TIME

MULTIPROCESSADOS

Comunicação
entre UCP’s e FORTEMENTE
compartilhamento ACOPLADOS
de memória SIMÉTRICOS
principal e
ASSIMÉTRICOS
dispositivos de FRACAMENTE
E/S:
ACOPLADOS
S.O. DE
REDES SISTEMAS
MONOUSUÁRIOS DISTRIBUÍDOS

MULTIUSUÁRIOS

FIGURA 2 – Classificação dos Sistemas Operacionais

11
Arquitetura de Sistemas Operacionais

Componentes do SO

Gerenciador de processos
Em uma definição geral, um processo é um programa em execução (um compilador, um
processador de textos, etc). Cada processo precisa de certos recursos para ser executado (CPU,
Memória, Arquivos e Dispositivos de E/S). O processo é a unidade de trabalho de um sistema de
computação e tais sistemas possuem processos do SO e do usuário sendo executados. As
funções do SO com relação aos processos são: criar, excluir, suspender e retomar processos;
fornecer mecanismos para sincronização e comunicação entre os processos; tratar deadlocks.

Gerenciador de memória
Para que um programa seja executado, ele precisa ser carregado na memória e ser mapeado com
endereços de memória absolutos. Conforme ele é executado, fará referência a estes endereços e
por fim, quando termina, a memória alocada para ele deve ser liberada. Para fazer uso eficiente
do sistema, diversos processos devem ser carregados na memória para execução. Há várias
formas de fazer isso dependendo de diversos fatores (inclusive suporte do hardware).

Funções do SO com relação à memória: manter uma relação de quais partes da memória estão
sendo usadas e por quais processos, decidir quais processos devem ser carregados na memória
se houver espaço, alocar e desalocar espaço, conforme necessário.

Gerência de arquivos
Os dispositivos de armazenamento possuem uma série de propriedades particulares (velocidade e
método de acesso, taxa de transferência, etc). A função da gerência de arquivos do SO é prover
um meio lógico e uniforme, para que os processos e usuários possam lidar mais facilmente com
tais particularidades. O conceito de arquivo (e o sistema de diretórios) é uma forma de mapear as
unidades físicas para conceitos lógicos que tornam seu uso mais fácil. Ainda é função do SO
controlar os direitos de acesso a tais arquivos.

Funções do sistema de arquivos: criar, excluir e fornecer outros meios de manipular arquivos e
diretórios; mapear arquivos nos meios de armazenamento secundários; permitir um meio de se
fazer backup dos arquivos e meios não-voláteis.

Sistema de Entrada e Saída


É função do SO esconder as peculiaridades dos dispositivos de E/S. O subsistema de E/S
consiste em: um componente da gerência de memória responsável por buffering, cache e
spooling; uma interface geral de drivers; os drivers específicos para cada dispositivo.

12
Gerência de Armazenamento Secundário
Como a memória principal é volátil (e limitada) é preciso uma forma de armazenar
permanentemente arquivos de dados e de programas. A gerência de armazenamento secundário
é responsável por: gerenciar espaço livre, alocar espaço, escalonar o acesso ao disco.

Redes
Os computadores podem ser ligados em redes de diversos níveis de complexidade e é função do
módulo de redes de um SO, permitir que os sistemas se comuniquem e que o processamento seja
distribuído adequadamente.

Proteção
Em um sistema onde vários usuários e processos podem trabalhar simultaneamente, deve-se
garantir que um não interfira na operação do outro, protegendo-se o espaço de memória, evitando
que um processo controle a CPU indefinidamente e controlando o acesso aos diversos recursos,
permitindo-se que somente os usuários autorizados façam uso dos mesmos.

Interpretador de comandos
É um dos módulos mais importantes, chegando a definir a "aparência" do sistema para o usuário
final. O interpretador de comandos (ou shell) pode ser uma parte do próprio núcleo do sistema
operacional, ou um processo separado. Sua função é receber comandos do usuário, que definem
o que deve ser feito pelo SO para cumprir uma determinada tarefa. A forma como ele funciona,
pode variar desde um programa que lê uma série de informações de controle de jobs a partir da
entrada; passando por um complexo sistema onde se digita comandos com parâmetros em um
prompt; até um sistema completamente gráfico, onde se utiliza um dispositivo apontador para
tratar dos processos, arquivos e demais recursos, que são todos representados graficamente
como "ícones" e "janelas".

Serviços do SO

Execução de Programas
Carregar o programa na memória, executar e encerrar sua execução (possivelmente, podendo
indicar algum erro).

Operações de E/S
Acesso a arquivos ou dispositivos de E/S que não podem ser acessados diretamente pelos
usuários e processos (por questões de segurança e eficiência).

Manipulação do Sistema de Arquivos


Criar, excluir, ler e gravar arquivos.

13
Comunicação
Troca de mensagem entre processos ou memória compartilhada.

Detecção de Erros
O SO deve detectar e tratar adequadamente os erros de hardware, memória, nos dispositivos, nos
programas de usuário, etc.

Alocação de Recursos
Em sistemas com múltiplos usuários e processos, é preciso controlar quem vai acessar cada
recurso e reservá-lo, para que outros processos e usuários não interfiram na sua execução.

Contabilização
Registrar os recursos que são utilizados por usuário é importante para contabilização ou mesmo
para fornecer estatísticas a serem usadas para otimizar o sistema.

Proteção
Evitar que processos interfiram na execução um do outro, assim como o acesso não autorizado ao
sistema ou recursos do mesmo.

Chamadas de Sistema

Chamada de Sistema é o mecanismo pelo qual os processos de usuário tem acesso aos serviços
do SO. Em geral são implementadas na forma de instruções em linguagem assembly, mas
comumente podem ser acessadas através de linguagens de alto nível (C, C++, Perl, Delphi, etc).
A maior parte da complexidade do uso das chamadas de sistema está "escondida" nas rotinas das
bibliotecas de sistema, sendo que a maior parte dos usuários e programadores jamais fará uso
direto delas.

Tipos de chamadas de sistema

 Controle de processos: criar, carregar, executar e terminar; pegar e alterar atributos;


sinalizar ou esperar um evento; alocar e liberar memória.

 Manipulação de arquivos: criar, apagar, abrir, fechar, ler e gravar; pegar e alterar atributos
do arquivo.

 Manipulação de dispositivos: reservar e liberar dispositivos; ler, gravar e reposicionar;


conectar ou desconectar logicamente.

14
 Manutenção de informações: ler e alterar informações como data e hora, dados do
sistema, atributos de processos, arquivos e dispositivos.

 Comunicação: criar e apagar conexões de comunicação; enviar e receber mensagens e


informações de status; conectar ou desconectar dispositivos remotos.

Programas de Sistema

Um sistema de computação é formado por hardware, sistema operacional, programas de sistema,


e aplicativos do usuário. Os programas de sistema fornecem um ambiente conveniente para o
desenvolvimento e execução de programas.

Categorias

 Gerência de arquivos: criar, excluir, copiar, renomear, imprimir, listar e manipular arquivos
e diretórios.

 Informações de status: programas que pedem ao sistema informações gerais e as exibem,


tais como: data, hora, quantidade de memória e espaço em disco, usuários, etc.

 Modificação de arquivo: diversos tipos de editores de texto.

 Suporte à linguagem de programação: compiladores, montadores e interpretadores para


linguagens de programação. A maior parte destes programas agora são distribuídos
separadamente, geralmente de forma paga.

 Carregamento e execução de programas: utilitários de carga, linkeditores, sistemas de


depuração (alto nível e linguagem de máquina).

 Comunicação: programas para criar conexões remotas com processos em outros


computadores. Exemplos: FTP, navegadores Web, correio eletrônico, etc.

Estrutura do sistema operacional

Estrutura simples
Sistemas que não possuem uma estrutura bem definida, sendo que os diversos módulos do
kernel estão "misturados" num único programa. Em sistemas com o MS-DOS, nem mesmo o
hardware era separado dos programas de usuário, sendo que os programas poderiam ter acesso
direto aos dispositivos do sistema. O Unix original sofria de problemas semelhantes devido à falta
de suporte de hardware, que foi implementado depois, permitindo um melhor controle do SO
sobre a máquina.
15
Estrutura em camadas
Uma das formas de modularizar um sistema é através de camadas, sendo que cada uma é
construída sobre as outras e possui níveis de acesso diferentes. As camadas inferiores são
construídas de forma a prover serviços convenientes às camadas acima. As camadas superiores
fazem uso das camadas mais baixas, sem nem precisar "saber" como os serviços são
implementados. Neste tipo de projeto a implementação e depuração do sistema é mais simples.
No entanto, alguns problemas surgem como performance reduzida e dificuldade ao definir as
funções das camadas.

Microkernel
No modelo de microkernel, todos os serviços não-essenciais do sistema operacional são
removidos do kernel e passam a ser executados no modo usuário. O microkernel faz então
apenas o controle de processos e memória, sendo que outros serviços como sistema de arquivo,
entrada e saída, etc, são executados por processos do SO que executam com privilégio de
usuário. As vantagens são que o sistema é mais fácil de expandir (um novo módulo pode ser
acrescentado sem alterar o kernel), mais robusto (uma falha em algum módulo não resultará
numa pane geral, já que apenas o microkernel roda em modo protegido) e facilidade ao portar
para outros sistemas (já que apenas o kernel precisa ser adaptado na maioria dos casos).

Máquina virtual

Num modelo de máquina virtual, a abordagem em camadas é levada ao extremo. O SO de


máquina virtual usa técnicas de escalonamento de CPU e memória virtual para simular diversas
"instâncias" de máquinas virtuais. Cada uma delas é uma cópia exata do Hardware original, sendo
que os programas podem ser executados como se estivessem rodando no próprio hardware. É
possível inclusive executar Sistemas Operacionais diferentes e cada uma das máquinas virtuais,
sendo que cada uma está totalmente isolada das outras.

Máquina virtual Java


Java é uma tecnologia e não apenas uma linguagem de programação. Ela fornece três itens: a
linguagem de programação, a interface de programação de aplicações (API), a máquina virtual
Java.

A máquina virtual Java consiste num computador abstrato sobre os quais são executados os
programas criados na linguagem Java e compilados em "bytecode" que são os códigos
(instruções) para essa máquina virtual. A máquina virtual então "interpreta" este código,
executando o programa. A vantagem deste modelo é que a máquina virtual torna os programas
totalmente independentes de hardware, pois uma determinada aplicação, uma vez compilada,
pode rodar em qualquer máquina virtual Java, não importa em que arquitetura. Os detalhes
dependentes da máquina e do sistema operacional são tratados por cada implementação da
máquina virtual Java.

16
Tipos de Sistemas Operacionais
POSIX / UNIX-like
o AIX  Slackware
o BSD  SuSE
 4.4BSD  Ubuntu Linux
 386BSD  Caixa Mágica
 FreeBSD  Outras Distribuições
 OpenBSD o System V
 NetBSD  HP-UX
 NeXTSTEP  IRIX
 BSDI (BSD/OS)  OSF/1
 Darwin  OS-9
o Cromix  POSYS
o GNU/Hurd  QNX
o Minix  Solaris
o GNU/Linux (Linux)  SunOS
 Conectiva (Mandriva)  SCO-UNIX
 Debian  Tropix
 Knoppix  Tru64
 Kurumin  Digital UNIX]
 Kalango  Ultrix
 Famelix  UniCOS
 Mandrake (Mandriva)  UNIflex
 RedHat  Xenix
 Fedora Core  z/OS

Microsoft Windows
o MS-DOS  Windows NT 4
o Windows  Windows 2000
 Windows 386  Windows XP
 Windows 2.x  Windows Starter
 Windows 3.x Edition

 Windows 95  Windows Media Center

 Windows 98  Windows Pc Table

 Windows ME  Windows for PDA

o Windows CE  Windows Server 2003

o Windows NT  Windows Vista


(Codename Longhorn)
 Windows NT 3.5

17
Apple / Macintosh
o Apple DOS o Mac OS X (Darwin)
o Mac OS o ProDOS

Amiga
o AmigaOS o MorphOS
o AROS

Atari ST
o TOS o MiNT
o MultiTOS

Be-like
o BeOS o OpenBeOS
o BeIA o Zeta
o BlueEyedOS

DOS
o DR-DOS o VirtuOS
o FreeDOS o Sisne
o MS-DOS o SO16
o PC-DOS o QDOS

IBM
o AIX o MFT
o OS/2 o MVT
o OS/360 o SVS
o OS/390 o MVS
o OS/400 o TPF
o VM/CMS o ALCS
o DOS/VSE

Digital / Compaq
o AIS o RT-11
o OS-8 o TOPS-10
o RSTS/E o TOPS-20
o RSX o VMS (OpenVMS)

PDAs
o EPOC o SymbianOS
o Palm OS o Windows CE
o Pocket PC

18
Outros

19
o AtheOS
o BS2000
o CP/M
o FLEX9
o FLEX
o MP/M-80
o Mach
o MenuetOS
o Mini-FLEX
o Multics
o Native Oberon
o NetWare
o Plan 9
o PrimOS
o ReactOS
o RiscOS
o SkyOS
o Syllable
o QNX
o SSB-DOS
o TUNES
o TripOS
o UCSD P-system

Você também pode gostar