Sistemas Oper acionais

Elton Dhiego Dias Fernandes

Momentos
O que é um SO? ● Definições ● Conceitos e Gerações ●Tipos de Sistemas Operacionais ● Características ● Vantagens ● Desvantagens ●Subclassificações ● Arquitetura dos Sistemas Operacionais

Por que estudar SO?
Entender o funcionamento para poder propor soluções a determinados tipos de problemas; ● Conhecer como funciona os diversos tipos de sistemas operacionais para poder escolher aquele que melhor atende às necessidades de uma organização; ● Poder programar utilizando os recursos que o sistema operacional disponibiliza;

Por que estudar SO?
Os Sistemas Operacionais da Microsoft não são bons?? ● O que não é bom? ● Por que não é bom?

SISTEMA DE COMPUTADOR

Integração entre:

Ferramentas desenvolvidas utilizando as funcionalidades disponíveis pelo SO para executar tarefas afim. Trabalha em um nível intermediário de acesso com o SO. Com permissão de acesso ao HW.

Sistema Bancário Compiladores

Reserva Passagem Editores

Browser Interpretador de Comandos

Programas Aplicativos

Programas de Sistema Sistema Operacional Linguagem de Máquina Microprogramação Dispositivos físicos Hardware

Conjunto de micro instruções que o processador traz consigo.

Instruções de Comando; MicroOperações; Add, Mov, Jmp. Placa de Rede; Controladores de disco; dispositivos de armazenamento; teclado; portas.

INTRODUÇÃO
O que é um Sistema Operacional?
● ●

Um programa que age como um intermediário entre um usuário de computador e o hardware. Controla todos os recursos do computador
p r o g r a m a d o e a n a l i s t a s u s u á r i o s r e s p r o g r a m a s s i s t e m a s e a p l i c a t i v o s

• Objetivos de um sistema operacional:
– Esconder a complexidade do HW – Executar programas do usuário e facilitar a resolução de problemas. – Tornar o computador conveniente ao uso. – Usar o hardware do computador de maneira eficiente.

U

s u

á r i o s

S i s t e m

a

O

p e r a c i o n a l

m

e m

ó r i a H a r d w a r e

d i s c o

U

C

P

f i t a s

i m

p r e s s o r a

s

m

o

n i t o

INTRODUÇÃO
• Os objetivos básicos de um sistema operacional podem ser sintetizados em duas palavras-chave: – Abstração – O Sistema Operacional como uma máquina estendida – O acesso aos recursos de hardware de um sistema de computação pode ser trabalhoso e complicado, devido as características específicas de cada dispositivo físico e a complexidade de sua interface. – O nível de linguagem de máquina é complicado e trabalhoso

INTRODUÇÃO

E/S de disquete chip controlador PD765 (16 comandos) Read/Write -> 13 par(endereço; nº blocos ...) retorna 23 campos de status Motor ligado/desligado

INTRODUÇÃO
• Por exemplo, a seqüência a seguir apresenta os principais passos envolvidos na abertura de um arquivo (operação open) em um leitor de disquete:
– verificar se os parâmetros informados estão corretos (nome do arquivo, identificador do leitor de disquete, buffer de leitura, etc.); – verificar se o leitor de disquetes está disponível; – verificar se o leitor contém um disquete; – ligar o motor do leitor e aguardar atingir a velocidade de rotação correta; – posicionar a cabeça de leitura sobre a trilha onde está a tabela de diretório; – ler a tabela de diretório e localizar o arquivo ou subdiretório desejado – mover a cabeça de leitura para a posição do bloco inicial do arquivo; – ler o bloco inicial do arquivo e depositá-lo em um buffer de memória;

INTRODUÇÃO
• O que o Programador/Usuário deseja?
– Um visão simples como uma lista de arquivos; – Arquivos que podem ser abertos, lidos, fechados – Verificar se o leitor contém um disquete; – Ocultar detalhes relacionados como temporizadores, interrupções … – Quem faz esse trabalho?

INTRODUÇÃO

Gerenciador de Recursos

Os programas aplicativos usam o hardware para atingir seus objetivos: ler e armazenar dados, editar e imprimir documentos, navegar na Internet, tocar musica, etc.

Em um sistema com várias atividades simultâneas, podem surgir conflitos no uso do hardware, quando dois ou mais aplicativos precisam dos mesmos recursos para poder executar.

Cabe ao sistema operacional definir políticas para gerenciar o uso dos recursos de hardware pelos aplicativos, e resolver eventuais disputas e conflitos.

Imagine 3 programas tentando imprimir sem a ajuda de um SO

INTRODUÇÃO

Porquê existem os sistemas operacionais?

Um computador é composto de:
– – – – – – –

um (ou mais) processadores memória clocks terminais discos interfaces de rede outros dispositivos de E/S.

Construir programas que utilizem todos estes componentes é uma tarefa extremamente difícil.

INTRODUÇÃO

No computador

Diversas atividades competem os recursos da máquina

uma máquina pode ser conectada a diversos terminais atendendo a diversos usuários um PC pode realizar diversas atividades ao mesmo tempo:

impressão, edição, anti-virus, ...

Competição exige um alto grau de coordenação

para evitar que atividades independentes interfiram umas com as outras garantindo a comunicação eficiente e confiável entre atividades interdependentes

Objetivos de um SO

Tornar mais conveniente a utilização de um computador

“esconder”detalhes internos de funcionamento

Tornar mais eficiente a utilização do computador

Gerenciamento “justo”dos recursos do sistema

Facilitar a evolução do Sistema (Desenvolvimento, teste e atualização de novas facilidades)

Componentes genéricos

Hardware

Recursos básicos(memória, dispositivos de E/S, CPU) Controla e coordena o uso do hardware entre vários aplicativos e usuários; Define como os recursos de hardware são empregados na solução de um problema(compiladores, jogos, banco de dados,...) Pessoas, máquinas, outros computadores

