Conceitos Básicos de Sistemas Operacionais



Documentos relacionados
MÁQUINAS VIRTUAIS EM SISTEMAS DISTRIBUÍDOS. Luiz C. Vieira

Introdução à Sistemas Operacionais

Estruturas de Sistemas Operacionais

GSO II GESTÃO DE SISTEMA OPERACIONAL II

Informática I. Aula Aula 19-20/06/06 1

Fundamentos de Sistemas Operacionais de Arquitetura Aberta. CST em Redes de Computadores

Sistemas Operacionais (SO)

Curso: Redes de Computadores

Prof. Kleber R. Rovai

Sistemas Operacionais

Thread. Thread. Sistemas Operacionais. Leonard B. Moreira. UNIVERSIDADE ESTÁCIO DE SÁ fevereiro, / 41

SISTEMAS OPERACIONAIS

Fundamentos da Informática Aula 03 - Sistemas operacionais: Software em segundo plano Exercícios Professor: Danilo Giacobo

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 13

Servidores. Um Servidor, em redes de computadores, nada mais é que um host da rede capaz de oferecer um determinado serviço a outros hosts da redes.

História e Conceitos sobre Sistemas Operacionais. Técnico de Informática 2º. Módulo Prof. Alex Sandro Forghieri

Sistema Operacional. Disciplina: Softwares, Aplicativos e Sistema Operacional. Professor: Thiago Silva Prates

Fundamentos de Sistemas Operacionais

Sistemas Operacionais Aula 3

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais

Sistemas Operacionais Processos. Carlos Ferraz Jorge Cavalcanti Fonsêca

INFORMÁTICA (NCINF) SOFTWARE SISTEMAS OPERACIONAIS

Sistemas Operacionais - UCSAL Professor : Marco Antônio C. Câmara Primeira Lista de Exercícios

Algoritmos e Lógica de Programação Sistemas Operacionais

Atualizada em 29/01/

William Stallings Arquitetura e Organização de Computadores 8 a Edição

PROVA 03/07 Segunda-feira (semana que vem)

Sistemas Operacionais

MÁQUINAS VIRTUAIS VIRTUALIZAÇÃO AULA 04 Sistemas Operacionais Gil Eduardo de Andrade

SOP - TADS Threads. Revisão Ultima aula. Programa em execução Cada processo têm sua própria CPU

GERENCIAMENTO DE PROCESSOS E MEMÓRIA

Sistemas Operacionais

Aula 2: Tipos de Sistemas Operacionais. Instituto Federal da Bahia Campus Salvador INF009 - Sistemas Operacionais Profª Flávia Maristela

Arquitetura de Computadores Sistemas Operacionais II

Sistemas Operacionais. Processos e Threads

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

14/05/2017. Conceitos de Processos. Conceitos de Processos. Conceito de processo

INTRODUÇÃO A SISTEMAS OPERACIONAIS

Introdução à Computação

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Introdução aos Sistemas Operacionais

Conceitos básicos sobre computadores

Informática Sistemas Operacionais Aula 5. Cleverton Hentz

Sistemas Operacionais. BSI / UAB 2013 Hélio Crestana Guardia

Técnico Subsequente em Redes de Computadores Introdução a Sistemas Abertos (ISA)

Sistemas de Informação. Sistemas Operacionais

Sistemas Operacionais

INTRODUÇÃO. Sistemas Operacionais. Vinícius Pádua

Sistemas de Informação (SI) Infraestrutra de Tecnologia da Informação (TI): Software

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 07

Introdução à Informática

Trabalho de Conclusão de Curso

ARQUITETURA DE COMPUTADORES

Professor Léo Matos TI para Concursos

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

TAREFAS IMPLEMENTAÇÃO DE TAREFAS AULA 06 Sistemas Operacionais Gil Eduardo de Andrade

Conceitos básicos e serviços dos Sistemas Operacionais

Informática básica SOFTWARE.

Sistemas Operacionais. Conceito de Processos

Sistemas Operacionais. Rodrigo Rubira Branco

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO O SISTEMA OPERACIONAL PROFESSOR CARLOS MUNIZ

