UNIVERSIDADE DA REGIÃO DA CAMPANHA Centro de Ciências da Economia e Informática Campus Universitário de Sant’Ana do Livramento ANDERSON LUIZ KRÖTZ LAURA TORRES LEONARDO BUSTAMANTE MARCELO MOREL MARIANA DO AMARAL MARIANA GIACOMINNI MATEUS LARRATEA WILLIAN NUNES TORRES SISTEMA OPERACIONAL Sant’Ana do Livramento 2014 ANDERSON LUIZ KRÖTZ LAURA TORRES LEONARDO BUSTAMANTE MARCELO MOREL MARIANA DO AMARAL MARIANA GIACOMINNI MATEUS LARRATEA WILLIAN NUNES TORRES SISTEMA OPERACIONAL Trabalho apresentado para avaliação do rendimento acadêmico na disciplina de Tecnologia da Informação, Curso de Ciências Contábeis da Universidade da Região da campanha, Campus Universitário de Sant’Ana do Livramento. Sant’Ana do Livramento 2014 Sumário INTRODUÇÃO.............................................................................................................5 SISTEMA OPERACIONAL...........................................................................................6 1. O QUE É UM SISTEMA OPERACIONAL?.............................................................6 2. HISTÓRIA DOS SISTEMAS OPERACIONAIS.......................................................6 2.1 2.2 2.3 2.4 A primeira geração(1945 – 1955) – Válvulas.........................................................7 A segunda geração(1955 – 1965) – Transistores e sistemas em lote...................7 A terceira geração(1965 – 1980) – CIs e multiprogramação.................................8 A quarta geração(1980 – presente) – Computadores pessoais............................9 3. TIPOS DE SISTEMAS OPERACIONAIS..............................................................10 3.1 3.2 3.3 3.4 3.5 3.6 3.7 Sistemas Operacionais de Computadores de Grande Porte...............................10 Sistemas Operacionais de Servidores.................................................................10 Sistemas Operacionais de Multiprocessadores...................................................10 Sistemas Operacionais de Computadores Pessoais...........................................11 Sistemas Operacionais de Tempo Real...............................................................11 Sistemas Operacionais Embarcados....................................................................11 Sistemas Operacionais de Cartões Inteligentes...................................................12 4. CONCEITOS DE SISTEMAS OPERACIONAIS....................................................12 4.1 4.2 4.3 4.4 4.5 Processos.............................................................................................................12 Sistemas de arquivos............................................................................................13 Entrada e saída.....................................................................................................13 Segurança............................................................................................................14 Espaços de endereçamento.................................................................................15 5. ESTRUTURA DOS SISTEMAS OPERACIONAIS................................................15 5.1 5.2 5.3 5.4 5.5 5.6 Sistemas monolíticos............................................................................................15 Sistemas em camadas..........................................................................................16 Micronúcleo ou microkernel..................................................................................16 Sistemas Cliente-Servidor....................................................................................17 Máquina virtual.....................................................................................................17 Exonúcleo.............................................................................................................17 CONCLUSÃO.............................................................................................................19 REFERÊNCIAS BIBLIOGRÁFICAS...........................................................................20 Introdução Um sistema computacional moderno consiste em um ou mais processadores, memória principal, discos, impressoras, teclado, mouse, monitor, interfaces de rede e outros dispositivos de entrada e saída. Enfim, é um sistema complexo. Os computadores têm um dispositivo de software denominado sistema operacional, cujo trabalho é fornecer aos programas do usuário um modelo de computador melhor, mais simples e mais limpo e lidar com o gerenciamento de todos os recursos. Na parte inferior vemos o hardware. Ele consiste em chips, placas, discos, teclado, monitor e objetos físicos semelhantes. Na parte superior do hardware está o software. A maioria dos computadores tem dois níveis de operação: modo núcleo e modo usuário. O sistema operacional é a peça mais básica do software e opera em modo núcleo. Tudo o que é executado em modo núcleo constitui parte do sistema operacional, mas alguns programas executados fora dele também são parte dele, ou pelo menos estão associados a ele. Em um ambiente de acirrada competição e de suma exigência, o mercado de sistemas operacionais tornou-se cada vez mais complexo e difícil de se projetar ou aperfeiçoar estes sistemas, pois a partir deste momento o projeto deixou de ser uma ciência exata, para ser mais um projeto de engenharia. É mais difícil estabelecer objetivos claros e alcançá-los. Para projetar um sistema operacional que ofereça a usabilidade que o usuário necessita precisamos ter objetivos, a falta deste torna mais difícil a tomada de decisões. De tal maneira, apresentaremos a história dos sistemas operacionais, salientando os tipos de sistemas operacionais, estrutura e diversos conceitos sobre eles descritos. SISTEMA OPERACIONAL 1. O QUE É UM SISTEMA OPERACIONAL? Sistema Operacional é o software que está entre o hardware, parte física, e os demais aplicativos. Segundo Tanenbaum,o sistema operacional fornece aos programas do usuário um modelo de computador mais simples e lida com o gerenciamento de recursos como processadores, memória principal, discos, impressoras, teclado, mouse, monitor, interfaces de rede e outros dispositivos de entrada e saída. Os usuários estão mais acostumados com sistemas operacionais da família Windows, porém existem outros como, Mac OS X, LINUX e FreeBSD. Em todos esses sistemas os usuários utilizam programas para interagir com o sistema, no caso do Windows, o Windows explorer, o seu gerenciador de tarefas, o qual possui janelas e ícones, mas este é mais um programa que executa no sistema operacional. O sistema operacional é o núcleo que possibilita o acesso dos demais programas ao hardware, executando qualquer instrução que a máquina possa executar. Ele é invisível para o usuário, tudo o que vimos, na verdade, é um programa executando no sistema operacional, uma interface do usuário. Em síntese, o SO opera diretamente no hardware e fornece a base para todos os outros softwares. Os sistemas operacionais são difíceis de se escrever, os sistemas mais conhecidos possuem aproximadamente 5 milhões de linhas de código de programação, em virtude disso, as empresas reaproveitam o que já foi desenvolvido e só atualizam suas versões antigas. 2. HISTÓRIA DOS SISTEMAS OPERACIONAIS Os sistemas operacionais vêm passando por um processo gradual de evolução. Como a história dos sistemas operacionais é bastante ligada à arquitetura de computadores sobre a qual eles são executados, apresentaremos as sucessivas gerações de computadores para entendermos as primeiras versões de sistemas operacionais. Os desenvolvimentos não esperaram que os anteriores terminassem antes de se iniciarem. O primeiro computador digital foi projetado pelo matemático inglês Charles Babbage (1792 – 1871). Embora Babbage tenha empregado a maior parte de sua vida e de sua fortuna para construir sua ‘’máquina analítica’’, ele nunca conseguiu vê-la funcionando de modo apropriado, pois era inteiramente mecânica e a tecnologia de sua época não poderia produzir as rodas, as engrenagens e as correias de alta precisão que eram necessárias. É óbvio que a máquina analítica não possuía um sistema operacional. 2.1 A primeira geração (1945 – 1955) – Válvulas O professor John Atanasoff e seu então aluno de graduação Clifford Berry construíram o primeiro computador digital em funcionamento, ele usava 300 válvulas. Quase ao mesmo tempo, Konrad Zuse, em Berlim, construiu o computador Z3 de relés. Em 1944, o Colossus foi desenvolvido por um grupo em Bletchley Park, Inglaterra, o Mark foi construído por Howard Aiken em Harvard e o ENIAC foi construído por Willian Mauchley e seu aluno de graduação J. Presper Eckert. Alguns eram binários, alguns usavam válvulas, alguns eram programáveis, mas todos eram muito primitivos e levavam segundos para executar até o cálculo mais simples. Naquela época, um mesmo grupo de pessoas projetava, construía, programava, operava e realizava a manutenção de cada máquina. Toda programação era feita em código de máquina absoluto e muitas vezes conectando plugs em painéis para controlar as funções básicas da máquina. Não havia linguagens de programação, os sistemas operacionais também não haviam sido inventados. O modo normal de programação era o seguinte: o programador reservava antecipadamente tempo de máquina em uma planilha, ia para a sala da máquina, inseria seu painel de programação no computador e passava algumas horas torcendo para que nenhuma das 20 mil válvulas queimasse durante a execução. Praticamente todos os problemas eram cálculos numéricos diretos, como determinar tabelas de senos, cossenos e logaritmos. 2.2 A segunda geração (1955 – 1965) – Transistores e sistemas em lote (batch) A introdução do transistor em meados da década de 1950 mudou o quadro radicalmente. Os computadores tornaram-se suficientemente confiáveis para que pudessem ser fabricados e comercializados com a expectativa de que continuariam a funcionar por tempo suficiente para executar algum trabalho útil. Pela primeira vez, havia uma clara separação entre projetistas, fabricantes, programadores e técnicos da manutenção. Devido ao alto custo dos computadores, nesta época, encontrou-se uma solução com o objetivo de aumentar o tempo da máquina. Esta solução designada de sistema batch (lote), que se baseava em coletar na recepção de um conjunto de jobs e fazer a leitura dos mesmos para uma fita magnética empregando um computador pequeno e relativamente barato, tal como o IBM 1401, que era muito bom na leitura de cartões, na cópia em fita e na impressão de resultados. Os computadores da segunda geração (computadores de grande porte) eram usados maciçamente na realização de cálculos científicos e de engenharia, tal como a obtenção da solução de equações diferenciais parciais. A programação era feita em linguagem FORTRAN ou em linguagem de montagem. Os sistemas operacionais típicos da época eram o FMS (Fortran Monitor System) e o IBSYS, ambos os sistemas operacionais desenvolvidos pela IBM para rodar no 7094. Essas máquinas ficavam isoladas em salas especiais com ar-condicionado, operadas por equipes profissionais. Somente grandes corporações, agências governamentais ou universidades podiam pagar vários milhões de dólares para tê-las. 2.3 A terceira geração (1965 – 1980) – CIs e multiprogramação No início da década de 1960, a maioria dos fabricantes de computador oferecia duas linhas de produtos distintas e totalmente incompatíveis. De um lado havia os computadores científicos de grande escala e orientados a palavras, como o 7094, usados para cálculos numéricos na ciência e na engenharia. De outro, existiam os computadores comerciais orientados a caracteres, como o 1401, amplamente usados por bancos e companhias de seguros para ordenação e impressão em fitas. Desenvolver e manter duas linhas de produtos completamente diferentes demandava grande custo para os fabricantes. Além disso, muitos dos clientes precisavam inicialmente de uma pequena máquina, mas depois expandiam seus negócios e, com isso, passavam a demandar máquinas maiores que pudessem executar todos os seus programas antigos, porém mais rapidamente. 2.4 A quarta geração (1980 – presente) – Computadores pessoais Com o desenvolvimento da integração de circuitos em grande escala (LSI), apareceram chips com milhares de transistores encapsulados em um centímetro quadrado de silício, nascendo daí a ideia do computador pessoal. Atualmente, os mais poderosos computadores pessoais são denominados estações de trabalho (wokstations). Tais máquinas são usadas nas mais diferentes atividades e usualmente estão conectadas a uma rede pública ou privada, que permite a troca de informações entre todas as máquinas ligadas a ela. A grande disponibilidade de poder computacional levou ao crescimento de uma indústria voltada para a produção de software para estas máquinas. A maioria destes softwares é "ameno ao usuário" (user-friends), significando que eles são voltados para pessoas que não tem nenhum conhecimento de computadores, e mais que isto, não tem nenhuma vontade de aprender nada sobre este assunto. Um desenvolvimento interessante que começou a tomar corpo em meados dos anos 80 foi o dos sistemas operacionais para redes e o dos sistemas operacionais distribuídos.Em uma rede de computadores, os usuários estão conscientes da existência de um conjunto de máquinas conectadas à rede, podendo, portanto ligar-se a máquinas remotas e solicitar serviços das mesmas. Cada uma destas máquinas roda seu próprio sistema operacional e tem seu próprio usuário. Os sistemas operacionais de rede não diferem fundamentalmente daqueles usados em máquinas monoprocessadoras. Obviamente, eles precisam de uma interface controladora de rede e de um software específico para gerenciar tal interface, além de programas que permitam a ligação de usuários a máquinas remotas e seu acesso a arquivos também remotos. Tais características não chegam a alterar a estrutura básica do sistema operacional usado para máquinas com um único processador. Já os sistemas operacionais distribuídos precisam de mais do que a simples adição de poucas linhas de código a um sistema usado em máquinas monoprocessadoras, pois os sistemas ditos distribuídos diferem dos centralizados em pontos bastantes críticos. Por exemplo, os sistemas operacionais distribuídos permitem que programas rodem em vários processadores ao mesmo tempo, necessitando, portanto de algoritmos de escalonamento de processador bem mais elaborados, de forma a aperfeiçoar o grau de paralelismo disponível no sistema. 3. TIPOS DE SISTEMAS OPERACIONAIS 3.1 Sistemas Operacionais de Computadores de Grande Porte Utilizados em sofisticados servidores Web, como servidores para sites de comércio eletrônico em larga escala e ainda, escala e ainda, Como servidores para transações entre empresas (business-to-business) Os SO para computadores de grande porte são sobretudo orientados para o processamento simultâneo de muitos jobs (grande quantidade de E/S) Oferecem normalmente três tipos de serviços: • Em lote (batch): Um sistema em lote processa Jobs de rotina sem a presença interativa do usuário. Interativa do usuário; • Processamento de transações: administram grandes quantidades de pequenas requisições. Ex.: processamento de verificações em um banco; • Tempo compartilhado: Permite que múltiplos usuários remotos executem seus Jobs simultaneamente no computador, como na realização de consultas a um grande banco de dados. 3.2 Sistemas Operacionais de Servidores Servem múltiplos usuários de uma vez em uma rede e permite-lhes compartilhar recursos de hardware e software. Servidores podem fornecer serviços de impressão, serviços de arquivo ou serviços de Web. 3.3 Sistemas Operacionais de Multiprocessadores Multiprocessamento é a capacidade de um sistema operacional executar simultaneamente dois ou mais processos. Pressupõe a existência de dois ou mais processadores. Difere da multitarefa, pois esta simula a simultaneidade, utilizando-se de vários recursos, sendo o principal o compartilhamento de tempo de uso do processador entre vários processos. 3.4 Sistemas Operacionais de Computadores Pessoais Sistemas Operacionais de Computadores Pessoais, Seu trabalho é fornecer uma boa interface para um único usuário. São amplamente usados para processadores de texto, São amplamente usados para processadores de texto, planilhas eletrônicas e acesso à internet. Alguns exemplos mais comuns de SO para desktop: • Windows: 95/98/ME/2000/XP/Vista/7; • Linux: Debian, Suse, Mandriva, Slackware, Red Hat. 3.5 Sistemas Operacionais de Tempo Real Um sistema operacional (SO) é responsável por gerenciar os recursos de hardware e hospedar os aplicativos que são executados no computador. Um sistema operacional de tempo real (RTOS) também executa essas tarefas, mas é projetado especialmente para rodar aplicações com extrema precisão e alto grau de confiabilidade. Isso pode ser especialmente importante para sistemas de medição e controle. Os sistemas operacionais de tempo real foram projetados para trabalhar com resposta a eventos e com sistemas de controle em malha fechada. Um exemplo de aplicação com resposta a eventos, na qual é imprescindível a utilização de RTOS é um sistema de airbag automotivo, este sistema necessita de precisão e confiabilidade, pois a resposta a um estímulo deve ser feita em um determinado espaço de tempo. Já um exemplo de aplicação de controle em malha fechada em que o RTOS é necessário, é para o controle de velocidade em automóveis, pois também é necessário precisão e confiabilidade. Ambos os sistemas exigem a realização de uma operação dentro de um tempo determinado. Esse tipo de desempenho é chamado de determinístico. 3.6 Sistemas Operacionais Embarcados Um sistema embarcado (ou sistema embutido) é um sistema microprocessado no qual o computador é completamente encapsulado ou dedicado ao dispositivo ou sistema que ele controla. Diferente de computadores de propósito geral, como o computador pessoal, um sistema embarcado realiza um conjunto de tarefas predefinidas, geralmente com requisitos específicos. Já que o sistema é dedicado a tarefas específicas, através de engenharia pode-se otimizar o projeto reduzindo tamanho, recursos computacionais e custo do produto. Sistemas como PDAs são geralmente considerados sistemas embarcados pela natureza de seu hardware, apesar de serem muito mais flexíveis em termos de software. Fisicamente, os sistemas embarcados passam desde MP3 players a semáforos. 3.7 Sistemas Operacionais de Cartões Inteligentes Os menores sistemas operacionais são executados em cartões inteligentes – dispositivos do tamanho de um cartão de crédito que contém um chip de CPU.Possuem restrições severas de consumo de energia e de memória. Alguns deles podem realizar apenas uma única função, como pagamentos eletrônicos. Outros podem tratar múltiplas funções no mesmo cartão inteligente. 4. CONCEITOS DE SISTEMAS OPERACIONAIS 4.1Processos Um sistema operacional não executa somente os programas que podemos ver. Imagine que os aplicativos que você roda reúnem diversas instruções e comandos, porém, são os processos que efetivamente executam esses comandos. Isso significa que um único aplicativo pode ter vários processos relacionados a ele. Por exemplo, o navegador Google Chrome, que executa uma nova tarefa a cada aba aberta. Essa medida permite que cada aba seja gerenciada individualmente e, mesmo que uma trave, as outras continuam trabalhando normalmente. Simplificando, os processos representam tarefas em execução, mas nem todas têm relação direta com algum aplicativo. Muitas delas são executadas em plano de fundo e mantêm o sistema trabalhando - gerenciando redes, memória, disco, checagem antivírus, etc. Logo, podemos definir processos como softwares que executam alguma ação e que podem ser controlados de alguma maneira, seja pelo usuário, pelo aplicativo correspondente ou pelo sistema operacional. 4.2Sistemas de arquivos Os sistemas de arquivos estruturam a informação guardada em uma unidade de armazenamento, podendo ser representada de forma textual ou graficamente utilizando um gerenciador de arquivos. A maioria dos sistemas operacionais possuem seu próprio sistema de arquivos. O habitual é utilizar dispositivos de armazenamento de dados que permitem o acesso aos dados como uma corrente (cadeia) de blocos de um mesmo tamanho, às vezes chamados setores, usualmente de 512 bytes de largura. O software do sistema de arquivos é responsável pela organização destes setores em arquivos e diretórios e mantém um registo de que setores pertencem a que arquivos e quais não têm sido utilizados. Na prática, um sistema de arquivos também pode ser utilizado para acessar dados gerados dinamicamente, como os recebidos através de uma conexão de rede (sem a intervenção de um dispositivo de armazenamento). Em geral os sistemas de arquivos proveem métodos essenciais para criar, mover, renomear e eliminar tanto arquivos como diretórios. Outros permitem a criação de enlaces (links) adicionais a um diretório ou arquivo (enlace duro ou hard links em Unix). A estrutura de diretórios costuma ser hierárquica, ramificada ou "em árvore", ainda que pode ser plana. Em alguns sistemas de arquivos os nomes de arquivos são estruturados, com sintaxes especiais para extensão de arquivos e números de versão. Em outros, os nomes de arquivos são simplesmente correntes de texto (ou strings de texto, em inglês) e as metades de cada arquivo são alojados separadamente. 4.3Entrada e saída Entrada/saída, é um termo utilizado, indicando entrada (inserção) de dados por meio de algum código ou programa, para algum outro programa ou hardware, bem como a sua saída (obtenção de dados) ou retorno de dados, como resultado de alguma operação de algum programa, consequentemente resultado de alguma entrada. Periféricos de Entrada • Teclado; • Mouse; • Scanner; Periféricos de Saída • Monitor; • Impressora; • Caixas de Som; Periféricos Entrada e Saída • Monitor TouchScreen; • Pendrive; • Joystick; 4.4Segurança A segurança informática é responsável pela proteção da integridade e da privacidade das informações armazenadas num sistema informático. De qualquer modo, não existe nenhuma técnica que permita assegurar a inviolabilidade de um sistema. Um sistema informático pode ser protegido do ponto de vista lógico (com o desenvolvimento de software) ou físico (em termos de manutenção eléctrica, por exemplo). Além do mais, as ameaças podem vir de programas maliciosos que se instalam no computador do utilizador (como um vírus) ou chegar por via remota (infratores que se ligam à Internet e entram em diferentes sistemas). Entre as ferramentas mais comuns de segurança informática, encontram-se os programas antivírus, firewall, a encriptação da informação e o uso de senhas de acesso (passwords). Um sistema seguro deve ser íntegro (com informações podendo ser modificadas unicamente por pessoas autorizadas), confidencial (os dados têm de ser legíveis apenas para os utilizadores autorizados), irrefutável (o utilizador não tem forma de negar as ações que tenha realizado) e ter boa disponibilidade (deve ser estável). No entanto, como na maioria dos âmbitos de segurança, o essencial continua a ser a capacitação (isto é, a formação) dos utilizadores. Uma pessoa que saiba como se proteger das ameaças, saberá usar os seus recursos da melhor forma possível para evitar ataques ou acidentes. Noutros termos, pode-se dizer que a segurança informática tem como objetivo assegurar que os recursos de um sistema de informação possam ser usados conforme uma organização ou um utilizador o tenha decidido, sem interferências. 4.5Espaços de endereçamento Em informática, um espaço de endereçamento define uma faixa de endereços discretos, cada um dos quais pode corresponder a um registrador físico ou virtual, um nodo de rede, dispositivo periférico, setor de disco ou outra entidade lógica ou física. 5. Estrutura dos Sistemas Operacionais 5.1 Sistemas monolíticos Também conhecida como estrutura simples, esta é a estrutura dos primeiros SO’s. Consistida, basicamente, por um programa dividido em sub-rotinas, na estrutura monolítica é permitido a qualquer uma dessas sub-rotinas em qualquer parte do programa chamar outra(s) sub-rotina(s). A construção do programa final é dada com base nos módulos compilados separadamente, unidos através de um linker. A boa definição de parâmetros de ligação entre as diferentes rotinas existentes aumenta e muito o desempenho, porém o sistema pode parar devido a algum erro ocasionado por uma dessas rotinas. A exemplo temos o próprio UNIX, o MS DOS, o FreeBSD, dentre outros. 5.2Sistemas em camadas Devido ao crescimento das necessidades dos utilizadores e o aperfeiçoamento dos sistemas, foi-se necessário a modularização da organização do sw do SO. Na abordagem em camadas, o SO é particionado em níveis, onde o nível mais “baixo” é o hw, e o nível mais “alto” é a interface com o usuário. A principal vantagem dessa estrutura é justamente a modularização, facilitando sua alteração e depuração de cada camada, além de criar uma hierarquia de níveis de acesso que permite proteger as camadas mais internas. As camadas são selecionadas de tal modo que cada uma delas opere diretamente com a camada seguinte de nível mais baixo. Foi originado na Holanda por Edsger Dijkstra, que utilizou o algoritmo de busca de menor caminho, também de sua própria autoria, para percorrer dentre as várias camadas, as que atenderão as solicitações de “cima”, de maneira mais eficiente. Uma desvantagem desta estrutura é o tempo de resposta ao usuário, pois numa requisição sua, uma camada irá se comunicar com a outra diretamente seguinte, e assim por diante, possibilitando a modificação de parâmetros a cada camada, necessidade de dados e ainda o acréscimo de overhead à chamada do sistema, levando, contudo, ao consumo maior de tempo do que nos SO’s não estruturados em camadas. Por sua vez, tal estrutura tem uma vantagem maior do ponto de vista tanto do projeto quanto da implementação, pois a impossibilidade de comunicação direta das aplicações de cima com as de baixo, leva a um controle maior do SO sobre o hw. A exemplo temos o Windows NT, o THE e o MULTICS. 5.3 Micronúcleoou microkernel É uma arquitetura de núcleo (kernel) de um sistema operativo cujas funcionalidades são quase todas executadas fora do núcleo, em oposição a um núcleo monolítico. Os processos se comunicam com um núcleo mínimo, usando o mínimo possível o "espaço do sistema" (kernel space). Neste local os aplicativos tem acesso a todas as instruções e a todo o hardware e deixando o máximo de recursos rodando no "espaço do usuário" (user-space) em que osoftware tem algumas restrições, não podendo acessar algumas hardwares, nem tem acesso a todas as instruções). 5.4 Sistemas Cliente-Servidor Sistemas Cliente-Servidor são modelos de computação que distinguem dois tipos básicos de equipamentos computacionais: servidores e clientes, sendo interligados entre si geralmente utilizando-se uma rede de computadores. Neste modelo, geralmente os servidores agregam as funções mais importantes do sistema, deixando aos clientes apenas o processamento de aplicações mais básicas. As principais características deste tipo de sistema são: • Elevar a camada onde são implementadas as funções normalmente efetuadas pelo sistema operacional • Reduzir as funções do sistema operacional • Tornar menor e de mais fácil a manutenção cada parte do sistema operacional 5.5 Máquina Virtual Uma máquina virtual é uma cópia via software que busca simular uma máquina real. Uma máquina virtual (Virtual Machine – VM) pode ser definida como “uma duplicata eficiente e isolada de uma máquina real”. A IBM define uma máquina virtual como uma cópia isolada de um sistema físico, e esta cópia está totalmente protegida. Ao invés de ser uma máquina real, isto é, um computador real, feito de hardware e executando um sistema operacional específico, uma máquina virtual é um computador fictício criado por um programa de simulação. Sua memória, processador e outros recursos são virtualizados. A virtualização é a interposição do software (máquina virtual) em várias camadas do sistema. É uma forma de dividir os recursos de um computador em múltiplos ambientes de execução. 5.6 Exonúcleo É um paradigma de implementação em que existe em um núcleo simples que faz gerência de recursos do sistema e um conjunto de bibliotecas que implementam a abstração de um sistema operacional. O aplicativo pode utilizar diretamente os recursos dos dispositivos do sistema ou pode utilizar bibliotecas de software e são capazes de compartilhar o mesmo hardware simultaneamente, similarmente a uma máquina virtual. A diferença é que em um sistema exonúcleo o hardware é alocado previamente, não podendo ocorrer o acesso indevido de outro sistema. Conclusão Através deste trabalho podemos ter uma noção das estruturas básicas que o compõem e suas subdivisões, vemos o quão necessário se tornou em nosso mundo os demais softwares, tendo aplicabilidade desde computadores Científicos, até servidores e os demais ao uso cotidiano sem os S.O não seria possível demandar os serviços hoje tão comuns as pessoas como o uso da internet ou mesmo celulares, gradualmente os S.O se aperfeiçoam acompanhando o desenvolvimento das necessidades a eles impostas. Assim sendo compreendemos que a os softwares tem um papel fundamental no gerenciamento do Hardware e seus periféricos, e também o quão adaptável tornou-se seu uso nas mais variadas necessidades do mundo atual, hoje temos de a nosso dispor inúmeros tipos de softwares, cabendo apenas a nos usufruímos deles de maneira mais produtiva rápida para o melhor uso dos mesmos. Referências Bibliográficas Tanenbaum. Andrew S, Sistemas Operacionais Modernos 3º edição, 2010 Pearson.