Sistema Operacional

Programas aplicativos e de Sistemas

Usuários

Serviços oferecidos pelo SO

Criação de programas

Editores, depuradores, compiladores Capacidade do sistema de carregar programas em memória e executar

Execução de programas

Acesso a dispositivos de E/S

Uma vez que os programas do usuário não podem executar operações de E/S diretamente, o sistema operacional deve prover alguma forma de execução de tais operações.
Possibilitar os programas de ler, gravar, criar a apagar arquivos

Controle de acesso a arquivos

Comunicação

troca de informações entre processos executando tanto no mesmo computador quanto em sistemas diferentes interligados via rede. Implementado via memória compartilhada ou troca de mensagens.
Proteção entre usuários

Acesso a recursos do sistema

Serviços oferecidos pelo SO

Detecção de erros

Erros de hardware

Ex: erros de memória, falhas de dispositivos de E/S, etc.. Ex: Overflow, acesso não autorizado a posições de memória, etc..

Erros de programação

Aplicações solicita recursos que o sistema operacional não pode alocar

Segurança, falta do recurso, etc..

Vídeo

Entrevista

Conceitos e Gerações dos Sistemas Operacionais

Os sistemas operacionais tem sofrido uma série de mudanças revolucionárias que podem ser caracterizadas como gerações.

1ª Geração 1945-55

Arquitetura de Von Neumann:

1ª Geração 1945-55

Características:

Válvulas (20000)
– –

não permitiam confiabilidade do hardware máquinas enormes e muito lentas

● ●

● ●

Painéis de conectores Usados p/solução de cálculos numéricos simples (seno,...) Programação em Linguagem de máquina Usuários tinham acesso completo ao hardware

não havia linguagem de programação

programação era feita pela modificação dos circuitos

1ª Geração 1945-55

1ª Geração 1945-55
Utilização

Por um grupo de pessoas que projetava, construía, operava e mantinha o computador; Programadores reservavam um período para executar seus programas Válvulas queimavam com facilidade Início da década de 50 surge o cartão perfurado

2ª Geração 1055-65

Característica: transistores
● ●

(meados de 50) tornam projetos mais confiáveis atendiam a grandes corporações, agências governamentais e universidades

custo muito alto

torna-se clara a separação entre projetistas, construtores, operadores, programadores e pessoal de manutenção

2ª Geração 1055-65

Computadores executavam um job (programas) por vez. Para executar um job:

● ●

Programador primeiro escrevia em papel (Fortran ou assembly) Programa é transformado em cartões perfurados Programador levava os cartões para um operador

que colocava em uma unidade de leitura operador levava a saída ao programador

Após o job

2ª Geração 1055-65

Sistema de Processamento em lote (Batch) ● muito tempo era gasto enquanto os operadores caminhavam de um lado para outro
– – – – –
● ● ●

pegando novos jobs introduzindo-os no computador iniciando o processo recolhendo os resultados entregando-os para o programador

Tempo é dinheiro Solução sistemas batch (processamento em lote)

2ª Geração 1055-65

Sistemas batch (em lote)

coletava-se um conjunto de jobs da entrada

sala de um

transferia-os para uma fita usando computador mais barato (IBM1401)

a fita era rebobinada e levada para a sala do computador maior (IBM 7094) o operador carregava um programa especial (ancestral do S.O.) que lia o primeiro job e executava-o

2ª Geração 1055-65

Continuação ...

a saída era gravada numa segunda fita ao invés de ser impressa após o término de cada job, o sistema automaticamente lia o próximo job da fita e iniciava sua execução depois de processada a fita de entrada, o operador retirava ambas as fitas e levava a fita de saída para outro computador para impressão off-line

2ª Geração 1055-65
j o b n (a ) j o b j o b c a r tõ e s 1 p e r f u r a d o s 2 P r o c e s s a m e n to f i ta d e e n tr a d a

(b ) f i ta d e e n tr a d a

P r o c e s s a m

e n to f i ta d e s a íd a

r e la tó r io

n

(c ) f i ta d e s a íd a

P r o c e s s a m

e n to

r e la tó r io r e la tó r io 1

2

U

n i d a d e d e F i t a

E n t r a d a d a F i t a

S i s t e m d e F

a

S a í d a d e F

i t a s

r e la tó r io s

i t a I m p r e s s o r a

L

e i t o r a

d e

c a r t õ e s

1

4

0

1

7

0

9

4

1

4

0

1

2ª Geração 1055-65

Pouco uso da máquina

Quando um job parava para aguardar uma fita ou qualquer operação de E/S, a CPU permanecia idle até a operação terminar Em aplicações científicas esta característica não comprometia muito o resultado final Em aplicações comerciais, onde o tempo de E/S atinge 80% a 90% do tempo total, o resultado final era sofrível Em uma época que os computadores custavam milhões de dólares, todo este tempo que a CPU ficava parada era inaceitável. Era melhor buscar uma melhor utilização da CPU

2ª Geração 1055-65

Sistema Operacional - Fortran Monitor System (FMS)

Simplifica a instalação de programas e torna suave a transição de um job para outro Não há interação com o usuário Jobs eram armazenadas em fita aguardavam para serem executados em uma fila de jobs

fila FIFO (First In, Fist-out)

2ª Geração 1055-65

Estrutura de um JOB típico

3ª Geração 1065-80

Caracterizou-se:
● ●

CI's Multiprogramação – Memória particionada
– –

Enquanto um job esperava uma operação de E/S outro job de outra partição era executado; Dependendo do número de Jobs na memória a CPU ficava 100% do tempo ocupado Colocar jobs em um buffer, uma área da memória ou de um disco onde um dispositivo pode acessa-la quando estiver preparada.

