Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
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
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.
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.
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
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.
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.
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.
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
UNIX
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).
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:
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.
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.
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
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
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.
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).
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.
Manipulação de arquivos: criar, apagar, abrir, fechar, ler e gravar; pegar e alterar atributos
do arquivo.
14
Manutenção de informações: ler e alterar informações como data e hora, dados do
sistema, atributos de processos, arquivos e dispositivos.
Programas de Sistema
Categorias
Gerência de arquivos: criar, excluir, copiar, renomear, imprimir, listar e manipular arquivos
e diretórios.
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
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
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