Escolar Documentos
Profissional Documentos
Cultura Documentos
INTRODUÇÃO
ÍNDICE:
1. Introdução ........................................................................................................ 2
8. Projeto ............................................................................................................ 31
8. Bibliografia ..................................................................................................... 32
1 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
1. INTRODUÇÃO
Um computador sem seu software nada mais é do que um pedaço inútil de metal. No
entanto, quando equipado com o software adequado, ele é capaz de armazenar e
recuperar informação, encontrar erros de sintaxe em textos, executar uma imensa
variedade de jogos eletrônicos e de engajar seu usuário em muitas atividades produtivas.
O software de um computador pode ser dividido, grosso modo, em duas categorias: os
programas de sistemas, que gerenciam a operação do próprio computador, e os programas
de aplicação, que resolvem problemas para o usuário. O mais importante dos programas
de sistema é o sistema operacional, que controla todos os recursos do computador, e
fornece a base sobre a qual os programas aplicativos são escritos.
Um sistema de computador moderno é composto por um ou mais processadores,
uma certa quantidade de memória principal, terminais, discos magnéticos, interfaces de
rede e um conjunto de dispositivos de entrada e saída. Escrever programas que tomem
conta de todos esses componentes, fazendo-os trabalhar corretamente e de maneira
otimizada é uma tarefa bastante difícil de realizar. Se todo programador tivesse que se
preocupar como o disco magnético trabalha e com as dezenas de coisas que podem dar
errado quando da realização de uma leitura, é muito provável que muitos programas hoje
em operação simplesmente não tivessem sido escritos ou não estivessem funcionando a
contento.
Há muitos anos, ficou claro que dever-se-ia encontrar uma maneira de afastar o
usuário da complexidade do hardware. A forma encontrada, que evoluiu gradativamente,
foi a de colocar uma camada de software em cima do hardware, para gerenciar todos os
componentes do sistema, apresentando-o ao usuário com uma interface muito simples de
entender e de programar. Tal interface é conhecida como máquina virtual. A camada de
software construída sobre o hardware nada mais é do que o sistema operacional.
Esta situação é mostrada na figura 1. Na parte de baixo está o hardware, o qual
em muitos casos é composto de duas ou mais camadas. A mais baixa delas contém os
dispositivos físicos, representados por chips de circuitos integrados, fios, fontes de
alimentação, e assim por diante. A seguir, vem uma camada composta por um tipo de
software bastante primitivo, que controla diretamente os dispositivos anteriormente citados,
fornecendo uma interface bastante simples para a próxima camada. Tal software,
denominado microcódigo, composto de microprogramas, usualmente está gravado numa
memória do tipo read-only. Ele na verdade é um interpretador, que busca as instruções de
máquina na memória principal (add, move, jump, etc.), gerando o conjunto de sinais de
controle necessários à execução de tais instruções pelo hardware. Para executar uma
instrução de ADD, por exemplo, o microprograma específico precisa determinar onde estão
2 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
3 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
4 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
5 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
usuário era feito através da reserva antecipada de tempo de máquina. Ao chegar sua
vez de usar o computador, o usuário fazia sua própria programação nos painéis da
máquina e passava a torcer para que nenhuma das 20.000 válvulas do computador
viesse a queimar enquanto ele estivesse trabalhando. Nessa época, os programas
processados pelos computadores eram constituídos essencialmente por cálculos
numéricos repetitivos.
No início dos anos 50, houve uma sensível melhora no uso de tais máquinas com o
advento do cartão perfurado que tornou possível a codificação de programas em
cartões e sua leitura pela máquina, dispensando a programação através de painéis. Os
demais procedimentos não tiveram qualquer modificação.
7 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
carregava um programa especial que lia e processava o primeiro job da fita. A saída
era gravada numa segunda fita, em vez de ser diretamente impressa. Após o término
de cada um dos jobs, o sistema operacional lia e processava automaticamente o
próximo. Quando todo o lote tivesse sido processado, o operador removia as fitas de
entrada e de saída, levando a fita de saída para ser impressa off line, com auxílio do
1401.
Os computadores da segunda geração eram utilizados na realização de cálculos
científicos e de engenharia. Eles eram normalmente programados em linguagem
FORTRAN. Os sistemas operacionais típicos da época eram o FMS (Fortran Monitor
System) e o IBSYS, ambos desenvolvidos pela IBM para rodar no 7094.
8 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
9 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
equipados com este hardware. Com o passar dos anos, a IBM desenvolve sua
arquitetura 360 passando para a série 370 e para a 390.
Outra característica importante dos sistemas operacionais de terceira geração era
sua capacidade de ler jobs de cartão direto para o disco. Desta forma, assim que um
job ativo terminasse, o sistema operacional carregava um novo job na partição livre da
memória, proveniente do disco. Esta técnica foi denominada de SPOOL (Simultaneous
Peripheral Operation On Line) e era também empregada para as operações de saída.
Com o SPOOL, o 1401 deixou de ser necessário.
Apesar dos sistemas operacionais de terceira geração serem adequados para
processamento científico e comercial, eles ainda eram sistemas batch. Com estes
sistemas, o tempo entre a submissão do job e a disponibilização de sua saída passou
a ser medido em horas, de maneira que o simples esquecimento de uma vírgula
poderia fazer com que o programador viesse a perder a metade do dia.
A necessidade de obter bons tempos de resposta levou ao desenvolvimento dos
sistemas com compartilhamento de tempo (timesharing), uma variação dos sistemas
multiprogramados, onde cada usuário tinha um terminal on-line à sua disposição. Em
tais sistemas, se existissem 20 usuários ativos, com 17 deles parados, o processador
seria alocado ciclicamente a cada um dos três jobs que lhe estão requisitando serviço.
O primeiro sistema de compartilhamento de tempo, o CTSS (Compatible Time-Sharing
System), foi desenvolvido no MIT para um 7094 especialmente modificado.
Após o desenvolvimento do CTSS, o MIT, o Bell Labs e a GE decidiram
desenvolver um projeto de um computador que suportasse centenas de usuários
simultaneamente, em regime de compartilhamento de tempo. Este projeto foi
denominado de MULTICS (Multiplexed Information and Computing Service). Devido à
rápida evolução tecnológica dos parâmetros que foram tomados como base no projeto
e com o desenvolvimento de técnicas de integração de circuitos, o projeto fracassou.
Apesar disso, o MULTICS teve uma grande influência nos sistemas operacionais
construídos depois dele. Outros sistemas operacionais de tempo compartilhado
desenvolvidos foram os TSS (Time Sharing System) e o CP/CMS (Control
Program/Conversational Monitor System), ambos da IBM.
Um outro fato ocorrido durante a terceira geração de sistemas foi o fenomenal
crescimento dos minicomputadores, iniciado com o EC PDP-1, lançado em 1961. O
PDP tinha somente 4K palavras de 18 bits, mas custava 5% do valor do 7094. Para
algumas aplicações não numéricas, sua performance era muitas vezes tão boa quanto
a do 7094.
Um dos cientistas da Bell Labs que trabalhou no projeto MULTICS, Ken Thompson,
encontrou um pequeno PDP-7 e escreveu para ele uma versão monousuário do
MULTICS. Este trabalho foi o início do projeto que resultou no desenvolvimento do
10 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
11 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
12 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
Tipos de Sistemas
Operacionais
13 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
14 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
15 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
Sistemas
Multiprogramáveis/
Multitarefa
A. Sistemas Batch
Os sistemas batch foram os primeiros tipos de sistemas operacionais
multiprogramáveis a serem implementados na década de 1960. Os programas,
também chamados de jobs, eram submetidos para execução através de cartões
perfurados e armazenados em disco ou fita, onde aguardavam para serem
processados. Posteriormente, em função da disponibilidade de espaço na memória
principal, os jobs eram executados, produzindo uma saída em disco ou fita.
O processamento batch tem a característica de não exigir a interação do usuário
com a aplicação. Todas as entradas e saídas de dados são implementadas por
algum tipo de memória secundária, geralmente arquivos em disco.
Esses sistemas, quando bem projetados, podem ser bastante eficientes, devido à
melhor utilização do processador.
16 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
17 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
Sistemas
com Múltiplos
Processadores
Sistemas Sistemas
Fortemente Fracamente
Acoplados Acoplados
Memória
CPU Principal CPU
Dispositivos Dispositivos
de E/S de E/S
18 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
link de comunicação
CPU CPU
Com base no grau de integração dos hosts da rede, podemos dividir os sistemas
fracamente acoplados em sistemas operacionais de rede e sistemas distribuídos. A
grande diferença entre os dois é a capacidade do sistema operacional em criar uma
imagem única dos serviços disponibilizados pela rede.
Os sistemas operacionais de rede (SORs) permitem que um host compartilhe seus
recursos com os demais hosts da rede. Além disso, os usuários têm o
conhecimento dos hosts e seus serviços.
Já, nos sistemas distribuídos, o sistema operacional esconde os detalhes dos hosts
individuais e passa a tratá-los como um conjunto único, como se fosse um sistema
fortemente acoplado. Os sistemas distribuídos permitem que uma aplicação seja
19 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
dividida em partes e que cada parte seja executada por hosts diferentes da rede de
computadores. Para o usuário e suas aplicações é como se não existisse a rede de
computadores, mas sim um único sistema centralizado.
Outro exemplo de sistemas distribuídos são os clusters. Em um cluster existem dois
ou mais servidores ligados por algum tipo de conexão de alto desempenho. O
usuário não conhece os nomes dos membros do cluster e não sabe quantos são.
Quando ele precisa de algum serviço, basta solicitar ao cluster para obtê-lo.
Atualmente sistemas em cluster são utilizados para serviços de banco de dados e
Web, garantindo alta disponibilidade, escalabilidade e balanceamento de carga à
solução.
5. SOFTWARES UTILITÁRIOS
Para que o hardware tenha utilidade prática, deve existir 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 torna o trabalho dos
usuários muito mais simples e eficiente.
Utilitários são softwares relacionados mais diretamente com serviços
complementares do sistema operacional. Os softwares desenvolvidos pelos usuários são
denominados aplicativos.
5.1 Tradutor
Nos primeiros sistemas computacionais, os 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 ou assembly e das
linguagens de alto nível, o programador deixou de se preocupar com muitos aspectos
pertinentes ao hardware. A utilização dessas linguagens facilitou a construção de
programas, a documentação e a manutenção.
Apesar das inúmeras vantagens proporcionadas pelas linguagens de montagem e
de alto nível, os programas escritos nessas linguagens não estão prontos para ser
diretamente executados pelo processador. Para isso, eles têm de passar por uma
etapa de conversão, onde toda a representação simbólica das instruções é traduzida
para código de máquina. Esta conversão é realizada por um utilitário denominado
tradutor.
O módulo gerado pelo tradutor é denominado módulo-objeto, que, apesar de estar
em código de máquina, na maioria das vezes não pode ser ainda executado. Isso
20 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
5.2 Interpretador
O interpretador é considerado um tradutor que não gera módulo-objeto. A partir de
um programa-fonte escrito em linguagem de alto nível, o interpretador, durante a
execução do programa, traduz cada instrução e a executa imediatamente. Algumas
linguagens tipicamente interpretadas são o Basic e o Perl.
A maior desvantagem na utilização de interpretadores é o tempo gasto na tradução
das instruções de um programa toda vez que este for executado, já que não existe a
geração de um código executável. A vantagem é permitir a implementação de tipos de
dados dinâmicos, ou seja, que podem mudar de tipo durante a execução do programa.
21 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
5.4 Loader
O loader ou carregador é o utilitário responsável por carregar na memória principal
um programa para ser executado. O procedimento de carga varia com o código gerado
pelo linker; em função deste, o loader é classificado como do tipo absoluto ou
relocável.
Se o código executável for do tipo absoluto, o loader só necessita conhecer o
endereço de memória inicial e o tamanho do módulo para realizar o carregamento.
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.
5.5 Depurador
O desenvolvimento de programas está sujeito a erros de lógica, independentemente
da metodologia utilizada pelo programador. A depuração é um dos estágios desse
22 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
23 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
Aplicações
Utilitários
Núcleo do
Sistema Operacional
Hardware
24 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
25 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
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 portada
diretamente para um outro sistema.
26 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
27 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
28 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
29 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
Sempre que uma aplicação deseja algum serviço, é realizada uma solicitação ao
processo responsável. Neste caso, a aplicação que solicita o serviço é chamada de
cliente, enquanto o processo que responde à solicitação é chamado de servidor.
Um cliente solicita um serviço enviando uma mensagem para o servidor e este
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 cliente e servidor.
O conceito de arquitetura microkernel surgiu no sistema operacional Mach, na
década de 1980.
A utilização deste modelo permite que os servidores executem em modo usuário, ou
seja, não tenham acesso direto a certos componentes do sistema. Apenas o núcleo do
sistema executa no modo kernel. Como conseqüência, se ocorrer um erro em um
servidor, este poderá parar, mas o sistema não ficará inteiramente comprometido,
aumentando assim a sua disponibilidade.
30 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
8. PROJETO DO SISTEMA
31 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
9. BIBLIOGRAFIA
FLYNN, Ida M., McHOES, Ann M., Introdução aos Sistemas Operacionais, São Paulo:
Pioneira Thomson Learning, 2002
32 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
1. Como seria utilizar um computador sem um sistema operacional? Quais são suas
duas principais funções?
10. O que caracteriza o processamento batch? Quais aplicações podem ser processadas
neste tipo de ambiente?
12. Qual a diferença entre sistemas de tempo compartilhado e de tempo real? Quais
aplicações são indicadas para sistemas de tempo real?
13. O que são sistemas com múltiplos processadores e quais as vantagens em utilizá-
los?
33 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
18. Por que a execução de programas interpretados é mais lenta que a de programas
compilados?
25. O que é um system call e qual sua importância para a segurança do sistema? Como
as system calls são utilizadas por um programa?
27. Quais das instruções a seguir devem ser executadas apenas no modo kernel?
Desabilitar todas as interrupções;
Consultar a data e hora do sistema;
Alterar a data e hora do sistema;
Alterar informações residentes no núcleo do sistema;
Somar duas variáveis declaradas dentro do sistema;
Realizar um desvio para uma instrução dentro do próprio programa;
Acessar diretamente posições no disco.
29. Como o kernel do sistema operacional pode ser protegido pelo mecanismo de
acesso?
34 de 35
SISTEMAS OPERACIONAIS – NOTAS DE AULA
33. Por que a utilização da programação orientada a objetos é um caminho natural para
o projeto de sistemas operacionais?
35 de 35