Técnica de spooling

3ª Geração 1065-80

Spooling ● Para isso foi necessário construir um programa de controle: O monitor Residente Fica permanentemente na memória; – Responsável por transferir o controle de um job para outro; – Não interfere no processamento do job. Apenas quando o job acaba que o monitor é chamado; PROBLEMA: Os jobs não podem ser interrompidos a não ser que terminem o processamento ou requisitem uma E/S;

O monitor não pode recuperar o controle, mesmo que o programa execute para sempre. SOLUÇÃO: Interrupção

3ª Geração 1065-80

Time-sharing

deve ser capaz de revezar a execução dos vários jobs através do compartilhamento do tempo (time-sharing)

refere à técnica de dividir o tempo em intervalos ou fatias (time-slices), e restringir a execução, dentro de cada uma dessas frações de tempo, a um job de cada vez

ao término do intervalo, o job corrente é retirado do processamento e um outro é acionado

– –

revezamento de jobs cria a impressão de paralelismo requer troca de contexto (salvamento do estado do programa na troca) Depuração de pedaços pequenos com grande em 2º plano

3ª Geração 1065-80

Time-sharing
● ●

O tempo é dado a cada programa em círculos; Cada job tem um tempo associado para utilização e só passa a vez para outro job se seu tempo terminar ou se uma operação de E/S for requerida; Quando chegar novamente a vez do job em questão, o comando é passado a ele, a menos que a operação de E/S não não sido completada; Usuários passam a interagir com a máquina através de terminais, teclados e mouses.

3ª Geração 1065-80
• Processamento em batch
Jobs: Programas, dados, comandos

Resultados

Fila de jobs

Execução de jobs

Processo interativo: timing sharing
Programas, dados e resultados

Execução de programas

3ª Geração 1065-80

Multiprogramação ● Solução para o problema de tempo de resposta enquanto jobs esperavam por E/S – particionar a memória – instalar um job em cada partição – enquanto um job esperava por uma operação de E/S, outro job poderia usar a CPU – se fosse possível manter na memória todos os jobs de uma só vez, a CPU poderia ter uma taxa de utilização de 100% – múltiplos jobs necessitam de proteção de memória.
job 3 job 2 job 1 Sistema Operacional

4ª Geração 1980-Hoje

Característica: PC's e estações de trabalho

desenvolvimento de chips em LSI (Large Scale Integration), chips contendo milhares de transistores em um centímetro quadrado de silício, permitiu o desenvolvimento de computadores menores conectados via redes de computadores

4ª Geração 1980-Hoje

2 sistemas operacionais são dominantes

Windows - Microsoft
– –

arquitetura Intel (IBM PC) variantes

Windows XP, Windows 2000 e Windows server 2003

UNIX
– –

arquitetura motorola 68000, arquitetura Intel e RISC's variantes:

LINUX, Solaris, AIX

4ª Geração 1980-Hoje
Sistemas Operacionais de Rede ● Os usuários estão cientes de múltiplos computadores conectados compartilhando recursos Sistemas Operacionais Distribuídos ● Os usuários não conhecem os múltiplos computadores conectados compartilhando recursos

4ª Geração 1980-Hoje
Sistemas Multiprocessados ● Computadores com vários processadores ● SO não apenas coordenará a competição entre as várias tarefas que são executadas de fato simultaneamente
– –

também controlará a alocação de tarefas aos diversos processados envolve problemas de balanceamento de carga

garantir que os processadores sejam utilizados de modo eficiente divisão das tarefas em várias sub-tarefas de número compatível com o número de processadores disponíveis

envolve também escalação

5ª Geração Hoje-Futuro

Ainda esta por vir, não existe um consenso no que se deva constituir os computadores e sistemas desta geração; Prováveis características:
● ● ●

Computadores super portáteis; Grid Computing Utilização de multimídia;
– –

Reconhecimento de voz e interpretação da linguagem natural; Processamento de imagens digitalizadas, etc..

Implementação de Inteligência artificial nos processos

5ª Geração Hoje-Futuro

Vídeo

Filme Minority Report – A nova lei

Tendências dos SOs
• Sistemas Operacionais de 64 Bits
Espaço de Endereçamento Memória Virtual Paginação Cache

Win 64-bit 16 tb 512Tb 1 Tb

Win-32 bits 4gb 16 Tb 1Gb

Ex: Win64, HP-Ux, Solaris 9

• Sistemas Operacionais Embarcados ● Sistemas operacionais desenvolvidos especificamente para equipamentos pequenos com restrição de recurosos. ● Ex: Celulares, TV’s, Palm’s, Pocket’s, etc.. ● Computação Ubíqua ● “É a visão de um mundo no qual o custo do poder computacional e das comunicações se tornaram tão baratos a ponto de poderem ser embutidos em todos os objetos que nos cercam no dia-a-dia.” ● Frank Stanjo, 2003 – Cambritge University • Sistemas Operacionais de Cartões Inteligentes ● Restrições extremas de tamanho de memória

Atividade
● ● ●

● ●

Explique detalhadamente o que é um Sistema Operacional. Explique os serviços oferecidos pelos Sistemas Operacionais. Faça uma tabela contendo as principais características entre as gerações dos computadores. O que é um Sistema de Processamento em Lote? O que é um Sistema de Tempo Compartilhado?

Tipos
Tipos de SO

Monoprogramáveis

Multiprogramáveis

Múltiplos Processadores

Sistemas Monoprogramáveis

Nos sistemas monoprogramáveis somente um programa permanece em memória e a UCP fica dedicada exclusivamente a esse programa. O tempo de perda é relativamente grande pois enquanto são feitos acessos aos dispositivos de E/S a UCP permanece inativa, lembrando que as operações com dispositivos é algo bastante lento. A memória é subutilizada caso o programa não a preencha totalmente, e os discos e impressoras estão dedicados a um único usuário, mesmo que não sejam utilizados. Simples implementação, segurança sem preocupação com

