Sistemas Operacionais Ivan Saraiva Silva Ciência da Computação 2005.1 Programa da Disciplina • Introdução – – – – O que é um Sistema Operacional Funções de um SO Componentes de um SO Tipos de SO • Gerência de Processos – – – – Conceito de processo Estados de processo Tipos de processo Sincronização • Semáforos, monitores, – Comunicação entre processos – Problemas • Deadlock, • Starvation Programa da Disciplina • Gerência de Memória – Endereços lógicos e físicos. – Alocação – Swapping – Memória Virtual – Paginação – Segmentação • Gerencia de Dispositivos – Device drivers – Dispositivos de E/S. • Sistemas de arquivos – – – – Arquivos Diretórios Alocação de espaço Proteção • Projeto de Sistema Operacional – Natureza do problema – Interface – Estudos de caso Bibliografia • Sistemas Operacionais Modernos – Andrew S. Tanenbaum • Sistemas Operacionais – Abrahan Silberschatz, Peter Galvin, Greg Gagne • Embedded Software Development with eCos – Anthony J. Massa Avaliação • Três notas – Primeira Nota: Prova escrita – Segunda Nota: Prova Escrita – Terceira Nota • Prova escrita – Peso 5 • Trabalho prático – Peso 5 • Datas – Primeira Nota: (xx/xx/05) – Segunda Nota: (xx/xx/05) – Terceira Nota • Prova escrita – (xx/xx/05) • Trabalho prático – (xx/xx/05 – Último dia de entrega Introdução • Hardware – Provê recursos para execução de instruções, manipulação de dados • Programa de Aplicação – Solução computacional de um problema – Define a utilização dos recursos do sistema • PROBLEMA – O hardware sozinho não oferece um ambiente de utilização simples para resolução computacional de problemas Introdução • Problema Exemplo – Considere a implementação de um sistema computacional onde duas entidades (software) produz e consome dados da memória, respectivamente – Como sincronizar a produção e o consumo de dados? Conceito de Sistema Operacional • Um Sistema Operacional... – ... possibilita o uso eficiente e controlado dos recursos de hardware – ... implementa políticas e estruturas de software de modo a assegurar um melhor desempenho do sistema de computação Conceito de Sistema Operacional • DEFINIÇÔES 1. conjunto de programas que trabalham de modo cooperativo com o objetivo de prover uma máquina mais flexível e adequada ao programador do que aquela apresentada pelo hardware 2. A program that controls the execution of application programs 3. An interface between applications and hardware 4. Programa que age como um intermediário entre o usuário de um computador e o hardware deste computador”. Conceito de Sistema Operacional • DEFINIÇÕES – Alocador de Recursos • Gerencia e aloca recursos aos “usuários” – Programa de controle • Controla a execução de programas do usuário e operações de dispositivos de E/S – Kernel • Programa que executa sempre que um programa de aplicação não está executando Conceito de Sistema Operacional • Função do Sistema Operacional – Oferecer uma interface simplificada do sistema computacional para o usuário • Fornece abstrações simplificadas • Exemplo: Arquivos no Windows – Gerenciar os recursos do hardware • Define, aplica e supervisiona políticas de acesso e utilização dos recursos • Exemplo: Gerência do espaço de endereçamento Conceito de Sistema Operacional Conceitos de Sistema Operacional • CARACTERÍSTICAS DESEJÁVEIS • Eficiência – Baixo tempo de resposta, pouca ociosidade da UCP e alta taxa de processamento. • Confiabilidade – Pouca incidência de falhas e exatidão dos dados computados. • Mantenabilidade – Facilidade de correção ou incorporação de novas características. • Pequena dimensão – Simplicidade e baixa ocupação da memória • Concorrência – Capacidade de manutenção de tarefas concorrentes • Compartilhamento de recursos – Gerencia de recursos de hardware e software compartilhados Conceitos de Sistema Operacional • Núcleo – Responsável pela gerência do processador, tratamento de interrupções, comunicação e sincronização de processos. • Gerente de Memória – Responsável pelo controle e alocação de memória aos processos ativos. • Sistema de E/S – Responsável pelo controle e execução de operações de E/S e otimização do uso dos periféricos. • Sistema de Arquivos – Responsável pelo acesso e integridade dos dados residentes na memória secundária. • Processador de Comandos / Interface com o Usuário – Responsável pela interface conversacional com o usuário. Tipos de Sistemas Operacionais • Os vários tipos surgiram da evolução histórica dos sistemas operacionais – Gerações de Sistemas operacionais • Tipos mais comuns – – – – – – – SO de Computadores de Grande Porte SO de Servidores SO de multiprocessadores SO de Computadores Pessoais SO de Tempo Real SO de Embarcados SO de Cartões Inteligentes Tipos de Sistemas Operacionais • SO de Computadores de Grande Porte – O hardware caracteriza-se por grande capacidade de E/S • Servidores WEB – As operações caracterizam-se por execução simultânea de muitas tarefas requerendo muita E/S – Tarefas • Lote • Transações • Tempo Compartilhado Tipos de Sistemas Operacionais • SO de Servidores – São “computadores pessoais de grande porte” • Permitem o compartilhamento de hardware e software • Prestam serviço a muitos usuários – – – – Impressão Arquivo Mensagens Web Tipos de Sistemas Operacionais • SO de multiprocessadores – Gerenciam múltiplas CPUs • Podem ser multiprocessadores ou multicomputadores • A preocupação principal está em: – Sincronização e comunicação de processos Tipos de Sistemas Operacionais • SO de Tempo Real – O atendimento ao tempo de resposta é a principal preocupação • O tempo de resposta pode ser crítico ou não crítico • SO de Embarcados – Apresentam restrições quanto ao espaço de memória ocupado e consumo de potencia – Geralmente também possuem restrição de tempo Conceitos de Sistema Operacional • PROCESSOS – Processo é uma abstração para um programa em execução – Processos possuem espaço de endereçamento próprio contendo (instruções dados e pilha) – Tabela de processos é uma estrutura do SO que armazena informações sobre o processo – Processos podem estar • Ativos (em Execução) • Suspensos (Bloqueados) • Prontos Conceitos de Sistema Operacional • Para a solução de uma tarefa processos podem – Criar processos filhos – Comunicar (comunicação interprocessos) • Interpretador de Comandos (shell) é o processo que recebe e trata comandos do usuário • Processos são identificados por um PID e geralmente associados a um UID • DEADLOCK – É uma situação onde dois processos competem por recursos do sistema e ficam indefinidamente bloqueados Conceitos de Sistema Operacional