Introdução aos Sistemas Operacionais Prof. Dr. André Carvalho andre@icomp.ufam.edu.br
Agenda Conceitos Básicos Tipos de Sistemas Operacionais Histórico Geração Breve Evolução Referências 2
Conceitos Básicos
Sistema de Computação Um sistema de computação é constituído basicamente por: Hardware (processador, memória, I/O, periféricos, entre outros). Software (programas como editores de texto, navegadores, jogos, etc.). Entre esses componentes reside uma camada de software multi-facetada, chamada Sistema Operacional. 4
Sistema de Computação Arquitetura genérica de um sistema de computação aplicativos editor de textos Estudar os as fucionamento dos sistemas operacionais fdf modernos, dando dfddd sdsdsdsdsdsd reprodutor de mídia editor gráfico Sistema Operacional hardware Fonte: [Maziero 2011] discos memória portas USB rede 5
O que é um Sistema Operacional? Um programa que age como intermediário entre um usuário de um sistema de computação e o hardware Ou seja, um S.O. controla e coordena o uso dos recursos de hardware (CPU, memória, dispositivos de E/S,...) pelos programas de aplicação destinados aos usuários. 6
Objetivos de um Sistema Operacional Quais os objetivos de um S.O.? Executar programas de aplicação e facilitar; Tornar o sistema de computação conveniente ao uso; Tornar eficiente o uso dos recursos de hardware. Resumindo, os objetivos básicos de um S.O. são a abstração e gerência de recursos 7
Objetivos de um Sistema Operacional Abstração de Recursos Uma vez que manipular recursos de hardware em um sistema de computação pode ser difícil e complexo devido a fatores com, por exemplo, o padrão de comunicação das interfaces. O S.O. tem a função (tarefa) de definir interfaces abstratas para os recursos do hardware. 8
Objetivos de um Sistema Operacional Com a abstração, o S.O. consegue: Prover interfaces de acesso aos dispositivos, mais simples que as de baixo nível, para simplificar a construção de programas aplicativos. Tornar os aplicativos independentes do hardware. Definir interfaces de acesso homogêneas para dispositivos com tecnologias distintas. 9
Objetivos de um Sistema Operacional Gerência de Recursos Os programas aplicativos usam o hardware para atingir seus objetivos. Em um sistema com várias atividades simultâneas, podem surgir conflitos no uso do hardware (dois ou mais aplicativos precisam dos mesmos recursos). Cabe ao S.O. definir políticas para gerenciar o uso dos recursos de hardware pelos aplicativos, e resolver eventuais disputas e conflitos. 10
Objetivos de um Sistema Operacional Gerência de Recursos O uso do processador e da memória RAM do computador, a fila de impressão e até a detecção e mitigação de ataques de negação de serviço (DoS) são exemplos de atividades de gerência de recursos do S.O. 11
Tipos de Sistemas Operacionais 12
Tipos de Sistemas Operacionais Os sistemas operacionais podem ser classificados segundo diversos parâmetros e perspectivas, como tamanho, velocidade, suporte a recursos específicos, acesso à rede, etc.
Tipos de Sistemas Operacionais Alguns tipos são: Batch: antigos sistemas operacionais. Rede: deve possuir suporte a rede Distribuído: os recursos de cada máquina estão disponíveis globalmente, de forma transparente aos usuários. Multi-usuário: deve suportar a identificação do dono de cada recurso e impor regras de controle de acesso. 14
Tipos de Sistemas Operacionais Desktop: voltado ao atendimento do usuário doméstico e corporativo. Servidor Embarcado: opera em hardware com recursos escassos. Tempo real: deve ter comportamento temporal previsível 15
Histórico
Gerações 1ª. Geração (1945/1955) Sistemas Batch simples 2ª. Geração (1955/1965) Sistemas Batch Off-Line 3ª. Geração (1965/1980) Sistemas Batch com Spooling 4ª. Geração (1975/*) Computadores pessoais Outras Gerações 17
1ª. Geração Sistemas Batch Necessidade de um operador Programas e dados eram lidos via cartão Programas similares eram lidos em sequência Primeiro S.O. rudimentar Uso de um programa (Monitor Residente) em memória para controlar a transferência de controle entre Jobs
1ª. Geração Sistemas Batch Problemas Como o monitor sabe a natureza de um job ou qual programa executar? Como o monitor distingue um job de outro job ou entre dados e um programa? Solução Cartões de controle
1ª. Geração Sistemas Batch Cartões especiais que diziam o que o monitor devia executar Caracteres especiais distinguem cartões de controle dos cartões de dados e de programas
1ª. Geração Sistemas Batch Exemplo de cartões de controle Fonte: [Tanenbaum 2007]
1ª. Geração Sistemas Batch Monitor Residente é composto por: Interpretador de cartão de controle, responsável por ler executar as instruções dos cartões. Loader, responsável pela carga de programas na memória. Device drivers, controlam dispositivos de entrada e saída.
1ª. Geração Sistemas Batch Problema do Monitor Residente Baixa performance: Solução atividades de CPU e E/S não simultâneas; leitora de cartões lenta Operação Off-line Carregar os jobs na memória através de fita Saída da memória para a fita
2ª. Geração Sistemas Batch Off-Line Operação Off-Line
3ª. Geração Sistemas Batch c/ Spooling Spooling Torna simultânea a execução de jobs. Próximo Job é lido e armazenado em disco (job queue). Saída do Job anterior é feita do disco para a impressora. Job pool (estrutura de dados).
3ª. Geração Sistemas Batch c/ Spooling disco Leitor de cartão CPU impressoras
3ª. Geração Sistemas Batch c/ Spooling Batch Multiprogramado Vários jobs são mantidos na memória simultaneamente A CPU é multiplexada entre eles. 0 Sistema Operacional Job 1 Job 2 Job 3 512k Job 4
3ª. Geração Sistemas Batch c/ Spooling Multiprogramação CPU I/O Job 1 Job 2 CPU Job 3 I/O
4ª. Geração Computadores Pessoais Computadores Pessoais Originalmente dedicados a um único usuário. Introduziram novos dispositivos de E/S como teclado, mouse, display, impressoras, etc. Características marcantes: conveniência do usuário e interatividade. 29
Outras Gerações Sistemas Paralelos Sistemas de Tempo Real Sistemas Distribuídos
Outras Gerações Sistemas Paralelos Sistemas multiprocessadores com mais de uma CPU em comunicação próxima e constante. Sistemas Fortemente Acoplados (Tightly coupled system) Processadores compartilham a memória e o clock. A comunicação geralmente se dá via memória compartilhada.
Outras Gerações Como vantagens, os sistemas paralelos apresentam: Aumento de vazão ou throughput (volume de saída por unidade de tempo). Economia no uso de dispositivos compartilhados. Aumento de confiabilidade Tolerância a falhas.
Outras Gerações Os sistemas paralelos são classificados em: Multiprocessamento Simétrico (SMP) Cada processador roda uma cópia do S.O. Muitos processo podem executar ao mesmo tempo sem degradação de performance. CPU CPU... CPU Memória
Outras Gerações Os sistemas paralelos são classificados em: Multiprocessamento Assimétrico Cada processador tem uma tarefa específica. Processador mestre escalona e aloca o trabalho entre os processadores escravos. Mais comum em sistemas de grande porte.
Outras Gerações Sistemas de Tempo Real Geralmente utilizados como controladores em aplicações dedicadas. Controle de experimentos científicos. Sistemas de imagens médicas. Sistema de controle industrial. Aeronaves. Restrições de tempo estritas e bem definidas.
Outras Gerações Os sistemas de tempo real podem ser classificados em: Soft real-time system Atrasos podem ocasionar falhas. Gravação de CD, reprodução de música Útil para aplicações que necessitam de r e c u r s o s a v a n ç a d o s d e s i s t e m a s operacionais (multimídia, realidade virtual e aumentada).
Outras Gerações Os sistemas de tempo real podem ser classificados em: Hard real-time system. Atrasos são inaceitáveis. Muito dinheiro e até vidas humanas podem ser perdidas Memória secundária limitada ou ausente. Dados armazenados em memória principal.
Outras Gerações Sistemas Distribuídos Distribuem a computação por vários processadores físicos. Sistemas Fracamente Acoplados (Loosely coupled system): Cada processador tem sua própria memória local. Se comunicam via troca de mensagem através de uma rede.
Breve Evolução dos Sistemas Operacionais
Breve Evolução dos Sistemas Operacionais Anos 40: cada programa executava sozinho e tinha total controle do computador. Anos 50: os sistemas de computação fornecem bibliotecas de sistema (system libraries) que encapsulam o acesso aos periféricos, para facilitar a programação de aplicações. 1961: o grupo do pesquisador Fernando Corbató, do MIT, anuncia o desenvolvimento do CTSS Compatible Time-Sharing System [Corbató et al., 1962], o primeiro sistema operacional com compartilhamento de tempo.
Breve Evolução dos Sistemas Operacionais 1965: a IBM lança o OS/360, um sistema operacional avançado, com compartilhamento de tempo e excelente suporte a discos. 1965: um projeto conjunto entre MIT, GE e Bell Labs define o sistema operacional Multics, cujas ideias inovadoras irão influenciar novos sistemas durante décadas. 1969: Ken Thompson e Dennis Ritchie, pesquisadores dos Bell Labs, criam a primeira versão do UNIX.
Breve Evolução dos Sistemas Operacionais 1981: a Microsoft lança o MS-DOS, um sistema operacional comprado da empresa Seattle Computer Products em 1980. 1984: a Apple lança o sistema operacional Macintosh OS 1.0, o primeiro a ter uma interface gráfica totalmente incorporada ao sistema. 1985: primeira tentativa da Microsoft no campo dos sistemas operacionais com interface gráfica, através do MS-Windows 1.0.
Breve Evolução dos Sistemas Operacionais 1987: Andrew Tanenbaum, um professor de computação holandês, desenvolve um sistema operacional didático simplificado, mas respeitando a API do UNIX, que foi batizado como Minix. 1987: IBM e Microsoft apresentam a primeira versão do OS/2, um sistema multitarefa destinado a substituir o MS-DOS e o Windows. Mais tarde, as duas empresas rompem a parceria; a IBM continua no OS/2 e a Microsoft investe no ambiente Windows.
Breve Evolução dos Sistemas Operacionais 1991: Linus Torvalds, um estudante de graduação finlandês, inicia o desenvolvimento do Linux, lançando na rede Usenet o núcleo 0.01, logo abraçado por centenas de programadores ao redor do mundo. 1993: a Microsoft lança o Windows NT, o primeiro sistema 32 bits da empresa. 1993: lançamento dos UNIX de código aberto FreeBSD e NetBSD. 1995: Windows 95, primeiro S.O. De fato para desktops da Microsoft.
Breve Evolução dos Sistemas Operacionais 2001: a Apple lança o MacOS X, um sistema operacional derivado da família UNIX BSD. 2001: lançamento do Windows XP. 2004: lançamento do núcleo Linux 2.6. 2006: lançamento do Windows Vista.
Referências Operating System Concepts. A. Silberschatz, P. Galvin e G. Gagne. 8 th edition. John Wiley & Sons, Inc. ISBN-13: 9780470128725 (2008). Modern Operating Systems. A.S. Tanenbaum. 3 rd edition. Prentice-Hall, ISBN-13 978-0136006633 (2007). Livro de Sistemas Operacionais. Carlos A. Maziero. Disponível em http://www.ppgia.pucpr.br/~maziero/ doku.php/so:livro_de_sistemas_operacionais. 2011 47