Sistemas Multiprogramáveis
● ● ●

São mais complexos e eficientes. Vários programas compartilham os diversos recursos. Enquanto um programa espera uma operação de leitura outros programas podem utilizar o processador e a impressora. Os diversos programas compartilham a memória e o Sistema Operacional deve se preocupar em gerenciála assim como o acesso aos diversos recursos. Aumento na produtividade e redução dos custos

Sistemas Multiprogramáveis

É permitido mais de um usuário interagir com o sistema

Um usuário Monoprogramação/ Monotarefa Multiprogramação/ Multitarefa Monousuário Monousuário

2 ou mais usuários N/A Multiusuário

Mono x Multiprogramáveis

Sistemas Multiprogramáveis

Existem dois tipos de sistemas multitarefa:

Cooperativo – aonde a aplicação decide quando não precisa de CPU – utilizado no MS-DOS e no MacOS

Ex: Windows 3.X, Windows 95 (aplicativos 16 bits)

Preemptiva – quando o SO determina quando a aplicação perde/ganha a CPU

Ex: Windows XP, Linux, Unix, Windows server

• O problema de se utilizar o sistema cooperativo é que as aplicações desenvolvidas para este modelo precisam ser feitas de forma a permitir que outros aplicativos executem também, porém, que programador se preocupa em fazer programas que permitem que outros programas executem?

Tipos
Processador, Memória Periféricos dedicados Simples Implementação Não há cuidados com proteção Subutilização dos recursos (proc. / mem ...) Ex: MS-DOS

Tipos de SO

Complexos e eficientes Vários programas compartilham diversos recursos Gerenciamento ordenado e protegido(mem, imp ...)

Monoprogramáveis

Multiprogramáveis
Aumenta produtividade e reduz custos Subclassifica-se em monousuário / Multiusuário
Program a/tarefa Program a/tarefa

Múltiplos Processadores

Memóri a Princip al

U C P

Disposit ivos de E/S

Programa/tar efa

Program a/tarefa

Memóri a Principa l

U C P Dispositi vos de E/S

Program a/tarefa

Sistemas Multiprogramáveis
Subclassificação (Gerenciamento de aplicações)
Sistemas Multiprogramáveis

Sistemas Batch

Sistemas de Tempo Compartilhado

Sistemas de Tempo Real

Sistemas Multiprogramáveis
Sistemas Batch
Caracterizam-se por terem seus programas armazenados em disco ou fita, onde esperam para ser executados seqüencialmente. Geralmente, esses programas não exigem interação com os usuários, lendo e gravando dados em discos ou fitas

Tempo de respostas longos Processamento seqüencial

Sistemas Multiprogramáveis
Sistemas de Tempo Compar tilhado

Há interação com o usuário (vídeo / teclado) Tarefas pequenas / fatias de tempo Comunicação direta com o SO Ambiente próprio / Simula dedicação Implementação Complexa Produtividade x Custos

Sistemas Multiprogramáveis

Sistemas em Tempo Real

Utilizados quando existem requisitos rígidos de tempo de operação de um processador ou fluxo de dados;

Ex: Sistemas de controle industriais, Imagens médicas, controle de robôs, etc..

O processamento DEVE ser feito dentro dos limites definidos ou o sistema falhará;

O sistema em tempo compartilhado não é obrigado a responder rapidamente e o tempo de resposta pode variar sem comprometer as aplicações.

Sistemas Multiprogramáveis

Sistemas em Tempo Real

Concepções erradas
– –

Tempo real significa execução rápida Computadores mais rápidos vão resolver o problema

São associados a funcionalidade e não a desempenho

STR são:
– – – –

Pequenos Escritos em linguagem de montagem (Assembly) Formados apenas por tratadores de interrupção device-drivers

Sistemas Multiprogramáveis

Sistemas em Tempo Real

Tipos de sistemas em tempo real:
• Crítico:
– Falha temporal pode resultar consequências catastróficas – Necessário garantir requisitos temporais em projeto – Exemplo: usina nuclear, industria petroquímica, mísseis – Requisito temporal descreve apenas comportamento desejado – Ao contrário dos sistemas críticos, esses sistemas normalmente trabalham com um grande volume de dados. – Exemplo: Multimídia ● O sistema que funciona em um leitor de DVD não é crítico, pois o não cumprimento de uma tarefa em resposta e um evento em um determinado intervalo de tempo não provoca danos irreversíveis.

• Não Crítico:

Sistemas Multiprogramáveis

Interrupção e Excessão

Durante a execução de um programa alguns eventos podem ocorrer obrigando a intervenção do programa por conta do Sistema Operacional, essa intervenção é chamada de Interrupção ou Exceção. Nesse caso o fluxo de execução do programa é desviado para uma rotina de tratamento.

Sistemas Multiprogramáveis

Interrupção e Excessão

O que diferencia uma Interrupção de uma Exceção é apenas o evento que gerou a condição:

Uma interrupção é gerado pelo Sistema Operacional ou por algum dispositivo. Um exemplo seria um dispositivo avisando a UCP que esta pronto para transmitir algum dado. Neste caso a UCP deve interromper o programa para atender ao dispositivo.

Sistemas Multiprogramáveis

Sistemas Multiprogramáveis

Interrupção e Excessão

O que diferencia uma Interrupção de uma Exceção é apenas o evento que gerou a condição:

As exceções são geradas de modo síncrono, somente podem ocorrer em um programa em execução. Um programa que gere uma exceção se rodado novamente com os mesmo valores vai sempre gerar a exceção no mesmo ponto; A exceção pode ser tratada tanto pelo sistema como pelo programador; Tem como principal objetivo o controle para o não travamento do sistema;

