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 processadorestará ocioso, é pn. Neste caso, o uso do processador será dado pela fórmula: uso do processador = 1 – pn Gerenciamento de Memória Tipos de Alocação (Particionada) 189 v ALOCAÇÃO PARTICIONADA Gerenciamento de Memória Tipos de Alocação (Particionada) 190 v ALOCAÇÃO PARTICIONADA v A alocação particionada de memória está dividida em 2 partes: 1. Alocação Estática: Decisão tomada quando o programa é compilado. 2. Alocação Dinâmica: Decisão é adiada até a execução. (Permite Swapping) Gerenciamento de Memória Tipos de Alocação (Particionada) 191 v ALOCAÇÃO PARTICIONADA v A alocação particionada de memória está dividida em em 2 partes: 1. Alocação Estática: Nos primeiros sistemas multiprogramáveis, a memória era dividida em pedaços de tamanho fixo, chamados partições. O tamanho das partições, estabelecido na fase de inicialização do sistema, era definido em função do tamanho dos programas que executariam no ambiente. v Sempre que fosse necessária a alteração do tamanho de uma partição, o sistema deveria ser desativado e r e i n i c i a l i z a d o c o m u m a n o v a configuração. Esse tipo de gerência de memória é conhecido como alocação particionada estática ou fixa. Gerenciamento de Memória Tipos de Alocação (Particionada) 192 v ALOCAÇÃO PARTICIONADA v A alocação particionada de memória está dividida em em 2 partes: 1. Alocação Estática: Memória Principa l S istema O peraciona l 2 Kb 5 Kb 8 Kb Pa rtição 1Pa rtição Tabela de pa rtições Tamanho 1 2 Kb 2 5 Kb 3 8 Kb Pa rtição 2 Pa rtição 3 Programas a serem executados: AE 3 Kb D 6 Kb C 1 Kb B 4 Kb 2 Kb Gerenciamento de Memória Tipos de Alocação (Particionada) 193 v ALOCAÇÃO PARTICIONADA v A alocação particionada de memória está dividida em em 2 partes: 1. Alocação Estática: (alocação particionada estática absoluta) v Inicialmente, os programas só podiam ser carregados e executados em apenas uma partição específica, mesmo se outras estivessem disponíveis. Essa limitação se devia aos compiladores e montadores, que geravam apenas códigos absolutos. v No código absoluto, todas as referências a endereços no programa são posições físicas na memória principal, ou seja, o programa só poderia ser carregado a partir do endereço de memória especificado no seu próprio código. Gerenciamento de Memória Tipos de Alocação (Particionada) 194 v ALOCAÇÃO PARTICIONADA v A alocação particionada de memória está dividida em 3(três) partes: 1. Alocação Estática: (alocação particionada estática absoluta) v Se, por exemplo, os programas A e B estivessem sendo executados, e a terceira partição estivesse livre, os programas C e E não poderiam ser processados. A esse tipo de gerência de memória chamou-se alocação particionada estática absoluta. 195 v ALOCAÇÃO PARTICIONADA v A alocação particionada de memória está dividida em em 2 partes: 1. Alocação Estática: (alocação particionada estática relocável) v Com a evolução dos compiladores, montadores, linkers e loaders, o código gerado deixou de ser absoluto e passa a ser realocável. v No código realocável, todas as referências a endereços no programa são relativas ao início do código e não a endereços físicos de memória. v Desta forma, os programas puderam ser executados a partir de qualquer partição. Quando o programa é carregado, o loader calcula todos os endereços a partir da posição inicial onde o programa foi alocado. Caso os programas A e B terminassem, o programa E poderia ser executado em qualquer uma das duas partições. v Esse tipo de gerência de memória é denominado alocação particionada estática relocável. Gerenciamento de Memória Tipos de Alocação (Particionada) 196 v ALOCAÇÃO PARTICIONADA v A alocação particionada de memória está dividida em em 2 partes: 1. Alocação Estática: v Fragmentação Interna: Tanto nos sistemas de alocação absoluta quanto nos de alocação relocável, os programas, normalmente, não preenchem totalmente as partições onde são carregados. v Este tipo de problema, decorrente da alocação fixa das partições, é conhecido como fragmentação interna. v Por exemplo, os programas C, A e E não ocupam integralmente o espaço das partições onde estão alocados, deixando 1kb, 3kb e 5kb de áreas livres, respectivamente, conforme a figura 10. v Um exemplo de sistema operacional que implementou esse tipo de gerência de memória é o OS/MFT da IBM. Gerenciamento de Memória Tipos de Alocação (Particionada) 197 v ALOCAÇÃO PARTICIONADA v A alocação particionada de memória está dividida em em 2 partes: 2. Alocação Dinâmica: Na alocação particionada dinâmica ou variável, foi eliminado o conceito de partições de tamanho fixo. Nesse esquema, cada programa utilizaria o espaço necessário, tornando essa área sua partição. Memória PrincipalMemória Principal Sistema OperacionalSistema Operacional 4 Kb 1 Kb 3 Kb 5 Kb 2 Kb 15 Kb Programa C Programa B Programa A Programa E BA 2 Kb E 3 Kb C 1 Kb 4 Kb v Como os programas utilizam apenas o espaço de que necessitam, no esquema de alocação particionada d i n â m i c a o p r o b l e m a d a fragmentação interna não ocorre. Gerenciamento de Memória Tipos de Alocação (Particionada) 198 v ALOCAÇÃO PARTICIONADA v A alocação particionada de memória está dividida em em 2 partes: 2. Alocação Dinâmica: (Fragmentação externa) v A princípio, o problema da fragmentação interna está resolvido, porém, nesse caso, existe um problema que não é tão óbvio quanto no esquema anterior. Um tipo diferente de fragmentação começará a ocorrer, quando os programas forem terminando e deixando espaços cada vez menores na memória, não permitindo o ingresso de novos programas. v No caso da figura, mesmo existindo 12kb livres de memória principal, o programa D, que necessita de 6kb de espaço, não poderá ser carregado para execução, pois este espaço não está disposto contiguamente. v Esse tipo de problema é chamado de fragmentação externa. Gerenciamento de Memória Tipos de Alocação (Particionada) 199 v ALOCAÇÃO PARTICIONADA v A alocação particionada de memória está dividida em em 2 partes: 2. Alocação Dinâmica: (Fragmentação externa) v Existem duas soluções para o problema da fragmentação externa da memória principal. Na primeira solução, conforme os programas terminam, apenas os espaços livres adjacentes são reunidos, produzindo áreas livres de tamanho maior. Caso o programa C termine, uma área de 8kb será criada. Gerenciamento de Memória Tipos de Alocação (Particionada) 200 v ALOCAÇÃO PARTICIONADA v A alocação particionada de memória está dividida em em 2 partes: 2. Alocação Dinâmica: (Fragmentação externa) v A segunda solução envolve a relocação de todas as partições ocupadas, eliminado todos os espaços entre elas e criando uma única área livre contígua. Para que esse processo seja possível, é necessário que o sistema tenha a capacidade de mover os diversos programas na memória principal, ou seja, realizar relocação dinâmica. Esse mecanismo de compactação, também conhecido como alocação particionada dinâmica com relocação, reduz em muito o problema da fragmentação, porém a complexidade do seu algoritmo e o consumo de recursos do sistema, como processador e área em disco, podem torná-lo inviável. 201 v ALOCAÇÃO PARTICIONADA v A alocação particionada de memória está dividida em em 2 partes: 2. Alocação Dinâmica: v Os sistemas operacionais implementam, basicamente, três estratégias para determinar em qual área livre um programaserá carregado para execução. Essas estratégias tentam evitar ou diminuir o problema da fragmentação externa. v A melhor estratégia a ser adotada por um sistema depende de uma série de fatores, sendo o mais importante o tamanho dos programas processados no ambiente. i. Gerência de Memória com Mapeamento de Bits v Com o emprego do mapeamento de bits, a memória é dividida em unidades de alocação, tão pequenas quanto poucas palavras ou tão grandes quanto vários quilobits. v Correspondendo a cada unidade de alocação definida, há um bit do mapa de bits, que é 0 se a unidade estiver livre e 1 se estiver ocupada. v Quanto menor a unidade de alocação, maior o mapa de bits. 202 v ALOCAÇÃO PARTICIONADA v A alocação particionada de memória está dividida em em 2 partes: 2. Alocação Dinâmica: (Estratégia para determinar área livre) i. Gerência de Memória com Mapeamento de Bits v O gerente de memória deve procurar por k bits 0 consecutivos no mapa. Esta procura é excessivamente lenta, de forma que, na prática, os mapas de bit raramente são usados. 203 v ALOCAÇÃO PARTICIONADA v A alocação particionada de memória está dividida em em 2 partes: 2. Alocação Dinâmica: (Estratégia para determinar área livre) ii. Gerência da Memória com Listas Ligadas v Uma outra forma de controlar a alocação da memória é mantendo uma lista ligada dos segmentos livres e ocupados da memória. v A lista de segmentos poderá ser ordenada pelos endereços. v Um processo que deixa a memória por qualquer motivo sempre tem dois vizinhos, exceto quando estiver no início ou no fim da fila. Tais vizinhos podem ser processos ou buracos, levando a quatro possíveis combinações. v Lado Ruim: mantendo todos os buracos em uma ou mais listas, ordenadas pelo tamanho do buraco, conseguimos um tempo de alocação bem razoável, porém um tempo de liberação extremamente ruim, pelo fato de todas as listas terem que ser pesquisadas para encontrar os vizinhos dos segmentos liberados. 204 v ALOCAÇÃO PARTICIONADA v A alocação particionada de memória está dividida em em 2 partes: 2. Alocação Dinâmica: (Estratégia para determinar área livre) iii. Gerência da Memória Usando o Sistema Buddy v O sistema buddy é um algoritmo para gerenciamento de memória que tira vantagem do fato de os computadores usarem números binários para o endereçamento, como uma forma de acelerar o merge dos buracos adjacentes quando um processo termina ou quando é retirado da memória. v Tal algoritmo funciona da seguinte forma: O gerente de memória mantém uma lista de blocos livres de tamanho 1, 2, 4, 8, 16, etc bytes, até o tamanho da memória. Com uma memória de 1M, serão necessárias 21 destas listas, desde o tamanho de 1 byte até 1M byte. Gerenciamento de Memória SWAPPING 205 v Mesmo com o aumento da eficiência da multiprogramação e, particularmente, da gerência de memória, muitas vezes um programa não podia ser executado por falta de uma partição livre disponível. A técnica de swapping foi introduzida para contornar o problema da insuficiência de memória principal. v O swapping é uma técnica aplicada à gerência de memória para programas que esperam por memória livre para serem executados. v Nesta situação, o sistema escolhe um processo residente, que é transferido da memória principal para a memória secundária (swap out), geralmente disco. v Posteriormente, o processo é carregado de volta da memória secundária para a memória principal (swap in) e pode continuar sua execução como se nada tivesse ocorrido. Gerenciamento de Memória SWAPPING 206 v O algoritmo de escolha do processo a ser retirado da memória principal deve priorizar aquele com menores chances de ser executado, para evitar o swapping desnecessário de um processo que será executado logo em seguida. EXERCÍCIOS 207 1) Quais as funções básicas da gerência de memória? 2) Qual a diferença entre fragmentação interna e fragmentação externa da memória principal? 3) Qual a limitação da alocação particionada estática absoluta em relação à alocação estática relocável? 4) O que é swapping e para que é utilizada essa técnica? 208 FIM DA PARTE 4 ... ... ... ... INÍCIO DA PARTE 5 Gerenciamento de E/S Introdução 209 v Uma das funções do sistema operacional é controlar todos os dispositivos de E/S (entrada/saída) [1]. Como existe uma gama muito grande de dispositivos, também existe a dificuldade em se desenvolver e implementar uma solução de gerenciamento eficiente e geral. CLASSIFICAÇÃO v Diferentes autores classificam os dispositivos de E/S de diferentes formas. Andrew S. Tanenbaum [1] agrupa os dispositivos de acordo como os dados podem ser acessados e/ou obtidos a partir destes dispositivos. Agrupando-os em dispositivos de blocos e dispositivos de caracteres. v Dispositivos de blocos: são dispositivos que armazenam as informações em blocos de tamanho fixo, cada um com seu próprio endereço. Os discos são exemplos de dispositivos de blocos comuns; Gerenciamento de E/S Introdução 210 CLASSIFICAÇÃO contunuação v Dispositivos de blocos: v Cada bloco com seu próprio endereço; v Tamanho típico de bloco: 512 a 32768 Bytes; v Manipulação de blocos ocorre de forma independente. v http://www.clubedohardware.com.br/artigos/teste-do-disco-rigido-externo-portatil-seagate-seven-500-gb/3202/4 Gerenciamento de E/S Introdução 211 CLASSIFICAÇÃO contunuação v Dispositivos de caractere: são aqueles que recebem fluxos de caracteres, sem considerar qualquer estrutura de blocos. Estes não são endereçáveis e não dispões de qualquer operação de posicionamento. Impressoras, interfaces de rede, mouses e a maior parte de outros dispositivos que são diferentes do disco podem ser considerados dispositivos de caractere; v Ex: Impressora, interface de rede, teclado, mouse Gerenciamento de E/S Interfaces 212 v Os dispositivos de E/S precisam de um canal especial para comunicação para interfacea-los com a CPU. Isto para resolver as diferenças nas propriedades de cada dispositivo com as propriedades da CPU e memória. As maiores diferenças entre os periféricos, a CPU e memória são: i. Dispositivos de E/S grande parte das vezes são dispositivos eletromecânicos cuja forma de operação difere da CPU e da memória, que são dispositivos eletrônicos; ii. A taxa de transferência dos dispositivos de E/S são usualmente diferentes da taxa de relógio (clock rate) da CPU. Consequentemente existe a necessidade de mecanismos de sincronização; iii. O formato e o código dos dados nos periféricos diferem do formato das palavras na CPU e memória. Gerenciamento de E/S Interfaces 213 v Para resolver estas diferenças, os sistemas computacionais incluem hardwares especiais entre a CPU e os dispositivos de E/S. Este componentes são chamadas interface units pois elas são a interface entre o barramento da CPU e os dispositivos de E/S. v Além disso, cada dispositivo tem seu próprio controlador para supervisionar as operações de um mecanismo particular daquele dispositivo. v Ex: o controlador de uma impressora controla a quantidade de papel, o tempo da impressão e a quantidade de caracteres a serem impressos. BARRAMENTO v Todas as interfaces são diretamente conectadas nos barramentos de dados, endereço e controle v Neste caso, quando a CPU deseja acessar algum dispositivo em particular, ela coloca o endereço do dispositivo no barramento de endereço. Todos os periféricos com endereços não correspondentes àquele inserido pela CPU, desabilitam sua interface. Gerenciamento de E/S Interfaces214 BARRAMENTO Gerenciamento de E/S Interfaces 215 BARRAMENTO Gerenciamento de E/S Interfaces 216 v Existem três maneiras dos barramentos se comunicarem com a memória e os dispositivos de E/S. 1. Memory-mapped I/O (E/S mapeada em memória): Onde os barramentos de dados, endereços e controle são comuns. Um espaço de endereçamento comum é compartilhado entre as interfaces e as palavras de memória, cada qual tendo valores distintos. v Computadores que possuem E/S mapeada em memória leem e escrevem nas interfaces como se estas fossem endereços de memória através do uso das mesmas instruções de leitura e escrita da memória. v A principal vantagem de se utilizar E/S mapeada em memória é em CPUs com a capacidade de endereçamento limitada. Gerenciamento de E/S Interfaces 217 v Existem três maneiras dos barramentos se comunicarem com a memória e os dispositivos de E/S. 2. Isoled I/O configuration (Configuração de E/S isolada): compartilha os barramentos de dados e endereços, mas com barramentos de controle separados. Estes computadores possuem linhas separadas de leitura e escrita para memória e dispositivos de E/S v Esta E/S mapeada em porta utiliza uma classe especial de instruções do processador. São normalmente encontrados em processadores intel , especificamente as instruções IN e OUT, que podem escrever mais bytes por ciclo, sendo até quatro bytes (outb, outw, outl) em um dispositivo de E/S. v Possuem um espaço de endereços separado da memória geral, implementado por um pino extra de E/S na interface da CPU ou por um barramento inteiro dedicado a entrada/saída. Por esta área de memória, dedicada a E/S, ser isolada da memória principal Gerenciamento de E/S Interfaces 218 v Existem três maneiras dos barramentos se comunicarem com a memória e os dispositivos de E/S. 2. Isoled I/O configuration (Configuração de E/S isolada): http://produto.mercadolivre.com.br/ MLB-686595820-impressora-hp-pro- laserjet-1102w-wireless-_JM http://produto.mercadolivre.com.br/ MLB-726953537-multifuncional-laser- mono-proxpress-m4070fr-samsung-_JM 219 220 Gerenciamento de E/S Interfaces 221 v Existem três maneiras dos barramentos se comunicarem com a memória e os dispositivos de E/S. 3. Independent Set of data, address and control buses (Conjunto de barramentos de dados, endereços e controle independentes): Isso é possível através do uso de I/O Processors Gerenciamento de E/S Sinais 222 v A CPU, a interface e o dispositivo de E/S possuem diferentes clocks que não estão sincronizados. Assim, estas unidades são ditas assíncronas entre si. A transferência assíncrona de informações ou dados entre duas unidades independentes requer que sinais de controle sejam transmitidos entre estas unidades para indicar quando cada dado esta sendo transmitido. v No caso da comunicação CPU-para-interface, os sinais de controle também precisam indicar o tempo no qual o endereço é válido. Dois métodos: v Strobing; v handshaking 223 v Strobing: Na Figura (a) a transferência é iniciada pela unidade de destino. A região hachurada no barramento de dados não há dados. Além disso, a mudança no Strobe no final de cada flecha causa uma mudança no barramento de dados no início de cada flecha. v A unidade de destino modifica o Strobe de 0 para 1. Quando o valor 1 do Strobe chega a unidade emissora, a unidade responde colocando o dado no barramento de dados. A unidade de destino espera o dado ser disponibilizado e, no pior dos casos, em um tempo fixo depois do Strobe ter sido setado para 1. Então, a unidade de destino captura os dados em um registrador e modifica o Strobede 1 para 0. Em resposta ao valor 0 do Strobe a unidade emissora retira os dados do barramento. 224 v Strobing: v Na Figura 2(b) a transferência é iniciada pela unidade emissora. Neste caso, a unidade emissora coloca os dados no barramento. Após isso, um curto intervalo de tempo é requerido para que os dados se estabilizarem no barramento e, em seguida, a unidade de origem modifica o Strobe de 0 para 1. Em resposta ao Strobe modificado de 0 para 1, a unidade de destino transfere os dados para um de seus registradores. A unidade emissora então modifica o Strobe de 1 para 0. Finalmente, após um curto período de tempo requerido para garantir que a transferência dos dados para o registrador da unidade de destino tenha sido realizada, a unidade emissora retira os dados do barramento de dados, completando assim a transferência. Gerenciamento de E/S Sinais 225 v Strobing (Suas Desvantágens): v Apesar de simples, o método de transferência de dados com o uso de strobe possui desvantagens. v Primeiro: quando a unidade emissora inicia a transferência, não existe indicação de que os dados foram realmente capturados pela unidade de destino. Isto é possível de ocorrer caso tenhamos uma falha de hardware, na qual a unidade de destino não recebe a mudança no Strobe. v Segundo: quando a unidade de destino inicia a transferência, não existe indicação para ela que a unidade emissora já tenha colocado os dados no barramento. Assim, a unidade de destino pode ler valores arbitrários do barramento ao invés dos dados esperados. Gerenciamento de E/S Sinais 226 v Strobing (Suas Desvantágens): v Apesar de simples, o método de transferência de dados com o uso de strobe possui muitas desvantagens. v Terceiro: a velocidade com que cada uma das várias unidades responde pode variar. Se existirem múltiplas unidades, a unidade que inicializar a transferência precisa esperar pelo atraso da unidade mais lenta antes de modificar o Strobe para 0. Assim , o tempo tomado para toda transferência é determinado pela unidade mais lenta 227 v Handshaking: O método handshaking usa dois sinais de controle para tratar o tempo das transferências. Além do sinal da unidade que inicia a transferência, existe um segundo sinal de controle da outra unidade envolvida na comunicação. v O princípio básico de um processo de handshaking de dois sinais é como se segue: Uma linha de controle da unidade que deseja iniciar a transferência é utilizada para requisitar uma resposta da outra unidade. v A segunda linha de controle da outra unidade é utilizada para avisar à outra unidade que a resposta esta acontecendo. Desta forma, cada unidade informa a outra a respeito de seu status. A Figura mostra o processo de transferência de dados através do uso do handshaking. 228 v Handshaking: v A transferênia é inicializada pela unidade de destino. As duas linhas de handshaking são chamadas de Request (Requisição) e Reply (Resposta). O estado inicial é quando ambas, Request e Reply estão desabilitadas e no estado 00. Os estados subsequentes são 10, 11 e 01. A unidade de destino inicia a transferência habilitando Request (1,0). A unidade emissora responde colocando os dados no barramento.......... Após um curto período de tempo, necessário para estabilizar os dados no barramento, a unidade emissora ativa Reply para sinalizar a presença de dados (1,1). Em resposta ao Reply a unidade de destino captura os dados do barramento em um registrador e desabilita Request (0,1). A unidade emissora então também desabilita Reply e o sistema volta ao estado inicial (0,0). A unidade de destino não pode fazer outra requisição até que a unidade emissora esteja pronta para prover novos dados, o que é sinalizado desabilitando Reply. 229 v Handshaking: v Transferência inicializada pelo emissor. Neste caso, o emissor controla o intervalo entre quando o dado é aplicado no barramento e Request é modificado para 1 e quando o dado é retirado do barramentoe Request volta a 0. v O método de hakdshaking prove um alto grau de flexibilidade e confiabilidade pois completar com sucesso uma transferência de dados necessita da participação ativa das duas unidades. Se uma unidade esta com problemas, a transferência não será completa. Um erro pode ser detectado através de mecanismos de time-out, que produz um alarme se a transferência não for realizada em um período de tempo pré-determinado. O time-out é implementado quando uma unidade habilita um dos sinais ( Request ou Reply) de handshaking. Se o handshake de retorno não ocorrer em um dado v O sinal de time-out pode ser utilizado para interromper a CPU e executar uma rotina que tome a devida ação para a recuperação do erro. Gerenciamento de E/S Organização da Função de E/S 230 v As informações binárias recebidas de um dispositivo externo são usualmente armazenadas em memória para posterior processamento. v Informações transferidas da CPU para um dispositivo tem como origem a memória. A CPU simplesmente executa as instruções de E/S e pode aceitar os dados temporariamente, mas o destino final ou a origem dos dados é a memória. v Atualmente quatro técnicas podem ser utilizadas para possibilitar a E/S. v Programmed I/O (E/S Programada); v Interrupt-driven I/O (E/S por Tratamento de Interrupção) v DMA - Direct Memory Access (ADM - Acesso Direto a Memória) v I/O Processor - (Processador de E/S) Gerenciamento de E/S Organização da Função de E/S 231 v Programmed I/O (E/S Programada): Quando o processador esta executando um programa e encontra uma instrução relacionada à E/S, este executa aquela instrução (de E/S) através da aplicação de um comando à interface do dispositivo apropriado. Usualmente, a transferência é realizada entre um registrador da CPU e um registrador da interface do dispositivo ou através da CPU e memória. 232 v Com a E/S programada, quando um dispositivo realiza as operações desejadas, ou possui informações que devem ser enviadas ele as envia para sua interface que simplesmente seta um bit no registrador de status (geralmente chamado de flag) indicando sua necessidade de troca de dados. Nem uma outra ação é tomada pela interface do dispositivo para alertar o processador. Assim, é responsabilidade do processador checar a flag de status da interface de tempos em tempo. v Na E/S programada, o processador permanece em um loop de programa chamado busy-wait loop (loop de espera ocupada) até que a interface do dispositivo indique que esta pronta para transferência. v A transferência de dados controlada por programa é utilizada somente em sistemas que são dedicados a monitorar um dispositivo constantemente. A diferença entre a taxa de transmissão de informação entre a CPU e o dispositivo de E/S torna este tipo de transferência ineficiente. Gerenciamento de E/S Organização da Função de E/S 233 v Interrupt-driven I/O (E/S por Tratamento de Interrupção): Uma alternativa à E/S programada é a E/S dirigida à interrupção. A CPU não precisa constantemente chegar a flag das interfaces dos dispositivos, ao invés disso ele permite que as interfaces o informe quando estão prontas para transmissão. O processador então executa o processo atual e a transferência de dados, tal como na E/S programada. Após ter efetuado a transmissão o processador volta ao processamento que estava efetuando antes de ter sido interrompido. v O E/S dirigida à interrupção, apesar de mais eficiente do que a simples E/S programada, ainda requer a intervenção ativa do processador para transferir informações entre a memória e uma interface, sempre com o envolvimento do processador. Assim tanto a E/S programada quanto a E/S dirigida à interrupção sofrem de duas desvantagens inerentes: I. A transferência é limitada pela velocidade com que o processador consegue testar e servir um dispositivo; II. O processador esta amarrado ao gerenciamento de uma transferência de E/S; muitas instruções precisam ser executadas em cada transferência de E/S. Gerenciamento de E/S Organização da Função de E/S 234 v DMA (Direct Memory Access): Removendo a CPU do caminho e deixando que o dispositivo periférico gerencie os barramentos de memória diretamente aliviará a CPU de muitas operações de E/S e irá permitir que o processador continue com outro processamento. v Esta técnica é chamada de ADM (Acesso Direto a Memória) ou DMA (Direct Memory Access). O controlador DMA obtém os barramentos para controlar a transmissão diretamente entre o dispositivo de E/S e a memória. Como conseqüência o processador é temporariamente privado de acessar a memória e controlar os barramentos de memória. Gerenciamento de E/S Organização da Função de E/S 235 v DMA (Direct Memory Access): v Quando o processador deseja ler ou escrever um bloco de dados, ele envia um comando para o módulo DMA através do envio das seguintes informações: • Se a operação é de leitura ou escrita; • O endereço do dispositivo de E/S envolvido; • O endereço inicial na memória para ler ou escrever os dados; • O número de palavras que deve ser lido. COMO O DMA TOMA O BARRAMENTO PARA SI? v DMA pode capturar os barramentos de muitas formas. Um método comum e muito utilizado em microprocessadores é desabilitar os barramentos através de sinais de controle especiais. A figura (Prox Slide) mostra dois sinais de controle em uma CPU que facilita a transferência via DMA. 236 v DMA (Direct Memory Access): v A requisição de barramento (BR) é utilizada pelo controlador DMA para solicitar à CPU que libere o controle dos barramentos. Quando o BR é ativado, a CPU coloca o barramento de endereços, de dados e as linhas de leitura e escrita em alta impedância. Depois disso, a CPU ativa o sinal de Barramento Garantido (BG) para informar ao DMA que ele pode tomar o controle dos barramentos. Enquanto a linha BG estiver ativa, a CPU não poderá proceder com qualquer operação que necessite acessar os barramentos. Quando o BR é desabilitado pelo módulo DMA, a CPU retorna a sua operação convencional, desabilita a saída BG e toma controle dos barramentos. 237 v DMA (Direct Memory Access): Gerenciamento de E/S Organização da Função de E/S 238 v I/O Processor - (Processador de E/S): Ao invés de ter cada interface comunicando com a CPU, um computador pode incorporar um ou mais processadores externos e atribuir a tarefa de comunicar diretamente com todos os dispositivos de E/S. v Um I/O Processor (IOP) pode ser classificado como um processador com capacidades de acesso direto a memória, que se comunica com os dispositivos de E/S. Nesta configuração, o sistema computacional pode ser dividido em uma unidade de memória e vários processadores composto de CPU e um ou mais IOPs. Cada IOP toma conta das tarefas de E/S. v O benefício derivado do uso de IOPs é o aumento da performance do sistema , atingido através da liberação da CPU das tarefas detalhadas relativa à E/S. Gerenciamento de E/S Organização da Função de E/S 239 v I/O Processor - (Processador de E/S): v Um IOP é similar a uma CPU, exceto que esta é desenvolvida para suportar os detalhes do processamento de E/S. Ao contrário, do DMA que precisa ser inteiramente configurado pela CPU, o IOP pode buscar e executar suas próprias instruções . Instruções de IOP são desenvolvidas especificamente para facilitar as transferências de E/S. Além disso, o IOP pode fazer outras tarefas de processamento, como aritmética, lógica e tradução de nomes. 240 FIM DA PARTE 5 ... ... ... ... INÍCIO DA PARTE 5