Introdução à Informática

Sistemas Operacionais

Redes de Computadores. INF201 - Fundamentos de Sistemas Operacionais - 2º Período

Informática. Sistemas Operacionais. Professor Márcio Hunecke.

INTRODUÇÃO. Sistemas Operacionais. Vinícius Pádua

Noções de Processos. Plano da aula. Serviços oferecidos. Definição & Objetivos. Definição & Objetivos. Sistemas Operacionais : introdução

Sistemas Operacionais

Questões de Múltipla escolha

Sistemas Operacionais. Rodrigo Rubira Branco

Sistema Operacional. Etapa

Aula 01 Introdução ao S.O. Linux

SSC0640 Sistemas Operacionais I

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

Informática Básica Softwares

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO PROCESSOS PROFESSOR CARLOS MUNIZ

Gerência de Entrada e Saída

Sistemas de Informação. Sistemas Operacionais

SSC0640 Sistemas Operacionais I

Processos. Prof. Gustavo Leitão

Instalação e Configuração de Servidores Linux Server. Prof. Alex Furtunato

Sistema Operacional. O S.O. é o programa mais importante do computador. - Realizar a interação entre o usuário, o hardware e o firmware -(BIOS)

Sistemas Operacionais

Introdução a Sistemas Operacionais. Carlos Eduardo Ba8sta

Sistema Operacional. Prof. Leonardo Barreto Campos. 1/30

Sistemas de Computação. Processos e escalonamento

SISTEMAS OPERACIONAIS. TÁSSIO JOSÉ GONÇALVES GOMES

LabSO Gerência de Processos. Processos. Porque eu preciso entender este assunto?

Aula 1: Introdução aos Sistemas Operacionais. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela

Proposta Comercial CloudFlex

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Apresentação. Ementa da Disciplina. Objetivo da Disciplina. DCA-108 Sistemas Operacionais. Referências Bibliográfica. Referências Bibliográfica

Estrutura dos Sistemas Operacionais. Sérgio Portari Júnior

Threads. Agenda. Threads. Processo. Processo. Processo. Processo. (c) Volnys B. Bernal Versão de 22/3/2012

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA GABRIEL BOJKO LUIZ OTÁVIO OYAMA

Servidor de Armazenamento em Nuvem

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios. Aula 06.

AULA Nº 08 SISTEMAS OPERACIONAIS. Threads

Técnicas Avançadas de Programação

Transcrição:

Link para baixar o APP http://app.vc/sistemas_operacionaisso Conceitos Básicos de Sistemas Operacionais Programas de Sistema: Gerenciam o Hardware; Programas de Aplicativos: Fornecem soluções para os usuários, tais como editores de texto, compiladores, planilhas eletrônicas; Sistema operacional é o software que gerencia o hardware [TAN92]. A principal função do sistema operacional é: esconder a complexidade de manipulação de hardware. fornecendo uma interface amigável para o uso dos recursos de hardware. Máquina Estendida Isola o usuário dos detalhes de operação dos dispositivos físicos de um computador. O SO apresenta uma máquina virtual equivalente ao hardware de forma mais simples para o programador. Gerente de Recursos Gerenciar as requisições de uso de recursos solicitadas pelos usuários. Recursos: arquivos, memória, processador, cd-rom, impressora, etc.

Conceitos: //SO de tempo Real: Monousuário: Somente um usuário interage com o SO (DOS). monotarefa: Execução sequencial de apenas um processo por vez na CPU. multitarefa: Vários processos compartilham a CPU. Multiusuário: Atende vários usuários (UNIX/NT). Monoprocessado: Usa um processador Multiprocessado: Usa vários processadores. Chamadas de Sistema: É o conjunto de instruções que estabelecem a interface entre o sistema operacional e os programas do usuário; Criam, apagam e usam diversos objetos gerenciados pelo sistema operacional. Processos: É um programa em execução, possui código executável, informações referente a dados, pilha, contador de programa, registradores, etc. Uso de threads(processos leves). Possui um conjunto de estados. Estados de um Processo: Sistemas de Arquivos: Esconder as peculiaridades de manipulação dos dispositivos de entrada e saída do usuário. Apresentar ao programador um modelo abstrato com arquivos independentes dos dispositivos; Possui (Arquivos, Diretórios e Permissões de Acesso); Memória: É a função do SO: - Gerenciar o uso de memória. Controlar quais paretes da memória está em uso e as que não estão, alocar memória a processos, liberar a memória dos processos, tratar o problema de swapping (Técnica 1

