Prévia do material em texto
1 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS SISTEMAS OPERACIONAIS 2 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS A Faculdade Multivix está presente de norte a sul do Estado do Espírito Santo, com unidades em Cachoeiro de Itapemirim, Cariacica, Castelo, Nova Venécia, São Mateus, Serra, Vila Velha e Vitória. Desde 1999 atua no mercado capixaba, des- tacando-se pela oferta de cursos de gradua- ção, técnico, pós-graduação e extensão, com qualidade nas quatro áreas do conhecimen- to: Agrárias, Exatas, Humanas e Saúde, sem- pre primando pela qualidade de seu ensino e pela formação de profissionais com cons- ciência cidadã para o mercado de trabalho. Atualmente, a Multivix está entre o seleto grupo de Instituições de Ensino Superior que possuem conceito de excelência junto ao Ministério da Educação (MEC). Das 2109 institui- ções avaliadas no Brasil, apenas 15% conquistaram notas 4 e 5, que são consideradas conceitos de excelência em ensino. Estes resultados acadêmicos colocam todas as unidades da Multivix entre as melhores do Estado do Espírito Santo e entre as 50 melhores do país. miSSÃO Formar profissionais com consciência cida- dã para o mercado de trabalho, com ele- vado padrão de qualidade, sempre mantendo a credibilidade, segurança e modernidade, visando à satisfação dos clientes e colaboradores. ViSÃO Ser uma Instituição de Ensino Superior reconheci- da nacionalmente como referência em qualidade educacional. GRUPO MULTIVIX 3 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS BiBLiOteca mULtiViX (Dados de publicação na fonte) As imagens e ilustrações utilizadas nesta apostila foram obtidas no site: http://br.freepik.com Costa, Charles Edward. Sistemas Operacionais / Charles Edward Costa; Otaviano Silvério de Sousa. – Serra: Multivix, 2018. eDitOriaL Catalogação: Biblioteca Central Anisio Teixeira – Multivix Serra 2018 • Proibida a reprodução total ou parcial. Os infratores serão processados na forma da lei. FacULDaDe capiXaBa Da Serra • mULtiViX Diretor Executivo Tadeu Antônio de Oliveira Penina Diretora Acadêmica Eliene Maria Gava Ferrão Penina Diretor Administrativo Financeiro Fernando Bom Costalonga Diretor Geral Helber Barcellos da Costa Diretor da Educação a Distância Pedro Cunha Conselho Editorial Eliene Maria Gava Ferrão Penina (presidente do Conselho Editorial) Kessya Penitente Fabiano Costalonga Carina Sabadim Veloso Patrícia de Oliveira Penina Roberta Caldas Simões Revisão de Língua Portuguesa Leandro Siqueira Lima Revisão Técnica Alexandra Oliveira Alessandro Ventorin Graziela Vieira Carneiro Design Editorial e Controle de Produção de Conteúdo Carina Sabadim Veloso Maico Pagani Roncatto Ednilson José Roncatto Aline Ximenes Fragoso Genivaldo Félix Soares Multivix Educação a Distância Gestão Acadêmica - Coord. Didático Pedagógico Gestão Acadêmica - Coord. Didático Semipresencial Gestão de Materiais Pedagógicos e Metodologia Direção EaD Coordenação Acadêmica EaD 4 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS Aluno (a) Multivix, Estamos muito felizes por você agora fazer parte do maior grupo educacional de Ensino Superior do Espírito Santo e principalmente por ter escolhido a Multivix para fazer parte da sua trajetória profissional. A Faculdade Multivix possui unidades em Cachoei- ro de Itapemirim, Cariacica, Castelo, Nova Venécia, São Mateus, Serra, Vila Velha e Vitória. Desde 1999, no mercado capixaba, destaca-se pela oferta de cursos de graduação, pós-graduação e extensão de qualidade nas quatro áreas do conhecimento: Agrárias, Exatas, Humanas e Saúde, tanto na mo- dalidade presencial quanto a distância. Além da qualidade de ensino já comprova- da pelo MEC, que coloca todas as unidades do Grupo Multivix como parte do seleto grupo das Instituições de Ensino Superior de excelência no Brasil, contando com sete unidades do Grupo en- tre as 100 melhores do País, a Multivix preocupa- -se bastante com o contexto da realidade local e com o desenvolvimento do país. E para isso, pro- cura fazer a sua parte, investindo em projetos so- ciais, ambientais e na promoção de oportunida- des para os que sonham em fazer uma faculdade de qualidade mas que precisam superar alguns obstáculos. Buscamos a cada dia cumprir nossa missão que é: “Formar profissionais com consciência cidadã para o mercado de trabalho, com elevado padrão de quali- dade, sempre mantendo a credibilidade, segurança e modernidade, visando à satisfação dos clientes e colaboradores.” Entendemos que a educação de qualidade sempre foi a melhor resposta para um país crescer. Para a Multivix, educar é mais que ensinar. É transformar o mundo à sua volta. Seja bem-vindo! APRESENTAÇÃO DA DIREÇÃO EXECUTIVA Prof. Tadeu Antônio de Oliveira Penina Diretor executivo do Grupo multivix 5 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS APRESENTAÇÃO DA DISCIPLINA De forma equivocada, pode-se entender que sistemas operacionais se tratam de algo elementar em tecnologia, sendo apenas a base para o desenvolvimento e instalação de aplicações. Esse equívoco leva um estudante a priorizar, no curso, a utilização de ferramentas e padrões UML e a focar em uma linguagem de programação de alto nível, por exemplo. A disciplina de sistemas operacionais deve ser vista de forma téc- nica, a qual se adquire fundamentação para identificar onde a aplicação analisada ou em desenvolvimento vai operar e encontrar formas de maximização de desem- penho dessas aplicações. Nesta disciplina, serão apresentados os aspectos gerais de sistemas operacionais, de conceituação e histórico até o contato com sistemas distri- buídos. No decorrer das unidades, serão abordados como se realizam os diversos ge- renciamentos de responsabilidade do sistema operacional (SO), tais como gerência de processos em execução, gerência de sistemas de arquivos, gerência de memória e gerenciamento de dispositivos em um ambiente computacional. Recomenda-se que apoie o estudo deste material com as referências listadas no decorrer do conteú- do e ao final de cada unidade. Espera-se que esta disciplina transmita conhecimento essencial sobre sistemas operacionais para fundamentar ainda mais a carreira dos estudantes de Tecnologia da Informação (TI). Objetivos da disciplina Esperamos que, até o final da disciplina, você: • Descreva o conceito de sistema operacional, tipos, composição e arquiteturas. • Explique conceitos de linguagem de baixo nível. • Analise a evolução dos computadores e seus sistemas operacionais. • Analise os diversos gerenciamentos realizados por um sistema operacional. • Identifique as interfaces de um sistema operacional. • Analise casos de uso de sistemas operacionais. 6 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS > FIGURA 1 - Abstração de níveis em ambiente computacional (âmbito de SO) 17 > FIGURA 2 - Raspberry PI 2 Model B 18 > FIGURA 3 - Exemplo de mainframe/data center 19 > FIGURA 4 - Componentes que caracterizam um sistema operacional 23 > FIGURA 5 - Arquitetura SO com núcleo monolítico 27 > FIGURA 6 - Arquitetura de SO micronúcleo 28 > FIGURA 7 - Arquitetura cliente-servidor 29 > FIGURA 8 - FIGURA 1 – Representação PCB 36 > FIGURA 9 - Diagrama de estados de processos. 38 > FIGURA 10 - Hierarquia de processos 39 > FIGURA 11 - Chaveamentode contexto 40 > FIGURA 12 - Especificações do processador Intel Core i7-8700T 44 > FIGURA 13 - Transição de estados de um thread Java 44 > FIGURA 14 - Congestionamento de trânsito 46 > FIGURA 15 - Hierarquia de memória 54 > FIGURA 16 - Overlay 58 > FIGURA 17 - Alocação particionada estática 59 > FIGURA 18 - Exemplo de fragmentação interna 60 > FIGURA 19 - Alocação particionada dinâmica 61 > FIGURA 20 - Exemplo de fragmentação externa 62 > FIGURA 21 - Swapping Out e Swapping In 64 > FIGURA 22 - Paginação 67 > FIGURA 23 - Segmentação 68 > FIGURA 24 - Segmentação 69 > FIGURA 25 - Vários dispositivos de entrada e saída. 73 > FIGURA 26 - Interação de portas em gerencia de dispositivos 74 LiSta De FiGUraS 7 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS > FIGURA 27 - Esquema representando controladores E/S, memória e CPU. 76 > FIGURA 28 - Arquitetura em camadas do gerenciamento de dispositivos 77 > FIGURA 29 - Gerenciador de dispositivos do sistema Windows 79 > FIGURA 30 - Camadas de softwares em gerência de E/S 80 > FIGURA 31 - Abstração de arquivos físicos 87 > FIGURA 33 - Estrutura de três tipos de arquivos 90 > FIGURA 34 - Atributos e significados 93 > FIGURA 35 - Diretório único compartilhado por todos os usuários. 94 > FIGURA 36 - Nível hierárquico ou árvore de diretórios. 94 > FIGURA 37 - Possibilidade de layout de sistema de arquivos. 95 > FIGURA 39 - Armazenamento encadeado usando tabela na memória. 97 > FIGURA 40 - Representação de arquivo compartilhado 98 > FIGURA 41 - Configuração de backup Windows 10 Professional 100 > FIGURA 42 - Terminal do interpretador Shell Bourne 105 > FIGURA 43 - Prompt de comando 105 > FIGURA 44 - GUI presente no MAC OS X 107 > FIGURA 45 - Abstração de uma rede de computadores 111 > FIGURA 46 - Figura 5 – Topologias de redes 112 > FIGURA 47 - Serviços/protolocos da internet 113 > FIGURA 48 - Serviços/protolocos da internet 114 > FIGURA 49 - Componentes do sistema Linux 117 8 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS LiSta De QUaDrOS > QUADRO 1 - Termos básicos 16 > QUADRO 2 - Observações relacionadas à comunicação interprocessos 42 > QUADRO 3 - Tipos de Deadlock. 48 > QUADRO 4 - Principais comandos reconhecidos pelo prompt no Windows 109 > QUADRO 5 - Principais comandos reconhecidos no Kurumin - Linux 110 9 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS SUmÁriO 1UNIDADE 2UNIDADE 1 cOnceitOS/FUnciOnaLiDaDeS e HiStÓricO De SiStemaS OperaciOnaiS 15 1.1 CONCEITOS INICIAIS 15 1.1.1 SISTEMA OPERACIONAL 16 1.1.2 TIPOS DE SISTEMAS OPERACIONAIS 20 1.1.2.1 TEMPO REAL 20 1.1.2.2 MONOUSUÁRIO 20 1.1.2.3 MULTIUSUÁRIO 21 1.1.2.4 MULTIPLATAFORMA 22 1.1.3 CARACTERÍSTICAS DE UM SISTEMA OPERACIONAL 22 1.1.3.1 ESCALONADOR DE PROCESSOS 23 1.1.3.2 GERENCIADOR DE MEMÓRIA 24 1.1.3.3 GERENCIADOR DE ENTRADAS E SAÍDAS 24 1.1.3.4 GERENCIADOR DE COMUNICAÇÃO INTERPROCESSOS (IPC) 24 1.1.3.5 GERENCIADOR DE SISTEMAS DE ARQUIVOS 25 1.1.4 ARQUITETURAS DE UM SISTEMA OPERACIONAL 25 1.1.4.1 MONOLÍTICA 26 1.1.4.2 EM CAMADAS 27 1.1.4.3 MICRONÚCLEO 28 1.1.4.4 CLIENTE-SERVIDOR 29 1.2 HISTÓRICO DE SISTEMAS OPERACIONAIS 29 1.3 PROGRAMAÇÃO E LINGUAGEM BAIXO NÍVEL 32 cOncLUSÃO 32 2 GerÊncia De prOceSSOS 34 2.1 GERÊNCIA DE PROCESSOS 34 2.1.1 ESTRUTURA DE CONTROLE PCB 35 2.1.2 ESTADOS DO PROCESSO 36 2.1.3 LIMITAÇÃO DE PROCESSOS (CPU BOUND E I/O BOUND) 37 2.1.4 TRANSIÇÃO DE ESTADOS 37 2.1.5 CRIAÇÃO E TÉRMINO DE PROCESSOS 38 2.1.6 HIERARQUIA DE PROCESSOS 39 2.1.7 CHAVEAMENTO DE CONTEXTO 40 2.1.8 INTERRUPÇÕES 41 10 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS 2.2 NTERPROCESS COMUNICATION - IPC 41 2.2.1 THREADS 43 2.2.2 CICLO DE VIDA DE THREADS 44 2.2.3 OPERAÇÕES 45 2.2.4 MODELO DE THREADS - USUÁRIO 45 2.2.5 MODELO DE THREADS - NÚCLEO 45 2.2.6 MODELO DE THREADS - HÍBRIDO 45 2.2.7 RELACIONAMENTO DE MODELOS DE THREADS 46 2.3 DEADLOCK 46 2.3.1 TIPOS DE OCORRÊNCIA DE DEADLOCK 47 2.4 RECUPERAÇÃO DAS OCORRÊNCIAS DE DEADLOCK 49 2.4.1 PREVENÇÃO DE DEADLOCK 49 cOncLUSÃO 50 3 GerÊncia De memÓria 52 3.1 TIPOS DE MEMÓRIA E ORGANIZAÇÃO 53 3.2 GERENCIANDO A MEMÓRIA 55 3.3 ESTRATÉGIA DE BUSCA 55 3.4 ESTRATÉGIA DE POSICIONAMENTO 56 3.5 ESTRATÉGIA DE SUBSTITUIÇÃO 56 3.6 ALOCAÇÃO DE MEMÓRIA 56 3.7 SOBREPOSIÇÃO - OVERLAY 57 3.8 ALOCAÇÃO PARTICIONADA 58 3.8.1 PARTICIONADA ESTÁTICA 59 3.8.2 PARTICIONADA DINÂMICA 61 3.9 TÉCNICAS DE SWAPPING E MEMÓRIA VIRTUAL 63 3.9.1 SWAPPING OUT / IN 63 3.10 MEMÓRIA VIRTUAL 65 3.10.1 ESPAÇOS DE ENDEREÇAMENTO E MAPEAMENTO 66 3.10.2 PAGINAÇÃO 67 3.10.3 SEGMENTAÇÃO 68 3.10.4 SEGMENTAÇÃO COM PAGINAÇÃO 68 cOncLUSÃO 70 3UNIDADE 11 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS 5UNIDADE 4UNIDADE 4 GerÊncia De DiSpOSitiVOS De entraDa e SaÍDa 72 4.1 DISPOSITIVOS DE ENTRADA E SAÍDA 72 4.1.1 PORTAS 74 4.1.2 CLASSIFICAÇÃO DE DISPOSITIVOS 75 4.2 CONTROLADORES DE DISPOSITIVOS (PERIFÉRICOS) 75 4.3 POLÍTICA DE GERENCIAMENTO DE E/S 77 4.3.1 CAMADA DE SUBSISTEMA 78 4.4 DEVICE DRIVERS 78 4.5 SOFTWARES DE ENTRADA E SAÍDA 80 4.5.1 OPERAÇÕES PROGRAMADAS 81 4.5.2 OPERAÇÕES DIRIGIDAS POR INTERRUPÇÕES 82 4.5.3 OPERAÇÕES DE ACESSO DMA 82 cOncLUSÃO 84 5 SiStemaS De arQUiVOS 86 5.1 EVOLUÇÃO DOS SISTEMAS DE ARQUIVOS 86 5.2 CONCEITOS BÁSICOS DE SISTEMAS DE ARQUIVOS 88 5.2.1 NOMEAÇÃO DE ARQUIVOS 89 5.2.2 ESTRUTURAÇÃO DE ARQUIVOS 90 5.2.3 FORMAS DE ACESSO 91 5.2.4 TIPOS DE ARQUIVOS 91 5.2.5 OPERAÇÕES EM ARQUIVOS 92 5.2.6 ATRIBUTOS DE ARQUIVOS 93 5.2.7 DIRETÓRIOS DE ARQUIVOS 93 5.2.8 CAMINHOS ABSOLUTOS X RELATIVOS 94 5.3 IMPLEMENTAÇÃO DE SISTEMAS DE ARQUIVOS 95 5.3.1 IMPLEMENTAÇÃO DE ARQUIVOS 96 5.3.1.1 MÉTODO DE ALOCAÇÃO CONTÍGUA 96 5.3.1.2 MÉTODO DE ALOCAÇÃO ENCADEADA 96 5.3.1.3 MÉTODO DE ALOCAÇÃO ENCADEADA COM USO DE TABELA 97 5.3.2 IMPLEMENTAÇÃO DE DIRETÓRIOS 97 5.3.3 ARQUIVOS COMPARTILHADOS 98 5.3.4 SEGURANÇA 99 cOncLUSÃO 101 12 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS 6 interFaceS; SiStemaS OperaciOnaiS De reDe e DiStriBUÍDOS. 103 6.1 INTERFACES EM SISTEMAS OPERACIONAIS 103 6.1.1 INTERFACE DE LINHA DE COMANDO 104 6.1.2 INTERFACE GRÁFICA DE USUÁRIO 106 6.2 INTRODUÇÃO À LINGUAGEM DE COMANDOS 108 6.2.1 WINDOWS 108 6.2.2 UNIX/LINUX 109 6.3 INTRODUÇÃO A SISTEMAS OPERACIONAIS DE REDE 111 6.4 INTRODUÇÃO A SISTEMAS DISTRIBUÍDOS 114 6.5 ESTUDO DE CASO 115 6.5.1 O SISTEMA OPERACIONAL LINUX 116 cOncLUSÃO 118 reFerÊnciaS BiBLiOGrÁFicaS 119 6UNIDADE 13 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS icOnOGraFia ATENÇÃO PARA SABER SAIBA MAIS ONDE PESQUISAR DICAS LEITURA COMPLEMENTAR GLOSSÁRIO ATIVIDADES DE APRENDIZAGEM CURIOSIDADES QUESTÕES ÁUDIOSMÍDIAS INTEGRADAS ANOTAÇÕES EXEMPLOS CITAÇÕES DOWNLOADS 14 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS OBJETIVO Ao final desta unidade, esperamos que possa: > Descrever os conceitos básicos de sistemas operacionais, suas características e arquiteturas. > Analisar a evolução histórica dos sistemas operacionais. > Explicar conceitos de linguagem de baixo nível, tais como ligadores, montadores e carregadores. UNIDADE 1 15 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS 1 CONCEITOS/ FUNCIONALIDADESE HISTÓRICO DE SISTEMAS OPERACIONAIS Nesta unidade, serão abordados os conceitos básicos de sistemas operacionais. Serão introduzidos os tipos de sistemas operacionais, suas características e diferentes arqui- teturas empregadas em diferentes tipos de hardware. Também será apresentada a concepção dos sistemas operacionais na história da computação de forma cronoló- gica. Ao final da unidade, relacionada à linguagem de baixo nível, haverá a conceitua- ção de ligadores, montadores e carregadores. Esta unidade, apesar de introdutória e conceitual, é muito importante para que sejam absorvidos conhecimentos mais complexos que serão vistos no decorrer da disciplina. 1.1 CONCEITOS INICIAIS Neste tópico, serão expostos os conceitos básicos necessários para fundamentar e auxiliar a entender sistemas operacionais: o que é um sistema operacional, sua im- portância e seu nível de operação em um ambiente computacional. O Quadro 1 oferece termos básicos para o auxiliar em consultas rápidas. Recomen- da-se retornar a este ponto quando não assimilar um termo específico, incluindo de outras unidades. 16 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS QUADRO 1 - TERMOS BÁSICOS TERMOS DESCRIÇÃO Jobs Uma tarefa. Conjunto de programas para serem executados. Linguagem de máquina Representa instruções de nível mais baixo. Memória virtual Permite executar programas maiores do que as memórias físicas. O SO aloca espaço para me- mória no HD. Processo Conjunto de ações em sequência, executadas para um objetivo esperado. Processamento de dados Realizar operações em dados para gerar saídas de regras estabelecidas. Processamento batch Feito em lotes, nos quais os jobs se apresentam como cartões perfurados e são armazenados em fitas. Processamento distribuído Aplicações executadas em vários processadores de forma espalhada. O acesso se dá por meio de redes locais e distribuídas. Processamento paralelo Várias aplicações executando ao mesmo tempo. Usual nos computadores atuais. Sistemas time-sharing Permitem executar utilizando parte do tempo do processador, diminuindo, assim, o seu tempo de ociosidade. Fonte: elaborado pelos autores baseando-se em MACHADO, 2007. 1.1.1 SISTEMA OPERACIONAL Um sistema operacional é um software intermediário entre um usuário e o hardware de um ambiente computacional. É ele quem faz o gerenciamento do hardware envol- vido. No decorrer desta disciplina, será demonstrado que os sistemas operacionais não compõem somente um desktop ou notebook, (PCs – computadores pessoais), como o computador, tablet ou smartphone em que você possa estar lendo este conteúdo. Em relação à finalidade, segundo Silberschatz (2011), um sistema operacional fornece um ambiente para o usuário executar programas com conveniência e eficiência. Um SO moderno fornece a base necessária para outros softwares executarem as fun- ções programadas. Tais aplicações dependem diretamente dele para acessar recur- sos de hardware. Um exemplo simples: pressupõe-se que você já teve contato com um editor de textos (MS Word, Notepad, etc.), certo? Tal aplicação instalada em um computador, para executar uma rotina de impressão de um arquivo textual, neces- 17 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS sita diretamente do sistema operacional para gerenciar a impressora, um dispositivo de saída. O mesmo acontece com o gerenciamento de arquivos ao salvar um docu- mento. Poderiam se listar diversos exemplos nesse sentido. Basta imaginar a utiliza- ção de uma aplicação em um computador que precise lidar com algum dispositivo ou acessar algum dado armazenado. A Figura 1 mostra de forma abstrata os níveis de um sistema computacional, envolvendo: • (1º) Nível de programas do próprio SO e aplicações do usuário. • (2º) Nível do sistema operacional. • (3º) Nível de hardware. FIGURA 1 - ABSTRAÇÃO DE NÍVEIS EM AMBIENTE COMPUTACIONAL (ÂMBITO DE SO) Componentes de hardware e periféricos (Exemplo: memória, HD, discos, impressora) Sistema operacional (Exemplo: Windows 10) So�wares do sistema e aplicações do usuário (Exemplo: editor de texto) Fonte: elaborado pelos autores, adaptado de SILBERSCHATZ, 2011. Observa-se na Figura 1 que acima da camada de aplicação (primeiro nível da figura), há diversas interações do usuário, como a utilização de um editor de textos. Vale lembrar que um sistema operacional nem sempre está relacionado a um PC como se pode estar habituado no cotidia- no. A Microsoft, por exemplo, criou uma versão do seu SO deno- minado Windows 10 IoT. A sigla IoT (Internet of Things) é defini- da como “internet das coisas”. Esse sistema operacional atua, entre outros, em placas Raspberry PI (exemplificada na Figura 2), que podem ser progra- madas para diversos fins, sendo o mais usual a automação residencial. A partir disso, um desenvolvedor escreve rotinas diversas utilizando os recur- sos disponíveis na placa. Já teve vontade de automatizar uma geladeira? 18 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS FIGURA 2 - RASPBERRY PI 2 MODEL B Fonte: Shutterstock, 2018. Abordando um pouco mais sobre IoT, não se pode esquecer das placas Arduino. O Ar- duino é uma plataforma ligada diretamente à robótica e eletrônica. Essas placas, di- ferentes das Raspberry mais complexas, operam basicamente com um micro contro- lador de baixa complexidade e possuem poucos recursos de memória. A plataforma Arduino já é bastante difundida mundialmente e é utilizada para criar de desde pro- jetos simples no âmbito de hardware (como prototipagem) até para apoiar projetos complexos. O funcionamento pode ser explicado de forma simples: a placa Arduino possui um bootloader e, ao ligá-la, carrega-se uma rotina programada previamente e que se executa de forma sequencial, podendo também ser colocada em repetição (loop). Pode-se, por exemplo, utilizá-la para programar o acendimento de lâmpadas observando se um botão é acionado, realizar ações em motores, utilizar sensores de proximidade ou temperatura e também automatizar alguma tarefa a distância com o uso de shields de rede (módulos) conectados à placa. 19 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS O mundo Arduino possibilita múltiplas funcionalidades. Recomendamos a você que pesquise mais a respeito, caso um dos seus objetivos seja a programação voltada para a eletrônica e robótica. Sobre sistemas operacionais, especificamente para o Arduino, existem iniciativas como o sistema duinOS, que aumenta o poder dessa grande pla- taforma. Criado com base no sistema FreeRTOS, o duinOS aumenta a capacidade da plataforma e passa a impressão de execução de tarefas simultâneas. Retomando a abordagem de sistemas operacionais, citam-se também os sistemas operacionais voltados para mainframe. Estes têm por função aperfeiçoar ao máximo o uso de hardware do ambiente computacional envolvido com um fim específico. Mainframes são grandes computadores que se dedicam ao processamento de dados em larga escala (Figura 3). Nesse caso, são sistemas operacionais com foco exclusivo em eficiência, e não em conveniências, como os PCs, smartphones ou tablets. FIGURA 3 - EXEMPLO DE MAINFRAME/DATA CENTER Fonte: Shutterstock, 2018. 20 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS 1.1.2 TIPOS DE SISTEMAS OPERACIONAIS Os tipos mais abrangentes de sistemas operacionais são: • Tempo real. • Monousuário (monotarefa/multitarefa). • Multiusuário e multiplataforma. Veja a seguir maisdetalhes sobre cada um deles. 1.1.2.1 TEMPO REAL Os sistemas operacionais de tempo real, conhecidos como Real-Time Operating Sys- tem (RTOS), são utilizados em máquinas e instrumentações específicas, como siste- mas de apoio a indústrias. Neles, a interface para o usuário não é o foco. O objetivo desse tipo de sistema é o gerenciamento de recursos. Mais à frente nesta disciplina, será estudado o que é cada tipo gerenciamento. Não se preocupe neste momento em saber detalhadamente cada gerência de um sistema operacional. Um exemplo de RTOS é o FreeRTOS. Pesquise mais a respeito na internet acessando o site oficial. 1.1.2.2 MONOUSUÁRIO Em sistemas monousuário, ao perceber o termo “um usuário”, compreenda-o como: a quantidade de usuários executando ações e compartilhando os recursos de uma mesma máquina na mesma hora, ou seja, de um mesmo hardware, no mesmo mo- mento de utilização. De forma simplificada, representa um usuário “logado” no siste- ma operacional naquele momento específico. Nesse tipo de sistema, (monousuário), temos duas divisões quanto às tarefas executadas. Veja: 21 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS • Monousuário/Monotarefa: somente um usuário realiza uma tarefa por vez. Podemos citar como exemplo o sistema PalmOS, que hoje já está descontinuado no mercado. • Monousuário/Multitarefa: sistemas operacionais como convivemos diariamente nos PCs. Um usuário pode executar um arquivo de música enquanto aguarda o download de um arquivo, ou seja, multitarefa. Não existem outros usuários simul- tâneos operando o hardware. Podemos citar como exemplo o Windows em diferentes ver- sões atuais, como o Windows 10 Home, distribuições Linux e o sistema iOS em dispositivos Apple. 1.1.2.3 MULTIUSUÁRIO Em sistemas operacionais multiusuário, vários usuários usam os recursos de um mes- mo ambiente computacional, no mesmo momento. Pode-se, então, definir: simulta- neamente, mais de um usuário compartilhando recursos de hardware em um mesmo sistema operacional. Exemplo: uma equipe de pessoas acessando um mesmo siste- ma simultaneamente e usando duas ou mais aplicações, também simultaneamente. Podemos citar como exemplo o Windows em diferentes ver- sões atuais, como o Windows 10 Home, distribuições Linux e o sistema iOS em dispositivos Apple. 22 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS É importante entender que o fato de um sistema operacional permitir o acesso via rede não determina que ele é um sistema multiusuário! Versões do Windows, como o Windows Server, permite existir vários usuários atrelados a ele via rede, mas este não é, teoricamente, um sistema operacional multiusuário. O Windows Ser- ver apresenta um usuário administrador e os demais usuários conectados a ele via rede. Ao executar as aplicações, estas estão, na verdade, sendo execu- tadas pelo usuário administrador, e não pelo usuário remoto. 1.1.2.4 MULTIPLATAFORMA Sistemas multiplaforma possibilitam instalação em diferentes plataformas de dispo- sitivos. Eles operam em diversas famílias de processadores, como Intel e AMD. Sistemas multiplataforma podem ser instalados em computa- dores desktop e notebook, celulares, etc. Um exemplo é o Win- dows 10, disponível para diversos tipos de dispositivos, até para o desenvolvimento de IoT como já informamos anteriormente. 1.1.3 CARACTERÍSTICAS DE UM SISTEMA OPERACIONAL Um sistema operacional moderno possui algumas características essenciais, confor- me vamos apresentar a seguir de forma abrangente. Ele se caracteriza pela presença de componentes que trabalham diretamente com o hardware da máquina envolvi- da. A Figura 4 ilustra os componentes de um sistema operacional. 23 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS FIGURA 4 - COMPONENTES QUE CARACTERIZAM UM SISTEMA OPERACIONAL Fonte: elaborado pelos autores, 2018. Perceba na Figura 4 que o sistema trabalha diretamente com os componentes. De forma resumida, os principais: processos, memória, E/S (entradas e saídas), sistema de arquivos e comunicação interprocessos. Vamos entender o que cada um deles de- sempenha nos próximos tópicos. É importante assimilar esses conceitos, então con- tinue a leitura com bastante atenção. 1.1.3.1 ESCALONADOR DE PROCESSOS Antes de se definir o que é escalonar processos, precisamos entender bem o que é um processo. Processo é um conjunto de ações em sequência, executadas para um objetivo esperado, em um tempo. Fique tranquilo! Nesta disciplina, o gerenciamento de processos será detalhado de forma completa. Partindo do que é um processo, pode-se então definir o escalonamento de processos. Escalonar processos, nada mais é que determinar quando um processo será executa- do em um processador e qual o tempo de execução. 24 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS 1.1.3.2 GERENCIADOR DE MEMÓRIA A partir do estudo de fundamentos de hardware, consegue-se conceituar o que é memória em um computador. Não vamos detalhar o conceito e as características de componentes de hardware nesta disciplina de sistemas operacionais. O gerenciador de memória no sistema operacional é o responsável pela alocação da memória (destinar e reservar espaço de memória), para os processos. Reveja no tópi- co 1.3.1 o conceito de processo, caso necessário. Além de alocação, o gerenciador de memória é responsável por determinar quando e como a alocação acontecerá e por decidir sobre isso quando a memória se apresentar totalmente preenchida. Assim como será apresentado o gerenciamento de processos, também será tratado o gerenciamento de memória. Nesse momento, é importante assimilar que o geren- ciamento de memória compõe o sistema operacional e o caracteriza. 1.1.3.3 GERENCIADOR DE ENTRADAS E SAÍDAS Percebe-se, por meio da terminologia, o conceito, certo? O gerenciamento de entra- das e saídas (E/S) tem a função de controlar as solicitações de entradas do usuário, como ações do teclado, mouse, câmera, entre outros, bem como solicitações de saí- da de dispositivos, como impressora, monitor ou projetor. A gerência de E/S também será apresentada em detalhes nesta disciplina. Apresen- ta-se neste ponto estudado somente a conceituação de características. 1.1.3.4 GERENCIADOR DE COMUNICAÇÃO INTERPROCESSOS (IPC) Esse conceito é o mais simples a ser assimilado, quando se trata da caracterização do sistema operacional: é responsável pela comunicação entre os processos, ou seja, a comunicação entre cada ação sequencial de aplicações operando no sistema ope- racional. 25 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS 1.1.3.5 GERENCIADOR DE SISTEMAS DE ARQUIVOS O gerenciador de sistemas de arquivos tem uma função muito importante no SO. Seu papel é organizar os dados e disponibilizar uma interface para acessá-los nos hardwares de armazenamento, como um disco rígido (HD). A seguir, será introduzido o conceito de arquiteturas de um sistema operacional. Va- mos lá? 1.1.4 ARQUITETURAS DE UM SISTEMA OPERACIONAL Já se sabe o que compõe o sistema operacional, agora será apresentado como po- dem ser dispostos os componentes ou, ainda, como podem ser arquitetados os com- ponentes dentro do sistema. Quando se fala em arquitetura, entende-se como se organiza e como funciona. Imagine uma casa: dizer que a casa possui quatro quartos é citar a composição da casa. Agora, como es- ses quartos estão dispostos na residência? Isso já é a arquitetu- ra. Um quarto pode se localizar em outro andar oufuncionar com um acesso diferente. Dica para sua carreira: o termo arquitetura se apresenta em muitas disciplinas relacionadas à tecnologia. Por exemplo, ar- quiteturas de desenvolvimento ou, ainda, para linguagens em disciplinas de programação. Pode-se programar orientado a objetos (uma forma moderna de se programar), como também utilizando uma arquitetura MVC, que é uma padronização moderna em linguagens de programação de softwares. 26 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS Quanto à arquitetura, os sistemas operacionais podem ser apresentados utilizando: • Arquitetura monolítica. • Arquitetura em camadas. • Arquitetura micronúcleo. • Arquitetura cliente-servidor. A seguir, conheça cada uma dessas arquiteturas. 1.1.4.1 MONOLÍTICA Nessa arquitetura, todos os componentes estão dentro do kernel, ou seja, interno ao núcleo do sistema operacional. É a arquitetura mais comum e antiga. Opa, kernel? O que é kernel? Não vamos aprofundar no conceito de kernel aqui. Vamos de- fini-lo apenas como núcleo do SO. O conceito de kernel é bas- tante amplo. Existem infinitos conceitos de kernel difundidos por diversos autores tratando dessa definição com muita pro- priedade. Você pode recorrer à bibliografia ao final deste material para se aprofundar, assim como à internet. Mas atenção! A web é um local de mui- tos equívocos e definições literalmente erradas. Desaconselha-se o estudo, por exemplo, por meio da Wikipédia. Existem ótimas informações, mas, infelizmente, também há muitos artigos que levam ao erro nas definições. Dessa forma, o que pode levar ao erro sem fontes científicas comprovadas, deve ser evitado. Fique atento! Uma fonte digna de conhecimento: Google Scholar, também conhecido como Google Acadêmico. É um Google científico! Lá se encontram diver- sos trabalhos e artigos embasados (muitos de outros países e em outros idiomas). Com certeza você poderá completar seus estudos com essa fer- ramenta, além de treinar sua fluência em inglês! Experimente pesquisar artigos relacionados a kernel e sistemas operacionais. 27 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS Veja na Figura 5 como se apresenta a arquitetura de SO com núcleo monolítico. Ela se mostra eficiente, com comunicação entre os componentes de forma direta. A desvantagem é a dificuldade para identificar possíveis problemas, sabendo que os componentes estão todos dentro do núcleo. FIGURA 5 - ARQUITETURA SO COM NÚCLEO MONOLÍTICO Fonte: DEITEL, 2008. 1.1.4.2 EM CAMADAS Os componentes dessa arquitetura são dispostos por camadas com agrupamento de tarefas parecidas. Uma camada fornece serviços à camada superior e faz comunica- ção com as vizinhas, tanto na superior como na inferior. A performance do sistema tende a ser prejudicada nessa arquitetura, pois uma requisição do usuário poderá passar por diversas camadas. Nessa comparação, o sistema monolítico apresenta me- lhor desempenho. 28 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS Acesse o portal Minha Biblioteca e consulte o livro Fundamen- tos de Sistemas Operacionais – Princípios Básicos (2011), do autor Abraham Silberschatz, no qual se apresenta a arquitetu- ra em camadas na Figura 2.14. Também, na página 60 da obra Sistemas Operacionais: Projetos e implementações (2008), do autor An- drew Tanenbaum, é abordado o sistema em camadas THE. É importante você sempre recorrer aos livros da bibliografia para completar seu conhe- cimento com muito mais informações do que as contidas neste material. Tenha várias visões de um mesmo assunto, porque isso enriquece seu aprendizado de forma imensurável. Dica: estudar para uma certificação de algo (linguagem de programação, por exemplo) em tecnologia, requer a leitura de muitos livros! 1.1.4.3 MICRONÚCLEO O sistema micronúcleo é dividido em módulos pequenos de forma escalável, sen- do apenas o módulo micronúcleo executado como um núcleo, ou seja, um kernel. Outros serviços são executados como processos do usuário, ficando a cargo do mi- cronúcleo gerir memória de baixo nível, comunicação interprocessos e sincronização desses processos. Dessa forma, outros serviços, como o próprio gerenciamento de processos, sistemas de arquivos e gerenciamento de dispositivos E/S, passam a exe- cutar fora. Veja na Figura 6 a representação de um sistema operacional micronúcleo. FIGURA 6 - ARQUITETURA DE SO MICRONÚCLEO Fonte: MACHADO, 2013. 29 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS Complemente seu conhecimento sobre a arquitetura micro- núcleo consultando o livro Arquitetura de Sistemas Operacio- nais, do autor Francis Machado, página 57. Esse autor explora de maneira empolgante os conceitos de arquiteturas de siste- mas operacionais. 1.1.4.4 CLIENTE-SERVIDOR A arquitetura de cliente-servidor é apresentada por meio dos servidores que forne- cem serviços e dos clientes que fazem uso deles. Uma rede local é um exemplo. Veja na Figura 7 um exemplo da arquitetura cliente-servidor. FIGURA 7 - ARQUITETURA CLIENTE-SERVIDOR Fonte: DEITEL, 2008. 1.2 HISTÓRICO DE SISTEMAS OPERACIONAIS Outras abordagens preferem apresentar o histórico de sistemas operacionais no iní- cio, antes da conceituação, mas aqui se preferiu fazer o inverso. Entende-se que pode ser mais interessante para você ser primeiramente introduzido aos conceitos (como 30 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS no tópico anterior) e, depois, apresentado à história dos sistemas. Dessa forma, com os conceitos anteriores já absorvidos, você consegue ter uma fundamentação básica e até mesmo desenvolver melhor o entendimento das fases que vamos lhe mostrar. Isso possibilitará desenvolver uma reflexão crítica de qual arquitetura era empregada, como eram os componentes e o tipo do sistema operacional na época. Vamos apre- sentar um resumo por décadas ilustrando de forma exemplificada o histórico dos sistemas operacionais. Considere este resumo como um guia para suas pesquisas. • Década de 1960 1. MIT cria o sistema Compatible Time-Sharing System (CTSS), um dos pioneiros de tempo compartilhado. 2. IBM cria o OS/360, sistema operacional que introduz o con- ceito denominado como máquinas de portes diferentes, mas contando com mesma arquitetura. 3. MIT, Bell Labs e General Electric participam de um projeto para imple- mentação do Multiplexed Information and Computing Service (MULTI- CS). Os focos do MULTICS: memória virtual usufruindo de segmentação/ paginação e suporte a vários processadores e usuários. Isso influenciou as próximas gerações de sistemas. 4. Ken Thompson concebe a primeira versão do Unix em 1969. • Década de 1970 1. Criação de uma versão do Unix para o minicomputador PDP-11 utilizando Assembly, uma linguagem de baixo nível. Os criadores foram Dennis Ritcher e Ken Thompson. 2. Fundação da Apple e Microsoft. O sistema operacional mais usado na época é o Control Program Monitor (CP/M). 31 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS • Década de 1980 1. Lançamento do IBM Personal Computer (PC), contando com sistema operacional DOS, da Microsoft. 2. Minicomputadores utilizam sistemas multiusuários. 3. Universidade Berkeley, na Califórnia, cria uma versão do Unix, a Berkeley Software Distribution (BSD). 4. Surgimento de estações de trabalho que usam SO monousuários/mul- titarefas. 5. Lançamento de sistemas com interface gráfica,como o Windows (da Microsoft) e OS/2 (da IBM). • Década de 1990 1. As fabricantes de sistemas operacionais passam a oferecer suporte a protocolos TCP/IP. 2. Linus Torvalds começa a criação do Linux em conjunto com diversos programadores. 3. A Microsoft lança o Windows NT, voltado para servidores de corporações. • Década de 2000 1. Sistemas operacionais exploram o conceito de processa- mento distribuído/paralelo. 2. A arquitetura de 64 bits é explorada ao máximo nos siste- mas operacionais. Interessante como os sistemas operacionais têm evoluído ao longo do tempo, não é mesmo? E para corroborar essa análise, vamos falar um pouco sobre programação e linguagem de baixo nível. Vamos lá? 32 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS 1.3 PROGRAMAÇÃO E LINGUAGEM BAIXO NÍVEL Vamos introduzir aqui apenas o conceito básico de três componentes de programa- ção de baixo nível: montadores, ligadores e carregadores. Acompanhe! Montadores: também conhecido como assemblers, traduzem para a linguagem de máquina os programas escritos na lingua- gem de montagem, conhecidos como Assembly language. Ligadores: também conhecidos como linkers, são responsáveis por juntar partes que compõem um programa, depois que elas foram montadas. Des- sa forma, programas grandes podem ser separados em módulos menores. Carregadores: também conhecidos como loaders, têm o papel de trans- portar um programa para a memória principal. Fique tranquilo! Haverá o aprofundamento desses conceitos nas aulas interativas que acompanham esta unidade. Cada um desses conceitos será abordado de forma completa. Bons estudos e boa aprendizagem! CONCLUSÃO Nesta unidade, você teve contato com conceitos básicos de sistemas operacionais, com o modo como eles funcionam na interligação entre usuário e hardware, com definições importantes de tipos de SO, componentes e arquiteturas. Além disso, es- tudou um breve histórico dos sistemas operacionais para guiar suas pesquisas e re- flexões dos conceitos abordados. Para finalizar, estudou três componentes básicos de linguagem de baixo nível, a qual será detalhada nas aulas interativas desta unidade. Os próximos tópicos serão mais complexos e menos introdutórios. Recomendamos que pesquise nas referências os conceitos estudados até aqui, conforme citamos de- talhadamente em partes do conteúdo, como os livros e links da internet. Bons estudos! 33 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS OBJETIVO Ao final desta unidade, esperamos que possa: > Identificar o que é o gerenciamento de processos em um sistema operacional. > Analisar estrutura PCB, estados de um processo, limitação, transição de estados, hierarquia e o que é interrupção. > Narrar o que são threads. > Avaliar o que são deadlocks, seus tipos, como se dá a recuperação e prevenção desses impasses UNIDADE 2 34 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS 2 GERÊNCIA DE PROCESSOS Um sistema operacional moderno é capaz de promover a execução de programas de forma organizada, evitando o acontecimento de erros e também conflitos. Isso só é possível através do gerenciamento dos programas em execução e da perfeita alocação de processos. Nesta unidade, será apresentado o detalhamento de como é realizado esse gerenciamento em um sistema operacional e como ocorre a divisão de tempo de processamento em um processador na execução de programas e os estados de um processo. Nesta unidade, pretende-se também definir as principais características de um processo, explicar o processamento das interrupções e apresen- tar como é realizada a comunicação interprocessos. 2.1 GERÊNCIA DE PROCESSOS Um ambiente computacional, como por exemplo, um computador pessoal ou um smartphone, precisam saber identificar o que devem executar de forma sequencial e organizada em seus processadores. Isso, para atender ao que está sendo esperado pelo usuário em sua percepção de uso simultâneo de aplicações e utilização de re- cursos do hardware em questão. Dessa forma, pode-se entender que o sistema ope- racional deve ser capaz de fornecer o chamado: processamento concorrente. Para atingir o objetivo de processamento concorrente, o sistema precisa realizar a ordenação da execução de processos, permitindo que não ocorram conflitos. Par- tindo desse princípio, o sistema operacional realiza o escalonamento de processos. Relembrando o conceito, como vimos na unidade 1: escalonar processos, nada mais é que determinar quando um processo será executado em um processador, além do tempo de execução. Anteriormente, definimos processo de uma forma simplificada, sendo: conjunto de ações em sequência, executadas para um objetivo esperado, em um tempo. A partir de agora vamos abstrair esse conceito entendendo que processo é um programa em execução. 35 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS Processo não significa programa, visto que um programa pode ser executado várias vezes criando vários processos. Cada execução de um programa cria-se um processo. Segundo Deitel (2008), não se pode entender processo sendo programa. Processo é um programa sendo executado, enquanto programa pode ser definido como sendo uma entidade. Um exemplo para facilitar essa compreensão: ao iniciar o aplicativo bloco de notas no Windows, inicia-se o processo notepad.exe. Iniciando novamente o bloco de notas, será criado um novo processo notepad.exe. Veja na prática! Em versões do sistema Windows, o atalho Ctrl+Shift+Esc executa o gerenciador de tarefas do sistema. Percebe-se na guia processos os aplicativos em execução, e em versões como o Windows 10, como são exibidos a utilização de CPU, memória, disco e rede. Experimente visualizar os processos em execução de um computador, você mesmo, utilizando este atalho. Perceba também que existem processos do próprio sistema em execução, além dos aplicativos que você está utilizando, inclusive o próprio gerenciador de tarefas. 2.1.1 ESTRUTURA DE CONTROLE PCB Para gerenciar os processos, tem-se uma estrutura para controlá-los, afinal para existir desempenho eficiente, é necessária uma organização. Tal estruturação é feita através do bloco de controle de processos, em inglês: Process Control Block – PCB. O PCB, conforme ilustrado na FIG. 1, é um bloco que reúne diversas informações referentes ao processo, como: • Número designado ao processo (process identification number - PID) • Estado do processo • Contador de programa 36 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS • Registradores da CPU • Informações de scheduling da CPU • Informações de gerenciamento da memória • Informações contabilização • Informação de status de E/S FIGURA 8 - FIGURA 1 – REPRESENTAÇÃO PCB Fonte: SILBERSCHATZ, 2011. É importante ressaltar que a estruturação do PCB se difere entre sistemas operacio- nais. Isso quer dizer que, em um sistema operacional Windows, a estrutura da tabela PCB é apresentada de forma diferente de sistemas operacionais Linux, por exemplo. 2.1.2 ESTADOS DO PROCESSO O tempo do processo, ou seja, o seu ciclo de vida, é gerenciado pelo sistema opera- cional e apresenta-se como: • Novo: o estado em que o processo é criado. • Em execução: o estado em que as instruções desse processo estão sendo exe- cutadas. • Em espera: o estado em que o processo está aguardando acontecimento de algum evento (como, por exemplo, término de uma operação de entrada/saída). 37 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pelaportaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS • Pronto: o estado em que o processo está esperando ser atribuído a um pro- cessador. • Concluído: o estado em que o processo finalizou a execução. 2.1.3 LIMITAÇÃO DE PROCESSOS (CPU BOUND E I/O BOUND) Os processos fazem uso de processamento de CPU e também de dispositivos de en- trada ou saída. Quando fazem utilização por longo período do CPU, são chamados de processos limitados pela CPU ou CPU bound. Já quando os processos fazem muita utilização de dispositivos de E/S e muito pouco de CPU, são conhecidos como proces- sos limitados pela E/S ou I/O bound. É importante entender que os processos se caracterizam pelo tempo de uso da CPU, não sendo caracterizados pelo tempo que estão aguardando por dispositivos de entradas e saídas. 2.1.4 TRANSIÇÃO DE ESTADOS Como vimos, os processos possuem um ciclo de vida e, dessa forma, são criados, exe- cutados, aguardam em espera até serem concluídos. Para que os processos mudem de estado, é preciso um evento para que isso ocorra, que pode ser realizado através, por exemplo, do modelo de três estados de transição. Este modelo consiste em: • Pronto • Em execução • Bloqueado Pode-se entender, através do exemplo, quando um usuário envia um arquivo para impressão. Desse modo, o processo envolvido entra na lista de processos com estado: pronto. Ao chegar ao topo da fila de processos e com o processador livre, o processo irá transitar para o estado: em execução. Estando em execução, o processo irá aguar- 38 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS dar a operação de E/S (neste exemplo, a operação da impressora) e transita para o estado: bloqueado. Quando termina de operar o dispositivo de E/S, o processo irá transitar para o estado: pronto. Veja o diagrama de estados de processos na FIG. 2. FIGURA 9 - DIAGRAMA DE ESTADOS DE PROCESSOS. Fonte: SILBERSCHATZ, 2011. Faça a leitura complementar sobre estados de um processo, consultando o livro Fundamentos de Sistemas operacionais (2011), do autor Abraham Silberschatz, p. 64. 2.1.5 CRIAÇÃO E TÉRMINO DE PROCESSOS Os processos são criados partindo de, ao menos, quatro eventos principais, sendo eles: • Quando se inicia o sistema. • Um processo sendo executado e realiza uma chamada de sistema para cria- ção de processos. • Um usuário realiza requisição para criar um processo. • Quando se inicia uma nova tarefa. 39 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS Depois que executam seu papel, os processos são terminados, por exemplo, quando: • De forma normal e voluntária. • Por erro voluntário. • Por erro fatal e involuntário. • Por cancelamento através de processo diferente, involuntário. 2.1.6 HIERARQUIA DE PROCESSOS Um processo pode gerar outros processos e, dessa forma, se define: processo-pai e processos-filhos, conforme ilustrado na FIG. 3. Nesse contexto, um processo-pai pode ter vários processos-filhos. Partindo desse entendimento, forma-se uma árvore de processos. FIGURA 10 - HIERARQUIA DE PROCESSOS Fonte: Elaborado pelos autores. Baseado em DEITTEL, 2008. Em relação à execução de processos entre processos-pai e processos-filhos, existem duas possibilidades. Segundo Abraham Silberschatz (2011), é informado: Quando um processo cria um novo processo: (1) O pai continua a ser execu- tado concorrentemente com seus filhos. (2) O pai espera até que alguns de seus filhos ou todos eles sejam encerrados. Também há duas possibilidades quanto ao espaço de endereçamento do novo processo: (1) O processo filho é uma duplicata do processo pai (ele tem o mesmo programa e dados do pai). (2) O processo filho tem um novo programa carregado nele (SILBERSCHATZ, 2011, p. 70). 40 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS 2.1.7 CHAVEAMENTO DE CONTEXTO O chaveamento de contexto é utilizado pelo sistema operacional para interromper um processo de estado em execução, para então iniciar um processo de estado pron- to. A FIG. 4 ilustra a mudança entre os processos demonstrando um exemplo, para você assimilar este conceito: cenário: Processo A = Em execução. Processo B = Pronto. Para acontecer o chaveamento de contexto, o kernel salva o contexto da execução de (A) na PCB e carrega o contexto da execução de (B). FIGURA 11 - CHAVEAMENTO DE CONTEXTO Fonte: DEITTEL, 2008. Enquanto acontece o chaveamento de contexto, o sistema operacional não pode executar outros processos. Dessa forma, ele deve ser realizado em tempo mínimo. 41 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS 2.1.8 INTERRUPÇÕES interrupção é um sinal de hardware que informa a ocorrência dos eventos, tal como, finalização de gravação de um DVD. As interrupções podem ser: Síncronas: ocasionada por execução de instrução de um processo (threads. Veremos adiante o conceito de threads). assíncronas: ocasionadas por execução sem relação com instrução de um processo (thread) a qual está em execução. 2.2 NTERPROCESS COMUNICATION - IPC Na unidade anterior, foi abordado minimamente o conceito de IPC como um com- ponente do sistema operacional, e vamos agora aprofundar esse conhecimento. A comunicação interprocessos possibilita, por exemplo, que um editor de textos (pro- cesso) envie um arquivo para ser impresso. Nesse caso, vemos claramente dois pro- cessos se comunicando. Os processos podem ser classificados neste contexto de co- municação como independentes ou cooperativos. • Independentes: Quando não afeta outros processos em execução e também não é afetado por outros. • Cooperativos: Quanto afeta outros, ou é afetado, e também quando compar- tilha dados com outros processos. A cooperação entre os processos se dá por algumas razões: compartilhamento de informação; velocidade no processamento; modularidade; conveniência; Faça a leitura complementar sobre IPC consultando o livro Fundamentos de Sistemas Operacionais (2011, p. 72), do autor Abraham Silberschatz. 42 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS No quadro 1, são relacionados algumas observações inerentes à comunicação inter- processos - IPC. QUADRO 2 - OBSERVAÇÕES RELACIONADAS À COMUNICAÇÃO INTERPROCESSOS Observação Descrição Quanto a sinais: Sinal é uma interrupção de software que não permite a troca de dados inter- processos. Dessa forma eles dependem do SO e dos sinais gerados. O sistema operacional que determina qual pro- cesso receberá o sinal e como vai res- pondê-lo. São três maneiras que um processo responde ao sinal: o processo captura, ignora ou mascara o sinal. Quanto à troca de mensagem: O SO deve sincronizar o uso do espaço de memória e ele fará isso por meio de troca de mensagens. Essa troca aconte- ce no pipe, uma região compartilhada da memória. Quanto à condição de corrida: Trata-se de uma falha no sistema operacio- nal que acontece quando dois processos leem ou escrevem em um dado comparti- lhado, e o resultado depende diretamente da sequência de quem executa. Quanto a regiões críticas: Trata-se da parte do programa em que será preciso acessar memória compar- tilhada. Ao evitar que dois processos entrem em regiões críticas simultanea- mente, evita-se as condições de corrida explicadas anteriormente. Fonte: Elaborado pelos autores. 43 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS 2.2.1 THREADS Graças às threads existe um grandeaumento de eficiência nos sistemas. Uma apli- cação pode através do beneficiamento do uso de threads, executar tarefas paralela- mente. Até agora, você assimilou que processos são programas em execução. Nesses progra- mas, existem linhas de instrução que são chamadas threads. Dessa forma, pode-se concluir que threads é divisão de um programa em execução (processo), em várias tarefas. Com isso, a comunicação entre essas divisões de processos, ou seja, a comu- nicação entre threads de um mesmo processo é mais eficiente, pois compartilham o mesmo espaço de endereçamento, além de variáveis globais. A utilização de threads está relacionada diretamente com a estrutura do SO e ao processador, no âmbito de suporte para utilização. A FIG. 5 mostra os detalhes de um processador Intel. Um processo que possui diversas threads é denominado multithreads e, logicamen- te, processos monothreads possuem somente uma thread. Um servidor web, por exemplo, por receber muitas requisições de usuários, é multithreads. Caso fosse monothread, poderia então atender somente a um usuário em cada vez. Para ficar mais claro, pode-se imaginar uma aplicação como um editor de textos. Po- de-se existir um thread específico para lidar com elementos da parte gráfica, e outro thread, por exemplo, para atender à utilização do mouse. 44 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS FIGURA 12 - ESPECIFICAÇÕES DO PROCESSADOR INTEL CORE I7-8700T Fonte: INTEL, 2018. O processador ilustrado na FIG. 5 apresenta em suas especificações o suporte a 12 threads, havendo seis núcleos neste processador. Dessa forma, 12 instruções poderão ser processadas de acordo com cada núcleo do processador, ou até seis processos simultâneos. 2.2.2 CICLO DE VIDA DE THREADS Da mesma forma que os processos, as threads possuem também estados em seu ciclo de vida. A FIG. 6 demonstra a transição de estados de um thread em linguagem de programação Java. FIGURA 13 - TRANSIÇÃO DE ESTADOS DE UM THREAD JAVA Fonte: DEITEL, 2008, p. 93. 45 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS 2.2.3 OPERAÇÕES Threads realizam diversas operações, tais como: criar, sair, suspender, retornar, dormir, acordar, cancelar e associar. Veremos os significados principais: • criação: semelhante à criação de processo. Diferencia-se pela atribuição do ID do thread e pelo contador de programa, sendo iniciado por um processo. • cancelamento: pode ser cancelado por outro thread ou processo antes do seu próprio tempo. • associação: operação ao qual um thread se associa a outro. O resultado de associação é que um thread não entrará em execução até o primeiro seja can- celado, ou seja, o thread primário deve ser terminado. 2.2.4 MODELO DE THREADS - USUÁRIO Threads de usuário são criados pela aplicação desenvolvida através do uso de biblio- tecas. Tais bibliotecas estabelecem rotinas que através da sua utilização, os aplicativos possam criar e cancelar threads, além de trocar mensagens e escalonar os threads. 2.2.5 MODELO DE THREADS - NÚCLEO Nos Threads de núcleo, os mesmos são criados pelo kernel do SO através de roti- nas de gerenciamento e sincronização. Diferentemente de threads de usuários, nos threads de núcleo o SO sabe que existem todos os threads. 2.2.6 MODELO DE THREADS - HÍBRIDO Combina vantagens de threads de usuários e também de threads de kernel. Um mes- mo processo pode conter threads de núcleo, e neles poderão existir diversos threads de usuários. Nesse modelo mais flexível, as aplicações são criadas com threads de usuário em associação com os threads de núcleo. 46 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS 2.2.7 RELACIONAMENTO DE MODELOS DE THREADS modelo de relacionamento muitos-para-um: vários threads de usuário são mapea- dos para um único thread de núcleo. modelo de relacionamento um-para-um: um thread de usuário mapeado para um thread de núcleo. modelo de relacionamento muitos-para-muitos: Vários threads de usuários conec- tam a vários threads de núcleo, mas sendo em menor ou igual em quantidade, com- parado ao número de threads de usuário. 2.3 DEADLOCK É simples entender o conceito de deadlock em sistemas operacionais fazendo uma simples analogia com o trânsito de veículos em uma cidade. Perceba na FIG. 7 um congestionamento de veículos entre duas vias. FIGURA 14 - CONGESTIONAMENTO DE TRÂNSITO Fonte: SHUTTERSTOCK, 2018. 47 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS O congestionamento de automóveis em vias no trânsito é o mesmo que ocorre entre processos e recursos. Nesse exemplo, os carros são os processos, e as vias de trânsito, os recursos. Em sistemas operacionais, o congestionamento é chamado de deadlock ou também impasse. Pode-se então definir deadlock como: impasse ou Deadlock: Dois ou mais processos fazem requisição para utilizar recursos do sistema simultaneamente, acontecendo bloqueio entre eles. Os impasses acontecem, por exemplo, por causa do compartilhamento de recursos do SO. Existem quatro condições necessárias para acontecer deadlocks. 1. exclusão mútua: cada recurso só pode ser alocado a um recurso por vez. O recurso em questão só estará em uma de duas situações: alocado a um único processo ou também liberado. 2. espera por recursos: um processo aguarda pela utilização de outros processos, além dos que já estão alocados a ele. 3. não preempção: um recurso não é liberado de um processo por necessitar uti- lizá-lo em outro(s) processo(s). 4. espera circular: um processo aguarda por recurso já em alocação de outro pro- cesso. Para acontecer deadlock, todas as condições devem acontecer ao mesmo tempo. 2.3.1 TIPOS DE OCORRÊNCIA DE DEADLOCK Observa-se no QUA. 2 os tipos de deadlock, ou seja, os tipos de falhas que podem acontecer em um sistema operacional. 48 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS Um deadlock é um erro de programação? Não! Deadlock é considerado uma falha, não um erro. Acontece quando processos tentam acessar simultaneamente um recurso. No exemplo do trânsito, o cruzamento não possui sua via de tráfego errada, existe uma falha no excesso de veículos. QUADRO 3 - TIPOS DE DEADLOCK. Tipo Descrição De tráfego: Como os congestionamentos de trânsito, que ocasio- nam parada de tráfego. No momento de alocar recursos: Recursos considerados dedicados são os que podem ser utilizados por diversos processos, mas apenas po- dem usar um recurso de cada vez. Exemplo: a im- pressora. De adiantamento/blo- queio indefinido: Ocorre quando um processo precise esperar indefi- nidamente, no momento em que outros processos operem no sistema. O adiantamento/bloqueio inde- finido pode acontecer por decisões de alocar recur- sos ou também por técnicas ao escalonar os proces- sos. Evita-se tipo de deadlock, elevando prioridade do processo enquanto ele aguarda. Saiba mais sobre esse deadlock pesquisando pelo termo: inanição; starvation. Em sistemas com uso de spool: Simultaneous peripheral operation on-line – Spoo- ling, é uma técnica ao qual se utiliza do buffer (área em disco) para armazenar dados que irão para uma impressora, por exemplo. O deadlock de spooling acontece quando serviços que estão em estados de pronto travam por falta de espaço no disco para o ar- quivo de spool. Fonte: Elaborado pelos autores. 49 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS 2.4 RECUPERAÇÃO DAS OCORRÊNCIASDE DEADLOCK Para que aconteça o deadlock, é necessário que aconteça as condições conforme abordamos no início desta unidade, sendo elas: exclusão mútua, espera por recursos, condição de não preempção e a espera circular. Quando o sistema apresenta dea- dlock, a saída de recuperação é eliminar umas das quatro condições. É importante saber que neste momento de recuperação de impasses (deadlocks), os processos que estejam envolvidos irão perder seus trabalhos. Recuperar o sistema em deadlock não é uma tarefa simples. Como dito, a alternativa é eliminar um processo envolvido e proceder com a liberação de recursos acionados, finalizando, dessa forma, a condição de espera circular. 2.4.1 PREVENÇÃO DE DEADLOCK Partindo do entendimento que são necessárias quatro condições para acontecer um deadlock, obviamente a prevenção se dá pensando em maneiras de tentar garantir que ao menos uma não aconteça. O algoritmo do banqueiro é uma das formas usadas para se evitar deadlocks. Ele se uti- liza de técnicas de escalonamento de processos para tratar da prevenção de impasses. Você poderá aprofundar seu conhecimento sobre o algoritmo do banqueiro, consultando o tópico Evitação de impasses do livro Sistemas operacionais: projetos e implementação (2008, tópico 3.3.6, p. 239), do autor Andrew Tanenbaum. 50 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS CONCLUSÃO Nesta unidade, você teve contato com os principais assuntos relacionados ao geren- ciamento de processos, suas divisões (threads) e os impasses ou falhas (deadlocks). Recomenda-se que seus estudos em gerenciamento de processos sejam aprofun- dados com a leitura dos livros da bibliografia básica e complementar deste material. Na próxima unidade, trataremos do gerenciamento de memória em sistemas opera- cionais. Bons estudos! 51 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS OBJETIVO Ao final desta unidade, esperamos que possa: > Entender o que são memória principal e memória secundária > Compreender estratégias adotadas para melhoria de desempenho > Compreender alocação de memória, e formas de alocação de processos. > Compreender técnicas de swapping in e swapping out > Compreender o que é memória virtual e ser introduzido às formas de implementa-la > Analisar problemas da gerência de memória, como fragmentação e thrashing. UNIDADE 3 52 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS 3 GERÊNCIA DE MEMÓRIA Como são realizadas as alocações dos processos que estudamos na unidade anterior? Podemos considerar a memória como um componente que se comunica diretamen- te com o processador, em qualquer ambiente computacional que realize processa- mento de instruções. Entender como a memória exerce esse papel é importante para diversas áreas de tecnologia da informação, principalmente para profissionais que atuam com análise e desenvolvimento de sistemas/aplicações. Como exemplo, temos as carreiras de desenvolvimento voltadas para dispositivos móveis. O desafio de pro- gramar aplicações em diferentes plataformas de hardware de smartphones e tablets requer do desenvolvedor/analista uma base sólida de gerenciamento de recursos, e, a memória talvez (dependendo do projeto) seja um dos recursos mais essenciais. Existem arquiteturas de hardware com pouca memória principal e mesmo assim é necessário que os aplicativos operem perfeitamente, também neles. Já parou para pensar no desafio de programar o consagrado aplicativo Whatsapp para diversas ver- sões do sistema operacional Android? Apenas como informação, em Junho de 2018 o Whatsapp opera em aparelhos a partir da segunda versão do sistema Android, sendo a sétima versão a mais atual nesta data, continuando em constante evolução. A memória faz um papel importante em um sistema operacional, pois graças a ela são armazenados dados para serem executados pelo processador ou também são armazenados dados que já foram executados pelo processador. De modo geral, uma memória pode armazenar dados temporários ou permanentes, dependendo de sua forma de fabricação. Para quem já tem vivência com tecnologia é simples entender o que é uma memó- ria, caso seja o seu caso, aproveite este momento para completar seu conhecimen- to. Convivemos diariamente com o termo “memória”, por exemplo, no momento de adquirir um novo smartphone, certo? Pois bem, quando somos atraídos por campa- nhas de marketing, nos informando que tal aparelho possui 2gb memória, se trata da memória de acesso aleatório, Random Access Memory – RAM, ou seja, a chamada memória RAM. Conforme figura 1 é apresentada a memória RAM de um computa- dor pessoal, definida como memória volátil. Isso quer dizer que se trata de um tipo de memória que não mantém os dados salvos quando não existe energia no ambiente computacional. 53 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS Não confunda memória RAM com espaço de armazenamento interno / memória de armazenamento. A memória RAM influencia no desempenho do sistema e não em questões de espaço para armazenamento de dados do usuário, como exemplo, espaço para aplicações, fotos e vídeos. A memória RAM está presente em computadores pessoais - PCs, notebooks, servido- res e diversos ambientes computacionais. Logicamente, o seu formato físico varia de acordo com a plataforma de hardware. Nos próximos tópicos dessa unidade, será percebido como a memória se organiza e como se da à alocação de memória, swapping e memória virtual. Assimilar o ge- renciamento de memória é algo importante na disciplina de sistemas operacionais. Vamos iniciar os estudos apresentando os tipos de memória e abordar a sua organi- zação. 3.1 TIPOS DE MEMÓRIA E ORGANIZAÇÃO Como vimos anteriormente, temos a memória RAM presente em diversos tipos de ambientes computacionais, mas e o disco rígido (HD) de um computador pessoal? HDs e outros tipos de armazenamento, como DVDs, por exemplo, também são con- siderados memórias, mas estes são denominados como memórias secundárias. Já a memória RAM é considerada a memória principal. Em relação às características, as memórias são organizadas por: • Custo por bit • Sua capacidade de armazenamento • Tempo de acesso • Frequência de acesso à memória, pelo processador. • • 54 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS Dessa forma temos uma hierarquia conforme figura 2. No alto da hierarquia temos a memória interna/registradores, cache e memória RAM. No nível do meio se apre- senta memórias secundárias como exemplo: HD, CD, DVD, etc. No nível mais abaixo temos o armazenamento de segurança. FIGURA 15 - HIERARQUIA DE MEMÓRIA Fonte: Elaborado pelos autores, adaptado de SILBERSCHATZ, 2011. Quanto mais alto na hierarquia, “mais caras” são memórias e com menor espaço de armazenamento, além de serem mais rápidas e acessadas mais frequentemente pelo processador. Sabemos que os programas são armazenados em memórias secundárias, como nos HDs, mas o processador os executa na memória principal. Dessa forma, precisa acon- tecer uma transferência entre memoria secundária para a memória principal. Como vimos na primeira unidade de nossos estudos, um dos componentes do siste- ma operacional é o gerenciador de memória. Agora iremos nos aprofundar em como acontece este gerenciamento. 55 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS 3.2 GERENCIANDO A MEMÓRIA O gerenciamento dememória é o componente do SO que tem a responsabilidade de alocar espaço de memória aos processos, como vimos na segunda unidade. Dessa forma, temos uma clara integração entre processos e memória, certo? Para acontecer o gerenciamento de memória foram pensadas estratégias para defi- nir como se obter o melhor desempenho do uso da memória principal. Estas estraté- gias são classificadas como: • Estratégias de busca, • Estratégias de posicionamento • Estratégias de substituição. para não esquecer: O gerenciamento de memória se dá através de estratégias para obtenção de melhor desempenho da memória principal de um sistema operacional. Vamos entender nos próximos tópicos, de forma objetiva, cada uma das estratégias de gerenciamento de memória. 3.3 ESTRATÉGIA DE BUSCA Consiste na transferência dos dados entre memória secundária e memória principal, ou seja, dados de um HD para memória RAM, por exemplo. Nas estratégias de busca, pode-se existir a classificação de busca sob demanda ou classificação como busca antecipada. 56 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS • Na classificação sob demanda, o que era utilizado antigamente, o sistema faz uma cópia dos dados para a memória principal quando um programa faz re- ferencia aos dados. • Atualmente os sistemas operacionais adotam a estratégia de busca anteci- pada, onde os dados são copiados para a memória principal, são dados que ainda não foram utilizados/requisitados. 3.4 ESTRATÉGIA DE POSICIONAMENTO Na estratégia de posicionamento, o SO determina o local da memória da principal que os dados são gravados. As estratégias de posicionamento tem a responsabilida- de de definição deste local. 3.5 ESTRATÉGIA DE SUBSTITUIÇÃO Na estratégia de substituição a responsabilidade é realizar a troca de dados da me- mória principal quando ela se apresentar totalmente ocupada. Dessa forma, essa es- tratégia consiste em definir quando os dados devem ser retirados para disponibilizar espaço para armazenar outros dados na memória principal. 3.6 ALOCAÇÃO DE MEMÓRIA Nos primeiros sistemas operacionais voltados para computação de grande porte, a organização da memória se dava em duas partes distintas. Nessa época o SO poderia ficar na parte inferior da RAM e na parte superior era alocado o programa do usuário. Dessa forma, nessa organização existia apenas um programa que poderia entrar em execução, sendo menor ou igual ao espaço destinado. Quando surgiram os primeiros computadores pessoas, os drivers de dispositivos eram salvos na memória ROM, e o SO também era armazenado na parte inferior da me- mória RAM. 57 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS Você percebeu que falamos de memória ROM e também memória RAM? As memórias ROM diferentemente de memória RAM, são memórias não voláteis. Você pode completar seus estudos pesquisando artigos no Google Scholar, pelo termo: memória ROM. Em sistemas monousuários dessa época, ao qual a memória principal carregava o SO, uma alternativa para escapar do limite de espaço para execução do programa do usuário, é a sobreposição – overlay. Os projetistas tinham que criar programas meno- res ou de igual tamanho a memória principal (RAM) disponível. 3.7 SOBREPOSIÇÃO - OVERLAY A sobreposição é ação de divisão de programas em blocos lógicos, para então serem alocados na memória principal. Dessa forma, não existindo a necessidade do bloco permanecer na memória, ele pode ser substituído por outro, liberando memória. Fa- zendo overlay, os programadores estendiam o tamanho de memória principal, onde as áreas de overlay eram definidas por eles. Assim, os programas poderiam ter um ta- manho maior do que a memória principal, mas fisicamente a memória não alterava seu tamanho. Segundo DEITEL (2008, p. 244) com a sobreposição, os programadores podiam es- crever programas maiores do que a memória real, mas o gerenciamento do uso das sobreposições aumentava a complexidade do programa, e por consequência o custo de desenvolver. Vamos exemplificar a sobreposição (overlay) considerando uma aplicação (programa) com três módulos: • Módulo principal • Módulo de cadastro (independente) • Módulo de impressão (independente) Observação: Considere que a inde- 58 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS pendência dos módulos de cadastro e de impressão, nos informa que quando um módulo estiver presente na memória para ser executado o outro não ne- cessita estar presente. Neste exemplo, o módulo principal da aplicação é comum aos outros dois módulos. Dessa forma, o módulo principal permanece na memória enquanto o programa esti- ver em execução. Conforme figura 3, o tamanho da memória principal não é suficien- te para todo o programa, e utilizando overlay, temos um espaço comum na memória para cadastramento e impressão poderem compartilhar (área de overlay). FIGURA 16 - OVERLAY Fonte: MACHADO, 2013 3.8 ALOCAÇÃO PARTICIONADA Muita atenção a partir daqui, o entendimento de alocação e problemas de fragmen- tação que iremos estudar se baseia no perfeito entendimento dos tópicos a seguir, como premissa, sendo a alocação particionada. Com a evolução dos sistemas e introdução de multiprogramação, foi necessário que muitos programas estivessem na memória principal simultaneamente. Dessa forma houve a necessidade de programar novos meios de gerenciamento da memória. 59 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS Vamos entender agora dois meios de alocação: • Alocação particionada estática • Alocação particionada dinâmica 3.8.1 PARTICIONADA ESTÁTICA Na alocação particionada estática, também conhecida como fixa, a memória é divi- dida em tamanhos fixos. Essa forma de alocação foi bastante utilizada nos primei- ros sistemas multiprogramáveis. Tal forma de divisão era definida na inicialização do sistema levando em consideração o tamanho dos programas. Na figura 4 podemos notar que cada partição era usada por um único programa, e o processador atuava alternando entre os diversos programas que constavam em cada partição. FIGURA 17 - ALOCAÇÃO PARTICIONADA ESTÁTICA Fonte: MACHADO, 2013 A alocação de partições de forma fixa causava a chamada fragmentação interna, pois os programas não usavam o tamanho total das partições e dessa forma parte da memória não era utilizada. Isso pode ser visto no exemplo da figura 5, onde os programas A, C e E não ocupam por completo o espaço de partições ao qual estão alocados, deixando como espaço livre: 1kb, 3kb e 5kb de áreas livres na memória principal, respectivamente. 60 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017SUMÁRIO SiStemaS OperaciOnaiS FIGURA 18 - EXEMPLO DE FRAGMENTAÇÃO INTERNA Fonte: MACHADO, 2013 Ainda na alocação particionada estática, aconteceu uma evo- lução dos compiladores e montadores da linguagem de baixo nível, onde em primeiro momento acontecia a alocação está- tica absoluta e posteriormente alocação estática realocável. Para completar seu estudo a respeito dessas formas de alocação (absoluta e realocável), consulte o livro Arquitetura de Sistemas Operacionais do au- tor Francis Machado – capítulo 9, disponível no sistema virtual da Minha biblioteca. 61 FACULDADE CAPIXABA DA SERRA/EAD Credenciada pela portaria MEC nº 767, de 22/06/2017, Publicada no D.O.U em 23/06/2017 SUMÁRIO SiStemaS OperaciOnaiS 3.8.2 PARTICIONADA DINÂMICA Na alocação particionada dinâmica (variável), foi abandonada a ideia de partição com tamanho fixo. Nessa forma de alocação foi minimizada