Prévia do material em texto
Sistemas Operacionais Sistemas Operacionais 1ª edição 2019 Autoria Parecerista Validador Paulo Sérgio Pádua de Lacerda Augusto Mendes Gomes Jr. *Todos os gráficos, tabelas e esquemas são creditados à autoria, salvo quando indicada a referência. Informamos que é de inteira responsabilidade da autoria a emissão de conceitos. Nenhuma parte desta publicação poderá ser reproduzida por qualquer meio ou forma sem autorização. A violação dos direitos autorais é crime estabelecido pela Lei n.º 9.610/98 e punido pelo artigo 184 do Código Penal. 8 1Unidade 1 1. Fundamentos de Sistemas Operacionais Para iniciar seus estudos Olá! Nesta unidade, será apresentado o conceito de sistema operacional, bem como sua importância no universo da tecnologia da informação. Sistemas operacionais são sistemas de base para qualquer dispositivo de TI e controlam tanto o hardware quanto o software de seu dispositivo eletrônico. Vamos lá? Objetivos de Aprendizagem • Recordar a evolução dos sistemas operacionais. • Esclarecer os diversos tipos de sistema operacional. • Identificar a estrutura dos sistemas operacionais. 9 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais Introdução da unidade A compreensão do papel dos sistemas operacionais nos diversos tipos de dispositivo de tecnologia da informação é fundamental para o entendimento na resolução de problemas relacionados, por exemplo, à capacidade de memória e desempenho de hardware. Esta seção tem como objetivo dialogar e estudar os conceitos fundamentais, começando pela definição de sistemas operacionais, registrando a evolução histórica, descrevendo o funcionamento da sua estrutura e, por fim, diferenciando os diversos tipos de sistema operacional. Em suma, você será capaz de aplicar os conceitos sobre sistema operacional, por exemplo, no planejamento de uma infraestrutura de tecnologia da informação. 1.1 O que é sistema operacional (SO)? Na era atual, os sistemas computacionais são constituídos de processadores, memórias (volátil e fixa), diversos tipos de disco (hard disk, pen drives, nuvem), teclado, conjunto multimídia (CD, DVD, som), monitor, impressoras, redes, interface com usuário, mouse, câmeras, scanners, entre outros. Em suma, sistema computacional é um sistema muito complexo para desenvolvedores tanto de software quanto de hardware (WATSON, 2013). Os desenvolvedores têm uma tarefa difícil na criação de softwares e hardwares devido à complexidade de desenvolver programas que, além das funcionalidades do próprio software ou hardware, também tenham que gerenciar de forma eficiente todos esses elementos que compõem os sistemas computacionais. O desenvolvedor de um software, como, por exemplo, o Waze (NOERKAISAR et al., 2016) não precisa se preocupar com o gerenciamento de memória; no mesmo sentido, um desenvolvedor de impressora ou de qualquer outro hardware não precisa se preocupar com o reconhecimento do hardware com relação ao dispositivo conectado. Então, os sistemas operacionais têm a finalidade de controlar e gerenciar tanto o hardware, através de uma interface amigável, quanto o software (programas de usuários), por meio de diversos recursos disponíveis no sistema. “Popularmente”, define-se sistema operacional como um software que gerencia o hardware de um dispositivo computacional; porém, o sistema operacional é um software de base, que provê um conjunto de aplicações que tem a finalidade de atuar de forma transparente entre os programas de usuários e os hardwares de qualquer dispositivo computacional, como computadores, celulares, tablets, televisão, etc. (FIGURA 1). Então, pode-se dizer que, basicamente, um sistema operacional tem como objetivos: 1. Gerenciar o compartilhamento de recursos, como memória, hardware e processador. 2. Prover diversos serviços que simplifiquem as aplicações. 3. Apresentar uma interface entre programas de aplicação e hardwares. Conclui-se, então, que um SO pode atuar como um gerenciador de recursos, um provedor de serviços e uma máquina virtual. 10 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais Figura 1 – Estrutura básica de um SO SOFTWARE HARDWARE SISTEMA OPERACIONAL Fonte: Elaborada pelo autor. 1.1.1 SO como gerenciador de recursos Recurso refere-se a um dispositivo de hardware que é compartilhado entre programas de softwares. Um conceito mais básico de sistema operacional é o gerenciador de recursos de hardware. Sob esse ponto de vista, o sistema operacional tem o papel principal de controlar todo o gerenciamento de quaisquer recursos disponíveis para utilização dos softwares. No papel de gerente de recurso, o sistema operacional recebe diversas solicitações de uso de determinado recurso por parte dos softwares e decide quando e como essas aplicações utilizarão esses recursos, podendo até negar a utilização dos mesmos. Ao conceder o uso dos recursos, o sistema operacional tem a finalidade de não gerar conflitos entre os programas que estão requisitando ou utilizando o recurso. A memória, por exemplo, é um recurso exigido por qualquer aplicação. Um sistema operacional não pode permitir que uma aplicação tenha acesso à determinada área de memória utilizada por outra aplicação, ou seja, uma área de memória reservada por outra aplicação. Se um programa malicioso – por exemplo, um vírus – acessar uma área de memória reservada por outra aplicação, poderá ocorrer um travamento do sistema ou, no mínimo, falhas constantes de resultados, que podem ser prejudiciais caso essa área de memória modificada seja utilizada pelo próprio sistema operacional, afetando o comportamento de todo o sistema. A tela azul ou “tela da morte” que ocorria no Windows é um exemplo de acesso indevido às áreas de memórias compartilhadas por mais de uma aplicação. O sistema travava e apresentava uma tela azul com dizeres sobre erro no endereçamento de memória. 1.1.2 SO como provedor de serviços Serviço é qualquer tarefa (recurso) que seja utilizada por uma aplicação do ponto de exigência dela mesma. Uma aplicação pode, em determinados momentos, exigir mais poder de processamento, mais alocação de memória, mais controle de entrada e saída (I/O); enfim, pode demandar do sistema operacional os serviços necessários para 11 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais que ela opere com eficiência. Por exemplo, editores de vídeo demandam mais processamento, mais capacidade de memória e um melhor gerenciamento dos recursos pelo sistema operacional. Aplicações são executadas em diversos tipos de sistema operacional, como Windows, Linux, macOS, etc. (FIGURA 2). Nessa perspectiva, ao escolher o tipo de sistema-base para a execução de determinada aplicação, o sistema operacional é visto como um provedor de serviços. Figura 2 – Onde executar Aplicação Alocar mais memória Windows Linux macOS Executar em... Fonte: Elaborada pelo autor. 1.1.3 SO como máquina virtual Um usuário comum especifica um computador não somente pelo hardware, mas pelo conjunto hardware + sistema operacional. Esse conceito é definido pela simplicidade de execução de tarefas que o sistema operacional proporciona às aplicações ou usuário. Nessa visão top-down (FIGURA 3), a aplicação ou usuário não consegue diferenciar uma estrutura de hardware complexa de uma estrutura de hardware simples. O usuário trata o computador como se o hardware não existisse. Essa não diferenciação é facilitada pela interface de código gerada pelo sistema operacional. Essa interface traduz instruções virtuais em instruções nativas num processo de compilação em tempo de execução (just-in-time). Essa visão abstrata é chamada de máquina virtual. Por exemplo, ao instalar um programa Pacote Office, o usuário não se atenta ao processador ou tipo de memória, pois o sistema operacional abstrai essa informação, fazendo o elo entre a aplicação do usuário e o hardware da máquina. Figura 3 – Visão top-down HARDWARE SISTEMAOPERACIONAL Fonte: Elaborada pelo autor. 12 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais 1.2 Evolução histórica dos sistemas operacionais Baixo custo, alto poder de processamento, desempenho otimizado e compactação são características relacionadas ao desenvolvimento histórico dos sistemas operacionais. Um paralelo também pode ser feito com a evolução dos componentes eletrônicos que formam o hardware do computador, que, ao longo do tempo, evoluíram para uma otimização, compactação e um desempenho mais eficiente. Então, pode-se dizer que a evolução histórica dos sistemas operacionais está diretamente relacionada à arquitetura dos computadores nos quais eles são executados. Uma forma simples de referenciar a evolução histórica dos sistemas operacionais é a divisão por fases ou gerações. 1.2.1 Primeira fase (1945-1955) Enquanto o mundo se encontrava aterrorizado com o bombardeio americano na cidade de Hiroshima no Japão em agosto de 1945, os cientistas Howard Aiken (Harvard), John von Neumann (Instituto de Estudos Avançados de Princeton), J. Presper Eckert e William Mauchley (Universidade da Pensilvânia) e Konrad Zuse (Alemanha) conseguiam sucesso na criação de máquinas para executar cálculos matemáticos baseando-se em dezenas de válvulas e painéis de conectores. Naquela época (meados da década de 40), projeto, construção, programação, operação e manutenção eram realizados por um único grupo de pessoas. Não havia qualquer tipo de programação, nem Assembly. Toda e qualquer ligação e operação era eletromecânica, e a programação era em linguagem pura de máquina. Não havia o conceito de sistema operacional. As máquinas tinham sido construídas para executar cálculos simples com números (seno e cosseno). Essas máquinas, além de ocupar fisicamente áreas enormes, eram lentas e custosas. Os cientistas esperavam horas para um resultado após executar operações simples em computadores baseados em 20 mil válvulas, torcendo para que nenhuma válvula queimasse durante a operação. Surge, então, o ENIAC (Electronic Numerical Integrator and Computer), considerado o primeiro computador digital com propósito geral. O ENIAC (FIGURA 4) – computador criado para realização de cálculos balísticos – possuía 18 mil válvulas, 10 mil capacitores e 70 mil resistores; além disso, pesava 30 toneladas, consumia cerca de 140 kW e era capaz de realizar 5 mil adições por segundo. Outros computadores, destinados a universidades e órgãos militares, foram construídos, como o EDVAC (Electronic Discrete Variable Automatic Computer) e o IAS (Princeton Institute for Advanced Studies). 13 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais Figura 4 – ENIAC Fonte: SHUTTERSTOCK, 2018. 1.2.2 Segunda fase (1956-1965) O transistor, componente eletrônico criado na década de 50 com o intuito principal de amplificar os sinais elétricos, foi o grande passo tecnológico para a evolução dos computadores, e o surgimento das memórias magnéticas também contribuiu para a evolução dos computadores da época. Juntos proporcionaram o aumento do poder de processamento, a elevação da capacidade de armazenamento, a diminuição das máquinas e um acesso mais rápido às informações. Assembly e Fortran são as linguagens originadas na época que permitiram que os programas deixassem de ser meramente fios e conectores diretamente executados no hardware e que propiciaram o processo de desenvolvimento dos primeiros programas. Já não eram mais viáveis tantos procedimentos manuais para um manuseio eficiente dos computadores e dos recursos disponíveis e, no intuito de organizar e automatizar as tarefas manuais, surgiram os primeiros sistemas operacionais. Essas máquinas precisavam de salas especiais climatizadas e equipes especializadas para manutenção em operação, ocasionando, pela primeira vez, uma separação de tarefas entre profissionais (projetistas, programadores, operadores). Mesmo com tanta evolução, somente as grandes instituições, universidades e órgãos públicos tinham acesso a esses recursos. Esses computadores da segunda geração foram utilizados, principalmente, para a realização de enormes cálculos científicos de engenharia programados em Fortran e Assembly. 14 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais O processo tornou-se mais simples para o programador de tarefas. Antes, a programação da tarefa era feita uma a uma; na segunda geração, para aperfeiçoar as tarefas, criou-se o processamento em lote (batch system) (Figura). Neste processamento, cartões perfurados eram utilizados para fazer toda a programação produzida inicialmente em papel. As informações de todos os cartões eram lidas e armazenadas em fitas magnéticas; ao final, realizava-se a leitura dessas fitas, obtendo-se seu resultado por meio de impressoras. O FMS (Fortran Monitor System) e o IBSYS, sistema racional da IBM, eram os sistemas operacionais típicos dessa época. Figura 5 – Processamento em lote Fonte: SHUTTERSTOCK, 2018. 1.2.3 Terceira geração (1965-1980) Nos primórdios anos da década de 60, os computadores eram projetados para finalidades distintas: os computadores baseados em palavras (IBM-7094) eram utilizados para fins científicos; os baseados em caracteres (IBM-1491), para fins comerciais por bancos e companhias de seguros. A necessidade dos clientes em ter um computador de custo mais baixo e que aproveitasse o sistema legado (programas antigos) cresceu e, nessa linha, a IBM criou o System/360, que contemplava ambas as necessidades. Essa evolução só foi possível devido ao surgimento dos circuitos integrados (CI), que proporcionaram diminuição do custo de aquisição, aumento de processamento e redução do tamanho físico das máquinas. Essa evolução dos processadores para computadores permitiu um passo enorme na arquitetura de processamento das informações. O sistema que antes era em lote e, a cada processamento, gerava uma pausa entre processos foi solucionado com a técnica de multiprogramação (MACHADO; MAIA, 2013). Veja o portal da IBM, que aborda alguns tipos de sistema operacional de mercado. Lá, encontram-se algumas informações interessantes sobre o tema. 15 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais Multiprogramação é a técnica de processar vários programas quase simultaneamente por um único processador. Tal técnica só era possível dividindo a memória em partições (FIGURA 6). Enquanto um programa aguardava para ser executado em memória, o outro poderia ser executado no processador. Esse processo otimizou os processamentos em lote, pois permitia a alteração na ordem de execução das tarefas, antes sequencial. Para esse processo de submissão deu-se o nome de spooling, posteriormente usado pelas impressoras comerciais. Com essa finalidade, a IBM criou o sistema operacional OS/360, projetado para uma linha de computadores utilizados em pequenas empresas. Diferentemente dos antecessores (em batch), esse SO demandou um sistema de armazenamento em disco e facilitou a transferência de programas entre sistemas operacionais da IBM, o que anteriormente não permitido. A Digital Equipment Corporation (DEC), na mesma época, lançou o PDP-8, computador de 12 bits comercial, criando assim o mercado dos minicomputadores. Esses sistemas operacionais ainda eram limitados, mesmo com a otimização dos processamentos em lote, pois não possuíam interatividade com o usuário. Na solução desses problemas, terminais de vídeo e teclado foram adicionados. A multiprogramação gerou uma expectativa de tempo, ou seja, os processamentos mais rápidos e, com isso, tempos de resposta a usuários mais rápidos e interfaces mais amigáveis. Essa necessidade de tempo de resposta mais curto caminhou para uma técnica chamada compartilhamento de tempo, que se refere à criação de pequenos pedaços de processamento do processador para diversos programas a serem executados. O UNIX, criado pelo laboratório Bell,da AT&T, também foi lançado na mesma época, originalmente para os computadores PDP-7 baseados no sistema MULTICS (Multiplexed Information and Computer Service) e, posteriormente, reescrito em linguagem C, com portabilidade adicionada. Figura 6 – Partição de memória Processo 1 Memória Processo 2 Processo 3 Sistema Operacional Partição Fonte: Elaborada pelo autor. 1.2.4 Quarta geração (1981-1990) O desenvolvimento dos circuitos integrados para integração em larga escala (LSI) e para integração em muito larga escala (VLSI) permitiu que projetos de diminuição e de custos mais baixos dos computadores fossem viabilizados, tornando o mercado impulsionado pelos mini e superminicomputadores. Nessa geração, com o desenvolvimento dos computadores pessoais e o crescimento da indústria de software, os sistemas operacionais apresentaram interfaces mais amigáveis, e os computadores pessoais demandaram 16 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais sistemas mais compactos e leves. Surge, então, o Microsoft Disk Operating System (MS-DOS), sistema operacional da fabricante Microsoft que dominou o mercado de SO para computadores pessoais, assim como houve a expansão do sistema operacional UNIX. O MS-DOS foi significante para computadores IBM-PC (FIGURA 7), 16 bits, com processadores Intel 8088 e seus sucessores 80286, 80386 e 80486. Embora limitado, o MD-DOS foi o software de base para o Windows 3.1 na área de mini e superminicomputadores, com filosofia multiusuário e sistemas compatíveis com o UNIX-like e o Virtual Memory System, da DEC. Esses sistemas, embora monousuários, permitiam trabalhar com mais de uma tarefa ao mesmo tempo, originando o conceito de multitarefa. A exigência de processamento de volume de dados elevados proporcionou a adição de mais processadores ao hardware, o que permitiu aumentar o desempenho de processamento, criando o conceito de multiprocessamento, ou seja, capacidade de processar duas tarefas ao mesmo tempo, introduzindo também os processadores vetoriais e técnicas de paralelismo em níveis diferentes, tornando os sistemas computacionais mais poderosos. No meio da década de 80, com a difusão das redes de computadores, surgiram os sistemas operacionais de rede e os sistemas operacionais distribuídos. Os sistemas operacionais de rede são sistemas que controlam o acesso à rede e a informação contida na rede remotamente; por isso, devem possuir uma interface amigável, não sendo muito diferentes de sistemas operacionais monousuários. Por sua vez, os sistemas operacionais distribuídos são visualizados pelo usuário como um sistema monousuário e requerem processamento com algoritmos mais complexos devido à necessidade de utilização de vários processadores ao mesmo tempo como um único processador. Figura 7 – IBM-PC Fonte: SHUTTERSTOCK, 2018. 1.2.5 Quinta geração (1991 aos dias atuais) A partir do início da década de 1990, evoluções no hardware e nos programas, bem como a convergência entre redes e telecomunicação, permitiram um desenvolvimento crescente na capacidade de processamento, armazenamento e transmissão de dados, acrescido do boom da internet e de melhorias significantes nos processadores. Com isso, os sistemas operacionais baseados em interfaces gráficas foram consolidados. 17 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais Novos conceitos surgiram e surgirão devido à necessidade diária de processamento de novos volumes de dados, novos dispositivos, novos sistemas wireless e na integração entre esses dispositivos (internet of things) e na computação em nuvem. Linguagens concorrentes e linguagens naturais surgiram, e novas linguagens surgirão também. Mesmo assim, os conceitos básicos dos sistemas operacionais ainda são fundamentais – gerenciamento de processos, gerenciamento de memória e gerenciamento de entrada/saída –, porém com melhorias, principalmente nos algoritmos de gerenciamento. A capacidade de gerenciamento de processos e de gerenciamento de memória faz a diferença entre os sistemas operacionais. 1.3 Estrutura dos sistemas operacionais A estrutura de um sistema operacional é complexa e, muitas vezes, de difícil compreensão. O entendimento de como os componentes do computador são organizados, gerenciados e interconectados torna a compreensão do sistema operacional relevante para estudos. Para que se tenha uma evolução nos estudos, também é preciso entender os conceitos iniciais e, posteriormente, a estrutura interna (TANENBAUM, 2016). 1.3.1 Conceitos de sistema operacional A interface de um sistema operacional proporciona transparência entre a aplicação do usuário e o sistema operacional, pois é formada por um conjunto de instruções estendidas. Essas instruções são conhecidas como system calls (3.1.4) e definem implementações variadas, pois os processadores mais atuais executam instruções em níveis de privilégio diferentes: nível de usuário (modo usuário) e nível de kernel (modo protegido). 1.3.1.1 Processos Basicamente, processos são tarefas executadas no núcleo do processador, ou seja, no programa em execução. Associados a um processo estão um endereçamento de memória e um número de identificação. Cada processo (processo-pai) pode criar um processo-filho, e cada processo-filho pode criar outro processo-filho, gerando assim uma estrutura de árvore de processos (FIGURA 8). 18 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais Figura 8 – Estrutura de árvore de um processo Processo A Processo B Processo E Processo D Processo C - Processo A (pai) cria processos-filho B e C. - O processo-filho B cria os processos-filho E e D. Fonte: Elaborada pelo autor. 1.3.1.2 Arquivos Arquivo é qualquer informação que possa ser armazenada em um dispositivo eletrônico ou computador, como som, imagem, texto, figura, vídeo, etc. Os sistemas operacionais possuem a capacidade de organização desses arquivos em locais chamados diretórios. Diretório também é um arquivo, porém o seu conteúdo pode ser de arquivos ou de outro diretório. Assim como os processos, os arquivos constituem uma estrutura em árvore (FIGURA 9). A diferença entre essas hierarquias é que uma estrutura de processos se dá, no máximo, em três níveis e dura enquanto o processo estiver em execução; já uma estrutura de arquivos dura enquanto não for apagada e pode ter diversos níveis. Cada arquivo dentro da hierarquia contém um nome e um caminho (localização do arquivo dentro da estrutura a partir do local-raiz). Figura 9 – Estrutura de árvore de arquivos O caminho da disciplina C: diretório raiz/faculdade/disciplina C Diretório-raiz Faculdade Disciplina A Disciplina B Disciplina C Fonte: Elaborada pelo autor. 19 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais 1.3.1.3 Shell Shell (FIGURA 10) é o interpretador de comando utilizado dentro do sistema operacional. O usuário utiliza essa interface para fazer conexão com o sistema operacional; sendo assim, toda vez que um sistema operacional é iniciado, o shell também é iniciado. O shell, “popularmente”, é a interface não gráfica de um sistema operacional, sendo composto de diversos comandos para a comunicação do usuário com o sistema operacional. Ele possui um símbolo de entrada, que, dependendo do sistema operacional, pode ser #, $, >. Figura 10 – Tela do shell do Windows Fonte: SHUTTERSTOCK, 2018. 1.3.1.4 Chamadas de sistema (system calls) O sistema operacional é formado por um conjunto de procedimentos que dão suporte aos usuários dos sistemas e às aplicações executadas através do oferecimento de diversos serviços. O kernel (núcleo do sistema operacional) é composto por essas diversas rotinas de tratamento de interrupções, gerenciamento de memória, operações de entrada/saída, escalonamento e controle de processos, etc. Define-se chamada de sistema como um mecanismo pelo qual um processo pode solicitar um dos serviços, como interrupção de um processo em execução.Por exemplo: uma aplicação faz uma solicitação a um system call, que, por sua vez, através de parâmetros passados na chamada da aplicação, faz uma chamada ao mecanismo do sistema operacional, processando-se a solicitação. Então, um valor parâmetro é retornado à aplicação (FIGURA 11). 20 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais Figura 11 – System call Aplicação System Call Kernel H A R D W A R E Fonte: Elaborada pelo autor. As rotinas da chamada de sistema (system call) podem ser divididas em três grupos: gerência de processos, gerência de memória, gerência de entrada/saída (QUADRO 1). Quadro 1 – Principais rotinas da chamada de sistema (system call) Gerência de processo Criação e eliminação de processos. Alteração das características de processos. Sincronização de processos. Comunicação entre processos. Gerência de memória Alocação e desalocação de memória. Gerência de entrada/saída Operações de I/O. Manipulação de arquivos e diretórios. Fonte: Elaborado pelo autor. A chamada de sistema contém algumas instruções que somente podem ser acessadas pelo sistema operacional; por essa razão, há uma proteção de modo de acesso a essas rotinas. Esse acesso pode ser privilegiado ou não privilegiado: o acesso não privilegiado (modo usuário) não ameaça a segurança, nem a organização do sistema – por exemplo, gravar um arquivo em disco. Porém, no modo privilegiado (kernel), o kernel realiza as operações solicitadas pela chamada de sistema – por exemplo, alterar as permissões de acesso a determinado disco. Caso um processo tente alterar ou acessar uma tarefa em modo kernel (privilegiado), uma mensagem de exceção é gerada, e a tarefa, encerrada. O núcleo do sistema operacional opera em modo kernel para que se permita ao sistema controlar todos os recursos e solucionar todos os problemas de qualquer nível de privilégio (STUART, 2011). 1.3.2 Estrutura interna do sistema operacional Existem diversas possibilidades para arquitetar a estrutura de um sistema operacional internamente. Você será apresentado a cinco modelos que foram aplicados na prática. 21 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais 1.3.2.1 Sistemas monolíticos Essa estrutura é a mais comum de ser encontrada, pois qualquer procedimento pode interagir com outro procedimento em qualquer parte do programa. Os procedimentos são compilados e, depois, linkados como um só programa; caso um erro aconteça, o sistema é paralisado. O MS-DOS, da Microsoft, é um exemplo de estrutura de sistema operacional monolítico Unix-like (solaris, Linux). 1.3.2.2 Sistemas em camadas No sistema de estrutura em camadas, o sistema operacional é dividido em camadas sobrepostas. Os módulos são compostos por um conjunto de rotinas que podem ser usadas por outros módulos. Os módulos somente podem fazer referência a módulos adjacentes. O sistema Technische Hogeschool Eindhoven (THE), construído por Dijkstra, Holanda, utilizava seis camadas (QUADRO 2). O sistema MULTICS, por exemplo, utilizava o mesmo conceito de camadas, porém em camadas circuncêntricas (FIGURA 12), sendo o privilégio maior para a camada mais interna. Quadro 2 – Sistema operacional em seis camadas 5 Operador 4 Programa de usuário 3 Entrada/saída 2 Comunicação 1 Gerência de memória 0 Multiprogramação Fonte: Elaborado pelo autor. Figura 12 – Sistema operacional em camadas circuncêntricas Kernel Executivo Supervisor Usuário Fonte: Elaborada pelo autor. 22 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais 1.3.2.3 Exonúcleos Exonúcleo é um programa na camada inferior do sistema operacional, sendo executado em modo kernel, que cria máquinas virtuais alocando recursos para elas, sem que uma máquina virtual utilize recursos de outra máquina virtual. O IBM VM/370, por exemplo, utilizava esse tipo de estrutura. 1.3.2.4 Máquinas virtuais A máquina virtual fornece todos os recursos que uma máquina real fornece ao usuário ou aplicação, porém virtualmente. No sistema de máquina virtual, um sistema operacional pode suportar outros sistemas operacionais sendo executados sob o SO principal : (QUADRO 3). O VMware (YILE, 2016) é um exemplo de sistema operacional para implementação de máquinas virtuais. Cada máquina possui seu próprio conjunto de serviços, independentemente umas das outras. Quadro 3 – Sistema operacional de máquina virtual Aplicação A Aplicação B Aplicação C SO convidado (Windows) SO convidado (Linux) SO convidado (macOS) SO host (máquina virtual – VMware) Hardware Fonte: Elaborada pelo autor. 1.3.2.5 Modelo cliente-servidor A estrutura cliente-servidor possui um núcleo com o mínimo de rotinas, removendo o máximo de códigos possível em modo núcleo. Quando os serviços são solicitados, os códigos de camadas superiores transferem-se para as camadas inferiores. Quando um serviço é solicitado por um usuário (cliente), um bloco de informações é enviado à camada inferior (servidor), que executa a tarefa e retorna uma resposta. O núcleo do sistema operacional tem a única tarefa de tratar a comunicação entre clientes e servidores. O sistema operacional é dividido em diversos seguimentos, como servidor de arquivos, servidor de processos, servidor de memória, etc. Esse tipo de sistema operacional possui adaptabilidade a sistemas distribuídos; portanto, todas as vezes em que um cliente envia a mensagem, a única coisa que ele precisa saber é a resposta, não se preocupando se a mensagem foi tratada localmente ou remota (FIGURA 13). Figura 13 – Sistema operacional modelo cliente-servidor em sistema distribuído Máquina 1 Cliente Servidor de terminais Servidor de processos Servidor de arquivos Núcleo Núcleo Núcleo Núcleo Máquina 2 Máquina 3 Máquina 4 Rede Mensagem de cliente para servidor Fonte: Elaborada pelo autor. 23 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais 1.4 Exemplos de sistema operacional A classificação dos sistemas operacionais pode ser estabelecida por diversos critérios, como número de processadores, quantidade de tarefas que podem ser executadas com relação à programação, etc. 1.4.1 Tipos de sistema operacional Os conceitos e técnicas sobre sistemas operacionais tiveram destaque com a popularização dos computadores pessoais. Dentro das características, pode-se destacar: os sistemas operacionais monotarefa/monoprogramável e multitarefa/multiprogramável, bem como o sistema em múltiplos processadores (SILBERSCHATZ, 2015). Monotarefa/monoprogramável: sistema desenvolvido nos primórdios dos computadores. Máquinas que eram utilizadas por apenas um usuário e todos os recursos eram exclusivos a uma única tarefa. Multitarefa/multiprogramação: sistema desenvolvido para evolução do sistema monotarefa, é mais complexo e eficiente. Nesse sistema, as tarefas são compartilhadas entre diversos usuários, e os recursos são compartilhados entre as diversas tarefas executadas no processador. Múltiplos processadores: sistema em duas ou mais unidades de processamento trabalhado em conjunto. Destacam-se pelo grau de comunicação entre essas unidades de processamento, compartilhamento de memória e dispositivos de entrada e saída. Esse sistema pode ser definido como fortemente ou fracamente acoplado. • O sistema fortemente acoplado pode ser simétrico (quando dois processadores compartilham uma única memória, controlada por um único sistema operacional) e assimétrico (quando um processador é definido como mestre, e o segundo processador, escravo). Qualquer operação será determinada pelo processador- mestre: caso este falhe, nada acontece; caso precise de mais recursos, estes serão solicitados ao escravo. • O sistema fracamente acoplado tem a característica de dois ou mais sistemas de computação interligados: rede ou distribuído. Cada sistema possui seu próprio sistema computacional: memória, processador, armazenamento, dispositivos de entrada e saída. Qual tipo de sistema operacional usado no supercomputadorWatson foi criado pela IBM para serviços cognitivos? 1.4.2 Exemplos As características diferenciam os diversos sistemas operacionais existentes no mercado. O propósito do projeto de sistema operacional define suas características com mais ou menos rotinas (QUADRO 4). 24 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais Quadro 4 – Exemplos de sistema operacional e suas características Sistema operacional Características Windows Multitarefa Multiusuário Interface gráfica padronizada Licença para uso Baseado em bibliotecas (.dll) Empresa: Microsoft iOS Multitarefa Multiusuário Interface gráfica padronizada Licença para uso Empresa: Apple Android Licença de uso: GPL/GNU Interface Baseado em kernel Linux Empresa: Google Linux Multitarefa Multiusuário Licença de uso: GPL/GNU Interface variada Baseado em arquivo texto (.txt) Fonte: Elaborado pelo autor. Síntese da unidade Nesta unidade, você aprendeu a origem do sistema operacional e a sua transformação de um sistema operacional monotarefa/monousuário para um sistema mais moderno, multitarefa/multiusuário. No início da unidade, foram conceituados os principais fundamentos a respeito de sistema operacional e os seus principais objetivos. Posteriormente, a unidade apresentou as gerações de evolução de um sistema operacional. Essas gerações conseguem distinguir as necessidades de cada época para a evolução do sistema operacional. Em cada geração, serviços foram adicionados ao sistema operacional como ferramenta para melhor atender as necessidades do mercado (software e hardware) de cada época. 25 Sistemas Operacionais | Unidade 1 - Fundamentos de Sistemas Operacionais Neste capítulo você conheceu os elementos básicos que formam um sistema operacional, como processos, arquivos, shell e as chamadas de sistema. Aprendeu as estruturas internas que são bases para qualquer projeto de sistema operacional. Por fim, características fundamentais de estrutura foram apresentadas a você para que se pudesse diferenciar os diversos sistemas operacionais existentes no mercado e também compreender e filtrar o mais adequado para cada situação. 26 Considerações finais Sem o passado não compreendemos o presente. Essa afirmação “popular” pode ser aplicada a esta unidade. Os conceitos fundamentais de sistema operacional são essenciais para o entendimento das próximas unidades de estudo. Embasado neste estudo, você poderá classificar e sintetizar sistemas operacionais existentes no mercado, bem como valorizar a importância do sistema operacional instalado em qualquer dispositivo. Unidade 1 1. Fundamentos deSistemas Operacionais Unidade 2 2. Gerência de Processos Unidade 3 3. Sincronização de Processos e Deadlock Unidade 4 4. Gerência de Memória Unidade 5 5. Técnicas de Gerência de Memória Unidade 6 6. Gerência de Entrada e Saída Unidade 7 7. Sistemas de Arquivos e Segurança Unidade 8 8. Estudo de Caso