AMBIENTES OPERACIONAIS p. 1 Revisão de arquitetura dos

Propaganda
2.
Introdução aos Sistemas Operacionais
No passado, a eficiência era o principal aspecto (custo do hardware). Isto está
mudando em função da relação entre o custo do hardware e o custo do software. Por
razões históricas, a maior parte da teoria de sistemas operacionais está voltada para o
aspecto eficiência.
• O que é um Sistema Operacional ?
Usuário
1
Compilador
Usuário
2
Usuário
3
Editor de
texto
Browser
...
Ao longo do tempo, a área de sistemas operacionais influenciou e foi
influenciada pela área de arquitetura. A introdução de novas características no
hardware foi a solução natural para muitos problemas encontrados na área de sistemas
operacionais. Diversos aspectos da computação são tratados em ambas as disciplinas,
de forma ligeiramente diferente.
Usuário
n
Quake
• Histórico
Aplicativos
Primeiros sistemas - somente hardware:
Sistema Operacional (infraestrutura)
Nos primórdios da computação, havia apenas o hardware. Grandes máquinas
(volumosas) dirigidas de um console. Eram utilizadas da seguinte forma:
Hardware
ƒ
ƒ
ƒ
ƒ
Hardware = Recurso Computacional
Aplicação = Resolve os diversos problemas dos usuários
ƒ
Sistema Operacional = Controla e coordena o uso do hardware pelas aplicações
Programador e operador eram a mesma pessoa (normalmente, um cientista).
Existia uma tabela de horário onde era feita a reserva de horas de máquina. Com o
passar do tempo, mais hardware e software ficaram disponíveis. As fitas magnéticas
passaram a ser empregadas com bastante intensidade. Surgiram bibliotecas de
funções, contendo principalmente rotinas para acessar os dispositivos de E/S. Cada
novo periférico exigia que novas rotinas fossem escritas e adicionadas à biblioteca
existente.
Recursos gerenciados pelo SO:
•
•
•
•
tempo de CPU
espaço de memória
espaço em disco
periféricos (impressora, etc.)
O SO é um programa de controle, pois controla os dispositivos de entrada e
saída (I/O devices) e os programas que resolvem os problemas dos usuários. Ele
previne erros e o uso impróprio do computador (por exemplo, um usuário não pode
destruir os arquivos de outros usuários).
O SO existe porque é útil: ele cria um sistema computacional usável. As
aplicações possuem necessidades em comum que são atendidas pelo sistema
operacional. Estas necessidades correspondem exatamente à alocação e controle dos
recursos.
O objetivo do SO é permitir o uso do computador de forma fácil e eficiente.
Pode-se dizer que o SO de um computador é a parte de software que estende os
recursos de hardware da máquina, tornando a utilização do equipamento mais
fácil, mais eficiente e mais confiável.
AMBIENTES OPERACIONAIS
Revisão de arquitetura dos computadores
Prof. Simão Sirineo Toscani
Programa é carregado na memória através de chaves, fita de papel ou cartões
perfurados;
Através de botões se inicia a execução;
O andamento da execução é acompanhado através de luzes no painel;
O resultado da computação é obtido através de impressora, fita de papel ou cartão
perfurado;
Se ocorrer um erro durante a computação, deve-se parar o programa, examinar a
memória e os registradores, consertar o programa e repetir todo o processo.
p. 1
Com o aparecimento das linguagens de alto nível FORTRAN e COBOL, a
programação ficou mais fácil, mas a operação ficou mais difícil. A execução de um
JOB (programa) em FORTRAN era feita da seguinte forma:
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
Carrega a fita magnética que contém o compilador;
Lê o programa de cartões, gera assembler em fita magnética ou cartão perfurado;
Carrega a fita magnética que contém o montador;
Lê o programa montado e gera código de máquina, sem as rotinas da biblioteca;
Carrega a fita magnética que contém o ligador;
Lê o código gerado antes e inclui as rotinas da biblioteca que serão executadas,
gerando código executável;
Carrega o código executável e executa o programa.
AMBIENTES OPERACIONAIS
Revisão de arquitetura dos computadores
Prof. Simão Sirineo Toscani
p. 2
As características deste ambiente são:
ƒ
ƒ
ƒ
Grande tempo de preparação para colocar e retirar fitas magnéticas, colocar e
retirar maços de cartão;
Um erro em qualquer etapa significa volta ao início;
Durante a preparação a CPU fica parada.
Em uma época que os computadores custavam milhões de dólares, todo este
tempo de CPU parada era inaceitável. Era necessário buscar uma melhor utilização da
CPU, o que foi obtido através de duas medidas:
•
•
Operadores especializados foram contratados. Isto significa que a preparação é
mais rápida. Não existe mais perdas devido a pequenos espaços na planilha de
horário. Entretanto, o programador deixa de ser ele mesmo o operador. Passa a
existir diferença entre as duas funções. A depuração deve agora ser feita a partir
das listagens geradas, pois o programador não tem mais acesso ao console.
Os jobs com necessidades parecidas são reunidos em batches (lotes), para
minimizar a necessidade de trocar fitas magnéticas. Apesar destas duas alterações,
na transição entre jobs a CPU fica parada. O operador deve perceber quando um
job termina e então iniciar a execução do job seguinte.
O Monitor Residente:
O passo seguinte foi o surgimento do sequenciador automático de jobs, o primeiro
sistema operacional criado, ainda que bastante rudimentar. O sequenciamento
automático de jobs é feito por um monitor residente, ou seja, um pequeno programa
que fica o tempo todo na memória do computador e que transfere o controle
automaticamente de um job para o outro.
Quando o computador é ligado, o controle é entregue ao monitor residente,
que inicia a execução de um programa. Quando o programa termina, o controle volta
ao monitor residente, que ativa o programa seguinte, e assim por diante. Antes, o
programador informava ao operador o que devia ser feito através de um pedaço de
papel contendo a descrição do job (que compilador utilizar, que módulos de biblioteca
usar, etc.). Agora o programador deve fornecer uma descrição semelhante para o
monitor residente. Isto era feito na forma de cartões de controle. Os cartões de
controle utilizavam algum caractere especial para se diferenciar dos demais (cartões
de programa e de dados). Abaixo está um exemplo de job:
$JOB
$FTN
prog
$LOAD
$RUN
dados
$END
(Identifica o job que inicia)
(Executa o compilador FORTRAN)
(Programa a ser compilado)
(Carrega o resultado da compilação na memória)
(Executa o programa compilado)
(Dados para o programa)
(Marca o fim do job)
AMBIENTES OPERACIONAIS
Revisão de arquitetura dos computadores
Prof. Simão Sirineo Toscani
A maior vantagem do monitor residente é a redução do tempo entre 2 jobs
do mesmo batch, pois automatiza a transição entre jobs. A organização do monitor
residente é a seguinte:
Tabela de interrupção
Controladores de Dispositivos (Device Drivers)
Interpretador de cartões e Seqüenciador de jobs
Área para programas dos usuários
O controle da CPU fica parte do tempo com o monitor residente e parte do
tempo com o programa do usuário. Eventualmente, pode ser solicitada a ação do
operador para, por exemplo, carregar determinada fita magnética.
• Performance
O objetivo de todas as mudanças feitas até agora é obter um melhor desempenho do
computador, uma vez que trata-se de uma máquina cara. Como humanos são muito
lentos, a operação humana foi substituída por um software, no caso, o sistema
operacional. Entretanto, dispositivos mecânicos de I/O (em geral na faixa
milisegundos) são mais lentos que os dispositivos eletrônicos (microsegundos). Isto
faz com que a CPU acabe parada boa parte do tempo esperando pelo I/O. Por
exemplo, se um compilador é capaz de processar 300 cartões/segundo e a leitora
somente é capaz de ler 2 cartões/segundo, a CPU ficará parada 93,3% do tempo
durante a compilação.
Algumas técnicas foram utilizadas para minimizar este problema. Entre elas
estão a operação off-line, a bufferização e o spooling.
Operação off-line:
Na operação chamada (na época) on-line, a CPU recebe dados diretamente da leitora
de cartões e envia resultados diretamente para a impressora. Na operação off-line, a
CPU recebe e envia dados para fitas magnéticas. Como unidades de fita são mais
rápidas que leitoras de cartões e impressoras, a CPU fica menos tempo parada.
Dispositivos especiais ou pequenos computadores são responsáveis pela transferência
dos cartões para a fita e da fita para a impressora. A passagem de operação on-line
para operação off-line não exige mudança nos aplicativos, mas apenas no sistema
operacional (device drivers). O aplicativo pensa estar lendo dados de cartões, mas na
verdade o sistema operacional está acessando uma fita magnética. O mesmo acontece
com a impressora.
Bufferização:
A bufferização tenta manter a CPU e o dispositivo de I/O o tempo todo ocupados.
Enquanto a CPU está processando um item, o próximo item já está sendo lido. O
mesmo é feito com respeito à saída dos dados. A operação de I/O (feita por um canal
de E/S) acontece em paralelo com a computação (feita pela UCP), e a comunicação é
p. 3
AMBIENTES OPERACIONAIS
Revisão de arquitetura dos computadores
Prof. Simão Sirineo Toscani
p. 4
feita através de buffers. Um sistema que use bufferização apresenta as seguintes
características:
ƒ
Não é pior que sem bufferização;
ƒ
O buffer pode ser grande, mas sempre é limitado;
ƒ
Normalmente, o uso do buffer está associado com interrupções. Quando o
dispositivo (canal) termina de realizar o I/O, interrompe a CPU. Esta salva o
contexto de execução na pilha e busca o endereço do tratador de interrupções na
tabela de interrupção. A rotina de tratamento é executada, dando início a uma
nova operação de I/O. A CPU volta então para a computação que foi interrompida.
É necessário que a CPU seja capaz de tratar a ocorrência de diversas interrupções
simultâneas;
Uma ainda maior eficiência pode ser obtida através do acesso direto à memória
(DMA). Neste caso, ocorre uma interrupção por bloco de caracteres e não uma
interrupção por caractere. Tudo funciona como antes, só que agora a CPU é
interrompida a cada bloco transferido e não mais a cada caractere;
Os tratadores de interrupção fazem parte do sistema operacional;
Este mecanismo minimiza as variações na velocidade de processamento, mas
ajuda pouco no caso de jobs do tipo I/O-bound (job que faz muito I/O) ou CPUbound (job que faz pouco I/O).
ƒ
ƒ
ƒ
• Spooling
Com o aparecimento dos discos magnéticos, a operação off-line deixou de ser feita.
Nas fitas magnéticas não é possível ler em uma ponta e escrever na outra. Isto impede
o acesso simultâneo pela CPU e pelo dispositivo de I/O. Ela deve ser escrita
completamente, enrolada e então lida completamente. No disco magnético é possível
acessar qualquer posição a qualquer momento.
O disco magnético permitiu o aparecimento do spooling. Esta técnica utiliza o
disco como um grande buffer. Tudo é feito simultaneamente:
ƒ
ƒ
ƒ
Os cartões são lidos e suas imagens são guardadas no disco (input spooling);
A CPU executa os programas, retirando as instruções e os dados do disco e
enviando para este o resultado da computação;
O resultado da execução dos programas é retirado do disco e enviado para a
impressora (output spooling).
O spooling exige tabelas para localizar no disco os dados de cada job
(mantidos pelo sistema operacional). Enquanto a bufferização sobrepõe a computação
de um job com o seu I/O, o spooling sobrepõe a computação de um job com o I/O
correspondente a colocação de outros jobs no disco. Isto permitiu maior eficiência e
foi um passo importante na direção da multiprogramação.
os que estão prontos, de forma a melhorar o desempenho do sistema. Isto não é
possível com fita ou cartão, onde os jobs devem necessariamente ser executados na
ordem original. Este processo de escolha é chamado de job scheduling ou long term
scheduling (outros tipos de escalonadores serão vistos mais tarde).
• Multiprogramação
A operação off-line, bufferização e spooling, mesmo utilizadas em conjunto, não
garantem uma utilização eficiente do computador. Um único programa não consegue
manter a CPU o tempo todo ocupada. Por isso surgiu a multiprogramação, que é a
execução “simultânea” de vários programas (vários programas na memória). A
multiprogramação aumenta a utilização da CPU, fazendo com que ela tenha sempre
algo para executar. Os primeiros sistemas multiprogramados foram implementados
através de uma extensão da técnica de spooling, conforme é descrito a seguir.
O SO possuía três grandes processos, denominados input spooler, executive e
output spooler. A função do input spooler era ler, continuamente, cartões colocados
em leitoras de cartões e gravar suas imagens no disco. Todos os cartões de um job
(cartões de controle, programa fonte e dados) eram copiados para arquivos em disco.
No disco podiam existir várias filas, uma para cada classe de job, por exemplo. A
função do executive era carregar e executar os jobs colocados no disco, de forma
multiprogramada. O executive procurava manter na memória tantos jobs quantos
fossem permitidos pelos recursos disponíveis. Toda vez que um job necessitava ler
um cartão, a leitura era feita do arquivo em disco que continha as imagens dos cartões
desse job. Toda vez que um job imprimia uma linha, o executive providenciava que a
imagem da linha fosse gravada em um arquivo de saída em disco. Assim, tudo se
passava como se cada job tivesse a sua leitora e a sua impressora particulares. Esses
dispositivos de E/S virtuais eram implementados por arquivos de spooling em disco.
O terceiro e último componente do SO, o output spooler, tinha a função de
providenciar a saída dos jobs já executados. Este componente ficava, continuamente,
pegando no disco os jobs já executados, um de cada vez, e fazendo a saída das suas
linhas na impressora.
A multiprogramação funciona da seguinte maneira:
ƒ
ƒ
ƒ
ƒ
O SO escolhe um job e inicia a sua execução;
Eventualmente o job pára, devido ao I/O;
Sem multiprogramação, a CPU pararia também, mas neste caso o sistema
operacional escolhe um novo job e inicia sua execução;
Quando o primeiro job é liberado – pois terminou o I/O que ele estava esperando
– este volta a ficar apto a receber a CPU para continuar a sua execução.
Para obter maior eficiência, o SO procura manter na memória uma mistura de
jobs CPU-bound e I/O-bound. A multiprogramação aumenta a complexidade do
sistema, mas aumenta muito a sua eficiência. A multiprogramação é o tema central em
qualquer curso de sistemas operacionais.
O emprego de spooling cria uma importante estrutura de dados: o job pool, ou
seja, a identificação dos jobs que se encontram no disco prontos para serem
executados. Isto permite que o sistema operacional escolha o próximo a executar entre
AMBIENTES OPERACIONAIS
p. 5
Revisão de arquitetura dos computadores
AMBIENTES OPERACIONAIS
Revisão de arquitetura dos computadores
Prof. Simão Sirineo Toscani
Prof. Simão Sirineo Toscani
p. 6
• Tipos de sistemas operacionais
Sem considerar os sistemas para redes de computadores, os sistemas distribuídos e os
sistemas paralelos, pode-se dizer que existem três tipos básicos de SOs.
Um SO tempo real utiliza conceitos de multiprogramação e oferece
facilidades para as aplicações de tempo real. Entre as facilidades está um escalonador
preemptivo (a ser estudado no cap. 4) que leva em conta as prioridades dos processos.
- Sistemas Operacionais tipo Batch
• Proteção
Os primeiros sistemas operacionais eram chamados de sistemas batch devido ao fato
dos jobs semelhantes estarem agrupados em lotes. Isto simplificava a operação do
computador quando todo o I/O era feito através de fitas magnéticas ou cartões
perfurados, dispositivos essencialmente seqüenciais. Com o surgimento dos discos
magnéticos, não havia mais a necessidade de reunir os jobs em lotes, pois agora o
sistema operacional poderia obter diretamente no disco qualquer programa solicitado.
A palavra batch passou então a designar os sistemas onde não há interação entre
usuário e programa.
Nos primeiros sistemas havia apenas um usuário por vez, o qual possuía controle
completo sobre a máquina. O sistema operacional foi, aos poucos, assumindo funções,
principalmente ligadas ao I/O. Para que fosse possível obter uma maior eficiência, o
sistema operacional começou a compartilhar recursos entre usuários (por exemplo,
espaço em disco no spooling).
O compartilhamento de recursos, se por um lado melhorou a utilização do
sistema, por outro aumentou os problemas de segurança. O erro de um usuário pode
agora prejudicar n usuários. Isto cria a necessidade de proteger os usuários uns dos
outros. O sistema operacional não pode permitir que um programa incorreto ou
malicioso faça com que outros programas funcionem de forma incorreta.
Neste tipo de sistema existe uma medida importante que é o tempo de
turnaround, ou seja, o tempo entre a entrega dos cartões e o recebimento da listagem
com os resultados. Não existe a possibilidade de comunicação entre o usuário e o seu
programa em execução, o que dificulta a depuração de programas. Um sistema
operacional batch é apropriado para jobs longos, que não necessitam de comunicação
com o usuário. Para jobs curtos, onde a ação a seguir depende da decisão do usuário,
o ideal é um sistema operacional interativo.
- Sistemas Operacionais Time-sharing
A busca por maior eficiência no desenvolvimento de programas levou ao surgimento
dos sistemas interativos. Os sistemas operacionais do tipo time-sharing permitem
interação de uma forma eficiente. Eles são implementados da seguinte forma:
ƒ
ƒ
ƒ
ƒ
O sistema operacional dispõe de multiprogramação;
Cada usuário possui um job ativo vinculado a um terminal;
A comunicação via terminal é lenta, sobra CPU para os outros;
Os usuários, ao longo do tempo, compartilham a CPU (time-sharing);
A idéia de um sistema time-sharing foi demonstrada no início dos anos 60 e
tornou-se comum no início da década seguinte. Alguns sistemas operacionais
suportavam os dois ambientes (batch e time-sharing).
- Sistemas Operacionais Real-time
Em um sistema de tempo real, o computador está ligado a processos externos
(processos industriais, equipamentos cirúrgicos, etc.) que dependem
fundamentalmente dos tempos de resposta do computador. Sinais dos processos
externos acionam o computador através do sistema de interrupção; se estes sinais não
são respondidos prontamente (em microsegundos ou milisegundos, dependendo da
aplicação), os processos externos podem prosseguir de forma errada ou degradada.
Nas aplicações de tempo real, o computador é apenas uma das peças do sistema (não a
mais importante, em geral) e os “usuários” são os processos externos controlados pelo
computador.
AMBIENTES OPERACIONAIS
Revisão de arquitetura dos computadores
Prof. Simão Sirineo Toscani
p. 7
A proteção é implementada parte em software e parte em hardware. No caso
do hardware, são utilizadas interrupções geradas internamente pela CPU, chamadas de
traps. Elas são geradas sempre que uma situação de erro é detectada.
- Proteção de I/O:
A programação de rotinas de E/S é uma programação de baixo nível (detalhada)
muito sujeita a erros. Por isso, desde os primeiros tempos (desde os primeiros SOs)
estas rotinas passaram a fazer parte do sistema operacional. Isto resulta em duas
vantagens: (1) garante segurança para o SO e (2) facilita a tarefa de programação para
os usuários. Mas o que garante que um programa de usuário (por erro ou por malícia)
não tente acessar um dispositivo de E/S diretamente?
A solução para este problema é criar dois modos de operação para o hardware:
modo usuário e modo monitor. Um bit é adicionado ao registrador de estado da
UCP para indicar o modo corrente de operação.
As instruções de I/O são privilegiadas, e só podem ser executadas no modo
monitor. Se o usuário tenta executar uma destas instruções, ocorre um trap. O trap
comuta para o modo monitor, e a CPU passa a executar o monitor residente (hoje em
dia, denominado Kernel). O monitor residente sempre comuta para o modo usuário
antes de passar o controle da UCP para um programa de usuário.
O programa do usuário irá realizar I/O através do monitor. Uma chamada de
sistema (uma instrução cujo efeito é o de uma interrupção gerada por software) ativa o
monitor. O monitor então verifica se o pedido é legal e realiza o I/O.
Este modo dual de operação permite que o sistema operacional mantenha
sempre o controle do computador. Como toda operação de I/O passa necessariamente
pelo sistema operacional, ele pode facilmente implementar spooling, bufferização e
esconder do usuário os detalhes dos dispositivos que estão sendo acessados.
- Proteção de memória:
Para que o usuário não receba a CPU em modo monitor ou corrompa o funcionamento
do sistema, é necessário proteger os vetores de interrupção a as rotinas do monitor.
Isto pode ser feito, por exemplo, através de um fence register (registrador cerca ou
AMBIENTES OPERACIONAIS
p. 8
Revisão de arquitetura dos computadores
Prof. Simão Sirineo Toscani
limite). Neste esquema, o monitor carrega o fence register através de uma instrução
privilegiada. Em modo usuário, cada endereço é comparado como fence register. Se o
programa do usuário tenta acessar um endereço menor que o contido no fence
register, ocorre um trap e o sistema operacional obtém o controle da CPU. O monitor
residente pode acessar qualquer endereço. Isto é necessário para que ele possa, entre
outras coisas, carregar o programa do usuário.
3
Serviços dos Sistemas Operacionais
Pode-se dizer que o principal objetivo de um sistema operacional é criar um ambiente
para execução de programas. Seu objetivo é fornecer a infraestrutura e os mecanismos
necessários para levar programas para a memória e supervisionar as execuções dos
mesmos. A infraestrutura resultante fornece diversos tipos de serviços aos aplicativos
e aos programadores.
Tabela de interrupção
• Tipos de Serviços
Device Drivers
Sequenciamento dos jobs
Interpretador de comandos
Área para programas dos usuários
Serviços para facilitar o uso (aumentar a conveniência de uso do sistema):
Fence Register
Este mecanismo pode ser adaptado para multiprogramação, conforme
mostrado na figura abaixo. Agora, em modo usuário, cada endereço é comparado com
dois registradores (a figura ilustra a situação em que a execução está com o job2).
Limite inferior
Job 2
Job 3
- Proteção contra monopolização da CPU:
É necessário impedir que um job pegue a CPU para sempre. Isto é feito através de um
temporizador que interrompe a CPU a cada x milisegundos. Quando o temporizador
interrompe, ele ativa o monitor, que decide ou não continuar com o programa do
usuário. O acesso ao temporizador deve ser feito através de uma instrução
privilegiada.
• A Arquitetura resultante
Ao longo da história dos computadores, surgiram diversas técnicas cujo objetivo foi
aumentar a eficiência na utilização dessas máquinas: sistemas batch, operação offline, bufferização, spooling, multiprogramação, time-sharing. Estas técnicas levaram a
um maior compartilhamento dos recursos entre os usuários. Isto trouxe a necessidade
de uma maior proteção do sistema, através de mecanismos como: operação em modo
usuário e modo monitor, registradores limite, instruções privilegiadas e temporizador.
Em resumo, foi necessário realizar mudanças na arquitetura para garantir que o
sistema operacional sempre mantivesse o controle sobre o equipamento.
Prof. Simão Sirineo Toscani
Alocação de recursos;
Contabilizações;
Proteção
• A visão do usuário
Limite superior
Job 4
AMBIENTES OPERACIONAIS
Revisão de arquitetura dos computadores
Execução de programas;
Operações de I/O;
Sistema de arquivos;
Detecção de erros.
Serviços para aumentar a eficiência:
ƒ
ƒ
ƒ
Monitor
Job 1
ƒ
ƒ
ƒ
ƒ
p. 9
Pode-se olhar o sistema operacional de diferentes ângulos. A visão do usuário é
formada pelas chamadas de sistema disponíveis e pelos programas de sistema
(também denominados utilitários). Hoje em dia, com a utilização de interfaces
gráficas, o usuário se comunica com o SO através de ícones e menus (via mouse e
teclado). Com isso, deixou de haver a visão mais detalhada que havia quando a
comunicação era textual (via linhas de comandos). Contudo, mesmo que isto fique
escondido, o usuário se comunica com o SO sempre através de chamadas de sistema.
Chamadas de sistema:
Os programas utilizam as chamadas de sistema para solicitar serviços ao sistema
operacional. Existem diversos tipos de chamadas de sistema.
- Chamadas de sistema para controle de processo ou job:
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
Término ou cancelamento de programa;
Carregar e executar programas;
Criar e terminar processos;
Obter e alterar atributos de processos;
Esperar a passagem de um certo tempo;
Esperar ou sinalizar a ocorrência de eventos.
AMBIENTES OPERACIONAIS
Revisão de arquitetura dos computadores
Prof. Simão Sirineo Toscani
p. 10
• A visão do programador de sistema
-Chamadas ligadas à manipulação de arquivos:
ƒ
ƒ
ƒ
A visão do programador de sistema é diferente. Ele percebe o sistema operacional
como um servidor de interrupções cujo objetivo é administrar os recursos físicos de
maneira a criar facilidades de uso para os usuários.
Criar e remover arquivos;
Abrir, fechar, ler e escrever em arquivos;
Obter e alterar atributos de arquivos.
O sistema operacional é um programa conduzido por eventos. Se não existem
programas para executar ou E/S para fazer, o sistema operacional não faz nada. Neste
contexto, um evento é a ocorrência de uma interrupção (de hardware ou de software).
O sistema operacional é, portanto, dirigido por interrupções. Quando uma interrupção
ou um trap ocorre, o sistema operacional é ativado. O evento sinalizado pode ser uma
chamada de sistema, ou a indicação do término de uma determinada operação de
dispositivo, ou ainda um erro na execução de um programa.
- Chamadas ligadas à manipulação de dispositivos:
ƒ
ƒ
ƒ
Requisitar ou liberar dispositivo;
Ler e escrever em dispositivo;
Obter e alterar atributos de dispositivos.
- Chamadas ligadas à manutenção de informações:
ƒ
ƒ
- Chamada de sistema:
Obter e alterar hora e data;
Obter e alterar dados do sistema;
Implementação das chamadas de sistema:
As chamadas de sistema são normalmente implementadas através de instruções de
máquina especiais, que mudam o modo de execução para privilegiado e transferem o
controle para pontos bem definidos do SO (interrupções de software). Em uma
linguagem de alto nível, as rotinas da biblioteca já trazem embutidas as chamadas de
sistema necessárias.
- Interrupção de dispositivo de E/S (I/O devices):
As interrupções causadas por dispositivos de I/O acontecem no seguinte contexto:
ƒ
ƒ
Programas do sistema (utilitários):
Os programas do sistema resolvem problemas comuns aos usuários, facilitando o uso
do computador. Existem diversos tipos de programas de sistema:
ƒ
ƒ
ƒ
ƒ
As interrupções por chamada de sistema podem ou não ser atendidas na hora. Por
exemplo, uma chamada de sistema para ler a data pode ser atendida imediatamente.
Entretanto, uma chamada de sistema para ler um setor de disco não poderá ser
atendida imediatamente. O pedido feito será inserido na fila do driver. Enquanto o
processo solicitante aguarda a realização da E/S, o sistema operacional entrega a CPU
para outro programa.
Manipulação de arquivos (por exemplo, criar pasta, copiar arquivo, etc.);
Informação de estado;
Carregadores;
Interpretador de comandos.
ƒ
ƒ
ƒ
ƒ
ƒ
Antigamente, os compiladores, montadores e ligadores eram considerados
utilitários (hoje em dia não são considerados assim).
Em um sistema batch antigo, o usuário informava ao SO o que ele desejava
através de cartões de controle. Em um sistema time-sharing, isto passou a ser feito
através de comandos digitados no terminal. No sistema batch era necessário um
interpretador de cartões de controle para identificar o que o usuário desejava. Nos
ambientes time-sharing era necessário um interpretador de linhas de comando.
O programa usuário solicita I/O através de uma chamada de sistema;
O sistema operacional bloqueia o programa e envia um comando para o
dispositivo;
Outro programa é executado (multiprogramação);
Quando termina a tarefa solicitada, o dispositivo de I/O interrompe a CPU e o
programa de usuário que estava bloqueado volta a ficar apto para execução;
Podem haver diversas solicitações simultâneas de I/O;
O sistema operacional deve manter uma tabela com a situação de cada
dispositivo de I/O;
Quando termina o I/O, o sistema operacional consulta a tabela, e se existe
pedido pendente, envia um novo comando para o dispositivo imediatamente.
A maneira usual de estruturar as atividades de E/S de um SO é ter um
processo para controlar cada dispositivo. O processo controlador é denominado driver
do dispositivo e é o único que executa operações de E/S nesse dispositivo. Toda
operação de E/S resulta no envio de uma requisição ao driver correspondente.
- Interrupção por erro em programa:
Todo SO possui um interpretador de comandos (talvez escondido atrás de uma
interface gráfica). Pode-se citar como exemplos o programa shell, no UNIX, e o
programa command.com, no MS-DOS. Para os usuários, o sistema operacional é
definido pelos programas de sistema que ele utiliza e, principalmente, pela visão que
o interpretador de comandos lhe dá.
Corresponde à tentativa de executar uma operação ilegal (por exemplo, tentativa de
divisão por zero, tentativa de acessar uma área de memória protegida). Neste caso, o
SO deve terminar o programa, avisando de alguma forma que o término foi por erro.
Estes erros são detectados pelo hardware e geram interrupções de software,
conhecidas como traps (observe que tratam-se de falhas no software).
AMBIENTES OPERACIONAIS
Revisão de arquitetura dos computadores
AMBIENTES OPERACIONAIS
Revisão de arquitetura dos computadores
Prof. Simão Sirineo Toscani
p. 11
Prof. Simão Sirineo Toscani
p. 12
Download