utilizada para gerência de memória, visa dar maior taxa de utilização á memória principal afim de melhorar seu compartilhamento, também visa em resolver o problema de falta de memória principal em um sistema). Estrutura do SO Tipos: Sistemas Monolíticos: É a organização mais comum, conforme [TAN00] a grande bagunça. Não há nenhuma estrutura. O SO é escrito como um conjunto de procedimentos. Onde cada procedimento deve ter uma interface bem definida e os parâmetros e resultados devem ser definidos. Qualquer procedimento pode chamar outro. Não há possibilidade de se implementar restrições a visibilidade das informações e todos os procedimentos são visíveis aos outros. Todos os programas devem ser ligados em um único arquivo-objeto; O kernel do sistema operacional é responsável pelas funções básicas, tais como, escalonamento, distribuição e gerenciamento de objetos. Tem-se um pouco de estrutura nas chamadas de sistema [TAN00]. Para a chamada dos serviços deve-se colocar os parâmetros em registradores e pilhas, seguido de uma instrução especial de trap, conhecida como chamada ao supervisor (kernel). A execução deste tipo de instrução chaveia a máquina do modo usuário para modo kernel e transfere o controle ao sistema operacional. 2

1. O programa do usuário executa uma interrupção (trap) para o kernel; 2. O SO determina o tipo de serviço solicitado os parâmetros informados. 3. O SO localiza em uma tabela e chama a rotina de serviço. 4. O controle retorna ao programa do usuário; Sistemas em Camadas: O Sistema Operacional é organizado como uma hierarquia de camadas, construída uma sobre a outra. O primeiro SO construído sobre esta estrutura foi o THE(1968, Djkstra). Este SO era um sistema em lotes simples para um computador holandês. 5 Operador 4 Programa do Usuário 3 Gerência de dispositivos E/S 2 Comunicação processo-operador 1 Gerência de Memória e Disco 0 Alocação do processador e multiprogramação Camada 0 Aloca processos ao processador. Camada 1 Aloca processos a memória principal e em disco(páginas) quando a memória está cheia. Camada 2 Controla a comunicação entre o processo e o operador. Camada 3 Gerencia os dispositivos da E/S. Camada 4 Programas do usuário. Camada 5 Operador, ou usuário do Sistema. 3

Máquinas Virtuais: Projetado para suportar o tempo compartilhado, ou seja, utiliza a multiprogramação dividindo o tempo de processamento da CPU entre os processos ativos; Cada máquina virtual é uma cópia idêntica ao hardware com suporte a multiprogramação; Em cada máquina virtual pode-se executar qualquer SO e, este será executado diretamente sobre o hardware. Não são máquinas estendidas com sistemas de arquivos e outras características agradáveis e convenientes ao usuário. Este modo é utilizado pelo Windows, OS/2 e outros sistemas operacionais para executar programas do MS-DOS. Modelo Cliente- Servidor: O núcleo do sistema operacional é reduzido a um conjunto primário de funções chamado de micro-kernel; As requisições ao sistema operacional são feitas por processos clientes e atendidas por processos servidores através de troca de mensagens. É robusto e consistente no principal paradigma de construção de sistemas distribuídos. A tendência em sistemas operacionais modernos [TAN00] é mover código para as camadas mais altas, e remover tanto quanto possível do sistema operacional, deixando um mínimo de kernel. A abordagem normal é implementar a maior parte das funções do sistema operacional em processos do usuário. 4

