Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DO PARÁ INSTITUTO DE CIÊNCIAS EXATAS E NATURAIS FACULDADE DE COMPUTAÇÃO BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Professor: Dr. Josivaldo Araújo josivaldo@ufpa.br Sistemas Operacionais UNIDADE I: INTRODUÇÃO AOS SISTEMAS OPERACIONAIS 1.1. Introdução e Visão Geral 1.2. Evolução Histórica 1.3. Componentes do Sistema Operacional 1.4. Metas dos Sistemas Operacionais 1.5. Tipos de Sistema Operacional 1.6. Sistemas com Múltiplos Processadores 1.7. Arquiteturas de Sistemas Operacionais UNIDADE II: ESTRUTURAS DO SISTEMA OPERACIONAL 2.1. Níveis de Processamento de E/S 2.2. Processadores de E/S 2.3. Controladores e Dispositivos 2.4. Drivers 2.5. Mecanismo de Interrupção 2.6. Operações de E/S 2.6.1. E/S Programada 2.6.2. E/S Acionada por Interrupção 2.6.3. DMA Conteúdo Programático UNIDADE III: PROCESSOS 3.1. Introdução 3.2. Estrutura do Processo 3.3. Estados do Processo 3.4. Mudança de Estado 3.5. Criação e Eliminação de Processo 3.6. Processos Independentes, Subprocessos e Threads 3.7. Processos Foreground e Background 3.8. Processos CPU-Bound e I/O-Bound UNIDADE IV: THREADS 4.1. Introdução 4.2. Ambientes Monothread e Multithread 4.3. Estados de uma Thread 4.4. Arquitetura e Implementação de Threads 4.5. Modelos de Programação Conteúdo Programático UNIDADE V: COMUNICAÇÃO E SINCRONIZAÇÃO ENTRE PROCESSOS 5.1. Processos Independentes e Cooperantes 5.2. Condição de Corrida 5.3. Recursos 5.4. Notação de Concorrência entre Processos 5.5. Região Crítica e Exclusão Mútua 5.6. Implementação de Exclusão Mútua 5.7. Sincronização Condicional (O Problema Produtor-Consumidor) 5.8. Semáforos e Monitores 5.9. Comunicação (Troca de Mensagens) 5.10. Desabilitação de Interrupções UNIDADE VI: DEADLOCK 6.1. Visão Geral 6.2. Ambientes Monothread e Multithread 6.3. Estados de uma Thread 6.4. Arquitetura e Implementação de Threads 6.5. Modelos de Programação 6.6. Prevenção, Detecção e Recuperação de Deadlock Conteúdo Programático UNIDADE VII: GERÊNCIA DE MEMÓRIA PRINCIPAL 7.1. Introdução 7.2. Funções Básicas 7.3. Alocação Contígua Simples 7.4. Técnica de Overlay 7.5. Alocação Particionada 7.6. Swapping UNIDADE VIII: GERÊNCIA DE MEMÓRIA VIRTUAL 8.1. Visão Geral 8.2. Espaço de Endereçamento Virtual 8.3. Mapeamento 8.4. Memória Virtual por Paginação 8.5. Memória Virtual por Segmentação 8.6. Memória Virtual por Segmentação com Paginação 8.7. Swapping em Memória Virtual 8.8. Thrashing Conteúdo Programático UNIDADE IX: GERÊNCIA DE PROCESSADOR 9.1. Introdução 9.2. Escalonador 9.3. Políticas de Escalonamento 9.4. Preempção e Não Preempção 9.5. Avaliação dos Algoritmos de Escalonamento UNIDADE X: SISTEMA DE ARQUIVOS 10.1. Visão Geral 10.2. Arquivos 10.3. Diretórios 10.4. Gerência de Espaço Livre em Disco 10.5. Gerência de Alocação de Espaço em Disco 10.6. Proteção de Acesso UNIDADE XI: GERÊNCIA DE DISPOSITIVOS 11.1. Visão Geral 11.2. Acesso ao Subsistema de E/S 11.3. Device Drivers 11.4. Controladores e Dispositivos de E/S 11.5. Discos Magnéticos Conteúdo Programático � SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G.; Fundamentos de Sistemas Operacionais: Princípios Básicos. 9ª Edição. São Paulo: LTC, 2015. � MACHADO, Francis. B.; MAIA, Luiz. P.; Arquiteturas de Sistemas Operacionais. 5ª Edição. São Paulo: LTC, 2013. � TANENBAUM, Andrew. S.; Sistemas Operacionais Modernos. 3ª Edição. São Paulo: Prentice Hall Brasil, 2010. � DEITEL, Harvey M.; DEITEL, Paul J.; CHOFFNES, D. R.; Sistemas Operacionais. 3ª Edição. São Paulo: Prentice Hall Brasil, 2005. Referências Bibliográficas � Serão realizadas 03 (três) Avaliações (Provas, Trabalhos e Listas); � Cada avaliação valerá 10 pontos; � MÉDIA = (AVAL1 + AVAL2 + AVAL3)/3 � Conceito Final: � MÉDIA < 4.9 INSUFICIENTE; � 5.0 >= MÉDIA < 6.9 REGULAR; � 7.0 >= MÉDIA < 8.9 BOM; � 9.0 >= MÉDIA < 10.0 EXCELENTE; � > 16 Faltas: Reprovado por Frequência !! � Frequência: >= 75 % Avaliação da Disciplina UNIDADE I: Introdução aos Sistemas Operacionais. � Durante as últimas décadas a computação se desenvolveu a uma velocidade sem precedentes; � Processadores estão ficando tão baratos e poderosos que os computadores podem ser empregados em quase todas as situações de nossas vidas, como: editar documentos, jogar, ouvir música, assistir a vídeos, etc. Ex. da Evolução no Modo de Ouvir Música. Ipod Discman Walkman Gramofone (Vitrola) MP3 Tablet Introdução Celular � Um sistema de computação pode ser dividido em basicamente quatro componentes: Sistema Operacional Hardware Programas de Sistema e Aplicativos Usuários Introdução � Para aumentar a utilização do hardware, as aplicações são projetadas para serem executadas concorrentemente. � Se elas não forem projetadas cuidadosamente poderão interferir umas nas outras; � Isso resultou na existência de uma camada de software que separa as aplicações do hardware que elas acessam; � Fornece serviços que permitem que cada aplicação seja executada com segurança e efetivamente; � SISTEMA OPERACIONAL. S.O. Introdução � Sistemas Operacionais podem ser encontrados em dispositivos que vão de telefones celulares a automóveis, passando por computadores pessoais a computadores de grande porte. � É um programa que atua como intermediário entre o usuário e o hardware de um computador. � É um software que habilita as aplicações e os usuários a interagir com o hardware do computador. O software que contém os componentes centrais do sistema operacional é denominado núcleo. Conceitos e Visão Geral � A grande diferença entre um sistema operacional e aplicações convencionais é a maneira como suas rotinas são executadas em função do tempo. � Um sistema operacional não é executado de forma linear como a maioria das aplicações, ou seja, com começo, meio e fim. � Suas rotinas são executadas concorrentemente em função de eventos assíncronos, ou seja, eventos que podem ocorrer a qualquer momento. � Sistemas operacionais estão padronizando interfaces com o usuário e de aplicação para que se tornem mais fáceis de usar e suportem um número maior de programas. Conceitos e Visão Geral � Suas principais funções: 1. Facilidade de acesso e utilização dos recursos do sistema. 2. Compartilhamento de forma organizada e protegida dos recursos. � A evolução dos sistemas operacionais está, em grande parte, relacionada ao desenvolvimento dos computadores, e por conta disso, acabaram por evoluir bastante nos últimos 70 anos. � 1944: Surgiram os primeiros computadores eletromecânicos – Mark I (calculadoras), formado por milhares de válvulas, que ocupavam áreas enormes, sendo de funcionamento lento e duvidoso. � 1946: O ENIAC é considerado o primeiro computador digital e eletrônico. A programação era feita em painéis, através de 6 mil conectores (ou seja, sem sistema operacional), utilizando linguagem de máquina. Evolução História � DÉCADA DE 40: � O uso de transistor e da memória magnética contribuíram para o enorme avanço dos computadores da época. � O transistor permitiu o aumento da velocidade e da confiabilidade no processamento, e as memórias magnéticas, o acesso mais rápido aos dados, maior capacidade de armazenamento e computadores menores. �Um conjunto de programas podiam ser submetidos ao computador, a esse tipo de processamento deu-se o nome de processamento batch. �O primeiro sistema operacional foi chamado de “monitor” por sua simplicidade. �Fim da década de 50, a Universidade de Manchester (Inglaterra), desenvolveu o sistema operacional ATLAS, que introduziu a idéia de memória hierarquizada. Evolução História � DÉCADA DE 50: �Esta década foi palco de inúmeras inovações na área de sistemas operacionais, tendo sido implementadas várias técnicas presentes hoje, como a multiprogramação, multiprocessamento, time-sharing e memória virtual. �Foram desenvolvidos sistemas operacionais mais avançados para atender a diversos usuários interativos ao mesmo tempo. Os usuários interagiam com o computador via “terminais burros” on-line (sistemas de tempo compartilhado). � DÉCADA DE 60: � Muitos dos sistemasde tempo compartilhado da década de 60 eram multimodais, ou seja, suportavam tanto processamento em lote quanto aplicações de tempo real. � Sistemas de Tempo Real tentam dar uma resposta dentro de um certo prazo limitado. Evolução História �Os SO eram primordialmente multimodais de multiprogramação (lote, tempo compartilhado e de tempo real). �Padrões de comunicação TCP/IP passaram a ser amplamente usados – comunicação em redes locais (LANs) ficou prática e econômica com o padrão Ethernet. �A criptografia foi alvo de muita atenção, pois se tornou necessário criptografar dados proprietários ou privados. �A revolução da computação pessoal começou no final desta década com sistemas Apple II e, explodiu na década seguinte. Evolução História � DÉCADA DE 70: Evolução História � É a década do computador pessoal e da estação de trabalho. Softwares como programas de planilhas de cálculo, editores de texto, pacotes de banco de dados e pacotes gráficos ajudavam a impulsionar à revolução da computação pessoal. � A Microsoft lança a primeira versão do MS-DOS (1981). � O software de rede passa a ser fortemente relacionado ao sistema operacional e surgem os sistemas operacionais de redes, com destaque para o Novell Netware e o Microsoft LAN Manager. � DÉCADA DE 80: Editor de Texto - Wordstar � A criação da World Wide Web e as conexões de Internet cada vez mais velozes levaram a uma explosão na popularidade da computação distribuída. � A Microsoft lança o Windows 3.0 (1990) que apresenta uma interface amigável com o usuário e de grande funcionalidade. � Um outro movimento da comunidade de computação foi o movimento em direção ao software de fonte aberto. � DÉCADA DE 90: Evolução História � Sistemas que exibem paralelismo maciço ganham popularidade com a nova família de processadores; � A computação em dispositivos móveis como telefones celulares e PDAs se tornam mais comum à medida que forem equipados com processadores cada vez mais poderosos. � Sistemas de Computação na Nuvem (Cloud Computing) surgem para expandir a capacidade de armazenamento, processamento e disponibilizar softwares e aplicativos; � ANOS 2000 - ATUAL Evolução História Evolução História � Escalonador de Processo: determina quando e por quanto tempo um processo é executado em um processador. � Gerenciador de Memória: determinada quando e como a memória é alocada aos processos e o que fazer quando a memória principal estiver cheia � Gerenciador de E/S: atende às solicitações de E/S de e para dispositivos de hardwares, respectivamente � Gerenciador de Comunicação Interprocessos (IPC): permite que os processos se comuniquem uns com os outros. � Gerenciador de Sistemas de Arquivos: organiza coleções nomeadas de dados em dispositivos de armazenamento e fornece uma interface para acessar os dados nesses dispositivos. � O software que contém os componentes centrais do SO chama-se núcleo (kernel). Entre os componentes centrais estão: Componentes do Sistema Operacional � Eficiência: mede a quantidade de trabalho que um processador pode concluir em um certo período de tempo (baixo tempo de retorno). � Robustez: é tolerante a falhas e confiável (o sistema não falhará devido a erros isolados de aplicações ou de hardware). � Escalabilidade: é capaz de usar recursos à medida que são acrescentados (caso contrário chegará a um ponto em que os recursos adicionais não serão utilizados totalmente). � Extensibilidade: adapta-se bem a novas tecnologias e fornece capacidades de estender o SO para executar tarefas que vão além do seu projeto original Metas do Sistema Operacional � Usuários passaram a esperar certas características dos sistemas operacionais, tais como: � Portabilidade: é projetado de modo tal que possa operar em muitas configurações de hardware. � Segurança: impede que usuários e softwares acessem serviços e recursos sem autorização. � Interatividade: permite que aplicações respondam rapidamente às ações dos usuários ou a eventos. � Usabilidade: é aquele que tem a capacidade de atender a uma base significativa de usuários (Linux, Windows e MacOS X). Metas do Sistema Operacional � Usuários passaram a esperar certas características dos sistemas operacionais, tais como: � Os sistemas operacionais e a arquitetura dos computadores tiveram grande influência mútua. � À medida que os SO foram sendo criados e utilizados, ficou claro que mudanças no projeto do hardware poderiam simplificá-los. � Com isso, conforme a sua evolução pode-se ter: �Eram sistemas que operavam uma única tarefa, ou seja, qualquer outra tarefa para ser executada, deveria aguarda o término do programa corrente. �Todos os recursos do sistema ficam exclusivamente dedicados a uma única tarefa. � Não há interação do usuário com o programa em execução. � SISTEMAS MONOPROGRAMÁVEIS (ou Monotarefa). Tipos de Sistema Operacional � Os recursos computacionais são compartilhados entre os diversos usuários e aplicações, ou seja, várias aplicações compartilham esses mesmos recursos. � As vantagens são: a redução do tempo de resposta das aplicações processadas e de custos. � Um sistema multiprogramável pode ser classificado pela forma com que suas aplicações são gerenciadas, podendo ser dividido em: � SISTEMAS MULTIPROGRAMÁVEIS (ou Multitarefa). Tipos de Sistema Operacional 1. Sistema em Lote (Batch); 2. Sistemas de Tempo Compartilhado; 3. Sistema de Tempo Real; 4. Sistemas Embarcados; 1. SISTEMAS EM LOTE (BATCH). � A principal tarefa era transferir controle automaticamente de uma tarefa para a próxima, estando o SO sempre residente na memória. � Os operadores reuniam as tarefas em lotes com necessidades semelhantes e as executavam no computador como um grupo. � A introdução da tecnologia de disco permitiu que o sistema operacional mantivesse todas as tarefas em um disco, em vez de uma leitora de cartões serial. � Posteriormente, em função da disponibilidade de espaço na memória principal, as tarefas eram executadas produzindo uma saída em disco ou fita; Tipos de Sistema Operacional 1. SISTEMAS EM LOTE (BATCH). Tipos de Sistema Operacional 2. SISTEMAS DE TEMPO COMPARTILHADO. � A CPU executa várias tarefas alternando entre elas e os usuários podem interagir com cada aplicação durante sua execução (via teclado, mouse, etc.). � Apenas um pequeno tempo de CPU, denominado de fatia de tempo (time-slice), é necessário para cada usuário. � Caso a fatia de tempo não seja suficiente, o programa é interrompido e aguarda por uma nova fatia de tempo, até ser concluído. � Permite aos muitos usuários compartilharem o computador ao mesmo tempo (escalonamento de CPU e multiprogramação) dando a impressão de que todo o sistema está dedicado ao seu uso. Tipos de Sistema Operacional 2. SISTEMAS DE TEMPO COMPARTILHADO. Tipos de Sistema Operacional 3. SISTEMAS DE TEMPO REAL � São implementados de forma semelhante aos de tempo compartilhado. É usado quando existem requisitos rígidos de tempo na operação de um processador ou no fluxo de dados. � Esses tempos devem ser obedecidos, caso contrário, poderão ocorrer problemas irreparáveis; � Uma tarefa utiliza o processador o tempo que for necessário ou até que apareça outro mais prioritário; � A importância ou prioridade de execução de uma tarefa é definida pela própria aplicação e não pelo sistema operacional; Tipos de Sistema Operacional Controle de Tráfego Aéreo Controle de Usinas Nucleares Linha de Montagem Tipos de Sistema Operacional 3. SISTEMAS DE TEMPO REAL 4. SISTEMAS EMBARCADOS (EMBUTIDOS, MÓVEIS) � São executados em computadores que controlam dispositivos que geralmente não são considerados computadores, como aparelhos de TV, fornos de micro-ondas, automóveis; � Apresentam restrições de tamanho, memória e de consumo de energia; � Realizam tarefas predefinidas, geralmente com requisitos específicos; Tipos de Sistema Operacional SISTEMAS MONOPROGRAMÁVEIS (ou Monotarefa). SISTEMAS MULTIPROGRAMÁVEIS (ou Multitarefa). Tipos de Sistema Operacional � Caracterizam-se por possuirduas ou mais Unidades de Processamento (UP) interligadas e trabalhando em conjunto. � Vários programas podem ser executados ao mesmo tempo ou o mesmo programa pode ser subdivido em partes e executado simultaneamente por mais de uma UP. � SISTEMAS COM MÚLTIPLOS PROCESSADORES. � Podem ser divididos em: 1. SISTEMAS FORTEMENTE ACOPLADOS. 2. SISTEMAS FRACAMENTE ACOPLADOS. Sistemas com Múltiplos Processadores 1. SISTEMAS FORTEMENTE ACOPLADOS. � Existem várias Unidades de Processamento (UP) compartilhando uma mesma memória física e dispositivos de E/S, gerenciados pelo mesmo sistema operacional. � Também chamados de Multiprocessamento Simétrico (SMP); Sistemas com Múltiplos Processadores 2. SISTEMAS FRACAMENTE ACOPLADOS. � Caracterizam-se por possuir dois ou mais sistemas computacionais conectados através de linhas de comunicação (sendo que cada sistema funciona de forma independente). � Também são chamados de multicomputadores (ou Multiprocessamento Assimétrico); Sistemas com Múltiplos Processadores � ARQUITETURA MONOLÍTICA � Os sistemas operacionais de hoje tendem a ser complexos, por suportarem diversos serviços e uma variedade de recursos de hardwares e de softwares; � Arquiteturas de sistemas operacionais podem ajudar projetistas a gerenciar essa complexidade organizando os componentes. � É o tipo de arquitetura mais antiga e portanto, mais comum; � Cada componente do sistema operacional é contido no núcleo e pode comunicar-se diretamente com qualquer outro; � O núcleo normalmente é executado com acesso irrestrito ao sistema de computador; � A intercomunicação direta entre os componentes é que torna os sistemas operacionais monolíticos altamente eficientes; Arquiteturas de Sistemas Operacionais � ARQUITETURA MONOLÍTICA Interface de Chamada ao Sistema Núcleo Gerenciador de Memória Escalonador de Processos Comunicação entre Processos Gerenciador de Entrada/Saída Sistema de Arquivos Aplicações Usuário Núcleo � É difícil isolar a fonte de problemas e de outros erros; � Restrição: Arquiteturas de Sistemas Operacionais � Exemplos: � ARQUITETURA EM CAMADAS � Agrupam em camadas os componentes que realizam tarefas similares; � Cada camada comunica-se exclusivamente com as camadas imediatamente acima ou abaixo dela; � Camadas de nível mais baixo prestam serviços às de nível mais alto; � São mais modulares, pois a implementação de cada camada pode ser modificada sem exigir nenhuma modificação nas outras; � Restrição: � O desempenho se degrada em comparação ao do núcleo monolítico, pois é preciso invocar métodos adicionais para passar dados de uma camada para a seguinte. Arquiteturas de Sistemas Operacionais � ARQUITETURA EM CAMADAS Aplicações do Usuário Gerenciamento de E/S Interpretador de Mensagem Gerenciamento de Memória Alocação de Processador e Escalonamento de Processo Camada 0 Camada 1 Camada 2 Camada 3 Camada 4 Usuário Usuário Núcleo Arquiteturas de Sistemas Operacionais � Exemplo: Implementa um certo nível de camadas � ARQUITETURA DE MICRONÚCLEO � Fornece somente um número pequeno de serviços na tentativa de manter o núcleo pequeno e escalável; � A maioria dos componentes do sistema operacional (gerenciamento de processo, rede, sistemas de arquivo e gerenciamento de dispositivos) é executada fora do núcleo com um nível de privilégio mais baixo; � O micronúcleo não depende de cada componente para ser executado, um ou mais dos componentes podem falhar sem causar também a falha do sistema operacional; � Restrição: � A modularidade ocorre à custa de um maior nível de comunicação entre módulos, o que pode degradar o desempenho do sistema. Arquiteturas de Sistemas Operacionais � ARQUITETURA DE MICRONÚCLEO Interface de Chamada ao Sistema Escalonador de Processos Gerenciador de Dispositivos Sistema de Arquivos Aplicações Usuário Núcleo Comunicação entre Processos Gerenciamento de Memória Sincronização Arquiteturas de Sistemas Operacionais � Exemplos: Arquiteturas de Sistemas Operacionais � ARQUITETURA HÍBRIDA � É uma arquitetura baseada em micronúcleo, que tenta combinar aspectos e benefícios do micronúcleo e da arquitetura do núcleo monolítico; � A categoria híbrida é tida como controversa, o termo teria sido criada por Linus Torvalds; � Exemplos: � ARQUITETURA DE REDE � Um sistema operacional de rede habilita seus processos a acessar recursos que residem em outros computadores; � Muitos baseiam-se no modelo cliente/servidor; � Em ambiente de rede, um processo pode ser executado no computador em que foi criado ou em outro computador da rede; � Compartilhamento de arquivos de forma explícita ou implícita; Arquiteturas de Sistemas Operacionais � ARQUITETURA DISTRIBUÍDA � Um sistema operacional distribuído é um sistema único que gerencia recursos em mais de um sistema de computador; � Dão a ilusão de que vários computadores compõem um único computador de grande capacidade. Arquiteturas de Sistemas Operacionais � ARQUITETURA DISTRIBUÍDA � Os sistemas operacionais foram sendo aperfeiçoados nas últimas décadas com duas finalidades: 1. Escalonar as atividades computacionais para garantir um bom desempenho computacional; 2. Fornecer um ambiente conveniente para o desenvolvimento e a execução de programas; � Para melhorar o desempenho geral do sistema de computação foi introduzido o conceito de Multiprogramação que também permite o compartilhamento de tempo; � A influência da Internet e da WWW encorajaram o desenvolvimento de sistemas operacionais modernos que incluem navegadores e softwares de comunicação e rede como recursos incorporados; Conclusão
Compartilhar