Baixe o app para aproveitar ainda mais
Prévia do material em texto
SISTEMAS OPERACIONAIS Professor: Denílson C Oliveira infofortaleza@gmail.com 1 Plano da Aula 1 – Fundamentos de Sistemas Operacionais; ¨ Princípios, história, conceitos básicos; 2 – Arquitetura de Sistemas Operacionais; ¨ Componentes, chamadas de sistemas, sua estrutura, monolítico ou em camadas e Máquina Virtual 3 – Gerenciamento de Processos; ¨ Comunicação e sincronização de Processos, escalonamento, deadlocks 2 4 – Gerenciamento de Memoria; ¨ Gerência em Swapping ou paginação, Memória virtual, algoritmo de substituição de página, segmentação 5 – Gerenciamento de Entrada e Saída; ¨ Dispositivos de I/O, Vetores de interrupção e Device Driver 6 – Estudo de caso: 3 Não existe perguntas bobas, existe pessoas bobas que não perguntam !!! Tirem suas dúvidas.. ;) HISTÓRIA DOS SO’S 4 v História: O primeiro computador digital foi projetado pelo matemático inglês Charles Babbage (1791-1871); v Primeira Geração (1945 – 1955) v Por volta de 1940 pesquisadores tiveram sucesso na criação de computadores primitivos baseado em válvulas; v Caracterizavam-se por serem demasiadamente grandes, oculpando salas inteiras; HISTÓRIA DOS SO’S 5 v Primeira Geração (1945 – 1955) v Não existia ainda o conceito de linguagem de programação; v A programação era feita nos painéis; v Cerca de 20.000 válvulas ficavam rodando com o risco inerente de queimar cada uma delas; v Nos anos 50 foi desenvolvido o método de programação por cartões perfurados 6 v Segunda Geração (1955 – 1965) v Ainda nos anos 50 houve o desenvolvimento do transistor, que alterou totalmente o cenário anterior; v Devido ao ganho de confiabilidade dos computadores, chegou-se o nível de comercialização dos equipamentos; ENTRETANTO v Apenas orgão governamentais e grandes corporações tinham condições de bancar tal investimento; HISTÓRIA DOS SO’S v Obs: Em novembro de 1947, os cientistas do laboratório da Bell Telephone descobriram o transistor, apesar de suas pesquisas tentarem ir para outra direção. Eles verificaram que quando aplicada certa tensão a um dos terminais do componente, o sinal que saía no outro terminal era amplificado. 7 v Segunda Geração (1955 – 1965) v Inicia então o conceito de execução de “Job” v Podemos definir JOB como um programa ou um conjunto de programas; v Após escrito em linguagem FORTRAN era necessária a perfuração dos cartões; HISTÓRIA DOS SO’S 8 v Processamento em lote (Batch): Jobs com necessidade similares HISTÓRIA DOS SO’S 9 v Processamento em lote (Batch): Jobs com necessidade similares Processamen to Processamen to Processamen to (a ) (b ) (c) fi ta d e e ntra d a fita d e e ntra d a ca rtões p erfura dos fita d e sa íd a re la tór io s fita d e sa íd a job 2 job n re la tór io 1 re la tór io 2 re la tór io n job 1 HISTÓRIA DOS SO’S 10 v Terceira Geração (1965 – 1980) v As duas linhas de máquinas tornava-se muito onerosa pra os fabricantes: v IBM 1401 para leitura dos cartões e geração das fitas; v IBM 7094 para processamento dos JOBS em lote; v A solução para tal problema ocorreu com a criação da linha IBM 360; HISTÓRIA DOS SO’S 11 HISTÓRIA DOS SO’S 12 HISTÓRIA DOS SO’S v Multiprogramação: No 7094, quando a tarefa atual parava para esperar por uma fita magnética terminar a transferência ou aguardava o término de outra operação de E/S, a CPU simplesmente permanencia ociosa até que a E/S terminasse. v A solução a que se chegou foi dividir a memória em várias partes, com um larefa diferente em cada partição. 13 v O resultado desta tentativa foi um SO complexo, enorme e com milhões de linhas de código; HISTÓRIA DOS SO’S v Terceira Geração (1965 – 1980) v Foi a primeira família de máquinas a usar CI´s; v Melhor relação custo/benefício até então; v Tentativa de agregar necessidades finais com funcionamento básico do hardware; 14 HISTÓRIA DOS SO’S v Terceira Geração (1965 – 1980) (cont..) v O primeiro sistema de Compartilhamento do Tempo (TimeSharing) foi CTSS (Compatible Time-Sharing System), desenvolvido pelo MIT; 15 HISTÓRIA DOS SO’S v Terceira Geração (1965 – 1980) (cont..) v TimeSharing:O anseio por respostas mais rápidas abriu caminho para o tempo compartilhado ou timesharing, uma variante da multipro- gramação na qual cada usuário se conectava por meio de um terminal online. Em um sistema de tempo compartilhado, se 20 usuários estivessem conectados e17 deles estivessem pensando,falando ou tomando café, a CPU podia ser ciclicamente alocada a cada uma das três tarefas que estivessem requisitando a CPU. 16 HISTÓRIA DOS SO’S v Terceira Geração (1965 – 1980) (cont..) v O Projeto MULTICS não ganhou sustentabilidade: Em 1963, um estudo de verão sobre o Projeto MAC reuniu vários cientistas da computação em Cambridge. Os objetivos eram divulgar o CTSS e discutir o futuro da Computação. v O subprojeto MAC (Multiple Access Computers) tentaria desenvolver o sistema operacional Multics (Multiplexed Information and Computing Service). O Multics deveria ser algo superior ao CTSS. v O Projeto MAC começou a tomar proporções e teve apoio da Advanced Research Projects Agency (ARPA, agência subordinada ao Departamento de Defesa dos EUA), que disponibilizou dois milhões de dólares por ano, por oito anos, voltados exclusivamente para o desenvolvimento do Multics. Nesse mesmo período, o Bell Labs e a GE (General Electric), interessados no projeto, contribuíram com recursos de ordem semelhante ao ofertado pelo ARPA. 17 HISTÓRIA DOS SO’S v Terceira Geração (1965 – 1980) (cont..) v O objetivo final, em relação ao Multics, era um sistema operacional com suporte para memória virtual, utilizando recursos de paginação e segmentação de memória. Isso possibilitaria um sofisticado processo de transferência de dados entre discos e memória. v Em outubro de 1969, o Multics foi disponibilizado para a comercialização. Várias organizações importantes como, por exemplo, a Força Aérea Americana, a General Motors e a Ford utilizaram o Multics. 18 HISTÓRIA DOS SO’S v Terceira Geração (1965 – 1980) (cont..) v O objetivo final, em relação ao Multics, era um sistema operacional com suporte para memória virtual, utilizando recursos de paginação e segmentação de memória. Isso possibilitaria um sofisticado processo de transferência de dados entre discos e memória. v O desenvolvimento do Multics foi cancelado em julho de 1985. Depois disso, várias organizações começaram a suspender o uso do Multics. Há notícias de que o último Multics em produção foi desativado em outubro de 2000, no Quartel General do Comando Marítimo Canadense 19 v Terceira Geração (1965 – 1980) (cont..) v Crescimento do uso de minicomputadores, lançado em 1961; v Modelos PDP-1 ao ponto culminante que foi o PDP-11; v O PDP-7 foi usado com uma versão monousuário do MULTICS por Ken Thompson, que originou a partir daí o embrião do UNIX; v Só em agosto de 1969, Ken Thompson e Dennis Ritchie, que estavam fora do projeto com a saída da Bell Labs, mas tinham continuado a estudar o MULTICS, tentavam criar um sistema que funcionasse em um computador menor e que pudesse rodar programas, dispensando todo esse trabalho. v Assim, criaram um sistema operacional para um computador DEC PDP-7, que estava parado. O sistema era baseado no MULTICS, mas de porte bem menor e utilizava a linguagem de montagem Assembly e foi denominado UNICS - Uniplexed Information and ComputingServices. v Em fevereiro de 1971, o sistema operacional passou a ser desenvolvido no minicomputador PDP-11, da “DEC” (Digital Equipment Corp). 20 HISTÓRIA DOS SO’S v Terceira Geração (1965 – 1980) (cont..) v Assim, criaram um sistema operacional para um computador DEC PDP-7, que estava parado. O sistema era baseado no MULTICS, mas de porte bem menor e utilizava a linguagem de montagem Assembly e foi denominado UNICS - Uniplexed Information and Computing Services. v Em fevereiro de 1971, o sistema operacional passou a ser desenvolvido no minicomputador PDP-11, da “DEC” (Digital Equipment Corp). 21 v Terceira Geração (1965 – 1980) (cont..) v https://www.youtube.com/watch?v=sJKh8yq1Qdg&feature=youtu.be 22 v Quarta Geração – PC (1980 – 1990) v Desenvolvimento da integração de circuitos em grande escala; v Aparecimento dos chips com milhares de transistores encapsulados; v Arquitetura semelhante ao PDP-11; v Acessibilidade de preço a pessoa física; HISTÓRIA DOS SO’S v Crescimento de um novo nicho de mercado para os desenvolvedores de software; v Os sistemas operacionais em ascensão e domínio em massa da atualizada são: v Microsoft Windows, Linux e UNIX 16/08/10 Os mainframes continuam... IBM /370, DA DÉCADA DE 70 IBM /390 e zSeries, DAS DÉCADAS DE 90 E 2000 (USADOS ATUALMENTE) 24 HISTÓRIA DOS SO’S v Quarta Geração – PC (1980 – 1990) v Intel 8080 – CP/M da Digital Research Gary Kildall) v CP/M (Control Program for MicroComputer) – sistema operacional baseado em disco; v o micro recebia uma placa de expansão (denominada Softcard) dotada de um microprocessador Zilog Z80 apto a executar o sistema operacional CP/M e todos os programas desenvolvidos para o mesmo (como o interpretador MBASIC e o editor de textos WordStar). Outro acréscimo comum era uma placa de vídeo apta a exibir 80 caracteres por linha da tela (o Apple II só exibia 40 caracteres por linha). 25 HISTÓRIA DOS SO’S v Quarta Geração – PC (1980 – 1990) v Intel 8080 – CP/M da Digital Research Gary Kildall) 26 HISTÓRIA DOS SO’S v Quarta Geração – PC (1980 – 1990) v IBM PC - DOS v Inicialmente, a IBM tentou utilizar o CP/M, mas Kildall não quis nenhum acordo; v IBM procurou Bill Gates pedindo um sistema operacional para rodar e ser vendido juntamente com o IBM PC – surge o DOS (Disk Operating System); v Tanto o CP/M quanto o DOS eram baseados em comandos; 27 v IBM PC - DOS : https://www.youtube.com/watch?v=pqAg0GJLPGk 28 HISTÓRIA DOS SO’S v Quarta Geração – PC (1980 – 1990) v Nos anos 80 surgia um novo paradigma de Sistema Operacional, que foram denominados como: v Sistema Operacional de Rede; v Sistema Operacional Distribuído; v Conjunto de módulos de, no mínimo, processador e memória interligados através de um subsistema de comunicação; v Um sistema operacional distribuído deve se apresentar aos usuários como um sistema operacional centralizado, mas que, na realidade, tem suas funções executadas por um conjunto de máquinas independentes; v Surgimento dos sistema operacionais para disco; v Mais: https://pt.wikipedia.org/wiki/Sistema_operacional_em_disco 29 HISTÓRIA DOS SO’S v Quarta Geração – PC (1980 – 1990) v Interface amigável; v Baixo custo v O CP/M, o MS-DOS e outros sistemas operacionais dos primeiros microcomputadores eram todos baseados na digitação de comandos em um teclado, feita pelo usuário. Isso finalmente mudou graças a um trabalho de pesquisa de Doug Engelbart no Stanford Research Institute nos anos 1960. Engelbart inventou uma interface gráfica completa voltada para o usuário: com janelas, ícones, menus e mouse. Foi denominada GUI (graphcal user interface). Fundamentos de Sistemas Operacionais 30 v Definição: É uma camada de software que opera entre o hardware e os programas aplicativos voltados ao usuário final. v É uma estrutura de software ampla, muitas vezes complexa, que incorpora aspectos de baixo nível (como drivers de dispositivos e gerência de memória física) e de alto nível (como programas utilitários e a própria interface gráfica). v Abstração de Recursos: cada hardware tem sua particularidade. Cabe ao sistema operacional gerenciar as particularidades do hardware. Ex: Um processador de texto não deve deter o conhecimento de como gravar um arquivo (disquetes, pen drive, hd´s). Fundamentos de SO (Hardware) 31 v O processador (CPU – Central Process Unit): é uma das partes principais do hardware do computador e é responsável pelos cálculos, execução de tarefas e processamento de dados. v A velocidade com que o computador executa as tarefas ou processa dados está diretamente ligada à velocidade do processador v A unidade lógica e aritmética (ULA) é a unidade central do processador, que realmente executa as operações aritméticas e lógicas entre dois números. v A unidade de controle é a unidade do processador que armazena a posição de memória que contém a instrução corrente que o computador está executando, informando à ULA qual operação a executar 32 v Velocidade (Clock): Ter mais ou menos Hertz significa o quanto o processador troca dados com o sistema. O processador que oferece 2.0 GHz pode realizar 2 bilhões de ciclos por segundo. v O circuito clock, que mede os ciclos e orienta o ritmo do fluxo de troca de informações no processador, é um dos principais critérios para estabelecer a velocidade do processador. Vale ressaltar, no entanto, que outros pontos entram nesta conta, como interface de memória, quantidade de cache, arquitetura, Fundamentos de SO (Hardware) 33 v Memória Cache: A memória cache surgiu quando percebeu-se que as memórias não eram mais capazes de acompanhar o processador em velocidade, fazendo com que muitas vezes ele tivesse que ficar "esperando" os dados serem liberados pela memória RAM para poder concluir suas tarefas, perdendo muito em desempenho. v Conceito: É um tipo ultra-rápido de memória que serve para armazenar os dados mais frequentemente usados pelo processador, evitando na maioria das vezes que ele tenha que recorrer à comparativamente lenta memória RAM. v Sem ela, o desempenho do sistema ficará l imitado à velocidade da memória, podendo cair em até 95% Fundamentos de SO (Hardware) 34 v Memória Cache: Cont Dois tipos de Cache v Primária (L1): É embutido no próprio processador e é rápido o bastante para acompanhá-lo em velocidade. Sempre que um novo processador é desenvolvido, é preciso desenvolver também um tipo mais rápido de memória cache para acompanhá-lo. v Secundária (L2):Um pouco mais barata que a L1 e, consequentemente, sempre a temos em maior quantidade que a L2; Fundamentos de SO (Hardware) 35 v Memória RAM (Random Access Memory), ou memória de acesso aleatório, é um tipo de memória que permite a leitura e a escrita, utilizada como memória primária em sistemas eletrônicos digitais. Fundamentos de SO (Hardware) 36 v Memória RAM Fundamentos de SO (Hardware) 37 v Memória RAM v Mais atual: DDR3-3000 (24.000Mb/s – 24Gb) Trabalha em 1,3v Fundamentos de SO (Hardware) 38 39 v O HD (Hard Disk): O disco rígido recebe este nome, pois o recurso consiste, essencialmente, em um ou mais discos extremamente firmes, lisos e microscopicamente uniformes. São nestas peças que ficam mantidas as informações do sistema. v Para assegurar a boa qualidade da gravação, é necessário um equipamento com tais características,as quais impedem deformações durante o uso, que impõe ao disco velocidades de rotação altíssimas, as famosas RPM (rotações por minuto). Fundamentos de SO (Hardware) 40 v Os platters são afixados em um eixo de alumínio, capaz de girá-los em velocidades impressionantes de 5.600 RPM ou 7.200 RPM, nos modelos mais comuns e, até 15.000 RPM, nos modelos mais avançados. v Uma das peças responsáveis pela gravação das informações é um braço mecânico de alumínio. O braço movimenta-se sobre o disco rígido por meio de um mecanismo denominado voice coil, deslocando-se por impulsos magnéticos de repulsão e atração. v A função desse braço é deslocar um conjunto de ímãs, que formam as cabeças de leitura eletromagnéticas, as quais escrevem as linhas de informações nos platters ou as leem. Fundamentos de SO (Hardware) 41 v O 305 RAMAC Disk System é um ancestral distante do HD que conhecemos hoje. Ele foi lançado em 1956 como parte do IBM 305 RAMAC, um computador desenvolvido pela IBM para o mercado corporativo, e podia armazenar impressionantes 5 MB em 50 discos com 24 polegadas (60 cm) de diâmetro. Veja tudo em Fundamentos de SO (Hardware) 42 v O 305 RAMAC Disk System. Ele foi lançado em 1956 como parte do IBM 305 RAMAC, 43 ma ior ca pa cid a d e d e a rm a zena men to ma ior custo e ve locida de de a cesso Memória S ecund á r ia Memória C a che Memória Pr in cip a l Reg istra dores Fundamentos de SO (Hardware) 44 v Responsável por gerenciar as funções vitais do PC e comunicar todo e qualquer evento de interrupção, transferência de dados ou erro ao processador; v O chipset é composto de dois circuitos integrados ou partes: ¤ North Bridge ou Ponte Norte ¤ South Bridge ou Ponte Sul Fundamentos de SO (Hardware) 45 North Bridge ou Ponte Norte v Circuito principal do chipset responsável por gerenciar e controlar os barramentos principais do PC; v Localizado próximo ao processador e memória RAM. Fundamentos de SO (Hardware) 46 South Bridge ou Ponte Sul Fundamentos de SO (Hardware) 47 South Bridge ou Ponte Sul Fundamentos de SO (Hardware) 48 Fundamentos de Sistemas Operacionais 49 Cabe ao SO: p rog ram a do res e a na lista s m em ória d iscos U C P U su á r ios H a rdw a re S is tem a O p e ra cio na lS is tem a O p e ra cio na l fita s im pressora s mon itores p rog ram a s, sistem a s e a p lica tivos u su á rios v Prover interfaces de acesso aos dispositivos, mais simples de usar que as interface de baixo nível. Fundamentos de Sistemas Operacionais 50 Cabe ao SO: v Tornar os aplicativos independentes do hardware. v Preciso, enquanto desenvolvedor: v Saber o fabricante da impressora? v O tipo de monitor? v A placa-mãe é ASUS? Fundamentos de Sistemas Operacionais 51 Cabe ao SO: v Definir interfaces de acesso homogêneas para dispositivos com tecnologias distintas. Fundamentos de Sistemas Operacionais 52 Cabe ao SO: v Definir políticas para gerenciar o uso dos recursos de hardware pelos aplicativos, e resolver eventuais disputas e conflitos. v Uso de processador v Acesso a disco v Memória Fundamentos de SO Tipos de SO’s 53 v SO de REDE: Em um sistema operacional de redes, os usuários sabem da existência de múltiplos computadores e podem conectar-se a máquinas remotas e copiar arquivos de uma máquina para outra. Cada máquina executa seu próprio Sistema operacional local com tem se próprio usuário local (ou usuários locais). v Suporte a operação em rede v Maioria dos sistemas operacionais atuais v Compartilhamento de recursos de vários computadores. v Disponibilizar os próprios recursos. v São independentes e caso a conexão entre um dos nós sofra qualquer problema, os demais continuam operando normalmente , apesar de alguns recursos se tornarem indisponíveis. 54 v Os SO Distribuídos: v Os recursos de cada máquina estão disponíveis globalmente, de forma transparente aos usuários. v Para o usuário e suas aplicações é como se não existisse uma rede de computadores e sim um único sistema centralizado. v Usuário desconhece o computador em uso. v Ainda não são uma realidade de mercado. Exemplo: Amoeba Fundamentos de SO Tipos de SO’s 55 v Os verdadeiros sistemas oper acionais distribuídos requerem muito mais do que apenas a dicionar algum código a um sistema operacional monoprocessador, pois os sist emas distribuídos e centraliza dos são muito diferentes em pontos fundamentais. v Os SO Distribuídos:Um sistema operacional distribuído, por outro lado, é aquele que parece aos olhos dos usuários um sistema Operacional tradicional monoprocessador, mesmo que na realidade seja composto de múltiplos processadores. Os usuários não precisam saber onde seu programas estão sendo executados nem onde seus arquivos estão localizados, pois tudo é tratado automática c eficientemente pelo Sistema operacional. 56 57 58 v SO Multi-Usuário: v Múltiplos usuários simultâneos v Maioria dos sistemas operacionais atuais v Deve suportar a identificação do “dono” de cada recurso dentro do sistema v arquivos, processos, conexões de rede v Ver mais em: https://www.ncomputing.com/pt-br/ WindowsMultiUserLicensing v Imposição de regras de controle de acesso para impedir o uso desses recursos por usuários não autorizados Fundamentos de SO Tipos de SO’s The image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file again. If the red x still appears, you may have to delete the image and then insert it again. The image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file again. If the red x still appears, you may have to delete the image and then insert it again. 59 v SO p/ Desktop: v Sistema operacional “de mesa”. v Usuários domésticos e corporativos v Atividades corriqueiras v Ambiente gráfico, interatividade com usuário e suporte a rede. Fundamentos de SO Tipos de SO’s 60 v SO p/ Desktop: Fundamentos de SO Tipos de SO’s 61 v SO Servidor: v Gestão de grandes quantidades de recursos v Discos, memórias e processadores v Multi-usuários v Suporte a rede v SO Embutido (Embedded) v Hardwares com pouca capacidade de processamento v Celulares, calculadores, tocadores de MP3 v Função específica Fundamentos de SO Tipos de SO’s 62 v SO Embutido (Embedded) 63 v Tempo real (RTOS – Real Time Operacional System) v Comportamento temporal previsível v Tempo de resposta conhecido no melhor caso e pior caso de operação v soft real-time systems v perda de prazo implica em degradação do serviço prestado (gravação de CD) v hard real-time systems v perda de prazo pode causar grandes prejuízos econômicos ou ambientais (usina nuclear, caldeiras industriais) Fundamentos de SO Tipos de SO’s Fundamentos de SO Conceitos Finais 64 v O que é um Processo: Um sistema operacional não executa somente os programa que podemos ver. Imagine que os aplicativos que você roda reúnem diversas instruções e comandos, porém, são os processos que efetivamente executam esses comandos. Issosignifica que um único aplicativo pode ter vários processos relacionados a ele. v Associado a cada processo está o seu espaço de endereçamento, uma lista de posições de Memória, que vai de 0 até um máximo, que esse processo pode ler e esc rever. v O espaço de endereçamento contém o programa executável, os dados do program a e sua pilha. Fundamentos de SO Conceitos Finais 65 66 v O que é um Processo: v Alguma vez você fechou um programa, precisou executá-lo novamente, mas ele não abriu? E você recebeu um aviso de que uma instância do programa já estava em execução? O que aconteceu é que, por algum motivo, o processo do programa não foi terminado corretamente. Tudo que você precisa fazer é acessar o Gerenciador de Tarefas e finalizar o aplicativo em questão. Fundamentos de SO Conceitos Finais 67 v Espaço de Endereçamento: Todo computador tem uma memória principal para armazenar programas em execução. Em um sistema operacional muito simples, apenas um programa por vez está na memória e para executar um segundo programa o primeiro tem de ser removido e o segundo colocado na memória. Fundamentos de SO Conceitos Finais 68 v Edereçamento p/ Hardware: Para o SO conseguir se comunicar com os componentes de hardware da máquina e saber “quem é quem” cada um separa (ganha) um espaço de memória para si Fundamentos de SO Conceitos Finais 69 v Espaço de Endereçamento: v Edereçamento p/ Software: Um conjunto de endereços fica a disposição dos processos, então na maioria dos computadores, vai depender da arquitetura da máquina. Ou seja, o espaço de endereçamento vai até 2³² (4.294.967.296, ou seja, 4 GB) para máquinas de 32 bits e até 2⁶⁴ para 64 bits. Fundamentos de SO Conceitos Finais 70 v Espaço de Endereçamento: v Endereçamento p/ Software: Fundamentos de SO Conceitos Finais 71 v Sistema de Arquivo: Um arquivo pode ser genericamente definido como uma coleção de dados relacionados entre si. Arquivos são referenciados através de nomes. Além de um nome, cada arquivo possui também outros atributos, tais como: tipo, momento da criação, identificação do criador, tamanho, etc. Fundamentos de SO Conceitos Finais 72 v Entrada e Saída: Uma das funções principais de um sistema operacional é controlar todos os dispositivos de E/S de um computador, tratar erros, interceptar interrupções, fornecer uma interface entre o dispositivo e o sistema, emitir comandos para os dispositivos. v Os dispositivos de entrada e saída podem ser divididos em um modo genérico como dispositivos de bloco e caractere. v Segurança: Computadores contêm muitas informações que os Usuários, muitas vezes, querem manter confidenciais. Essas Informações podem ser mensagens de correio eletrônico, planos de negócios, impostos devidos etc. Cabe ao sistema operacional gerenciar Sistema de segurança para que osarquivos, por exemplo, sejam acessíveis apenas por usuários autorizados. Fundamentos de SO Conceitos Finais EXERCÍCIOS 73 1) Defina o que é um Sistema Operacional descrevendo suas principais funções? 2) O que é multiprogramação? Cite duas razões (detalhando-as) para se ter multiprogramação. Cite exemplos de problemas de segurança que podem ocorrer em sistemas multiprogramados? 3) Descreva as diferenças entre Sistema de Lotes, Sistema de Lotes Multiprogramados e Sistemas de Tempo Compartilhado. 4) Comente sobre as características de sistemas operacionais de tempo real e onde tais sistemas se encaixam 5) Explique sobre os diferentes tipos (niveis) de memoria existentes e detalhe seus usos mais comuns 6) Por que dizemos que existe uma subutilização de recursos em sistemas monoprogramáveis? EXERCÍCIOS 74 7) O que caracteriza por processamento batch? 8) Explique o funcionamento da técnica time-sharing. Qual é a sua principal vantagem? 9) Por que dizemos que existe uma subutilização de recursos em sistemas monoprogramáveis? 10) Qual a grande diferença entre sistemas monoprogramáveis e sistemas multiprogramáveis? 75 FIM DA PARTE 1 ... ... ... ... INÍCIO DA PARTE 2 Arquitetura de SO Chamadas de Sistemas (System Calls) 76 v Os sistemas operacionais têm duas funções principais: v Fornecer abstrações aos programas de usuários; v Administrar os recursos do computador. v Em sua maior parte, a interação entre programas de usuário, o sistema operacional lida com a edição de informações. Por exemplo, criar, escrever, ler e excluir arquivos. O gerenciamento de recursos é, em grande medida, transparente para o usuário. v As chamadas de sistemas disponíveis na interface variam de SO para outro (embora os conceitos básicos tendam a ser parecidos). 77 Arquitetura de SO Chamadas de Sistemas (System Calls) 78 v Quando a chamada de sistema é invocada, o programa que a invocou é interrompido, e a informação necessária para continuar a sua execução é salva. O processador inicia a execução do código de maior privilégio que, examinando o estado do processador (definido pelo código de menor privilégio) e/ou a sua pilha, determina que serviço foi requisitado. v Quando a chamada termina, o controle retorna para o programa, o estado previamente salvo é restaurado, e o programa continua a sua execução. v Mecanismo de funcionamento: v As chamadas de sistema frequentemente utilizam uma instrução especial que faz com que a CPU transfira o controle para código de maior privilégio, pelo código de menor privilégio. v Isto permite que o código de maior privilégio indique por onde ele será chamado e, tão importante quanto, o estado do processador no momento da chamada. Arquitetura de SO Chamadas de Sistemas (System Calls) 79 v Biblioteca: v Os sistemas operacionais geralmente possuem uma biblioteca que os programas normais chamam com o fim de comunicar com o núcleo. Normalmente esta biblioteca é escrita na linguagem C (libc), como a glibc e MS LibC. v Glibc (version 2.23) (baixar) Lista de chamadas LINUX http://www.uniriotec.br/~morganna/ guia/chamadas.html 80 S ystem C a l l A p l ica çã o Bib lioteca H a rdw a re N ú cleo do S istem a O pera cion a l N ú cleo do S istem a O pera cion a l Geralmente, essas tarefas que pedimos para que o sistema operacional faça são bem complexas e que exijam uma permissão maior do sistema, pois geralmente lidam com ferramentas em baixo nível, como gerenciamento de memória, processos e outros recursos que o usuário comum não tem acesso. Arquitetura de SO Chamadas de Sistemas (System Calls) 81 Arquitetura de SO Chamadas de Sistemas (System Calls) 82 Arquitetura de SO Chamadas de Sistemas (System Calls) 83 v Podemos dividir as chamadas de sistema entre quatro grandes grupos: v Chamadas de sistemas para gerenciamento de processos v Chamadas de sistemas para gerenciamento de diretórios Arquitetura de SO Chamadas de Sistemas (System Calls) 84 v Além das bibliotecas que normalmente usamos para programar em C, necessitaremos de duas sys/types.h e unistd.h do Unix, para podermos trabalhar com a fork. v Para usar a chamada de sistema de criação de processos, simplesmente escrevemos fork(), sem passar argumento algum. Fazendo isso, o Sistema Operacional se encarrega do resto, e retorna um número v Este número é o pid (process identification, ou identificador de processos),e cada processo tem um valor diferente de pid, é como se fosse o RG, a identificação de cada processo. v Porém, ao armazenar esse retorno da função fork numa variável de nome 'pid' do tipo 'pid_t', vemos que esse número de pid tem um comportamento especial: - dentro do processo filho, o pid tem valor 0 - dentro do processo pai, o pid tem o valor do processo filho - a fork() retorna um valor negativo, caso tenha ocorrido algum erro. 85 v Podemos dividir as chamadas de sistema entre quatro grandes grupos: v Chamadas de sistemas para gerenciamento de arquivos \ v Chamadas de sistemas restantes Arquitetura de SO Chamadas de Sistemas (System Calls) Estrutura de SO (Arquitetura) 86 v Agora que tivemos uma visão externa de um sistema operacional,isto é, da interface dele com o programador, é o momento de olharmos para su a estruturainterna. Nas próximas seções, vamos examiner cinco diferentes estuturas de SO. v Sistemas monolíticos; v Sistemas em camadas; v Sistemas micro-núcleo; v Máquinas virtuais. Estrutura de SO (Arquitetura) 87 v Sistemas monolíticos: É de longe a abordagem mais comum, onde o SO inteiro é executado como um único programa no modo núcleo. Nela o SO é escrito como uma única coleção de rotinas, ligadas a um único programa binário executável. v Nesta abordagem, cada rotina do SO tem uma interface bem definida quanto a parâmetros e resultados e cada uma delas é livre para chamar qualquer outra, quando esta outra pode oferecer algum processamento que a primeira necessite. v Para construir um programa real do SO usando essa abordagem primeiro compilam-se todas as rotinas individualmente e depois juntamos todas em um único arquivo-objeto usando um ligador (Linker). v Não existe uma ocultação de informação, todas as rotinas são visíveis umas as outras 88 v Sistemas monolíticos: ... Continuando v Essa organização sugere uma estrutura básica para o v sistema operacional: 1. Um programa principal que invoca a rotina do serviço requisitado. 2. Um conjunto de rotinas de serviço que executam as chamadas de sistema. 3. Um conjunto de rotinas utilitárias que auxiliam as rotinas de serviço. v possuem (digamos) vantagens e desvantagens; o ponto positivo do monolítico é que ele proporciona melhor segurança e melhor desempenho devido seus recursos residirem dentro do próprio kernel (built-in); porém, por esse fato, seus recursos (mesmo que não sejam necessários em algumas circunstancias) estarão sempre em execução do momento em que ligar o computador até o momento que desligá-lo, consumindo assim recurso do hardware. v Outra desvantagem: Fragilidade a falhas 89 v Sistemas monolíticos: ... Continuando v Exemplos: LINUX, MS-DOS, Mac OS nas versões abaixo do 8.6 . v Em um sistema monolítico, com todas as unidades no núcleo, uma unidade de áudio defeituosa pode facilmente dar como referência um endereço de memória inválido e parar o sistema instantaneamente. 90 v Sistemas monolíticos: ... Continuando 91 v Sistemas em Camadas: Divide o sistema operacional em sistemas sobrepostos. Cada módulo oferece um conjunto de funções que pode ser usado por outros módulos. v A vantagem da estruturação em camadas é isolar o sistema operacional, facilitando sua alteração e depuração, além de criar uma hierarquia de níveis de modos, protegendo as camadas mais internas. v O empilhamento de várias camadas de software faz com que cada pedido de uma aplicação demore mais tempo para chegar até o dispositivo periférico ou recurso a ser acessado, prejudicando o desempenho do sistema. v Não existe uma ocultação de informação, todas as rotinas são visíveis umas as outras v Obs: Tambem chamado de SO THE (Technische Hogeschool Eindhoven – Univ Irlandesa). O sistema THE é basicamente um sistema batch que suporta multitarefa; não foi desenvolvido para se multiusuário. 92 v Sistemas em Camadas: ... Continuando Estrutura de SO (Arquitetura) 93 v Sistemas em Camadas (Anel): v Anéis mais internos são mais privilegiados que os externos; v Procedimentos de anéis externos executavam chamadas de sistema para utilizar os serviços dos anéis internos; v Proteção dos segmentos de memória. v Esse mecanismo de anéis era vantajoso porque podia facilmente ser estendido para estruturar subsistemas de usuário. Por exemplo, um professor podia escrever um programa para testar e atribuir notas a programas de alunos executando o no anel n, enquanto os programas do alunos seriam executados no anel n+1, a fim de que nenhum deles pudesse alterar suas notas. Estrutura de SO (Arquitetura) 94 v Sistemas micro-núcleo (microkernel): Com a abordagem do Sistema de camadas, os projetistas podem escolher onde traçar a fronteira núcleo- usuário. Tradicionalmente, todas as camadas entram no núcleo, mas isso não é necessário. Na realidade, apresentam-se fortes argumentos para colocação do mínimo possível em modo núcleo porque erros no núcleo podem derrubar o sistema instantaneamente. Por outro lado, processos de usuário podem ser configurados com menos potência de modo que um erro não seja fatal. v Uma tendência dos sistemas operacionais é tornar o núcleo menor e mais simples possível e, para implementar esta idéia, o sistema é dividido em processos. Estrutura de SO (Arquitetura) 95 v Sistemas micro-núcleo (microkernel): ... Continuando 96 v Sistemas micro-núcleo (microkernel): ... Continuando v Desta forma, sempre que uma aplicação deseja algum serviço ela solicita ao processo responsável, assim, a aplicação que solicita um serviço é chamada de cliente e o processo que responde a solicitação é chamado de servidor. 97 v Sistemas micro-núcleo (microkernel): ... Continuando v Comparação entre SO Monolítico x Micro-núcleo 98 v Sistemas micro-núcleo (microkernel): ... Continuando v Ex: v Minix: Ele é voltado a didática, para quem quer conhecer como um sistema operacional funciona realmente. http://www.minix3.org/ v Hurd: é o microkernel do sistema GNU que vem sido desenvolvido desde 1.990. Ainda não está pronto e nem há previsão para a sua versão estável. https://www.gnu.org/software/hurd/hurd.html v Abaixo: Comparação de SO em Camadas x Microkernel Estrutura de SO (Arquitetura) 99 v Máquinas Virtuais: Máquinas virtuais não são máquinas estendidas com arquivos e outras características convenientes. v São cópias exatas do hardware, inclusive com modos núcleo/usuário, E/S, interrupções e tudo o que uma máquina real tem. v Cada VM pode executar qualquer SO capaz de ser executado diretamente sobre o hardware. v Diferentes VMs podem executar direrentes SO´s. Estrutura de SO (Arquitetura) 100 v Máquinas Virtuais: ... Continuando v Hipervisor do tipo 1(a) são executados diretamente no hardware. v Eucalyptus v Hipervisor do tipo 2(b) são executados como aplicativos na camada superior do SO v Ex: VMware, VirtualBox Estrutura de SO (Arquitetura) 101 v Máquinas Virtuais: ... Continuando v Hipervisor do tipo 1(a) são executados diretamente no hardware. Estrutura de SO (Arquitetura) 102 v Máquinas Virtuais: ... Continuando v Hipervisor do tipo 1(a) são executados diretamente no hardware. 103 v Máquinas Virtuais: ... Continuando v Hipervisor do tipo 1(a) são executados diretamenteno hardware. https://www.youtube.com/watch?v=XVMZpcgJvPA EXERCÍCIOS 104 1) O que é núcleo do Sistema Operacional ? 2) Dê o conceito de máquina virtual. 3) O que é arquitetura de camadas ? 4) O que é uma arquitetura monolítica ? 5) O que é uma arquitetura Microkernel ? 6) Quais são as principais funções do núcleo dos sistemas operacionais ? 7) O que é uma System Calls ? Represente o funcionamento dela (Layout). 8) Compare as arquiteturas monolítica e de camadas. Quais as vantagens e desvantagens de cada arquitetura? 105 FIM DA PARTE 2 ... ... ... ... INÍCIO DA PARTE 3 Gerenciamento de Processos Conceitos 106 v Conceito: O conceito, que vem de S.O., define processos como programas em execução. v Diferentes tipos de processos desempenham papel crucial em sistemas distribuídos; v Usar processos multithreading auxiliam em melhoria de desempenho em sistemas cliente-servidor Gerenciamento de Processos Conceitos 107 v Recursos utilizados por um processo: v Memória: um processo precisa de memória para armazenar suas instruções e seus dados v CPU: um processo precisa estar de posse da CPU para executar suas instruções v Dispositivos: via de regra, um processo precisa realizar alguma tarefa de entrada e saída, em algum dispositivo, como por exemplo receber o valor de uma variável via teclado, ler um disco, etc. v Arquivos: um processo, geralmente, precisa gravar ou recuperar alguma informação armazenada em determinado arquivo 108 v O contexto de hardware é fundamental para a implementação dos sistema de tempo compartilhado (multiprogramados), no qual os processos se revezam na utilização do processador Processos Conceitos 109 v Um processo é formado por três elementos básicos: v Contexto de hardware v Contexto de software v Espaço de endereçamento v Contexto de hardware: v O contexto de hardware constituí-se,basicamente, do conteúdo de registradores (PC, SP, etc.) v PC (Program Counter): Ou CI (Contador de Instruções): este registrador tem a função básica de armazenar o endereço da próxima instrução a ser executada pela CPU. Quando essa instrução for executada ele assume o endreço da próxima instrução. Processos Conceitos 110 111 v Contexto de hardware: v SP (Stack Point) ou AP (Apontador de Pilha): Armazena o endereço de memória do topo da pilha onde o sistema mantem informações sobre os programas que estavam em execução. v Existe um Stack Pointer para cada thread sendo executada v Quanto a Stack Pointer usa mais memória do que suporta, ocorre um estouro de pilha. Em diversas linguagens de programação a Stack Pointer possui uma área limitada de memória, geralmente determinada no início do programa. O resultado do uso excessivo de memória é o estouro, o que geralmente resulta na aborto do programa. 112 v Contexto de hardware: v SP (Stack Point) ou AP (Apontador de Pilha): Armazena o endereço de memória do topo da pilha onde o sistema mantem informações sobre os programas que estavam em execução. v Existe um Stack Pointer para cada thread sendo executada v Quanto a Stack Pointer usa mais memória do que suporta, ocorre um estouro de pilha. Em diversas linguagens de programação a Stack Pointer possui uma área limitada de memória, geralmente determinada no início do programa. O resultado do uso excessivo de memória é o estouro, o que geralmente resulta na aborto do programa. Processos Conceitos 113 Processos Conceitos 114 v Contexto de hardware: v PSW (Program Status Word): Armazena informações sobre o status da execução das instruções para possíveis detecções de problemas. Gerenciamento de Processos Conceitos 115 v Um processo é formado por três elementos básicos: continuação.. v Contexto de hardware Gerenciamento de Processos Conceitos 116 v Um processo é formado por três elementos básicos: continuação.. v Contexto de hardware v Quando um processo está em execução, o seu contexto de hardware está armazenado nos registradores do processador; 117 v Um processo é formado por três elementos básicos: continuação.. v Contexto de hardware Gerenciamento de Processos Conceitos 118 v Um processo é formado por três elementos básicos: continuação.. v Contexto de hardware v A troca de um processo por outro na CPU, realizado pelo SO, é denominada Troca de Contexto; v Na troca de contexto, o SO armazena o conteúdo dos registradores da CPU Gerenciamento de Processos Conceitos 119 v UID (User Identification): cada processo deve possuir também uma identificação do usuário v Quotas São os limites de cada recurso do sistema (arquivos, memória, etc) que um processo pode alocar v Privilégios: Definem o que o processo pode ou não fazer em relação ao sistema e aos outros processos v Um processo é formado por três elementos básicos: continuação.. v Contexto de software:O contexto de software especifica características do processo que influênciam na execução de um programa v Composto por 3 grupos de informações: v Identificação PID (Process Identification): cada processo criado pelo sistema recebe uma identificação única. As informações sobre um processo estão armazenadas na tabela de processos, indexada pelo PID; Gerenciamento de Processos Conceitos 120 v Um processo é formado por três elementos básicos: continuação.. ¨ Espaço de Endereçamento: Área de memória onde o programa será armazenado, além do espaço para os dados utilizados por ele; ¨ Cada processo possui seu próprio espaço de endereçamento, que deve ser protegido do acesso dos demais processos 121 v Um processo é formado por três elementos básicos: continuação.. v Espaço de Endereçamento: continuação.. v O que é Stack?: O stack é uma porção contígua de memória reservada para empilhar os dados necessários durante a execução de blocos de código. v Em condições normais, o stack é alocado no início da aplicação, mais precisamente no início da thread, mesmo que a aplicação só tenha a thread principal. v A pilha funciona usado uma forma LIFO (Last in First Out) ou UEPS (Último a entrar, primeiro a sair). Gerenciamento de Processos Conceitos 122 v Threads: O modelo de processos estudado supõe o uso de apenas uma thread por processo’ v Cada processo tem o seu espaço de endereçamento e um único thread de controle; v Contudo, frequentemente há situações em que é desejável ter múltiplos threads de controle no mesmo espaço de endereçamento executando em pseudo paralelo, como se fossem processos separados v Exceto pelo espaço de endereçamento compartilhado Intuitivamente, threads são como processos dentro de outo processo (são linhas/fluxo de execução) v Mas, quando é desejável utilizar mais de uma thread? Gerenciamento de Processos Conceitos 123 v Threads: continuação.. v Mas, quando é desejável utilizar mais de uma thread? Gerenciamento de Processos Conceitos 124 v Threads: continuação.. v Mas, quando é desejável utilizar mais de uma thread? Gerenciamento de Processos Conceitos 125 v Threads: Em Java, usamos a classe thread do pacote java.lang para criarmos linhas de execução paralelas. A classe Thread recebe como argumento um objeto com o código que desejamos rodar. Ex: no programa de PDF e barra de progresso v No método main, criamos os objetos e passamos para a classe Thread. O método Start é responsável por iniciar a execução da Thread. v Mais em: https://www.caelum.com.br/apostila-java-orientacao-objetos/programacao-concorrente-e-threads/126 Gerenciamento de Processos Criando um Processo 127 v Principais eventos que causam a criação de um processo: 1. Inicialização do sistema: Na inicialização vários processos são criados Exemplo: explorer.exe; 2. Execução de uma chamada de sistema de criação de processo por um processo em execução: Processos pais criam processos filhos, que podem criar seus próprios processos filhos e assim por diante Exemplo: Divisão de atividades entre processos diferentes. 3. Uma requisição do usuário para criar um novo processo: Em sistemas interativos, digitando um comando ou clicando em um ícone; 4. Início de uma tarefa em lote: Em computadores de grande porte, quando o mesmo possui recursos suficientes para executar a tarefa Gerenciamento de Processos Tipos de Processos 128 v Os processos são classificados de acordo com o tipo de processamento que realizam v Existem dois tipos de processos: v CPU-bound: um processo é dito CPU-bound quando passa a maior parte do tempo utilizando o processador; Ex: Esse tipo de processo realiza poucas operações de leitura e gravação e é encontrado em aplicações cientificas e de muito cálculo. v I/O-bound: um processo é dito I/O-bound quando passa a maior parte do tempo realizando operações de I/O (E/S) Gerenciamento de Processos Implementação de Processos 129 v Todas as informações sobre um processo são mantidas na tabela de processos; v A tabela de processos tem campos que dizem respeito: v à gerência do processo; v à gerência da memória; v à gerência de arquivos. v A tabela de processos possui uma entrada por processo e os campos nela contidos variam de sistema operacional para sistema operacional Gerenciamento de Processos Implementação de Processos 130 v Alguns campos típicos de um processo na tabela Gerenciamento de Processos Execução de Processos 131 v Os processos podem ser executados de duas formas: v Foreground (primeiro plano): são aqueles que necessitam de interação direta com o usuário, incluindo troca de informações. v Background (segundo plano): não necessitam desta interação com o usuário. Gerenciamento de Processos Comunicação entre Processos 132 v Comunicação entre processos: em inglês Inter-Process Communication (IPC), é o grupo de mecanismos que permite aos processos transferirem informação entre si. v A execução de um processo pressupõe por parte do sistema operativo, entre outras coisas, a criação de um contexto de execução próprio que, de certa forma, abstrai o processo dos componentes reais do sistema. v Devido a esta virtualização dos recursos, o processo não tem conhecimento acerca dos outros processos e, como tal, não consegue trocar informação. Gerenciamento de Processos Comunicação entre Processos 133 v Os processos executando concorrentemente podem ser de dois tipos: v Independentes: Um processo é independente se não puder afetar ou ser afetado pelos outros processos em execução no sistema; v Qualquer processo que não compartilhe dados com qualquer outro processo é independente. Gerenciamento de Processos Comunicação entre Processos 134 v Os processos executando concorrentemente podem ser de dois tipos: v Cooperativos: Um processo é cooperativo se puder afetar ou ser afetado por outros processos em execução no sistema; v Qualquer processo que compartilhe dados com outros processos 135 v Os processos executando concorrentemente podem ser de dois tipos: v Cooperativos: continuação.. v Preemptivo: é o ato de interromper temporariamente uma tarefa sendo resolvida por um sistema computacional, sem precisar de sua cooperação, e com a intenção de retomar a tarefa depois. v É semelhante ao FIFO, porém quando o processo está em estado de execução existe um tempo-limite para utilização da UCP. Quando expira o tempo, time-slice ou quantum, o processo volta ao estado de pronto, dando a vez a outro processo. Isso ocorre mesmo se o processo não terminou o seu processamento, esse procedimento é chamado de preempção por tempo Gerenciamento de Processos Estados de um Processo 136 v Em execução: o processo tem o controle da CPU (processador) v Pronto: aguarda sua vez de usar a CPU v Bloqueado (Em espera): esta ́ ocioso e aguarda o ocorrência de algum evento externo Gerenciamento de Processos Estados de um Processo 137 v PCB (Proccess control block): é uma estrutura de dados no núcleo do sistema operacional que serve para armazenar a informação necessária para tratar um determinado processo. Todos nesta lista estão no estado de pronto ........ ........ ........ ........ ........ Lista de processos em estado de pronto PCB# 5 PCB# 9 PCB# 1 PCB# 2 PCB# 4 Lista de processos em estado de espera 138 v Os processos executando concorrentemente podem ser de dois tipos: v Cooperativos: continuação.. v Não-Preemptivo: Nestes casos o processo pode ficar sendo executado pela CPU até finalizar e sem nenhuma interrupção; v Este tipo de abordagem pode gerar um efeito negativo uma vez que o processo pode ter prioridade de processamento indefinitivamente mesmo que não seja concluído; 139 v Existem dois modelos fundamentais de comunicação entre processos: v Memória distribuída: a comunicação é toda feita através de troca de mensagens; v Memória Compartilhada: É uma das consequencias da sincronização incorreta, gerando a disputa de recursos do sistema por multiplos processos ou threads, causando o corrompimento dos dados; v Parte dos dados são modificados por um processo/Thread e parte por outro, ou seja, acontece quando dois ou mais processos entram ao mesmo tempo na região crítica. Processo tra n sm isso r Processo recep tor S EN D REC E IVE C a na l d e comunica çã o 140 v Existem dois modelos fundamentais de comunicação entre processos: v A sincronização entre processos: permite gerir o acesso concorrente a recursos do sistema operacionais de forma controlada por parte dos processos, de maneira que um recurso não seja modificado em simultâneo Processos Condições de Corrida 141 v Tal como o mecanismo anterior, este oferece as mesmas vantagens em termos de segurança. A memória partilhada é uma zona de memória que vários processos podem aceder, mediante apresentação da chave e permissões corretas. v Este mecanismo necessita de sincronização entre processos, já o acesso assíncrono pode originar a condições de corrida. Processos Condições de Corrida 142 Gerenciamento de Processos Escalonamento de Processos 143 v Em computadores multiprogramados, muitas vezes múltiplos processos (ou threads) competem pelo uso da CPU ao mesmo tempo; v Isso ocorre sempre que dois ou mais processos estão simultaneamente no estado pronto. v Nestes casos, quando o CPU se encontrar disponível, devera ́ ser feita uma escolha sobre qual processo executar; v A parte do sistema operacional que faz esta escolha é o escalonador e o algoritmo que ele usa é o algoritmo de escalonamento; v É tarefa do escalonador também determinar quanto tempo o processo poderá utilizar a CPU; v O algoritmo de escalonamento define, assim, a política de utilização do processador pelos processos. Gerenciamento de Processos Escalonamento de Processos 144 v Quando um processo solicita operações bloqueantes (E/S, por exemplo), sua execução fica suspensa até que o evento solicitado ocorra; v Se outro processo estiver pronto para execução, o mesmo poderá passar a utilizar a CPU, maximizando a utilização da mesma, melhorandoo desempenho percebido do sistema. v Execução de 2 processos sem concorrência v Execução de 2 processos com concorrência Gerenciamento de Processos Escalonamento de Processos (Tipos) 145 v Escalonador de longo prazo v É o responsável de controlar o grau de multiprogramação do sistema v Número de processos que serão executados “ao mesmo tempo”. v Admite novos trabalhos no sistema, convertendo estes em processos. v São eles que alocam memória ( Mem Sec p/ Principal) Gerenciamento de Processos Escalonamento de Processos (Tipos) 146 v Escalonador de Médio Prazo v É o responsável de escolher os processos que serão removidos total ou parcialmente da memória para serem levados ao disco (suspensos); v Manter rendimento do sistema. Gerenciamento de Processos Escalonamento de Processos (Tipos) 147 v Escalonador de curto Prazo v Responsável por alocar à CPU os processos alocados em memória; v ( Mem Principal p/ Processador); v Escalonador: Seleciona o processo para sua execução, atendendo a um determinado critério. v Dispacher (despachador): É o módulo que dá controle da CPU para o processo selecionado pelo escalonador de curto prazo. v Salvar contexto do processo que sai da cpu v Restaurar contexto do processo que entra na cpu v Reiniciar a execução de processos v Alterar para estado pronto. v Configurar para o ponto apropriado do programa Troca de C ontexto Gerenciamento de Processos Escalonamento de Processos (Tipos) 148 v Escalonador de curto Prazo Gerenciamento de Processos Escalonamento de Processos (Algoritmos) 149 v Algorítimos Não-Preemptivo v FIFO; v SJF (Shortest Job First); v Algorítimos Preemptivo v RR (RoundRobin); v Por Prioridade v Multiplas Filas v Multiplas Filas com relimentação Gerenciamento de Processos Escalonamento de Processos (Algoritmos) 150 v FIFO (First In First Out): Processos são despachados de acordo com sua ordem de chegada na fila de processos prontos do sistema; v Tambem chamado FCFS (First-Come First-Served) v Uma vez que um processo ganhe a CPU, ele roda até terminar. v FIFO é uma disciplina não preemptiva. UCP Estado de Criação Estado de Espera Fila dos processos no estado de Pronto Estado de Término Gerenciamento de Processos Escalonamento de Processos (Algorítimos) 151 v SJF (Shortest-Job-First):O processador é alocado ao processo com etapa de CPU mais breve. v Em caso de empate se aplica outro algoritmo (normalmente o FIFO); v Não preemptivo: O processo que possui a CPU somente a libera quando termina sua execução ou quando se bloqueia v Preemptivo: se novos processos chegarem com CPU Burst menores que o tempo restante do processo em execução, este é tirado a força. Este algoritimo é conhecido como SRTF (Shortest Remaining Time First) Processo A Processo B Processo C 3 7 17 u .t. Gerenciamento de Processos Escalonamento de Processos (Algorítimos) 152 v SJF (Shortest-Job-First): Gerenciamento de Processos Escalonamento de Processos (Algoritmos) 153 v Por Prioridade: v Cada processo tem associado um valor inteiro que representa sua prioridade de execução; v O escalonador escolhe o processo da fila de processos prontos que tenha a maior prioridade. v A fila de processos prontos é ordenada pela prioridade dos processos Gerenciamento de Processos Escalonamento de Processos (Algoritmos) 154 v Por Prioridade: UCP Estado de Término Filas dos processos no estado de Pronto Prioridade P1 Prioridade P2 Prioridade Pn Estado de Criação Estado de Espera Preempção por prioridade Gerenciamento de Processos Escalonamento de Processos (Algoritmos) 155 v Roudin-Robin (RR) v Atribui-se a cada processo durante um intervalo de tempo um valor pré fixado de forma rotativa, denominado quantum. v Funcionamento: v Semelhante ao FCFS; v Fila de prontos é uma fila FIFO circular; v Escalonador percorre fila alocando, para cada processo, até 1 quantum. v Implementação: v Neste algorimo é requerido um valor temporal de troca de contexto. v Características: v Permite esgotar ao máximo o tempo de resposta dos processos. Algoritmo ideal para sistemas de tempo compartilhado. Gerenciamento de Processos Escalonamento de Processos (Algoritmos) 156 v Roudin-Robin (RR) v Se o processo não deixar a CPU dentro do quantum, é preemptado v Se houverem n processos e o quantum for q, cada processo possui 1/n tempo de CPU, executado em porções de tempo de tamanho até q; v Nenhum processo espera mais do que (n-1)q para utilizar CPU v Não ocorre starvation(estagnação) Gerenciamento de Processos Escalonamento de Processos (Algoritmos) 157 v Roudin-Robin (RR) v Desempenho v Quantum muito grande: execução FCFS(FIFO); v Quantum muito pequeno: muitas trocas de contexto v Alto custo v Quantum deve ser pequeno suficiente para garantir o tempo compartilhado v Quantum deve ser grande bastante para compensar trocas de contexto v Bom desempenho:80% dos picos de CPU devem ser menores que quantum Gerenciamento de Processos Escalonamento de Processos (Algoritmos) 158 v Filas Multinível: Fila de prontos é dividida em várias filas v Ex.:2filas v Processos em primeiro plano (interativos/foreground); v Processos em segundo plano (background/batch); v Cada fila possui seu próprio algoritmo de escalonamento: v Ex.: v Processos em primeiro plano: RR (para manter tempo compartilhado); v Processos em background: FCFS; UC P Fila de processos do sistema Fila de processos interativos Fila de processos batch Maior prioridade Menor prioridade 159 v Filas Multinível: v Sem retroalimentação: processo nunca é trocado de fila; v Com retroalimentação: processo pode ser trocado de fila; v Permite separar processos com características de picos de CPU semelhantes; v Um processo que usa muito tempo de CPU é movido para fila de mais baixa prioridade; v Dessa forma: processos IO-bound e interativos (dependem da interação do usuário) ficam nas filas com mais prioridade; v Processos que ficam aguardando muito tempo por CPU podem ser movidos para filas de mais alta prioridade: evita starvation (estagnação) 160 v Filas Multinível: ... continuação v É necessário haver escalonamento entre as filas: v Para escolher o processo de qual fila será executado; v Se usar algoritmo de priorida de fixa de uma fila sobre outra: starvation; v Outra opção: dividir o tempo de execução entre as filas: v Foreground fica com 80% e background com 20% do tempo de CPU. MULTIFILAS & PRIORIDADE FIXA Gerenciamento de Processos Escalonamento de Processos (Algoritmos) 161 v Escalonador de Tempo Real: v Sistemas críticos (Hard Real-Time): É necessário garantir que a(s) tarefa(s) consideradas críticas terminem antes de um determinado tempo (deadline), caso contrário o seu não cumprimento pode resultar em graves danos para o sistema. v Exemplos: v Aplicações aero espaciais; v ABS de um carro; v Sistema de automação. Gerenciamento de Processos Escalonamento de Processos (Algoritmos) 162 v Escalonador de Tempo Real: v Sistemas não críticos (Soft Real-Time): O funcionamento do sistema é apenas ligeiramente afetado caso não seja possível cumprir um determinado deadline. v Exemplos: v Aplicações multimídia v Jogos de computador Gerenciamentode Processos Exclusão Mútua/Região Crítica 163 v Como evitar condições de disputa ? v Exclusão mútua: v O processo que está acessando o recurso, ao sair de sua região crítica, executa uma instrução UP, incrementando o valor do semáforo e liberando o acesso ao recurso. Gerenciamento de Processos Exclusão Mútua/Região Crítica 164 v Como evitar condições de disputa ? v Encontrar alguma forma de proibir que mais de um processo acesse o dado compartilhado ao mesmo tempo, isto é, estabelecer a exclusão mútuade execução 1. Exclusão mútua: impedir que dois ou mais processos acessem um mesmo recurso ao mesmo tempo. v Sempre que deseja entrar na sua região crítica, um processo executa uma instrução DOWN. Se o semáforo for igual a 1, este valor é decrementado, e o processo que solicitou a operação pode executar as instruções da sua região crítica. De outra forma, se umainstrução DOWN é executada em um semáforo com valor igual a 0, o processo fica impedido do acesso, permanecendo em estado de espera e, conseqüentemente, não gerando overhead no processador. Gerenciamento de Processos Exclusão Mútua/Região Crítica 165 v Soluções de Software v Três fatores fundamentais para a solução dos problemas de sincronização devem ser considerados: 1. O número de processos concorrentes e o tempo de execução dos mesmos devem ser irrelevante; 2. Um processo fora de sua região crítica não deve impedir que outros processos entrem em suas próprias regiões críticas; 3. Um processo não pode permanecer indefinidamente esperando para entrar na sua região crítica (starvation); v As soluções mais atuais adotam primitivas que permitem que um processo seja colocado em estado de espera e reativado apenas quando o recurso estiver disponível. Nesta linha foram introduzidos os semáforos e os monitores. Gerenciamento de Processos Problemas de Sincronização 166 v Starvation: É a situação onde um processo nunca consegue executar sua região crítica e, em conseqüência, nunca consegue acessar o recurso compartilhado. v Este problema ocorre quando 2 ou mais processos estão na lista de espera por um recurso compartilhado. No momento em que o recurso é liberado, o sistema precisa determinar qual dos processos em espera deve ganhar acesso ao recurso. Gerenciamento de Processos Problemas de Sincronização 167 v Starvation v Esta escolha pode ser: v Aleatória: um processo pode nunca ser escolhido e sofrer starvation; v Por prioridade: um processo pode novamente permanecer indefinidamente na fila de espera face a constante chegada de processos de maior prioridade; v FIFO: evita starvation porém pode prejudicar o desempenho de programas com maior prioridade de execução. Gerenciamento de Processos Exclusão Mútua/Região Crítica 168 v Soluções de Software v Semáforos: Consiste em uma variável inteira, não negativa, que só pode ser manipulada por duas instruções atômicas: down e up. Cada semáforo é associado a um único recurso compartilhado e seu significado é: v 0 → inexistência de recurso disponível; v >0 → dispolibilidade de recurso. F ila de e spera de processos Processo a cessa a reg iã o cr ítica Processo d ese ja en tra r n a reg iã o cr ítica DO W N (S= 0 ) DO W N (S > 0 ) U P (S ) - p rocesso sa i d a reg iã o cr ítica Libe ra proce sso da fi la de espe ra Gerenciamento de Processos Exclusão Mútua/Região Crítica 169 v Soluções de Software v Monitor: O uso de semáforos exige muito cuidado do programador pois qualquer engano pode levar a problemas de sincronização imprevisíveis e difíceis de reproduzir, face à execução concorrente dos processos. v Monitores são mecanismos de alto nível implementados pelo próprio compilador. Para isto basta especificar todas as regiões críticas em forma de procedimentos do monitor, e o compilador se encarregará de implementar a exclusão mútua. Gerenciamento de Processos Exclusão Mútua/Região Crítica 170 v Soluções de Software v DeadLock: É conseqüência do compartilhamento exclusivo e ocorre sempre que um ou mais processos estiverem esperando por um evento (recurso) que jamais ocorrera ́. v Caracteriza-se por uma espera circular onde dois ou mais processos aguardam pela liberação de recursos para que possam continuar suas tarefas. Exemplo, o processo "A” detém o recurso X e espera pelo recurso Y, por outro lado, o processo "B" detém o recurso Y e espera pelo X. Gerenciamento de Processos Exclusão Mútua/Região Crítica 171 v Soluções de Software v DeadLock: Recurso 2 Recurso 1 Processo A Processo B Processo A so licita o Recurso 2 Recurso 1 a loca do ao Processo A Recurso 2 a loca do ao Processo B Processo B so licita o Recurso 1 Gerenciamento de Processos Exclusão Mútua/Região Crítica 172 v Soluções de Software v DeadLock: v Condições de ocorrência: u cada recurso só pode estar alocado a um único processo em um determinado instante (exclusão mútua); u um processo, além dos recursos ja ́ alocados, pode ficar na espera por outros; u um recurso não pode ser retirado de um processo porque outros processos o estão desejando (não-preempção); u um processo pode aguardar por um recurso que esteja alocado a outro processo e vice-versa (espera circular). Gerenciamento de Processos Exclusão Mútua/Região Crítica 173 v Soluções de Software v DeadLock: v Condições de ocorrência: u cada recurso só pode estar alocado a um único processo em um determinado instante (exclusão mútua); u um processo, além dos recursos ja ́ alocados, pode ficar na espera por outros; u um recurso não pode ser retirado de um processo porque outros processos o estão desejando (não-preempção); u um processo pode aguardar por um recurso que esteja alocado a outro processo e vice-versa (espera circular). v Dois procedimentos podem ser implementados para tratamento de deadlocks: previnir sua ocorrência ou, detetar sua ocorrência. Gerenciamento de Processos Exclusão Mútua/Região Crítica 174 v Soluções de Software v DeadLock: v Prevenção de Deadlocks:Constitui-se de ações a serem tomadas com o objetivo de previnir a ocorrência de uma ou mais situações que possam levar ao surgimento de um de deadlock. Algumas possibilidades são: 1. estabelecer o critério de que todos os recursos sejam previamente alocados, antes do processo ganhar acesso à UCP; 2. admitir a prática da preempção, isto é, o sistema ter a possibilidade de retirar um recurso alocado para um processo e dar para outro processo; 3. forçar que um processo não aloque mais do que um recurso de cada vez. Gerenciamento de Processos Exclusão Mútua/Região Crítica 175 v Soluções de Software v Qualquer que seja a estratégia de prevenção adotada, ela é sempre muito onerosa, uma vez que precisa ser executada a todo instante. A estratégia mais comum e menos onerosa é detectar a ocorrência de um deadlock e, uma vez detectado, executar rotinas de resolução do problema. v Detecção de DeadLock: Geralmente os algoritmos que implementam este mecanismo verificam a existência de uma “espera circular”, percorrendo toda a estrutura de alocação sempre que um processo não pode ser imediatamente atendido. v Após o deadlock ser detectado, as ações de correção mais comuns são: v Eliminar um ou mais processos envolvidos; v Liberar acumulativamente alguns dos recursos ja ́ alocados pelos processos envolvidos até que a espera circular se desfaça.Gerenciamento de Processos Exclusão Mútua/Região Crítica 176 v Soluções de Software v Detecção de DeadLock: EXERCÍCIOS 177 1) Qual a relação entre programa e processo? 2) O que é o BCP? Qual é o seu conteúdo típico? 3) Defina o conceito de processo. 4) O que é o espaço de endereçamento de um processo? 5) Qual é o propósito das chamadas de sistema(SVC)? 6) Explique as funções dos escalonadores de curto, médio e longo prazo. 7) O que significa um processo sofrer preempção? 8) Se um computador possuir apenas um processador, é possível ocorrer um processamento paralelo? Justifique a resposta. 9) Um processo pode utilizar toda a memória disponível no computador? Justifique sua resposta. 10) O que é um thread e quais as vantagens em sua utilização? 11) Como o uso de threads pode melhorar o desempenho de aplicações paralelas em ambientes com múltiplos processadores? EXERCÍCIOS 178 12) Dê um exemplo que apresente todas as mudanças de estado de um processo, juntamente com o evento associado a cada mudança. 13) Diferencie processos multithreads, subprocessos e processos independentes. 14) Explique a diferença entre processos foreground e background. 15) Dê exemplos de aplicações CPU-bound e I/O-bound. 16) O que é política de escalonamento de um sistema operacional? 17) Quais as funções do escalonador e do dispatcher? 18) Qual a diferença entre os escalonamentos FIFO e circular? 19) Descreva o escalonamento SJF e o escalonamento por prioridades. 179 FIM DA PARTE 3 ... ... ... ... INÍCIO DA PARTE 4 Gerenciamento de Memória Conceitos 180 v Gerenciamento (ou gestão) de memória é um complexo campo da ciência da computação e são constantemente desenvolvidas várias técnicas para torná-la mais eficiente. v Em sua forma mais simples, está relacionado em duas tarefas essenciais: v Alocação: Quando o programa requisita um bloco de memória, o gerenciador o disponibiliza para a alocação; v Reciclagem: Quando um bloco de memória foi alocado, mas os dados não foram requisitados por um determinado número de ciclos ou não há nenhum tipo de referência a este bloco pelo programa, esse bloco é liberado e pode ser reutilizado para outra requisição. Gerenciamento de Memória Conceitos 181 v Gerenciamento de memória: v A gerência de memória deve tentar manter na memória principal o maior número possível de processos residentes, permitindo maximizar o compartilhamento do processador e demais recursos computacionais. v Mesmo na ausência de espaço livre, o sistema deve permitir que novos processos sejam aceitos e executados. Isso é possível através da transferência temporária de processos residentes na memória principal para a memória secundária, liberando espaço para novos processos. v Este mecanismo é conhecido como swapping e será detalhado posteriormente. Gerenciamento de Memória Tipos de Alocação 182 v Alocação contígua simples v Alocação Particionada Gerenciamento de Memória Tipos de Alocação (Contígua) 183 v Alocação contígua simples: A alocação contígua simples foi implementada nos primeiros sistemas operacionais, porém ainda está presente em alguns sistemas monoprogramáveis. v Nesse tipo de organização, a memória principal é subdividida em duas áreas: uma para o sistema operacional e outra para o programa do usuário. Memória Pr in cip a l S istema O pera cion a l Á rea p a ra p rog rama v Dessa forma, o programador deve desenvolver suas aplicações, preocupado, apenas, em não ultrapassar o espaço de memória disponível, ou seja, a diferença entre o tamanho total da memória principal e a área ocupada pelo sistema operacional. Gerenciamento de Memória Tipos de Alocação (Contígua) 184 v Alocação contígua simples: v Nesse esquema, o usuário tem controle sobre toda a memória principal, podendo ter acesso a qualquer posição de memória, inclusive a área do sistema operacional. Para proteger o sistema desse tipo de acesso, que pode ser intencional ou não, alguns sistemas implementam proteção através de um registrador que delimita as áreas do sistema operacional e do usuário. v Dessa forma, sempre que um programa faz referência a um endereço na memória, o sistema verifica se o endereço está dentro dos limites permitidos. Memória Pr in cip a l Reg istra dor S istema O pera cion a l Á rea p a ra p rog rama v Caso não esteja, o programa é cancelado e uma mensagem de erro é gerada, indicando que houve uma violação no acesso à memória principal. Gerenciamento de Memória Tipos de Alocação (Contígua) 185 v Alocação contígua simples: v Apesar de fácil implementação e do código reduzido, a alocação contígua simples não permite a utilização eficiente dos recursos computacionais, pois apenas um usuário pode dispor desses recursos. v Em relação à memória principal, caso o programa do usuário não a preencha totalmente, existirá um espaço de memória livre sem utilização. Memória Pr in cip a l S istema O pera cion a l Prog ram a do u su á r io Á rea l ivre Gerenciamento de Memória Tipos de Alocação (Contígua) 186 v Alocação contígua simples: v Técnica de Overlay: Na alocação contígua simples, todos os programas estão limitados ao tamanho da área de memória principal disponível para o usuário. v Uma solução encontrada para o problema é dividir o programa em módulos, de forma que seja possível a execução independente de cada módulo, utilizando uma mesma área de memória. Essa técnica é chamada de overlay. Memória Pr in cip a l C a d a stra men to Impressã o S istem a O pera cion a l2 K b 3 K b 4 K b 4 K b 2 K b 2 K b 1 K b Módu lo p rincip a l Á rea d e ove rla y Á rea l ivre Á rea n ã o u til iz a da v A independência do código significa que quando um módulo estiver na memória para execução, o outro não precisa necessariamente estar presente Gerenciamento de Memória Tipos de Alocação (Contígua) 187 v Alocação contígua simples: v Técnica de Overlay: v Sempre que um dos dois módulos for referenciado pelo módulo principal, o módulo será carregado da memória secundária para a área de overlay. v No caso de uma referência a um módulo que já esteja na área de overlay, a carga não é realizada; caso contrário, o novo módulo irá sobrepor-se ao que já estiver na memória principal. Memória Pr in cip a l C a d a stra men to Impressã o S istem a O pera cion a l2 K b 3 K b 4 K b 4 K b 2 K b 2 K b 1 K b Módu lo p rincip a l Á rea d e ove rla y Á rea l ivre Á rea n ã o u til iz a da v A definição das áreas de overlay é função do programador, através de comandos específicos da linguagem de programação utilizada. O tamanho de uma área de overlay é estabelecido a partir do tamanho do maior módulo. Gerenciamento de Memória Tipos de Alocação (Particionada) 188 v ALOCAÇÃO PARTICIONADA v Os sistemas operacionais evoluíram no sentido de proporcionar melhor aproveitamento dos recursos disponíveis. Nos sistemas monoprogramáveis, o processador permanece grande parte do tempo ocioso e a memória principal é subutilizada. v Os sistemas multiprogramáveis já são muito mais eficientes no uso do processador, necessitando, assim, que diversos programas estejam na memória principal ao mesmo tempo e que novas formas de gerência da memória sejam implementadas. v Com n processos na memória ao mesmo tempo, a probabilidade de todos eles aguardarem por entrada/saída ao mesmo tempo, caso em que o processador
Compartilhar