Tipos de Sistemas Operacionais: Conceitos de Windows: Sistema monolítico, sistema em camadas(a partir DOS), máquinas virtuais (a partir NT) Correndo atrás do prejuízo, a Microsoft lançou seu primeiro sistema com interface gráfica e suporte para múltiplas tarefas. O software da MS copiou algumas coisas do Macintosh, mas ele era bem diferente em diversos aspectos. Este sistema rodava sobre o MS-DOS, mas já trazia alguns drivers avançados para melhorar a usabilidade. Pensando em migrar para o setor dos tablets e revolucionar a forma como as pessoas usam os PCs, a Microsoft apostou em uma reformulação de seu sistema. Aproveitando elementos do Windows Phone, o novo Windows 8 trouxe um novo Menu Iniciar. Além disso, ele mantém a compatibilidade com os antigos programas e traz suporte para novos apps. Conceitos de Linux: Sistema monolítico, sistema em camadas, máquinas virtuais Finalmente, depois de vinte e tantos anos de história, nasceu o Linux. Apesar de não ser o sistema preferido de muitos, o pinguim foi um dos mais importantes da história, visto que trazia código livre e aberto. De início, o sistema de Linus Torvalds aproveitou bibliotecas e aplicações do GNU. O curioso desse sistema é que ele não se popularizou como uma plataforma única. Desde o começo, Torvalds distribuiu o Kernel do sistema de forma gratuita, garantindo que diversos 5

outros sistemas pudessem ser desenvolvidos e oferecer novas experiências para os usuários. Conceitos de ios: Sistema monolítico, sistema em camadas, máquinas virtuais O primeiro sistema operacional da Apple veio para equipar os computadores Apple II. Como o próprio nome sugere, este era um sistema que funcionava em discos (época em que não existiam os HDs). Esse software, que foi desenvolvido por terceiros, era bem rudimentar e contava apenas com alguns componentes básicos: um gerenciador de arquivos, um catálogo, funções para abrir e remover dados, um programa de inicialização e alguns outros elementos. Conceitos de Android: Sistema monolítico, sistema em camadas, máquinas virtuais, modelo cliente/servidor Anteriormente desenvolvido pela Android Inc., o Android foi adquirido pela Google ainda em 2005. De lá para cá, a gigante das buscas veio trabalhando para conquistar o mercado móvel. Hoje, o Android é o sistema portátil mais usado do mundo, sendo que ele vem ganhando destaque por ser pioneiro no lançamento de diversos recursos. A versão mais recente é a 6.0, que já traz suporte para o Open GL ES 3.0. Conceitos de Unix: Sistema monolítico, sistema em camadas Na década de 1960, uma equipe de desenvolvedores da AT&T Bell Labs resolveu trabalhar em um software mais objetivo e simplificado do que aquele que era utilizado nos mainframes da época. Após alguns anos, mais precisamente em 1969, o resultado foi o sistema operacional proprietário apelidado de UNIX (Serviço de Computação e Informação Uniplexada). De início, o sistema foi programado especificamente para um tipo de máquina, mas, em 1973, o software foi recodificado para a linguagem C. Apesar de se tratar de um software com código fechado, a AT&T forneceu cópias para universidades. 6

Virtualização Introduziu nos anos 60 em Mainframes, em 1980 os microcomputadores e PC s ganharam em eficiência. Depois de 1990, a virtualização volta a ser estudada e hoje, virtualização está em primeiro plano. Virtualização é uma abstração entre o hardware e o sistema operacional que provê recursos (instalado no computador). Uma máquina virtual oferece um ambiente completo, muito similar a uma máquina real, tendo o seu próprio sistema operacional, aplicativos e serviços de rede de forma totalmente isolada e independente uma das outras. Cada processo é um ambiente de execução isolado dos demais processos que executa sobre um processador lógico, isto é, um processador virtual, vinculado a si no momento da criação do processo. Cabe ao núcleo do sistema operacional, através de seu escalonador, alternar os diferentes processadores lógicos (virtuais) sobre um processador físico. A ilusão de paralelismo é criada pelo chaveamento rápido entre os processos. Interfaces genéricas: Para que os programas de usuário e as bibliotecas possam executar sobre um dado sistema operacional e processador é preciso respeitar as chamadas de sistema disponibilizadas e ter um código binário compatível com o do processador. Isso é obtido através da compilação do programa e das bibliotecas para essa plataforma. O processo ou sistema operacional que executa sobre uma máquina virtual é denominado de hóspede ou convidado, enquanto que a plataforma subjacente onde a máquina virtual executa é denominada de hospedeiro ou sistema nativo. Uma máquina virtual de processo é aquela que fornece um ambiente de execução para uma única aplicação de usuário através de uma ABI (Interface Binária de Aplicação) virtual. Virtualização permite que múltiplas máquinas virtuais (sistemas operacionais) funcione em um mesmo hardware. Funciona isoladamente do sistema operacional hospedeiro e de outras máquinas virtuais. Cada máquina virtual possui o seu próprio hardware virtual (como RAM, CPU, Placa de Rede, etc) para que suas respectivas aplicações possam funcionar. As máquinas virtuais são instaladas dentro de um arquivo e podem ser facilmente alocadas de um computador para outro. 7