Sistemas Multiprogramáveis

Reentrância

É comum em sistema multiprogramados os usuários executarem varias vezes o mesmo aplicativo. Isso ocasionaria uma grande perda indevida de memória. Para isso o sistema utiliza a reentrância, permitindo que um mesmo código executável seja compartilhado por vários usuários onde cada usuário poderá estar executando uma parte diferente do programa.

Múltiplos processadores
• Se caracteriza por possuir duas ou mais CPUs interligadas, trabalhando em conjunto; • Funcionam em conjunto na execução de tarefas independentes ou no processamento simultâneo de uma mesma tarefa • Paralelismo REAL • Forma de Comunicação e grau de compartilhamento da memória

Múltiplos processadores
• Forma de Comunicação e grau de compartilhamento da memória ão ç ra a u m to ig e SMP nf us ist c o S x ec ●R do de a o id nt e ac m p ea ca nc da a al to Fortemente Fracamente n ●B e Acoplados Acoplados m u ●A

Simétricos

Assimétricos

SO de Rede

SO Distribuídos

Múltiplos processadores
• Sistemas fortemente acoplados

SO Concorrência CPU Memória CPU

Dispositivos E/S

Dispositivos E/S

Múltiplos processadores

Assimétricos
Há uma CPU que controla as demais ● Processador Primário (Coord.; Exec. SO) ● Secundários (Prog. Usuários)

Simétricos
CPU executam as mesmas tarefas tendo acesso a todos os sistemas da mesma forma. ● Mais poderosos, permitindo melhor balanceamento do processamento e das operações de E/S, apesar de sua implementação ser bastante complexa.

Múltiplos processadores

Múltiplos processadores
• Sistemas fracamente acoplados
•Caracterizam por possuir 2 ou mais sistemas de computação conectados através de linhas de transmissão •Cada sistema funciona de modo independente e possuem seus próprios processadores, memórias e dispositivos de E/S

Múltiplos processadores

Sistemas Operacionais De Rede ● Próprio SO, HW, SW ● Permite Compartilhar Recursos ● Arquivos; Impressoras; Ger. Remoto ● Nós independentes ● Na falha de um nó alguns recursos tornam-se indisponíveis ● Ex: Redes Locais (LANs)

Múltiplos processadores

Sistemas Distribuídos

Distribui a realização da Tarefa em vários computadores Características;
– – –

Conjunto de computadores interconectados de forma a possibilitar a execução de um serviço A existência de várias máquinas é transparente O Software fornece uma visão única do sistema Máquinas independentes; A comunicação é feita através da troca de mensagens entre processos Vantagens: Compartilhamento de recursos; Balanceamento de carga; Aumento de confiabilidade

São considerados “Sistemas fracamente acoplados”
– – –

Monoprogramáveis Monotarefas

Batch

Modalidades de SO

Multiprogramáveis Multitarefa

Tempo Compartilhado

Tempo Real

Múltiplos Processadores

Simétricos Fortemente Acoplados Assimétricos

Fracamente Acoplados

Sistemas Operacionais de Rede Sistemas Operacionais Distribuídos

Atividade
● ● ● ● ● ●

● ● ● ● ● ●

Qual o princípio dos Sistemas multiprogramáveis? Qual a diferença entre os Sistemas mono e multiprogramáveis? O que é uma interrupção e uma exceção? Quando ocorrem? O que é reentrância? Explique as características de um Sistema de tempo real? Diferencie Sistemas multiprogramáveis de Sistemas com múltiplos processadores. O que é um sistema fracamente acoplado? O que é um sistema fortemente acoplado? Diferencie os sistemas síncrono e assíncrono. Como funciona um Sistema Operacional de rede? Como funciona um Sistemas Operacionais Distribuídos? Qual a principal diferença entre um Sistema de rede e um Sistema distribuído?

Conceitos em Sistemas Oper acionais

Modos de Acesso

Existem certas instruções que não podem ser colocadas diretamente à disposição das aplicações, pois a sua utilização indevida ocasionaria sérios problemas à integridade do sistema. As instruções que têm o poder de comprometer o sistema são conhecidas como instruções privilegiadas (modo kernel), enquanto as instruções não-privilegiadas são as que não oferecem perigo ao sistema. Registrador da UCP, que indica o modo de acesso corrente.

Modos Usuário x Kernel

Os processadores modernos podem executar instruções com diferentes privilégios. Em sistemas com dois níveis de privilégio, eles são chamados de modo usuário e modo protegido. Os sistemas operacionais disponibilizam diferentes níveis de privilégio que restringem as operações executadas pelos programas, por razões de segurança e estabilidade; Dentre estas operações podem ser incluídas: ● O acesso a dispositivos de hardware;

Habilitar e desabilitar interrupções; Alterar o modo de privilégio do processador.

O kernel deve ser executado no modo protegido e as aplicações em modo usuário.

Modos Usuário x Kernel

Modo Kernel ● O código em execução tem completo e irrestrito acesso ao hardware. Ele pode executar qualquer instrução e referenciar qualquer endereço de memória. Normalmente este modo é reservado para instruções baixo nível e para funções do sistema operacional que exigem confiança. Modo Usuário ● O código em execução não pode acessar o hardware diretamente ou referenciar memória da mesma forma. O processo em execução deve delegar a API do sistema o acesso a hardware ou a memória.

Modos Usuário x Kernel

A maioria dos sistemas operacionais dão a possibilidade de mostrar a utilização do processador, como o gerenciador de tarefas do Windows. É possível exibir o uso do processador em modo kernel. A linha verde é o total utilizado e a linha vermelha é o tempo utilizado pelo modo kernel. O espaço entre as duas linhas é o modo usuário.

Modos Usuário x Kernel

Vídeo

