Buscar

SistOper

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas Operacionais e Sistemas Operacionais e 
Máquinas VirtuaisMáquinas Virtuais
Colaboração Profa Valéria Bastos
Introdução
● O que é um Sistema Operacional?
– É um programa (software) que atua como intermediário 
entre o usuário e o hardware.
– Fornece um ambiente onde o usuário pode executar os 
programas.
– Garante uma utilização eficiente do hardware.
– Protege o sistema de computação e os usuários uns dos 
outros. 
Sistema Operacional
Sistema Operacional
Sistema Computacional
● São recursos de hardware:
– Tempo de processador (CPU);
– Espaço em memória;
– Espaço para armazenamento de arquivos;
– Dispositivos de entrada e saída;
– Dispositivos de comunicação de dados.
● São recursos de software:
– Programas utilitários;
– Bibliotecas de funções estáticas e dinâmicas;
– Rotinas de serviço;
– Programas aplicativos;
– Programas de interface com dispositivos – drivers.
Compartilhamento de Recursos
● O que significa?
– Compartilhar recursos significa que diferentes usuários ou 
programas usam os recursos de forma concorrente.
● Por que ocorre?
– Ocorre porque num mesmo computador ou sistema 
computacional pode-se ter mais de um programa ou mais 
de um usuário operando ao mesmo tempo.
● Como administrar seu uso?
– Os recursos são limitados e, assim, o uso dos mesmos 
pelos diferentes programas ou usuários precisa ser 
controlado e administrado de forma a evitar possíveis 
conflitos. Essa tarefa cabe ao sistema operacional.
Visão Simplificada
Interface com o Usuário
● Provê facilidades para o usuário:
– Acessar o sistema – segurança de acesso;
– Criar e gerir diretórios, arquivos e programas;
– Executar os programas;
– Acessar os dispositivos de E/S;
– Acessar o conteúdo dos arquivos;
– Detectar erros de execução;
– Contabilizar o uso do sistema.
Classificação
● Sistema monotarefa: 
– Admite e gerencia apenas uma tarefa em execução por 
vez. 
– Ex: DOS, CP/M
● Sistema multitarefa: 
– Admite e gerencia vários tarefas em processamento 
concorrente. 
– Ex: Windows 98, Windows 2000/NT/XP, Linux.
Classificação
Classificação
● Sistema monousuário: 
– admite e gerencia apenas um usuário – não permite que 
mais de um usuário esteja “logado” simultaneamente
● Ex: Windows 98, Windows NT (exceto versão com Terminal 
Server)
● Sistema multiusuário: 
– admite e gerencia vários usuários – permite que mais de 
um usuário esteja “logado” no sistema simultaneamente.
● Ex: Linux, Windows 2000, VMS
Classificação
● Sistemas monoprocessados:
– Somente reconhece um único processador;
– Multitarefa ou monotarefa;
– Ex: Windows 98
● Sistemas multiprocessados:
– Reconhece mais de um processador;
– execução simultânea;
– Ex: Windows 2000/NT/XP, Linux
Classificação
● Sistemas batch:
– Os programas são processados em lote, um de cada vez, 
não havendo interação com o usuário.
● Sistemas time sharing:
– Os usuários compartilham o tempo de uso do computador 
que, em sequência, dedica uma fatia do tempo de 
processamento para cada usuário.
Classificação
● Sistemas de tempo real:
– Sistemas que possuem um forte vínculo com o tempo.
– O resultado correto deve ser dado no tempo previsto.
● Sistemas embarcados:
– Sistemas inseridos em produtos com funções específicas 
como carros, forno de microondas, equipamentos bélicos, 
etc.
Sistemas de Tempo Real
● Sistema de tempo real pode ser definido como aquele 
em que o funcionamento correto da aplicação não 
depende apenas do resultado gerado mas também do 
tempo em que o mesmo é gerado.
● Tarefa Hard Real Time
– Os deadlines são imperativos. Não sendo cumprido os 
resultados de nada servirão.
● Tarefa Soft Real Time
– Os deadlines são desejáveis porém não mandatórios.
Sistemas de Tempo Real
● Características
– Determinismo – tempo de execução predeterminado (duro ou 
dentro de um determinado intervalo).
– Tempo de resposta – atraso de tempo (latência) necessária para 
o sistema iniciar o tratamento de uma interrupção
– Controle pelo usuário – o usuário tem que ter a possibilidade de 
determinar o tipo de suas aplicações (soft ou hard), bem como 
definir a prioridade das mesmas.
– Confiabilidade – é muito mais importante em sistemas de tempo 
real do que em todos as demais modalidades.
– Tolerância a falhas – um SO de tempo real é dito estável se na 
impossibilidade de atender ao deadline de todas as tarefas 
ativas, garante o atendimento daquelas mais críticas.
Sistemas de Tempo Real
● Funcionalidades:
– Troca de contexto rápida
– Tamanho reduzido
– Resposta rápida à interrupções
– Multitarefa com funcionalidades de IPC e concorrência
– Escalonamento preemptivo com base em prioridade
– Minimização dos intervalos em que as interrupções estão 
desabilitadas
– Primitivas para atrasar por um tempo fixo, para suspender ou 
parar tarefas em execução
– Alarmes e timeouts especiais
Free RTOS
● O FreeRTOS é um kernel de sistema operacional em tempo real 
para dispositivos embarcados que foi portado para 35 plataformas 
de microcontroladores. Ele é distribuído sob a Licença MIT.
● O kernel FreeRTOS foi originalmente desenvolvido por Richard 
Barry por volta de 2003 e posteriormente desenvolvido e mantido 
pela empresa de Barry, a Real Time Engineers Ltd. Em 2017, a 
empresa transferiu a administração do projeto FreeRTOS para a 
Amazon Web Services (AWS). Barry continua trabalhando no 
FreeRTOS como parte de uma equipe da AWS.
● O FreeRTOS foi projetado para ser pequeno e simples. Ele é 
principalmente escrito na linguagem de programação C para 
facilitar a portabilidade e manutenção. Também inclui algumas 
funções em linguagem de montagem, onde necessário, 
principalmente em rotinas de escalonamento específicas da 
arquitetura.
Kernel Monolítico
● Todo o sistema operacional está trabalhando no espaço do 
kernel. 
● O modelo monolítico difere de outras arquiteturas de sistema 
operacional, como o microkernel, porque ele sozinho define uma 
interface virtual de alto nível sobre o hardware do computador. 
● Um conjunto de primitivas ou chamadas de sistema implementa 
todos os serviços do sistema operacional, como gerenciamento 
de processos, concorrência e gerenciamento de memória. 
● Drivers de dispositivo podem ser adicionados ao kernel como 
módulos.
● Carregar módulos dinamicamente (conforme necessário) ajuda a 
minimizar a quantidade de código em execução no espaço do 
kernel.
Micro Kernel
● Usa uma quantidade quase mínima de software para 
fornecer os mecanismos necessários para implementar 
um sistema operacional (SO), tais como gerenciamento 
de espaço de endereço de baixo nível; escalonamento e 
comunicação entre processos (IPC).
● O microkernel é normalmente o software em execução 
no nível mais privilegiado, que geralmente é chamado de 
modo supervisor ou kernel. 
● As funções tradicionais do sistema operacional, como 
drivers de dispositivo, pilhas de protocolos e sistemas de 
arquivos, normalmente são removidas do próprio 
microkernel e executadas no espaço do usuário.
Monolítico vs Microkernel
Arquitetura do Unix
(Monolítico)
Arquitetura do Linux
(Monolítico)
Arquitetura do Windows NT
(Híbrido)
Máquina Virtual
● Máquina virtual é um termo amplo que é empregado para 
descrever diversos tipos de implementações que adicionam 
mais um nível de abstração do hardware, além do sistema 
operacional. As opções incluem o seguinte:
– Soluções baseadas em hardware que fornecem suporte para 
criação e gerenciamento de máquinas virtuais via firmware. 
Esses gerenciadores de VMs, que são comumente encontrados 
em mainframes e servidores de grande a médio porte, são 
geralmente conhecidos como hipervisores do tipo 0. IBM LPARs 
e Oracle LDOMs são exemplos.
– Software semelhante ao sistema operacional criado para 
fornecer virtualização, incluindo VMware ESX, Joyent SmartOS e 
Citrix XenServer. Esses gerenciadores de VMs são conhecidos 
como hipervisores do tipo 1. Nestes casos não há sistema 
operacional entre o hipervisor e o hardware.
Máquina Virtual
– Sistemas operacionaisde uso geral que fornecem funções padrão, 
bem como funções de gerenciamento de VMs, incluindo Windows 
Server com HyperV e o Linux com o recurso KVM. Como esses 
sistemas têm um conjunto de recursos semelhante aos 
hipervisores do tipo 1, eles também são conhecidos como tipo 1.
– Aplicativos executados em sistemas operacionais padrão, mas que 
fornecem recursos de gerenciamento de VMs para sistemas 
operacionais convidados. Esses aplicativos, que incluem VMware 
Workstation e Fusion, Parallels Desktop e Oracle VirtualBox, e 
são chamados hipervisores do tipo 2. Normalmente o desempenho 
é menor que os hipervisores do tipo 1 e 0.
– Virtualização do ambiente de programação, na qual os 
gerenciadores de VMs não virtualizam o hardware real, mas criam 
um sistema virtual otimizado para um processador virtual. Essa 
técnica é usada pelo Oracle Java e Microsoft.Net.
Máquina Virtual
● A ideia fundamental por trás de uma máquina virtual é abstrair 
o hardware de um único computador (processador, memória, 
unidades de disco, placas de interface de rede e assim por 
diante) em vários ambientes de execução diferentes, criando 
assim a ilusão de que cada ambiente separado está sendo 
executado em seu próprio computador privado.
● Uma máquina real pode abrigar internamente diferentes 
ambientes virtuais, cada um simulando uma máquina distinta, 
com memória, sistema operacional, recursos e processos 
próprios. Desta forma, cada usuário (ou aplicativo) parece 
possuir sua própria máquina. 
● Uma única máquina física pode, portanto, executar vários 
sistemas operacionais simultaneamente, cada um em sua 
própria máquina virtual.
Máquina Virtual
Máquina Virtual
● Sem algum nível de suporte de hardware, a virtualização 
seria impossível.
● Quanto mais suporte de hardware disponível em um 
sistema, mais ricas em recursos e estáveis as máquinas 
virtuais podem ser e melhor elas podem executar. 
● Na família de processadores x86, a Intel adicionou novo 
suporte à virtualização (as instruções VT-x) em gerações 
sucessivas a partir de 2005. Hoje em dia, a tradução binária 
é não é mais necessária.
● A tecnologia de virtualização da AMD (AMD-V) apareceu 
em vários processadores AMD a partir de 2006, definindo 
mais dois novos modos de operação – host e convidado – 
além do modos de usuário e privilegiado usuais. 
Container
● A containerização de aplicativos não é virtualização, embora forneça 
recursos semelhantes à virtualização, segregando aplicativos do 
sistema operacional. Docker, Podman, Oracle Solaris Zones, BSD 
Jails e IBM AIX WPARs “containerizam” aplicativos, tornando-os 
mais seguros e gerenciáveis.
● Os containers fornecem isolamento a nível de sistema operacional e 
compartilham o mesmo kernel do sistema operacional hospedeiro. 
● As máquinas virtuais emulam um ambiente completo de hardware e 
fornecem uma maior separação entre os sistemas operacionais 
convidados.
● As VMs são mais adequadas para ambientes que exigem 
isolamento máximo, enquanto os containers são mais leves, rápidos 
e adequados para empacotar e implantar aplicativos isolados com 
eficiência.
Emuladores
● Emuladores que permitem que aplicativos escritos para um tipo 
de processador sejam executados em computadores com um 
tipo diferente de processador. 
● A principal diferença entre emuladores e máquinas virtuais é que 
os emuladores imitam o comportamento e as características de 
um sistema operacional ou dispositivo específico em um 
ambiente diferente, enquanto as máquinas virtuais são instâncias 
isoladas de sistemas operacionais completos em um ambiente 
virtualizado, compartilhando o mesmo hardware físico. 
● Os emuladores são frequentemente usados para executar 
software antigo em hardware moderno, enquanto as máquinas 
virtuais são usadas para consolidar servidores, executar vários 
sistemas operacionais e facilitar a implantação de aplicativos em 
ambientes virtualizados.
Máquina Virtual Java
● No caso do Java, os programas são compilados para o código objeto 
de um processador virtual e traduzidas em tempo de execução pela 
JVM (Máquina Virtual Java). 
● Isso permite que os programas Java sejam compilados uma vez e 
executados em qualquer sistema com uma JVM disponível. 
● De forma semelhante às máquinas virtuais, a JVM cria um espaço 
isolado em uma máquina hospedeira.Este espaço pode ser utilizado 
para executar programas Java independente da plataforma ou 
sistema operacional da máquina.
● O código Java é primeiro compilado em bytecode para gerar um 
arquivo de classe. Esse arquivo de classe é então interpretado pela 
Java Virtual Machine para gerar código compatível com a máquina 
hospedeira. 
● O mesmo arquivo de classe pode ser executado em qualquer versão 
da JVM em execução em qualquer plataforma e sistema operacional.
Componentes da JVM
Máquina Virtual Java
● A JVM pode ser implementada em software em cima de 
um sistema operacional hospedeiro, como Windows, 
Linux ou MacOS, ou como parte de um navegador da 
web.
● Alternativamente, a JVM pode ser implementada em 
hardware em um chip projetado especificamente para 
executar programas Java.
● Tutoriais Java:
https://youtu.be/jnpuRvRdTgI
https://youtu.be/Dpuy8WUBq9w
https://youtu.be/jnpuRvRdTgI
https://youtu.be/Dpuy8WUBq9w
Máquina Virtual Java (JVM)
Máquina Virtual Python
● Python é uma linguagem interpretada, onde o 
interpretador traduz o código “bytecode” para o código de 
máquina do processador do computador hospedeiro.
● Cada computador/sistema operacional possui uma 
versão específica do interpretador adequada às suas 
características.
● No Python 3, os arquivos com bytecode são 
armazenados em um pasta com o nome __pycache__. 
Máquina Virtual Python
● A máquina virtual python possui uma instrução com 16 
bits, sendo 8 reservados para o opcode e 8 para o 
parâmetro. 
● Se o parâmetro necessitar de mais um byte ele pode ser 
estendido até a quantidade de bytes necessária 
colocando-se um valor especial de parâmetro. 
● Como pode-se observar é uma máquina com ordenação 
“little-endian”, cujas instruções em linguagem de máquina 
são bastante sofisticadas.
https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d 
Máquina Virtual Python
● A abordagem utilizada pelo Python é semelhante à adotada pelo 
Java. 
● Existe até uma maneira de traduzir programas Python em código de 
byte Java para a Java Virtual Machine (JVM) utilizando o programa 
Jython.
● Mas em python não precisamos compilar o programa manualmente, 
isso é feito automaticamente ao se invocar o interpretador.
● Sempre que um programa Python é chamado, verifica-se se existe 
uma versão compilada com o sufixo .pyc. Se tal arquivo existir, o 
interpretador carregará o código de bytes, o que acelerará o tempo 
de execução do programa. 
● Se não existir uma versão bytecode mais recente, o código fonte 
será então compilado e um arquivo bytecode gerando antes da 
execução do programa.
Python bytecode
Máquina Virtual Python
● Finalmente, o seu programa ser executado não é uma 
característica da linguagem: trata-se da implementação da 
linguagem. 
● A descrição apresentada foi do funcionamento do CPython, 
a implementação usual do Python, assim chamada porque 
é escrito em C. 
● PyPy é outra implementação, usando um compilador JIT 
para executar o código muito mais rápido do que o 
CPython.
● O código-fonte .py é primeiro compilado para código de 
byte como .pyc. Este código de byte pode ser interpretado 
(CPython oficial) ou compilado por JIT (PyPy).
https://thenewstack.io/mit-created-compiler-speeds-up-python-code/
Comparação de Desempenho
https://medium.com/starschema-blog/jit-fast-supercharge-tensor-processing-in-python-
with-jit-compilation-47598de6ee96

Outros materiais