Hipervisores tipo I -> são aqueles que executam diretamente sobre o hardware de uma máquina real e as máquinas virtuais são postas sobre ele. A função básica de um hipervisor nativo é compartilhar os recursos de hardware entre as deferentes máquinas virtuais de forma que cada uma delas tenha a ilusão de que esses recursos são privativos a ela. Hipervisores tipo II -> Ou hóspedes, são caracterizados por executar sobre um sistema operacional nativo como se fossem um processo deste. O hipervisor oferece uma camada de virtualização composta por um sistema operacional hóspede, possivelmente diferente do sistema operacional nativo, e por um hardware virtual criado sobre os recursos de hardware oferecidos pelo sistema operacional nativo. Tipos de Virtualização: Emulação, para - virtualização e virtualização. Virtualização Total consiste em prover uma réplica (virtual) do hardware subjacente de tal forma que o sistema operacional e as aplicações possam executar como se estivessem diretamente sobre o hardware original. A grande vantagem é que o sistema operacional hóspede não precisa ser modificado para executar sobre o monitor de máquina virtual ou hipervisor. A estratégia de paravirtualização aparece como uma abordagem alternativa para contornar os problemas de desempenho da virtualização total. Nessa abordagem o sistema hóspede deve ser modificado para chamar a máquina virtual sempre que for executar uma instrução ou ação considerada sensível, ou seja, é feita a substituição da chamada de uma instrução sensível pela chamada a um tratador de interrupção de software (trap) com os parâmetros adequados. Virtualização - Benefícios: Particionamento: Múltiplas aplicações e sistemas operacionais podem ser executados em um único sistema físico. Servidores podem ser consolidados em máquina virtuais, escalando arquiteturas. Recursos computacionais são tratados em uma política uniforme para que sejam alocadas máquinas virtuais de maneira controlada. Isolamento: Máquinas virtuais são completamente isoladas da máquina hospedeira e de outras máquinas virtuais. Se uma máquina virtual tem problemas, todas as outras não são afetadas. Dados não vazam entre máquinas virtuais e aplicativos podem somente se comunicar em conexões de rede configuradas. 8