Aula 1 parte 3 (7:10)

Chamadas de Sistema

A interface entre o Sistema Operacional e os programas de usuário. Definida por um conjunto de instruções estendidas proporcionadas pelo SO. O mecanismo usado pelo programa para requisitar um serviço do sistema operacional, ou mais especificamente, do kernel do sistema operacional.

Chamadas de Sistema

As Chamadas de Sistema são as portas de entrada para se ter acesso ao núcleo do sistema operacional. Para cada serviço existe uma Chamada associada e cada SO tem o seu próprio conjunto de de chamadas, com nomes, parâmetros e formas de ativação específicos.

Chamadas de Sistema

Ex:

Pid = fork()

Cria um processo filho idêntico ao pai Cria um novo arquivo Cria um novo diretório Muda os bits de proteção de um arquivo

Fd = creat(name, mode)

S = mkdir(name, mode)

S = chmod(name, mode)

Componentes do SO

A interface e o núcleo

shell
– –

é a interface entre o usuário e o sistema operacional é um interpretador de comandos funções básicas necessárias à utilização do computador

núcleo (kernel)

Sistema Operacional

shell

SHELL

Define uma interface entre o sistema operacional e seus usuários

fornece uma comunicação natural com os usuários do computador shells antigos se comunicavam com os usuários, via teclado e monitor, por mensagens textuais shells modernos fornecem uma interface gráfica com o usuário – GUI – Graphical User Interface – na qual objetos a serem manipulados (arquivos e programas) são representados graficamente através de ícones na tela – permite ao usuário executar um comando do sistema apontando e deslocando ícones

SHELL

SHELL

Distinção entre shell e as partes internas do S.O.

enfatizada pelo fato de alguns S.O. permitirem ao usuário selecionar, entre diversos shells, aquele que lhe for mais adequado
– –

UNIX: Borne Shell, C shell e Korn shell Versões mais antigas do Windows

eram shells de substituição ao MS-DOS (windows 3.0)

Sistema Operacional permanece o mesmo

exceto quanto à forma em que se comunica com o usuário Shells com características similares podem ser utilizados em conjunto com sistemas operacionais de diferentes estruturas internas

propicia uniformidade na interface homemcomputador em uma variedade de computadores

exemplo: Computadores IBM da série System/360 (KDE-Linux)

SHELL

Vídeo

Aula 1 parte 3 (4:00)

Componentes do SO

KERNEL

O Kernel de um sistema operacional é entendido como o núcleo deste. Representa a camada de software mais próxima do hardware, sendo responsável por gerenciar os recursos do sistema computacional como um todo.

Componentes de software que executam as funções básicas necessárias ao funcionamento de cada instalação computacional em particular:
– – – – –

gerenciador de arquivos acionadores de dispositivo (device drivers) gerenciador de memória escalonador (scheduler) (qual processo será executado) despachante (dispatcher) (fatias de tempo)

Componentes do SO

KERNEL

Para explicar o que é o kernel, pose-se fazer uma analogia com uma outra máquina: um carro. Trata-se de duas máquinas, uma mecânica, outra eletrônica.

1) Para o carro movimentar-se ele precisa de um motor; 1) Para o microcomputador funcionar, ele precisa se um programa básico - um software chamado sistema operacional; 2) Existem vários tipos de motores, motores para carro de corrida, para carro de passeio, etc; 2) Existem vários tipos de sistemas operacionais, Linux, Windows, UNIX, etc;

Componentes do SO

KERNEL

3) Mesmo para um mesmo fabricante de motor, existem vários modelos para o mesmo fim, por exemplo: motor 1.0, motor 1.6; 3) Existe um Linux para cada tipo de computador, main-frame, PC, Macintosh (acho que se escreve de outro modo !); 4) Quando aprendemos a dirigir um carro de passeio, aprendemos o funcionamento básico: direção, pedais para acelerar, trocar de marcha, frear. Ou seja, não atuamos diretamente no motor, mas através de comandos para fazê-lo funcionar; 4) Quando usamos Linux, temos um outro software que faz a mediação (interface) entre o kernel e o usuário, chama-se shell. Existem vários shells (csh, ksh, bsh, bash, etc). Mas o importante é que são os mesmos, independente do kernel (motor) em uso, afinal os pedais e direção são sempre iguais seja em um motor 1.0 ou 1.6!

Componentes do SO

KERNEL

5) Para alguns acessórios funcionarem em um carro, devemos adequar o motor ou algum componente dele para que isto aconteça, por exemplo um ar-condicionado exigirá uma bateria com maior amperagem; 5) Para que o Linux funcione perfeitamente, em alguns casos é necessário instalarmos algum módulo específico, entenda módulo com um programa (software) preparado para uma finalidade específica e que não é comum a todos os equipamentos, por exemplo um módulo para a placa de rede de nosso microcomputador.

Kernel

Gerenciador de Arquivo

Parte mais visível do sistema operacional

Aplicações necessitam armazenar e informações, organizadas como arquivos

recuperar

Função é coordenar o uso dos recursos de armazenamento de massa do computador (memória secundária)
– – –

mantém informações sobre a localização de cada arquivo sobre os usuários autorizado a acessar os diversos arquivos sobre as áreas disponíveis no armazenamento de massa

para novos arquivos ou expansão de arquivos já existentes

Kernel

Gerenciador de Arquivo

Permite que os arquivos sejam agrupados em conjunto chamados pastas ou diretórios (folders)
– –

permite ao usuário organizar seus arquivos de acordo com as respectivas finalidades permite criar uma organização hierárquica

possibilitando que cada diretório possa conter, por sua vez, sub-diretórios

seqüência de aninhamentos de níveis diretório é denominado trajetória (path)
● ●

de

/usr1\tmp C:\Unc\SO\Sistemas Operacionais I\aulas\

Kernel

