– Definição – Evolução – Função – Tipos e características (classificação, estrutura e componente) Fundamentos de Sistemas Operacionais - Definição ■ O sistema operacional é uma camada de software que opera entre o hardware e os programas aplicativos voltados ao usuário final. ■ O sistema operacional é 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). – Software especial que acorda a máquina e faz com que ele reconheça a CPU, a memória, o teclado, o sistema de vídeo e as unidades de discos – Oferece ao usuário a facilidade de se comunicar com o computador Fundamentos de Sistemas Operacionais - Definição
Figura 1 - Estrutura de um sistema de computação típico. Fonte: MAZIERO, 2011
Fundamentos de Sistemas Operacionais - Definição
■ Núcleo do mecanismo que faz o computador funcionar
■ Intermediário entre as solicitações dos usuários e dos programas ■ Gerencia e orienta o hardware do computador e as transferências de dados de e para as unidades de disco Fundamentos de Sistemas Operacionais - Definição ■ Objetivos básicos de um SO: – Abstração de recursos – Gerência de Recursos Fundamentos de Sistemas Operacionais - Definição ■ Abstração de Recursos: ■ Acessar os recursos de hardware de um sistema de computação pode ser uma tarefa complexa, devido às características específicas de cada dispositivo físico e a complexidade de suas interfaces. Por exemplo, a sequência a seguir apresenta os principais passos envolvidos na abertura de um arquivo (operação open) em um leitor de disquete: – 1. verificar se os parâmetros informados estão corretos (nome do arquivo, identificador do leitor de disquete, buffer de leitura, etc); – 2. verificar se o leitor de disquetes está disponível; – 3. verificar se o leitor contém um disquete; – 4. ligar o motor do leitor e aguardar atingir a velocidade de rotação correta; – 5. posicionar a cabeça de leitura sobre a trilha onde está a tabela de diretório; – 6. ler a tabela de diretório e localizar o arquivo ou subdiretório desejado; – 7. mover a cabeça de leitura para a posição do bloco inicial do arquivo; – 8. ler o bloco inicial do arquivo e depositá-lo em um buffer de memória. Fundamentos de Sistemas Operacionais - Definição ■ Abstração de Recursos: ■ Assim, o sistema operacional deve definir interfaces abstratas para os recursos do hardware, visando atender os seguintes objetivos: ■ Prover interfaces de acesso aos dispositivos, mais simples de usar que as interface de baixo nível, para simplificar a construção de programas aplicativos. – Ex: Ler arquivos do HD, abstração Arquivo (open, read, close) ■ Tornar os aplicativos independentes do hardware. – Através da interface abstrata, o SO desacopla o hardware dos softwares. ■ Definir interfaces de acesso homogêneas para dispositivos com tecnologias distintas. – Através das abstrações, o SO permite aos aplicativos usar a mesma interface para dispositivos diversos. Ex: um aplicativo acessa dados em disco através de arquivos e diretórios sem se preocupar com a estrutura real de armazenamento (CD, pendrive, HD externo...) Fundamentos de Sistemas Operacionais - Definição ■ Gerência de Recursos: ■ Em um sistema com várias atividades simultâneas, podem surgir conflitos no uso do hardware, quando dois ou mais aplicativos precisam dos mesmos recursos para poder executar. Cabe ao sistema operacional definir políticas para gerenciar o uso dos recursos de hardware pelos aplicativos, e resolver eventuais disputas e conflitos. ■ Exemplos: – Processador e Memória RAM: seu uso processador deve ser distribuído entre os aplicativos do sistema, sem prejudicar os outros; – A impressora é um recurso cujo acesso deve ser efetuado de forma mutuamente exclusiva (apenas um aplicativo por vez) - PrintJobs (FIFO); – Ataques de negação de serviço (DoS – Denial of Service) são comuns na Internet. O SO do servidor deve detectar tais situações e gerenciar o uso dos recursos. Fundamentos de Sistemas Operacionais - Definição ■ QUEM DESENVOLVE SISTEMAS OPERACIONAIS ?
Unix, Linux, MAC OS e Microsoft Windows
Os computadores Apple Macintoch só rodam o sistema operacional da
Apple (Mac OS) Fundamentos de Sistemas Operacionais - Definição ■ O QUE É PLATAFORMA? ■ Refere-se a uma combinação de hardware de computador e sistema operacional; ■ A plataforma de microcomputador mais comum compõe-se do sistema operacional Windows em execução em um PC com processador Intel, muitas vezes chamada de Wintel; ■ Geralmente, os softwares aplicativos podem ser executados somente em uma plataforma; são desenvolvidos ou selecionados de acordo com a plataforma; ■ x86, AMD64 (x86-64, x64) Fundamentos de Sistemas Operacionais - Definição ■ CARACTERÍSTICAS DESEJÁVEIS DE UM S.O ■ 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 Fundamentos de Sistemas Operacionais - Evolução ■ Evolução dos Sistemas Operacionais Fundamentos de Sistemas Operacionais - Evolução ■ MS-DOS DOS (Disk Operating System) ■ Usa uma interface de linha de comando: – A tela apresenta prompt ao usuário – C:\ que aparece na tela quando o computador é iniciado, refere-se à unidade de disco – > é o prompt, um símbolo que indica que o sistema está à espera de alguma instrução ■ O usuário digita comandos ■ Amplamente substituído pelas interfaces gráficas Não é amigável (user-friendly) Fundamentos de Sistemas Operacionais - Evolução ■ MS DOS Fundamentos de Sistemas Operacionais - Evolução ■ MICROSOFT WINDOWS – Padrão de ambiente operacional para computadores com processadores Intel; – Iniciou-se como um ambiente operacional para o MSDOS e não era um sistema operacional completo; – Agora é uma família completa de sistemas operacionais; – Usa uma interface gráfica colorida que facilita o acesso ao sistema operacional; – Os usuários podem usar os comandos e a interface do DOS; Fundamentos de Sistemas Operacionais - Evolução ■ Versões anteriores do Windows, culminando no Windows 3.1 eram shells do MS-DOS ■ Uma camada adicionada “por cima” do DOS separa o sistema operacional do usuário; ■ Torna o sistema operacional WINDOWS 3.X Torna o sistema operacional mais fácil de usar; Fundamentos de Sistemas Operacionais - Evolução ■ WINDOWS 95 – Sistema multitarefas compatível com o MS-DOS e versões do MS-Windows 3.x – Tornou-se um sistema operacional independente – Object Linking and Embedding (OLE): Permite ao usuário incorporar ou vincular um documento em outro – Interface gráfica (GUI) – Usa menus para ativar comandos; – Nomes de arquivos extensos (255 caracteres) Fundamentos de Sistemas Operacionais - Evolução ■ WINDOWS 98 – Atende ao mercado de consumidores domésticos; – Capacidade para navegação na Internet e Intranet (Internet Explorer); – Suporte para hardware de última geração, inclusive DVD e multimídia; – Suporte para unidades de disco de grande capacidade; – Assistente de instalação: software passo a passo para instalar, configurar e usar software; Fundamentos de Sistemas Operacionais - Evolução ■ WINDOWS ME – Suporte para multimídia: Windows Media Player (controles de bancos de dados de música) e Windows Movie Maker (edição de vídeo) – Maiores recursos de confiabilidade – Suporte para redes domésticas; – Recurso de Restauração do Sistema; – Último sistema operacional Microsoft baseado no kernel do Windows 95; Fundamentos de Sistemas Operacionais - Evolução ■ WINDOWS NT – NT = New Technology – Sistema cliente (Workstation), com uma interface similar à do MS-Windows 98, passível de conexão com o MS-Windows NT Server – A versão 4.0 tem exatamente a mesma aparência do Windows 98; porém é bem mais robusto internamente – Destina-se a ambientes corporativos, ligados em rede; – Projetado para garantir estabilidade e recursos de segurança mais sólidos; Fundamentos de Sistemas Operacionais - Evolução ■ WINDOWS 2000 – Windows NT 5.0: última geração do Windows NT; – Desenvolvido para substituir o Windows 95, 98 e NT Workstation em desktops e laptops – Um computador servidor para muitos usuários: a partir da identificação, o sistema recupera as preferências, área de trabalho e arquivos; – Suporte à computação móvel e a produtos avançados sem fio e de rede, com dispositivos de infravermelho – Versões: ■ Windows 2000 Professional para usuários independentes ■ Windows 2000 Server para redes comerciais ■ Windows 2000 Server Advanced para aplicação de e-commerce ■ Windows 2000 Datacenter para rede de grande escala Fundamentos de Sistemas Operacionais - Evolução ■ WINDOWS XP – Reúne, em um único produto, versões corporativa e doméstica: ■ XP Home Edition (versão doméstica) ■ Windows XP Professional (versão corporativa) ■ XP 64-Bit Edition (processadores Intel Itanium 64 bits) – Melhor interface com o usuário: área de trabalho mais clara e desobstruída; mais ícones no menu Iniciar redesenhado; – Mais personalização; – Suporte para mídia digital: música em MP3, câmera fotográfica e videocâmera digital; – Sistema de encriptação de arquivos; – Suporte para múltiplos usuários; – Suporte e proteção para a Internet; – Suporte para rede sem fio; Fundamentos de Sistemas Operacionais - Evolução ■ WINDOWS 2003 SERVER – Uma atualização do Windows 2000 Server – Tem quatro diferentes versões desenvolvidas para diferentes níveis de complexidade de rede – Além de contar com toda a funcionalidade do Windows server 2000, também oferece suporte a plataforma .NET da Microsoft Fundamentos de Sistemas Operacionais - Evolução Fundamentos de Sistemas Operacionais - Evolução ■ MAC OS – Projetado para o computador Macintosh Apple; – Primeira GUI bem-sucedida comercialmente; – Serviu como modelo para o Windows e outros produtos com interface gráfica desenvolvidos a partir de então; – “O Mac OS X é o sistema operacional mais avançado do mundo. Uma base sólida UNIX e arquitetura simples e intuitiva fazem o Mac ser tão inovador como altamente seguro, compatível e fácil de usar. Tão simples que não há nenhum outro igual a ele.” Fundamentos de Sistemas Operacionais - Evolução ■ UNIX – Sistema baseado em caracteres com interface de linha de comando, embora diversas interfaces gráficas estejam disponíveis; – Não é ligado a nenhuma família de processadores; – Roda praticamente em qualquer tipo de sistema (PC, mainframe, estação de trabalho), de qualquer fabricante; – Principal sistema operacional em uso em servidores de Internet; – Nenhuma empresa controla o UNIX e diversas versões estão disponíveis: SysV (AT&T), BSD (Berkeley), Solaris (Sun), IRIX (SGI), AIX (IBM), Linux (software gratuito); Fundamentos de Sistemas Operacionais - Evolução ■ LINUX – Uma das implementações do UNIX; – Desenvolvido por Linus Torvalds e disponibilizado para o público em 1991; – Possibilidade de instalação em um PC, no qual tenha sido instalado outro sistema operacional (dual boot); – Mais estável do que o Windows; – Usa interface de linha de comando ou GUI; – Muitas companhias criaram uma interface gráfica (distribuição); Conceito de software aberto: código-fonte é livre e os usuários podem modificar e distribuir o software Fundamentos de Sistemas Operacionais - Funções ■ Gerenciamento da Memória ■ Gestão do sistema de armazenamento e de arquivos ■ Gestão e configuração de dispositivos ■ Gestão e suporte a outros programas ■ Interface com o usuário ■ Programação de tarefas ■ Gestão de Proteção Fundamentos de Sistemas Operacionais - Funções ■ Gerenciamento de Memória ■ Processo de particionamento e alocação da memória para os programas e de mantê-los separados um do outro na memória ■ Particionamento da Memória: cada partição contém um programa ■ Primeiro Plano e Segundo Plano: alocam programas de alta prioridade no primeiro plano (receberão mais tempo de CPU) ■ Armazenamento Virtual: utilização de memória virtual ■ Proteção da Memória: definição dos limites de cada programa na memória, usado em multiprogramação Fundamentos de Sistemas Operacionais - Funções ■ Gerenciamento de Memória ■ Memória Virtual – O sistema operacional aloca um espaço em um meio de armazenamento (usualmente o disco rígido) para atuar como memória principal adicional Fundamentos de Sistemas Operacionais - Funções ■ Gestão do Sistema de Armazenamento e de Arquivos ■ Armazena arquivos em uma estrutura hierárquica de diretórios
■ Formatação de Discos: Processo
de preparação de um disco para leitura e escrita (gravação). Fundamentos de Sistemas Operacionais - Funções ■ Gestão e Configuração de Dispositivos ■ Driver de Dispositivo: – Programa que possibilita a comunicação do sistema operacional com um dispositivo de E/S – Cada dispositivo requer um driver próprio (software de controle) Fundamentos de Sistemas Operacionais - Funções ■ Gestão e Configuração de Dispositivos ■ Plug and Play: – Reconhecimento de novos dispositivos pelo computador, instalação automática de drivers para esses dispositivos e verificação de conflitos com outros dispositivos; – Suportado Suportado pela maioria maioria dos dispositivos dispositivos e sistemas sistemas operacionais atuais; ■ Como funciona? – Quando se conecta e liga um sistema Plug’n Play, o principal árbitro entre o software e o hardware, o BIOS (sistema básico de entrada e saída), é o primeiro componente a assumir o controle; – Com base em identificadores identificadores (códigos (códigos permanentemente permanentemente gravados na ROM), o BIOS reconhece os dispositivos instalados; – O sistema operacional assume o controle dos dispositivos; Fundamentos de Sistemas Operacionais - Funções ■ Gestão e Suporte a Outros Programas ■ Os programas geralmente possuem uma interface própria com o usuário; ■ Assumem o controle da tela, teclado e mouse; ■ Precisam usar o kernel para se comunicarem com dispositivos de E/S, memória, unidades de discos e outros dispositivos do computador; Fundamentos de Sistemas Operacionais - Funções ■ Interface com o Usuário ■ Controle do modo de entrada de dados e do modo de apresentação das informações na tela do monitor Fundamentos de Sistemas Operacionais - Funções ■ Programação de Tarefas ■ Ambiente Multitarefas: Usuário trabalha ao mesmo tempo com duas ou mais aplicações residentes na memória Fundamentos de Sistemas Operacionais - Funções ■ Gestão de Proteção ■ Computadores conectados em rede e compartilhados por vários usuários: definir os recursos que cada usuário pode acessar, as formas de acesso permitidas (leitura, escrita, etc) e garantir que essas definições sejam cumpridas. ■ Para proteger os recursos do sistema contra acessos indevidos, é necessário: – a) definir usuários e grupos de usuários; – b) identificar os usuários que se conectam ao sistema, através de procedimentos de autenticação; – c) definir e aplicar regras de controle de acesso aos recursos, relacionando todos os usuários, recursos e formas de acesso e aplicando essas regras através de procedimentos de autorização; e finalmente – d) registrar o uso dos recursos pelos usuários, para fins de auditoria e contabilização. Fundamentos de Sistemas Operacionais - Funções Fundamentos de Sistemas Operacionais – Tipos e Características ■ Tipos de Sistemas Operacionais: – Batch (de lote) – De rede – Distribuído – Multi-usuário – Desktop – Servidor – Embutido – Tempo real Fundamentos de Sistemas Operacionais – Tipos e Características ■ Batch (de lote) – Os sistemas operacionais mais antigos trabalhavam “por lote”, ou seja, todos os programas a executar eram colocados em uma fila, com seus dados e demais informações para a execução. O processador recebia os programas e os processava sem interagir com os usuários, o que permitia um alto grau de utilização do sistema. – Atualmente, este conceito se aplica a sistemas que processam tarefas sem interação direta com os usuários, como os sistemas de processamento de transações em bancos de dados. – Além disso, o termo “em lote” também é usado para designar um conjunto de comandos que deve ser executado em sequência, sem interferência do usuário. Exemplos desses sistemas incluem o OS/360 e VMS, entre outros. Fundamentos de Sistemas Operacionais – Tipos e Características ■ De rede: – Um sistema operacional de rede deve possuir suporte à operação em rede, ou seja, a capacidade de oferecer às aplicações locais recursos que estejam localizados em outros computadores da rede, como arquivos e impressoras. Ele também deve disponibilizar seus recursos locais aos demais computadores, de forma controlada. – A maioria dos sistemas operacionais atuais oferece esse tipo de funcionalidade. Fundamentos de Sistemas Operacionais – Tipos e Características ■ Distribuído: – Em um sistema operacional distribuído, os recursos de cada máquina estão disponíveis globalmente, de forma transparente aos usuários. Ao lançar uma aplicação, o usuário interage com sua janela, mas não sabe onde ela está executando ou armazenando seus arquivos: o sistema é quem decide, de forma transparente. – Os sistemas operacionais distribuídos já existem há tempos (Amoeba [Tanenbaum et al., 1991] e Clouds [Dasgupta et al., 1991], por exemplo), mas ainda não são uma realidade de mercado. Fundamentos de Sistemas Operacionais – Tipos e Características ■ Multi-usuário: – Um sistema operacional multi-usuário deve suportar a identificação do “dono” de cada recurso dentro do sistema (arquivos, processos, áreas de memória, conexões de rede) e impor regras de controle de acesso para impedir o uso desses recursos por usuários não autorizados. – Essa funcionalidade é fundamental para a segurança dos sistemas operacionais de rede e distribuídos. Grande parte dos sistemas atuais são multi-usuários. Fundamentos de Sistemas Operacionais – Tipos e Características ■ Desktop: – Um sistema operacional “de mesa” é voltado ao atendimento do usuário doméstico e corporativo para a realização de atividades corriqueiras, como edição de textos e gráficos, navegação na Internet e reprodução de mídias simples. – Sua principais características são a interface gráfica, o suporte à interatividade e a operação em rede. – Exemplos de sistemas desktop são o Windows XP, MacOS X e Linux. Fundamentos de Sistemas Operacionais – Tipos e Características ■ Servidor: – Um sistema operacional servidor deve permitir a gestão eficiente de grandes quantidades de recursos (disco, memória, processadores), impondo prioridades e limites sobre o uso dos recursos pelos usuários e seus aplicativos. – Normalmente um sistema operacional servidor também tem suporte a rede e multi-usuários. Fundamentos de Sistemas Operacionais – Tipos e Características ■ Embutido: – Um sistema operacional é dito embutido (embedded) quando é construído para operar sobre um hardware com poucos recursos de processamento, armazenamento e energia. Aplicações típicas desse tipo de sistema aparecem em telefones celulares, controladores industriais e automotivos, equipamentos eletrônicos de uso doméstico (leitores de DVD, TVs, fornos-micro-ondas, centrais de alarme, etc.). – Muitas vezes um sistema operacional embutido se apresenta na forma de uma biblioteca a ser ligada ao programa da aplicação (que é fixa). – Exemplos de sistemas operacionais embutidos são o µC/OS, Xylinx, LynxOS e VxWorks. Fundamentos de Sistemas Operacionais – Tipos e Características ■ Tempo real: – Ao contrário da concepção usual, um sistema operacional de tempo real não precisa ser necessariamente ultra-rápido; sua característica essencial é ter um comportamento temporal previsível (ou seja, seu tempo de resposta deve ser conhecido no melhor e pior caso de operação). – A estrutura interna de um sistema operacional de tempo real deve ser construída de forma a minimizar esperas e latências imprevisíveis, como tempos de acesso a disco e sincronizações excessivas. – Existem duas classificações de sistemas de tempo real: ■ soft real-time systems, nos quais a perda de prazos implica na degradação do serviço prestado. Um exemplo seria o suporte à gravação de CDs ou à reprodução de músicas. Caso o sistema se atrase, pode ocorrer a perda da mídia em gravação ou falhas na música que está sendo tocada. ■ Por outro lado, nos hard real-time systems a perda de prazos pelo sistema pode perturbar o objeto controlado, com graves conseqüências humanas, econômicas ou ambientais. Exemplos desse tipo de sistema seriam o controle de funcionamento de uma turbina de avião a jato ou de uma caldeira industrial. – Exemplos de sistemas de tempo real incluem o QNX, RT-Linux e VxWorks. Muitos sistemas embutidos têm características de tempo real, e vice-versa. Fundamentos de Sistemas Operacionais – Tipos e Características ■ Estrutura de um SO ■ Um sistema operacional não é um bloco único e fechado de software executando sobre o hardware. Na verdade, ele é composto de diversos componentes com objetivos e funcionalidades complementares. Alguns dos componentes mais relevantes de um sistema operacional típico são: – Núcleo – Drivers – Código de Inicialização – Programas Utilitários Fundamentos de Sistemas Operacionais – Tipos e Características ■ Componentes de um SO ■ Kernel: Núcleo do sistema operacional. Sempre permanece na memória do computador (residente). Contém o código de baixo nível que se comunica com o hardware: gerencia a memória e os dispositivos, mantém o clock do computador, inicializa aplicativos, gerencia o compartilhamento de recursos computacionais.
■ Shell: Casca do sistema operacional (ambiente operacional).
É substituído a cada execução de um programa, Assume o controle do programa, recebe a inserções do usuário, interpreta-as e atua sobre elas. Metáfora da Semente: As funções centrais de um SO são controladas pelo Kernel (núcleo), enquanto a interface com o usuário é controlada pelo Shell (casca) Fundamentos de Sistemas Operacionais – Tipos e Características ■ Arquiteturas de Sistemas Operacionais ■ Pesquise sobre: – Sistemas monolíticos – Sistemas em camadas – Sistemas micro-núcleo – Modelo Cliente-Servidor – Máquinas Virtuais ■ Faça um trabalho explicando sobre cada arquitetura. Referências
Sistemas Operacionais I - Conceitos Básicos, C. A. Maziero, 2011