Encapsulamento: Um completo ambiente de máquina virtual é alvo em um simples arquivo, fácil de fazer backup, de ser movido e copiado. Padronização de hardware virtualizado é fornecida para a aplicação, garantindo compatibilidade. O núcleo Linux foi originalmente, escrito por Linus Torvalds do Departamento de Ciência da Computação da Universidade de Helsinki, Finlândia, com a ajuda de vários programadores voluntários através da Usenet (uma espécie de sistema de listas de discussão existente desde os primórdios da Internet). Linus Torvalds começou o desenvolvimento do núcleo como um projeto particular, inspirado pelo seu interesse no Minix, um pequeno sistema UNIX desenvolvido por Andrew S. Tanenbaum. Ele limitou-se a criar, nas suas próprias palavras, um Minix melhor que o Minix ( a better Minix than Minix ). Uma distribuição Linux inclui todos os componentes-padrão do sistema Linux; mais um conjunto de ferramentas administrativas para simplificar a instalação inicial e atualização do Linux; e outro conjunto de ferramentas para controlar a instalação e remoção de pacotes; possui software livre (e por vezes não-livres) criados por indivíduos, grupos e organizações de todo o mundo, incluindo o núcleo Linux. Companhias como a Red Hat, a SuSe, a Mandriva (união da Mandrake com a Conectiva) e a Canonical (desenvolvedora do Ubuntu Linux), bem como projetos de comunidades como o Debian ou o Gentoo, compilam o software e fornecem um sistema completo, pronto para instalação e uso. O Shell é um módulo que atua como interface usuário - sistema operacional, possuindo diversos comandos internos que permitem ao usuário solicitar serviços do sistema operacional. O shell também implementa uma linguagem simples de programação que permite o desenvolvimento de pequenos programas (os famosos shell scripts). Sistema de Arquivos: descritor é um indicador abstrato para acessar um arquivo, o termo é geralmente usado em sistemas operacionais POSIX. Para o Microsoft Windows, o termo handle de arquivo é mais usado. Um descritor de arquivo (normalmente) é um inteiro, especificamente do tipo int de C. Processo descritor é um processo - programa em movimento, dinâmico: estruturas de dados do kernel para mater o estado; descritor, PCB (control block), task_struct; maior do que se possa imaginar (cerca de 1K); estrutura complexa com apontadores para outras estruturas; Tipo de informação em task_struct: registradores, estado, id, prioridades, locks, 9

arquivos, sinais, mapas de memórias, filas, listas de apontadores. Alguns detalhes: enderecos dos primeiros campos codificados em assembler; Atenção especial para o layout de linha do cache. Processos: Criação Fork -> Duplica a maior parte dos recursos do pai; vfork -> compartilhamento pai/filho; pai bloqueia até filho terminar; clone() -> especifica quais recursos compartilhar ou duplicar: CLONE_VM, _FS, _FILES, _SIGHAND, _PID fork() é implementada como um envoltório sobre clone() com parâmetros específicos; _clone(fp, data, flags, stack) Gerenciamento de Processos Na Multiprogramação diversos programas são mantidos na memória ao mesmo tempo, onde possui mecanismos que permite a execução concorrente de processos. Com isto, há o compartilhamento de recursos físicos e lógicos, melhor aproveitamento do processador, modularidade e execução concorrente de tarefas. Processo é definido como um programa em execução; executa as instruções de um programa (entidade passiva). É uma entidade ativa e possui contexto e estado aonde apresenta execução sequencial. 10

Processos independentes não compartilham contexto e a saída depende exclusivamente da entrada; saída sempre igual para a mesma entrada. Processos cooperativos possuem contexto compartilhado, onde saída depende da sequencia relativa de execução e nem sempre uma entrada gera a mesma saída. Time - Sharing (tempo compartilhado) é uma extensão da multiprogramação, com troca frequente do processo em execução no processador e permite que vários usuários utilizem um computador interativamente ao mesmo tempo. Funções da Gerência de Processos: - Criação e destruição de processos; - Suspensão e reativação de processos; - Comunicação de Processos; - Sincronização de Processos; - Manipulação de deadlocks; - Controle dos recursos alocados aos processos; - Estados de um processo identifica a situação atual de um processo. - Executando (running) -> Processo está sendo executado; - Bloqueado (waiting) -> Processo está esperando por algum evento; - Pronto (ready) -> Processo está aguardando para ser executado; 11

