Sistemas de Informação Sistemas Operacionais – 4º Período Introdução SUMÁRIO 1. CAPÍTULO 1 - VISÃO GERAL: 1.1 Introdução; 1.2 Histórico; 1.3 Funções Básicas; 1.4 Chamadas ao Sistema; 1.5 Tipos de Sistemas Operacionais; 1.6 Estrutura de Sistemas Operacionais. Capítulo 1 - Visão Geral 1.1 Introdução Definição de um Sistema Operacional: é um conjunto de rotinas executado pelo processador. Função principal: controlar o funcionamento de um computador, gerenciando a utilização e o compartilhamento dos seus diversos recursos, como processadores, memórias e dispositivos de entrada e saída. Objetivo: funcionar como uma interface entre o usuário e o computador, tornando sua utilização mais simples, rápida e segura. Outras designações: monitor, executivo, supervisor ou controlador. Capítulo 1 - Visão Geral 1.1 Introdução Outro Conceito: Um Sistema Operacional é um programa ou conjunto de programas que visam o gerenciamento de hardware e serviços de um sistema computacional. Ele controla processos, programas e sua utilização de hardware. Elementos: Unidade Central de Processamento (CPU); Memória Principal; Periféricos. Capítulo 1 - Visão Geral 1.2 Histórico / Evolução Histórica De 1945 aos dias atuais: Primeira Fase – 1945 à 1955 Computadores baseados em válvulas; Ausência de sistema operacional; Programação feita por painéis; Sem uso de linguagens de programação; Surgimento do: ENIAC (militar) e UNIVAC I (comercial). Capítulo 1 - Visão Geral 1.2 Histórico / Evolução Histórica De 1945 aos dias atuais: Segunda Fase – 1956 à 1965 Criação do transistor; Memórias magnéticas; Surgimento das primeiras Linguagens de Programação (Assembly e Fortran); Processamento batch (em lote); Computadores 7094 da IBM. Capítulo 1 - Visão Geral 1.2 Histórico / Evolução Histórica De 1945 aos dias atuais: Terceira Fase – 1966 à 1980 Diminuição do tamanho e do custo; Circuitos integrados (CIs) e microprocessadores; Evolução dos processadores de E/S; Compartilhamento da memória e do processador; Surgimento da multiprogramação; Substituição das fitas por discos magnéticos; Em 1969 surge o UNIX. Capítulo 1 - Visão Geral 1.2 Histórico / Evolução Histórica De 1945 aos dias atuais: Quarta Fase – 1981 à 1990 Miniaturização dos computadores; Surgimento dos microcomputadores pessoais (PCs); Surgimento do D.O.S. (Disk Operating System); Sistemas multiusuário e multitarefa - execução concorrente; Equipamentos com múltiplos processadores; Difusão das redes de computadores; Surgimento dos Sistemas Operacionais de rede. Capítulo 1 - Visão Geral 1.2 Histórico / Evolução Histórica De 1945 aos dias atuais: Quinta Fase – 1991 aos dias atuais Grandes avanços de hardware (microeletrônica), software e telecomunicações; Processamento distribuído em sistemas operacionais; Novas interfaces homem/máquina; Linguagens naturais, sons e imagens; Sistemas multimídia, bancos de dados distribuídos e inteligência artificial; Segurança da Informação. Capítulo 1 - Visão Geral 1.3 Funções Básicas Ligando o computador O que acontece antes de iniciar o Sistema Operacional ? A primeira ação é a alimentação elétrica, que é fornecida pela fonte de alimentação. Essa fonte fornece energia elétrica para todos os componentes do computador. Capítulo 1 - Visão Geral 1.3 Funções Básicas Ligando o computador No segundo passo, o processador procura a BIOS (Basic Input / Output System) que possui as configurações de inicialização do computador. Capítulo 1 - Visão Geral 1.3 Funções Básicas Ligando o computador O Passo seguinte a BIOS executa o POST (Power-On Self Test) que realiza o teste de funcionamento de todos os dispositivos instalados. Se algo errado acontecer, alertas sonoros (BIPS) são emitidos. Depois compara os resultados com os dados armazenados na CMOS (uma pequena área de memória volátil, alimentada por uma bateria, que é usada para gravar as configurações do SETUP da placa mãe). Capítulo 1 - Visão Geral 1.3 Funções Básicas Ligando o computador A BIOS procura os arquivos do SO na sequência de BOOT definida no SETUP. Depois de encontrar os arquivos do SO, então o programa de BOOT irá carregar o Kernel para a memória principal. A partir desse momento o SO assume o controle dos componentes do computador. Capítulo 1 - Visão Geral 1.3 Funções Básicas Ligando o computador Finalizando, o SO carrega as informações de configuração e executa os programas de inicialização. Capítulo 1 - Visão Geral 1.3 Funções Básicas Ligando o computador Capítulo 1 - Visão Geral 1.3 Funções Básicas Um sistema operacional possui inúmeras funções, que podem ser resumidas em duas funções básicas: Facilidade de acesso aos recursos do sistema; Compartilhamento de recursos de forma organizada e protegida. Podemos dizer então, que o sistema operacional gerencia o funcionamento da máquina, ao nível de hardware e de software, ou seja, ele controla todas as operações que podemos fazer. Capítulo 1 - Visão Geral 1.3 Funções Básicas Capítulo 1 - Visão Geral Capítulo 1 - Visão Geral 1.3.1 Responsabilidades de um Sistema Operacional Gerenciamento de processos: vários programas rodando ao mesmo tempo. Gerenciamento de memória: compartilhamento e gestão de sua utilização. Qual programa utiliza qual pedaço da memória; Gerenciamento de arquivos: armazenamento e recuperação de informações em dispositivos secundários (discos rígido, disquetes, pendrive, etc); Gerenciamento de Entrada/Saída: controle de dispositivos periféricos como placas de vídeo, placas de rede, mouses, teclados, etc; Sistema de Proteção: controle de acesso e utilização dos recursos do sistema. Capítulo 1 - Visão Geral 1.4 Rotinas do Sistema Operacional e System Calls As rotinas do sistema operacional compõem o núcleo do sistema, oferecendo serviços aos usuários e suas aplicações. Todas as funções do núcleo são implementadas por rotinas do sistema que necessariamente possuem em seu código instruções privilegiadas. System Call: realiza o controle de execução de rotinas do sistema operacional. Inicialmente, o sistema operacional verificará se a aplicação possui privilégios necessários para executar a rotina desejada. Capítulo 1 - Visão Geral 1.4 Rotinas do Sistema Operacional e System Calls Em caso negativo, o SO realiza um mecanismo de proteção por software, no qual o sistema operacional garante que as aplicações só poderão executar rotinas do sistema que estão previamente autorizadas. Uma aplicação sempre deve executar com o processador em modo usuário. Caso uma aplicação tente executar diretamente uma instrução privilegiada sem ser por intermédio de uma chamada à rotina do sistema, um mecanismo de proteção por hardware garantirá a segurança do sistema. Capítulo 1 - Visão Geral 1.4 Rotinas do Sistema Operacional e System Calls Capítulo 1 - Visão Geral 1.4 Chamada a Rotinas do Sistema Operacional Capítulo 1 - Visão Geral 1.4 Chamada a Rotinas do Sistema Operacional O termo system call é tipicamente utilizado em sistemas Unix, porém em outros sistemas o mesmo conceito é apresentado com diferentes nomes: System Services, no OpenVMS (Open Virtual Memory System ou apenas VMS) é o nome de uma tecnologia top de linha entre usuário e sistema. Application Program Interface (API) (ou Interface de Programação de Aplicativos), no MS Windows - é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por aplicativos que não pretendem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços. Capítulo 1 - Visão Geral 1.4 Chamada a Rotinas do Sistema Operacional Cada sistema operacional possui seu próprio conjunto de rotinas, com nomes, parâmetros e formas de ativação específicos. Uma aplicação desenvolvida utilizando serviços de um determinado SO não pode ser portada diretamente para um outro sistema, exigindo algumas correções no código-fonte. Capítulo 1 - Visão Geral 1.4 Chamada a Rotinas do Sistema Operacional System Calls – Tipos: Controle de processos (end, abort, load, execute, create, terminate, wait event, signal event, set attributes); Manipulação de arquivos (create, delete, open, close, read, write, set attributes) Manipulação de dispositivos (request, release, read, write, logically attach or detach); Manutenção de informação (get and set time or date, get and set process or file); Comunicação (create and delete communication connection, send and receive messages). Capítulo 1 - Visão Geral 1.4 Chamada a Rotinas do Sistema Operacional Capítulo 1 - Visão Geral 1.4 Chamada a Rotinas do Sistema Operacional Capítulo 1 - Visão Geral 1.5 Tipos de Sistemas Operacionais Diagrama com as principais classificações: Capítulo 1 - Visão Geral 1.5 Tipos de Sistemas Operacionais Quanto ao número de usuários que utilizam o sistema: Monousuário – apenas um e só um usuário utiliza o sistema. Ex.: DOS, Window95 e Windows NT. Multiusuário – permite o uso da máquina por vários usuários ao mesmo tempo, ou seja, cada usuário pode executar um ou mais programas simultaneamente. Ex.: Unix e o OpenVMS. Capítulo 1 - Visão Geral 1.5 Tipos de Sistemas Operacionais Capítulo 1 - Visão Geral 1.5.1 Sistemas Monoprogramáveis/Monotarefa Permitem que todos os recursos do sistema fiquem exclusivamente dedicados a uma única tarefa. UCP Memória Principal programa/ tarefa Dispositivos de E/ S Capítulo 1 - Visão Geral 1.5.2 Sistemas Multiprogramáveis/Multitarefa Permitem que os recursos computacionais sejam compartilhados entre os diversos usuários e aplicações do sistema. Capítulo 1 - Visão Geral 1.5.2 Sistemas Multiprogramáveis/Multitarefa Podemos classificar os sistemas multiprogramáveis a partir do número de usuários que interagem com o sistema operacional. Capítulo 1 - Visão Geral 1.5.2 Sistemas Multiprogramáveis/Multitarefa Os sistemas multitarefa podem ser classificados pela forma com que suas aplicações são gerenciadas. Capítulo 1 - Visão Geral 1.5.2 Sistemas Multiprogramáveis/Multitarefa Tipos de Sistemas Multiprogramáveis/Multitarefa: Sistemas Batch (Lote): não exigem a interação do usuário com a aplicação. Todas as entradas e saídas de dados da aplicação são implementadas por algum tipo de memória secundária; Exemplos de aplicações: programas envolvendo cálculos numéricos, compilações, ordenações, backups, etc; Apresentam melhor utilização do processador. Porém, podem oferecer tempos de resposta longos. Capítulo 1 - Visão Geral 1.5.2 Sistemas Multiprogramáveis/Multitarefa Sistemas Batch (Lote): (a) (b) (c) Job é conjunto de operações que se executam simultaneamente. Capítulo 1 - Visão Geral 1.5.2 Sistemas Multiprogramáveis/Multitarefa Tipos de Sistemas Multiprogramáveis/Multitarefa: Sistemas de Tempo Compartilhado (Sistemas On-line): permitem que diversos programas sejam executados a partir da divisão do tempo do processador em pequenos intervalos (time-slice); Cria para cada usuário um ambiente de trabalho próprio; Permitem a interação dos usuários com o sistema através de terminais, ou seja, permitem ao usuário comunicar-se diretamente com o sistema operacional através de comandos. Capítulo 1 - Visão Geral 1.5.2 Sistemas Multiprogramáveis/Multitarefa Tipos de Sistemas Multiprogramáveis/Multitarefa: Sistemas de Tempo Real: não existe a divisão de tempo implementada nos sistemas de tempo compartilhado. Os tempos de processamento devem ser limitados; Um programa utiliza o processador o tempo que for necessário ou até que apareça outro mais prioritário; Esses sistemas estão presentes em aplicações de controle de processos ou em qualquer aplicação onde o tempo de processamento é fator fundamental. Capítulo 1 - Visão Geral 1.5.3 Sistemas com Múltiplos Processadores Caracterizam-se por possuir duas ou mais UCPs interligadas e trabalhando em conjunto. Escalabilidade: é a capacidade de ampliar o poder computacional do sistema apenas adicionando novos processadores. Disponibilidade: é a capacidade de manter o sistema em operação mesmo em caso de falhas. Balanceamento de carga: é a possibilidade de distribuir o processamento entre os diversos processadores da configuração a partir da carga de trabalho de cada processador. Capítulo 1 - Visão Geral 1.5.3 Sistemas com Múltiplos Processadores Um fator-chave no desenvolvimento de sistemas operacionais com múltiplos processadores é a forma de comunicação entre as UCPs e o grau de compartilhamento da memória e dos dispositivos de E/S. Capítulo 1 - Visão Geral 1.5.3.1 Sistemas Fortemente Acoplados Neste tipo de sistema, existem vários processadores compartilhando uma única memória física e dispositivos de entrada/saída sendo gerenciados por apenas um sistema operacional (multiprocessadores). Capítulo 1 - Visão Geral 1.5.3.1 Sistemas Fortemente Acoplados Os sistemas fortemente acoplados podem ser divididos em: SMP (Symmetric Multiprocessors): caracterizam-se pelo tempo uniforme de acesso à memória principal pelos diversos processadores; NUMA (Non-Uniform Memory Access): o tempo de acesso à memória pelos processadores varia em função da sua localização física. Nos sistemas SMP e NUMA todos os processadores têm as mesmas funções. Capítulo 1 - Visão Geral 1.5.3.2 Sistemas Fracamente Acoplados Caracterizam-se por possuir dois ou mais sistemas computacionais conectados através de linhas de comunicação. Cada sistema funciona de forma independente (multicomputadores). Capítulo 1 - Visão Geral 1.5.3.2 Sistemas Fracamente Acoplados Modelo Centralizado x Redes de Computadores. Com base no grau de integração dos hosts da rede, podemos dividir os Sistemas Fracamente Acoplados em: Sistemas Operacionais de Rede (SOR): permitem que um host compartilhe seus recursos com os demais hosts da rede. Exemplo: redes locais; Sistemas Distribuídos: o sistema operacional esconde os detalhes dos hosts individuais e passa a tratá-los como um conjunto único, como se fosse um sistema fortemente acoplado. Exemplo: clusters. Capítulo 1 - Visão Geral 1.6 Estrutura de Sistemas Operacionais Criar um sistema tão grande e complexo somente dividindo-o em pequenas partes; Cada parte deve ser uma porção bem delineada do sistema, com entradas, saídas e funções, cuidadosamente definidas; Logicamente, nem todos os sistemas têm a mesma estrutura, ou seja, não apresentam a mesma forma de ligação entre as partes. Capítulo 1 - Visão Geral 1.6 Estrutura de Sistemas Operacionais O sistema operacional é formado por um conjunto de rotinas que oferece serviços aos usuários e às suas aplicações, denominado núcleo do sistema ou kernel. Há três maneiras distintas dos usuários se comunicarem com o kernel do sistema operacional: Aplicações; Utilitários; Linguagem de comandos. A estrutura do núcleo pode variar conforme a concepção do projeto. Capítulo 1 - Visão Geral Capítulo 1 - Visão Geral 1.6.1 Funções do Núcleo Tratamento de interrupções e exceções; Criação e eliminação de processos e threads; Sincronização e comunicação entre processos e threads; Escalonamento e controle dos processos e threads; Gerência de memória; Gerência do sistema de arquivos; Gerência de dispositivos de E/S; Suporte a redes locais e distribuídas; Contabilização do uso do sistema; Auditoria e segurança do sistema. Capítulo 1 - Visão Geral 1.6.1 Funções do Núcleo Permitir que vários programas compartilhem o processador, memória, disco e dispositivos de E/S; Garantir a confiabilidade na execução concorrente de todos os programas e nos dados dos usuários, além da garantia da integridade do próprio sistema operacional. Como decorrência da complexidade de um sistema multiprogramável, é natural que surjam problemas relativos à segurança no inter-relacionamento dos diversos subsistemas existentes. Para solucionar esses problemas, o SO deve implementar mecanismos de proteção que controlem o acesso concorrente aos recursos do sistema. Capítulo 1 - Visão Geral 1.6.2 Modo de Acesso Preocupação: implementação de mecanismos de proteção ao núcleo do sistema e de acesso aos seus serviços. As implementações de segurança de um SO utilizam um recurso presente no hardware dos processadores, denominado modo de acesso. São eles: Modo usuário: uma aplicação só pode executar um conjunto reduzido de instruções, conhecido como instruções não privilegiadas; Modo kernel: uma aplicação pode ter acesso ao conjunto total de instruções do processador. Capítulo 1 - Visão Geral 1.6.2 Modo de Acesso O modo de acesso é determinado por um conjunto de bits, localizado no registrador de status do processador, que indica o modo de acesso corrente. As instruções privilegiadas não devem ser utilizadas de maneira indiscriminada pelas aplicações. Essas instruções só devem ser executadas pelo SO ou sob sua supervisão, impedindo, assim, a ocorrência de problemas de segurança e integridade do sistema. As instruções privilegiadas somente podem ser executadas em modo kernel. Capítulo 1 - Visão Geral 1.6.3 Linguagem de Comandos Permite que o usuário se comunique de uma forma simples com o SO, capacitando-o a executar diversas tarefas específicas do sistema, criando uma interface direta com o SO. As linguagens de comandos são poderosas a ponto de oferecer a possibilidade de criar programas com estruturas de decisão e iteração. Arquivos de comandos ou shell scripts: sequência de comandos armazenados em um arquivo texto. Vantagem: possibilita a automatização de diversas tarefas ligadas à gerência do sistema. Capítulo 1 - Visão Geral 1.6.3 Linguagem de Comandos Exemplos: DCL (Digital Command Language) utilizada no OpenVMS; JCL (Job Control Language) no MVS e os comandos do shell disponíveis nos diversos sistemas Unix. Capítulo 1 - Visão Geral 1.6.3 Linguagem de Comandos Capítulo 1 - Visão Geral 1.6.3 Ativação/Desativação do Sistema Ativação do Sistema ou Boot: procedimento que carrega os componentes do sistema operacional para a memória principal toda vez que o computador é ligado. O procedimento de ativação se inicia com a execução de um programa chamado boot loader, que se localiza em um endereço fixo de uma memória ROM da máquina. Esse programa chama a execução de outro programa conhecido como POST (Power-On Self Test), que identifica possíveis problemas de hardware no equipamento. Capítulo 1 - Visão Geral 1.6.4 Ativação/Desativação do Sistema O procedimento de ativação verifica se há no sistema computacional algum dispositivo de armazenamento onde há um SO residente: Caso nenhum dispositivo seja encontrado, uma mensagem de erro é apresentada e o procedimento de ativação é interrompido; Se um dispositivo é encontrado, um conjunto de instruções é carregado para a memória e localizado em um bloco específico conhecido como setor de boot (boot sector). Desativação ou shutdown: permite que as aplicações e componentes do sistema operacional sejam desativados ordenadamente. Capítulo 1 - Visão Geral 1.6.4 Ativação/Desativação do Sistema Capítulo 1 - Visão Geral 1.6.5 Arquiteturas do Núcleo O projeto de um SO é bastante complexo e deve atender a diversos requisitos, algumas vezes conflitantes, como: confiabilidade, portabilidade, fácil manutenção, flexibilidade e desempenho. O projeto do sistema irá depender muito da arquitetura do hardware a ser utilizado e do tipo do sistema que se deseja construir. Linguagens de alto nível: facilitam desenvolvimento e a manutenção do sistema, além de permitir uma maior portabilidade. Linguagem de baixo nível (assembly): utilizada no desenvolvimento de partes críticas do sistema, como os device drivers, o escalonador e as RTI. Capítulo 1 - Visão Geral 1.6.6 Arquitetura Monolítica Pode ser comparada com uma aplicação formada por vários módulos que são compilados separadamente e depois linkados, formando um grande e único programa executável, onde os módulos podem interagir livremente. Devido a sua simplicidade e bom desempenho, a estrutura monolítica foi adotada no projeto do MS-DOS e nos primeiros sistemas UNIX. Desvantagens: desenvolvimento e, principalmente, manutenção bastante difíceis. Capítulo 1 - Visão Geral 1.6.6 Arquitetura Monolítica Capítulo 1 - Visão Geral 1.6.7 Arquitetura de Camadas O sistema é dividido em níveis sobrepostos. Cada camada oferece um conjunto de funções que podem ser utilizadas apenas pelas camadas superiores. A vantagem da estruturação em camadas é isolar as funções do SO, facilitando sua manutenção e depuração, além de criar uma hierarquia de níveis de modo de acesso, protegendo as camadas mais internas. Desvantagem: desempenho. Cada nova camada implica uma mudança no modo de acesso. Atualmente, a maioria dos sistemas comerciais utiliza o modelo de duas camadas, onde existem os modos de acesso usuário e kernel. Capítulo 1 - Visão Geral 1.6.7 Arquitetura de Camadas Exemplo: arquitetura em camadas (concêntricas) do OpenVMS. Capítulo 1 - Visão Geral 1.6.8 Máquina Virtual O modelo de máquina virtual, ou virtual machine (VM), cria um nível intermediário entre o hardware e o sistema operacional, denominado gerência de máquinas virtuais. Esse nível cria diversas máquinas virtuais independentes, onde cada uma oferece uma cópia virtual do hardware. Além de permitir a convivência de sistemas operacionais diferentes no mesmo computador, esse modelo cria o isolamento total entre cada VM. Desvantagem: grande complexidade, devido à necessidade de se compartilhar e gerenciar os recursos do hardware entre as diversas VMs. Capítulo 1 - Visão Geral 1.6.8 Máquina Virtual Capítulo 1 - Visão Geral 1.6.9 Arquitetura Microkernel Os serviços do sistema são disponibilizados através de processos, onde cada um é responsável por oferecer um conjunto específico de funções. Cliente: aplicação que solicita o serviço. Servidor: processo que responde à solicitação. Principal função do núcleo: realizar a troca de mensagens entre cliente e servidor. Permite que os servidores executem em modo usuário. Apenas o núcleo do sistema executa no modo kernel. Capítulo 1 - Visão Geral 1.6.9 Arquitetura Microkernel Capítulo 1 - Visão Geral 1.6.9 Arquitetura Microkernel A implementação de sistemas microkernel em sistemas distribuídos permite que um cliente solicite um serviço e a resposta seja processada remotamente. Permite isolar as funções do sistema operacional por diversos processos servidores pequenos e dedicados a serviços específicos, tornando o núcleo menor e mais fácil de depurar. O sistema operacional passa a ser de mais fácil manutenção, flexível e de maior portabilidade. Difícil implementação. Capítulo 1 - Visão Geral 1.6.9 Arquitetura Microkernel Problemas: Desempenho, devido à necessidade de mudança de modo de acesso a cada comunicação entre clientes e servidores; Certas funções do sistema operacional exigem acesso direto ao hardware, como operações de E/S. Solução: Implementar uma combinação do modelo de camadas com a arquitetura microkernel. Capítulo 1 - Visão Geral 1.6.10 Interfaces e Shells Existem vários tipos de Shells, e estes são divididas em 2 categorias: as interfaces gráficas chamadas de GUI (do inglês Graphical User Interface), e as interfaces em modo texto. Capítulo 1 - Visão Geral GUI Windows Capítulo 1 - Visão Geral Capítulo 1 - Visão Geral GUI Linux Capítulo 1 - Visão Geral Capítulo 1 - Visão Geral GUI Mac OS Capítulo 1 - Visão Geral Capítulo 1 - Visão Geral Modo Texto do Windows Capítulo 1 - Visão Geral Capítulo 1 - Visão Geral Modo Texto do Linux Capítulo 1 - Visão Geral Capítulo 1 - Visão Geral 1.6.11 Programas Aplicativos Programas Aplicativos Na maioria do tempo, os usuários trabalham diretamente com algum software aplicativo. Capítulo 1 - Visão Geral 1.6.11 Programas Aplicativos Eles são divididos em muitas categorias, para uma infinidade de utilidades, algumas mais comuns são: Editores de texto: softwares para preparação de documentos. São exemplos: BrOffice Writer, Microsoft Word, Google Document, etc; Planilhas eletrônicas: softwares para planilhas de cálculo. São exemplos: BrOffice Calc, Microsoft Excel, Google Spreadsheets, etc; Softwares de apresentação: softwares para criação de apresentações. São exemplos: BrOffice Impress, Microsoft Powerpoint, Google Presentation, etc; Capítulo 1 - Visão Geral 1.6.11 Programas Aplicativos Editores de Imagem: softwares para manipulação de imagens. São exemplos: GNU Image Manipulation Program - GIMP, Adobe Photoshop, etc; Navegadores: também chamados de browsers, são softwares destinados a navegação na internet e visualização de documentos HTML. São exemplos: Firefox, Internet Explorer, etc. Capítulo 1 - Visão Geral 1.6.12 Programas Utilitários Existem milhares de programas utilitários, muitos deles usamos sem perceber como os programas que copiam e apagam arquivos. Abaixo, alguns exemplos: Utilitários do sistema: programas para administração e manipulação do sistema. Exemplos: programas utilitários da GNU (cp, ls, mv, ln, etc), do Windows (copy, move, etc), e muitos outros; Capítulo 1 - Visão Geral 1.6.12 Programas Utilitários Compactadores de arquivos: são programas compactação e descompactação de arquivos. São exemplos: Winrar, 7zip, Winzip, Gzip, tar, etc; que realizam a Softwares Anti-vírus: são programas detectam e tentam eliminar outros programas maliciosos que podem causar dano ao sistema. São Exemplos: Panda, Avast, Norton, etc.