Gerenciador de Arquivo

Qualquer acesso a arquivo por parte de um módulo de software

inicialmente é solicitado ao gerenciador de arquivos para fazer acesso ao arquivo

procedimento chamado “abrir arquivo” ele fornecerá a informação necessária para encontrar e manipular o arquivo

se o gerenciador aceitar o pedido

com base na informação contida neste descritor de arquivo que operações elementares individuais são executadas sobre o arquivo

Kernel

Gerenciador Arquivos)

de

Arquivo

(Sistema

de

A nível de shell o Sistema de Arquivos oferece chamadas de sistema, com interface única para dispositivos Operações mais comuns:
– – – – –

Criar; excluir (create; delete) Ler; gravar (read; write) Abrir; fechar (open; close) Alterar nome (rename) Ler e escrever atributos (get/set attributes)

Kernel

Acionadores drivers)

de

dispositivos

(device

Um código que compreende o dispositivo e realiza uma comunicação com ele. ● São os módulos de software que executam a comunicação com os controladores
– – –

ou as vezes diretamente com os dispositivos solicitando a realização de tarefas aos periféricos um driver é projetado para um dado tipo de controlador ou dispositivo

impressora, unidade de disco, unidade de fita, monitor, ..

Oferece uma interface padrão independente do modelo do dispositivo

Kernel
Acionadores drivers)

de

dispositivos