Gerência de Processos: Escalonamento Para entendermos Escalonamento de Processos necessitamos da definição de Sistemas Operacionais e a Definição de Multiprogramação. Definição de Processo em Sistemas Operacionais: Processo é uma abstração do programa em execução. Mantém a capacidade de operações pseudoconcorrentes, mesmo quando há apenas uma CPU disponível. Então quando nos referimos a um sistema operacional, estamos falando do processo referente a esse programa. A CPU chavearia de programa a programa, executando cada um deles por dezenas ou centenas de milissegundos. A cada instante a CPU executa somente um programa, no decorrer de um segundo ela pode trabalhar sobre vários programas, dando aos usuários a ilusão de paralelismo. Definição de Multiprogramação: Conceitualmente, cada processo tem sua própria CPU virtual. Na prática, a CPU troca, a todo momento, de um processo para outro. Portanto, um conjunto de processos executando paralelamente é conceitual quando há uma CPU apenas. O mecanismo de trocas rápidas, onde a CPU faz esses chaveamentos é a Multiprogramação. O que é Escalonador de Processos Um Escalonador de Processos é um subsistema do Sistema Operacional responsável por decidir o momento em que cada processo obterá a CPU. É utilizado algoritmos de escalonamento que estabelecem a lógica de tal decisão. Nesse momento de decidir qual escalonador será utilizado no sistema operacional, cabe avaliar o cenário que o sistema será utilizado. Comportamento de Processos de Entrada e Saída (IN/OUT bound): Comportamento de Processos Orientados a CPU (CPU bound): Escalonamento Não Preemptivo: ocorre apenas em situações que praticamente obrigam que uma decisão seja tomada. Esse cenário tem as seguintes condições: Criação de um novo processo; Término de um processo; Processo ser bloqueado; após alguma interrupção. Escalonamento Preemptivo: escolhe um processo e lhe concede a CPU durante certo tempo. Findado esse tempo, a CPU é de outro processo. Esse cenário tem as seguintes condições: Criação de um novo processo; Término de um processo; Processo ser bloqueado; após alguma interrupção; periodicamente, a cada N intervalos de relógio. 12

Threads http://www.phpied.com/css-animations-off-the-ui-thread/ Animação http://www.phpied.com/files/css-thread/thread.html 13

O que é virtualização? Virtualização (em computação) é a criação de uma versão virtual de alguma coisa, como um sistema operacional, um servidor, um dispositivo de armazenamento (storage) ou recurso de rede. Funciona dividindo um recurso de hardware físico em partes, que podem ser usadas para fins distintos. Normalmente o termo virtualização é mais aplicado para virtualização de sistemas operacionais, onde é instalado um software chamado hypervisor, que permite executar diversos sistemas operacionais ao mesmo tempo. A tecnologia de virtualização de sistemas operacionais iniciou-se com os mainframes há décadas atrás, mas ganhou força e conhecimento público a partir de 1996, quando a VMware lançou sua primeira versão de hypervisor para a plataforma x86(processadores Intel e AMD compatíveis). Alguns anos depois, a virtualização já era realidade no mundo empresarial, ajudando a TI a ganhar produtividade, economizar recursos de servidores e melhorando a gerência do ambiente. No mundo empresarial moderno, a virtualização está presente em quatro áreas distintas: servidores, storage (armazenamento), network (rede) e aplicação: Virtualização de Servidores / Virtualização de Sistema Operacional A virtualização de servidores permite executar diversos sistemas operacionais simultaneamente no mesmo hardware, que são chamados de máquinas virtuais. Uma das características é o mascaramento dos recursos físicos (incluindo processadores, quantidade de memória, interfaces de rede), o que permite diminuir a administração de drivers nas máquinas virtuais, e transferir uma máquina virtual entre servidores físicos diferentes sem 14

se preocupar com o hardware técnica chamada de vmotion, XenMotion ou Live Migration, dependendo do fabricante. Os principais hypervisors da atualidade para virtualização de servidores são: VMware ESX,Microsoft Hyper-V, Citrix Xen Server, Oracle Virtual Box e RedHat KVM. Virtualização de Storage A virtualização de storage se aplica normalmente a equipamentos específicos, conhecidos como Storages, o que permite que múltiplos equipamentos sejam reconhecidos e gerenciados como um só. Normalmente também acompanha recursos avançados, como a abstração dos HDs dentro desses equipamentos, permitindo movimentar os dados entre tipos de HDs diferentes ou RAIDs diferentes, para aumentar a performance ou espaço disponível conforme necessidade. A virtualização de storage ainda pode ser implementada via software, sendo que alguns permitem compartilhar recursos de múltiplos servidores para criar um único pool de armazenamento, aumentando a performance geral e a resiliência contra problemas. Um exemplo de virtualização de storage via software, é o VMware VSAN. Exemplos de Storages virtualizados são o Dell Equallogic e o Dell Compellent. Virtualização de Rede A virtualização de rede consiste em separar uma camada física de rede em diversas camadas lógicas, isoladas entre si, para fins distintos. A primeira implementação comercial amplamente adotada foi estabelecido pelo IEEE 802.1q, comercialmente chamada de VLAN. Ela permite a criação de diversas camadas dentro de uma rede física, que podem ser propagadas entre os switches, isolando e priorizando tráfegos específicos, como VoIP, sistemas críticos e rede de backup. Com o advento das placas de 10Gbits, se popularizou uma técnica chamada de partition, que consiste em dividir logicamente essas interfaces em várias camadas, que aparecem para o sistema operacional como interfaces de redes distintas. Cada interface do partition pode ter uma parte da banda reservada, com endereçamento físico exclusivo, o que permite a criação do que é chamado de infraestrutura de rede convergente. Além da capacidade de divisão da rede física em camadas lógicas, existem novas implementações que visam facilitar a gerência dessas redes, 15

abstraindo todo o tráfego dos switches e transferindo a configuração para interfaces mais automatizadas, com o VMware NSX. Virtualização de Aplicação Na virtualização de aplicação, uma camada de software instalado entre o sistema operacional e a aplicação virtualizada fica responsável pela abstração do sistema operacional, bibliotecas e drivers. O principal uso da virtualização de aplicações é para evitar a necessidade de instalação do aplicativo e a necessidade de validar todas as bibliotecas necessárias para a execução do mesmo. Um aplicativo virtualizado normalmente é empacotado em um único arquivo, chamado deconteiner, que contém todas as bibliotecas necessárias para executar aquele aplicativo, e permite executar em computadores diferentes sem a necessidade de instalar todas as bibliotecas. A virtualização de aplicativos também permite a coexistências de múltiplas versões do mesmo aplicativo ao mesmo tempo no mesmo computador, por exemplo, por questões de compatibilidade de sites, algumas empresas precisam executar uma versão específica e antiga do Internet Explorer, usando a virtualização, é possível que a URL daquele site execute uma versão do Internet Explorer virtualizada, enquanto que as estações podem ser atualizadas para sempre rodar a última versão nos demais sites, garantindo a segurança. Exemplos de software para virtualizar aplicativos: VMware ThinApp Virtualização de Desktops A virtualização de Desktops não é diferente da virtualização de Sistema Operacional e consiste em executar o sistema operacional do Desktop (Windows 7 ou Windows 8 por exemplo) em uma máquina virtual. Pode ser executada dentro do próprio computador do usuário, mas isso exige que o computador tenha maiores recursos de CPU, espaço em disco e memória para permitir executar dois ou mais sistemas operacionais simultâneo. A grande utilidade nesse caso é para desenvolvedores, para terem acesso a diferentes versões do sistema operacional para testar o aplicativo. Um exemplo de software para virtualização de Desktop é o VMware Workstation e VMware Player. Normalmente no ambiente empresarial a virtualização de Desktops é executada nos servidores, ou seja, o sistema operacional é 16

executado no Datacenter, e o usuário final tem umdesktop cliente mais modesto, como um Thinclient ou um Chromebook. A vantagem nesse caso é o ganho de performance dos desktops, que podem ser executados em servidores de alta performance e com maior conectividade, melhora na gerência, centralização, melhora na segurança, conectividade em qualquer lugar, compatibilidade com dispositivos móveis como tables e smartphones, entre outras. Um exemplo de software para fazer virtualização de Desktops é o VMware Horizon View. A virtualização é uma tendência geral dentro das empresas, pois permite a automatização de processos, facilidade de gerenciamento, uso adequado de recursos e a possibilidade de contabilizar exatamente quanto cada usuário ou departamento utiliza dos recursos computacionais. O objetivo principal da virtualização é centralizar tarefas administrativas, conseguir escalabilidade de aplicações, responder mais rápido às necessidades do negócio e facilitar a vida dos gestores de TI e administradores de redes, storages e servidores. A virtualização de servidores junto com capacidade de conexão da Internet é uma peça chave para a adoção da computação em nuvem pelas empresas. Referência: http://www.profissionaisti.com.br/2014/07/o-que-e-virtualizacao/ 17