(device

Drivers convertem solicitações de alto nível em comandos mais elementares
– –

diretamente reconhecíveis pelos controladores ou dispositivos associados àquele driver detalhes técnicos associados aos dispositivos são confinados aos drivers

ficando transparentes aos demais módulos de software

Kernel

Acionadores de dispositivos (device drivers)

Exemplo: gravação em disco

driver para uma unidade de disco é capaz de converter um pedido de gravação de um trecho de arquivo em disco para uma seqüência de passos
● ●

referenciando trilhas e setores, e transferir toda essa informação para o controlador apropriado baseado nas informações extraídas do descritor de arquivo

controlador se responsabiliza pelo posicionamento do cabeçote de leitura e gravação e pelo acompanhamento do processo de gravação.

Kernel
Acionadores de dispositivos (device drivers)

Exemplo: impressão

acionador para uma impressora efetua a conversão de um pedido e impressão de um trecho de arquivo para um conjunto de operações básicas
● ●

envolvendo transferência de caracteres, tipos de letras e controles de impressão variam de impressora para impressora

Kernel

Gerenciador de Memória

Parte do SO que gerencia a utilização da memória principal Em computadores monoprogramados é trivial
– –

programa a executar é colocado na memória principal após a execução ele é substituído pela tarefa seguinte

Kernel

Gerenciador de Memória

Em ambiente multi-usuários ou multi-tarefas é complexo
– –

máquina se encarrega de executar diversas tarefas ao mesmo tempo muitos programas e blocos de dados coexistem na memória principal

cada qual em sua área de memória própria determinada pelo gerenciador de memória

na medida das necessidades das diferentes atividades o gerenciador vai providenciando as áreas necessárias

mantendo um mapa das regiões de memória não utilizadas

Kernel

Gerenciador de Memória

Sua tarefa se torna mais complexa quando a área total de memória principal solicitada excede o espaço realmente disponível na máquina
– –

gerenciador pode criar a ilusão de espaço adicional alternando os programas e dados entre a memória principal e o disco espaço ilusório é chamado de memória virtual

Kernel

Gerenciador de Memória ● suponha que seja solicitada uma área de 64MB e somente 32MB estejam disponíveis – para criar a ilusão de um espaço maior de memória, o gerenciador de memória divide a área solicitada em partes chamadas páginas e armazena em disco o conteúdo destas páginas ● um tamanho típico de página não é superior a 4KB – na medida que estas páginas forem sendo solicitadas ● gerenciador de memória pode armazená-las na memória física em substituição a outras que já não sejam mais necessárias – arquivo de swap ● de modo que as demais partes do software possam ser executadas

Kernel

Escalonador (scheduler) e despachante (dispatcher) ● Necessário em um sistema de tempo compartilhado – Escalonador – determina quais atividades serão executadas – Despachante – controla a distribuição de fatias de tempo para tais atividades

Kernel

Escalonador (scheduler) e despachante (dispatcher) ● Vídeo Aula 2 – Parte 2 (5:30)

Atividade
● ● ● ● ● ●

Defina Chamadas de Sistema. Por que ele deve existir? O que é o SHELL? O que é Kernel? Diferencie Modo usuário do Modo kernel. Cite exemplos. Qual a importância do Gerenciador de memória? O que é o escalonador de processos?

A Estr utur a de um Sistema Oper acional

Sistemas Monolíticos

É a organização mais comum O sistema é estruturado através de um conjunto de rotinas que podem se interagir livremente, ou seja, qualquer rotina é livre para chamar qualquer rotina que seja necessário. Os parâmetros e os resultados são bem definidos. Tanembaum: “A grande bagunça” Para construir o SO todos os procedimentos são compilados e agrupados em um único arquivo-objeto usando um linkeditor; Para cada chamada ao sistema que uma aplicação necessite há um procedimento relacionado.

Sistemas Monolíticos
aplicação aplicação Modo usuário System Calls Modo Kernel

Hardware

Sistemas Monolíticos

Os serviços são requisitados através da colocação dos parâmetros em lugares definidos (pilhas e registradores) e da execução de uma instrução especial ao kernel

Interrupção → Chamada de kernel

Sistemas Monolíticos

Sistemas Monolíticos

1. Um Programa principal invoca o procedimento de serviço requisitado; 2. Um conjunto de procedimentos de serviços que executam as chamadas; 3. Um conjunto de procedimentos utilitários que ajuda os procedimentos de serviços

Sistemas Monolíticos

A grande vantagem é o desempenho, pois qualquer componente do núcleo pode acessar os demais: Toda a memória, os mesmos dispositivos E/S. Não há barreiras de proteção; Não há proteção de informações, pois todos os procedimentos são visíveis para todos; Caso um componente do núcleo perca o controle devido a algum erro, esse problema pode se alastrar rapidamente levando o sistema ao colapso; Sistema de difícil manutenção, pois a dependência entre entre os componentes podem não ser evidentes. Assim, uma pequena alteração em alguma estrutura de dados pode ter resultados inesperados em alguns componentes que o acessam.

Sistemas em Camadas

● ●

Organizada numa hierarquia de camadas, construídas um sobre a outra; Cada camada oferece um conjunto de funções, específicas; Cada camada é construída através de serviços oferecidos pela camada inferior; Cada camada oferece um interface de comunicação com outras camadas através de chamadas de sistemas;

Sistemas em Camadas

A vantagem é o isolamento, o que facilita a alteração e depuração, além de criar uma hierarquia de níveis protegendo as camadas inferiores:

Pode-se criar uma camada sem exigir modificações nas outras;

Desvantagem é a menor eficiência com relação aos monolíticos:

O empilhamento de várias camadas de software faz com que cada pedido de uma aplicação demore mais tempo para chegar até o dispositivo periférico ou recurso a ser acessado, prejudicando o desempenho do sistema.

Sistemas em Camadas

0. Alternância entre processos quando ocorria interrupções 1. Aloca espaço para processos na MP 2. Manipula a comunicação entre cada processo e o console do operador 3. Armazenar fluxo de informações e operações de E/S 4. Onde localizam os programas de usuário 5. O processo de operador do sistema

Sistema Operacional The (Dijkstra)

Sistemas em Camadas

Camada 0 ● Alternância entre processos quando ocorria interrupções;

Acima desta camada diversos processos poderiam ser programados seqüencialmente sem conhecimento do gerenciamento dos mesmos; Responsável pela multiprogramação do SO;

Sistemas em Camadas

Camada 1

Aloca espaço na memória RAM; e em um tambor (512K) para armazenar partes dos processos para os quais não havia no lugar na MP; Um software assegurava que os processos fossem levados a memória sempre que fossem necessários Torna transparente para os processos o gerenciamento de memória;

Sistemas em Camadas

Camada 2 ● Manipula a comunicação entre cada processos e o console do operador;

Acima dessa camada cada operador tinha seu próprio console.

Sistemas em Camadas

Camada 3 ● Gerencia os dispositivos de entrada e saída;

Cuidava do armazenamento, tanto vindo dos dispositivos de E/S quanto indo para eles; Acima dela cada processo podia lidar com os dispositivos a partir de uma interface amigável.

Sistemas em Camadas

Camada 4 ● Localização dos programas do usuário;

Os programas não se preocupam com o gerenciamento de memória, disco, processos, E/S ...

Sistemas em Camadas

Camada 5 ● Onde se localiza os processos do operador do sistema.

Sistemas em Camadas

Sistema Multics ● Organização baseada em anéis concêntricos;

Anéis internos mais privilegiadas que externos; A comunicação entre um anel externo e um anel interno é feita através do equivalente a uma chamada de sistema; Parâmetros cuidadosamente verificados quanto à validade e às permissões
usuário supervisor Executivo kernel

Sistemas em Camadas

THE x Multics ● No THE todas as partes do sistema estavam vinculadas juntas em um único programa objeto;

O esquema em camadas era só para modelagem No MULTICS o esquema de anel estava muito presente em tempo de execução, sendo reforçado pelo hardware;
– usuário supervisor Executivo kernel

Máquinas Virtuais

Surgiu a partir da observação dos Sistemas Operacionais de tempo compartilhado, separando seus conceitos básicos ● Multiprogramação

Máquinas estendidas com interfaces convenientes

O coração do sistema “Monitor de máquina virtual” roda no hardware básico e faz a multiprogramação oferecendo várias máquinas virtuais à camada superior seguinte. Essas máquinas virtuais não são máquinas estendidas e sim, cópias exatas do hardware básico, incluso os modos kernel / usuário, interrupções … Como as mv's são cópias exatas podem conter qualquer SO

Máquinas Virtuais

Máquinas Virtuais

Um modelo é utilizado nos SO's atuais como windows, OS2 e outros para executar programas do MS-DOS que funciona para arquitetura 8086.

O próprio MS-DOS é carregado no espaço de endereço virtual do 8086, de modo que monitor da MV somente reflete de volta a interrupção para o MS-DOS; As chamadas de sistemas e I/O protegidos são controlados pelo monitor da MV;

Outro modelo utiliza na camada mais inferior um programa (exokernel) que é responsável por atribuir recursos às máquinas virtuais e assegurar que nenhuma MV utilize recursos das outras. ● Cada MV está limitada a usar apenas os recurso que foram alocados para ela;

Máquinas Cliente/Servidor
● ●

O objetivo é simplificar ao máximo as tarefas do kernel; O sistema é formado por processos clientes que requisitam serviços de processos servidores; Neste modelo o objetivo do kernel é somente gerenciar a comunicação entre os processos clientes e servidores; O cliente faz uma chamada mandando uma mensagem para o servidor que responde através de outra mensagem. A função do núcleo do sistema é realizar a troca de mensagens entre o cliente e o servidor.
Processo Processo Processo Servidor cliente cliente servidor terminal Kernel Servidor Servidor Modo Usuário arquivos memória Modo Kernel

...

Exercícios
● ●

● ●

Como funciona os Sistemas Operacionais Monolíticos Quais as características dos Sistemas Operacionais em camadas? Como funciona a estrutura das máquinas virtuais? Como funciona a estrutura das máquinas cliente/servidor?