Baixe o app para aproveitar ainda mais
Prévia do material em texto
CCT0011 – Sistemas Operacionais Aula 01 – Introdução aos Sistemas Operacionais Conteúdo da Aula Conceitos Fundamentais de Sistemas Operacionais Evolução Histórica dos Sistemas Operacionais Classificação dos Sistemas Operacionais Sistemas Operacionais O Sistema Operacional é um programa responsável por controlar o funcionamento do computador, como um gerente dos vários recursos disponíveis do sistema.” Tanembaum É um conjunto de programas responsável pela gerência de recursos de hardware, interfaces com o usuários e segurança de acesso e utilização. O que é um Sistema Operacional? Hardware ou Software? Sistemas Operacionais Segundo Silberschatz et al. (2004), um sistema operacional é um programa que efetua o gerenciamento dos componentes físicos do computador (hardware), como também uma base para os programas aplicativos. Além disso, atua como intermediário entre o usuário e o hardware do computador. A função do sistema operacional é permitir uma interface homem - máquina mais amigável com o usuário, isto porque encapsula as complexas rotinas de acesso a recursos de hardware, tais como, interface de programação e gerenciamento de recursos. Sistemas Operacionais O sistema operacional é uma coleção de programas que: • Inicializa o hardware do computador; • Fornece rotinas básicas para controle de dispositivos; • Fornece gerência, escalonamento e interação de tarefas; • Mantém a integridade de sistema. Um sistema operacional muito simples, para um sistema de controle de segurança, poderia ser armazenado em memória ROM, e assumir o controle ao ser ligado o computador. Sistemas Operacionais Cada parte de um sistema operacional (módulo ou função) é responsável pelo gerenciamento de um recurso específico. • Tempo de CPU. • Espaço de memória. • Espaço de disco. • Acesso aos dispositivos de comunicação. • Bibliotecas de software. Sistemas Operacionais Gerenciar recursos é garantir a utilização compartilhada do recurso sem que ocorram erros que possam gerar instabilidade ou falha no sistema. Na visão do usuário o sistema operacional fornece: • Acesso ao sistema. • Possibilidade de criar e gerir arquivos e diretórios. • Ambiente para execução de programas. • Acesso aos dispositivos de entrada e saída. • Acesso ao conteúdo de arquivos. • Detecção de erros. Evolução dos Sistema Operacionais Primeira geração da computação moderna (1945 – 1955): • Não trabalhavam o conceito de sistemas operacionais propriamente dito. • As operações eram definidas através de hardware (chaves e fios). • Muito difícil criar rotinas programáveis. • Projetista era responsável pela “programação” Evolução dos Sistema Operacionais Segunda geração da computação moderna (1955 – 1965): • Comandos executados em sequência através de cartões perfurados. • Chamada programação em batch. Em meados da década de 60, os primeiros sistemas operacionais foram desenvolvidos. Contudo, cada computador possuía seu próprio SO específico, o que implicava na incompatibilidade de mainframes distintos. Um dos maiores representantes foi o CTSS, criado pela MIT, sendo lançado em 1961 para o computador IBM 7090. Evolução dos Sistema Operacionais Primeiro Sistema Operacional Os sistemas operacionais modernos surgem a partir de 1969 com o fim do projeto de uma equipe de desenvolvedores da AT&T Bell Labs e o resultado foi o sistema proprietário apelidado de UNIX. • Foi desenvolvido inicialmente para um tipo específico de computador. • Em 1973 foi recodificado para linguagem C. • Introduziu conceitos de suporte a multiusuários, multitarefas e portabilidade. • Tornou-se base para outros sistemas como: • BSD (1977 – Berkeley Software Distribution) • Solaris • GNU/Linux • Mac OS X Evolução dos Sistema Operacionais • 1978 – Apple DOS, código fechado, utilizado no Apple II. • 1979 – Atari DOS, código fechado, utilizado nos computadores domésticos de 8 bits da marca. • 1980 – Apple SOS, código fechado, utilizado no Apple III. Xenix, código fechado, utilizado nos computadores Zilog Z8000 16 bits. 86-DOS (Q-DOS), código fechado, foi desenvolvido especificamente para processadores Intel 8086. Comprado pela Microsoft que transformou no MS-DOS. • 1981 – MS-DOS /IBM PC DOS, código fechado, utilizado nos computadores IBM devido a parceria entre as empresas. • 1984 – HP-UX, código fechado, desenvolvido pela Hewlett-Packard, primeiro a trazer um gerenciador de unidades lógicas e listas de controle de acesso. Mac OS, código fechado, removeu necessidade de comandos e introduziu uso do mouse. Evolução dos Sistema Operacionais • 1985 – Windows 1.0, código fechado, primeiro desenvolvido pela Microsoft com interface gráfica e suporte para multitarefas. Rodava sobre MS-DOS. • 1987 – MINIX, código aberto, desenvolvido por Andrew S. Tanenbaum para fins educacionais foi uma das inspirações para o lançamento do Linux. OS/2,código fechado, desenvolvido pela IBM depois do fim da parceria com a Microsoft. • 1990 – Windows 3.0, código fechado, capaz de trabalhar com processadores Intel 8086/8088, 80286 e 80386. Compatível com adaptadores gráficos de 256 cores. • 1991 – Linux, código aberto e livre, criado por Linus Torvalds tem o núcleo principal em constante evolução para englobar novas tecnologias e melhorias. Não se preocupou com interface gráfica. • 1993 – Debian, código aberto e livre, considerado um dos maiores sistemas de todos os tempos. Reúne o kernel do Linux e ferramentas do GNU. Apoio a diferentes arquiteturas, roda em x86, x64, PowerPC, SPARK, ARM, MIPS, S#() e AI-64. Evolução dos Sistema Operacionais • 1995 – Windows 95, código fechado, definiu alguns padrões e foi o responsável por tornar o Windows o sistema mais usado do mundo. • 1997 – Symbian, um dos primeiros sistemas mobile, equipou celulares da Nokia e de outra marcas. • 1998 – Windows 98, código fechado, substituiu o Windows 95. • 2000 – Windows 2000, código fechado, desenvolvido para servidores e clientes de rede. Suportava encriptação e outros recursos avançados. • 2001 – Windows XP, código fechado, provavelmente o sistema mais utilizado. Ganhou muitas atualizações. Evolução dos Sistema Operacionais • 2004 – Ubuntu, código aberto e gratuito, é o mais popular com cara do Pinguim. Baseado no Debian facilitou a utilização pelo usuário. Disponível para plataformas x86, x64, i486 e ARM. • 2008 - Android, código aberto, sistema portátil mais utilizado no mundo. • 2011 – Chrome OS – código aberto, desenvolvido pelo Google para os Chromebooks, utiliza recursos em nuvem. Versão de código para outros computadores chamada Chromium OS. • 2013 – Xbox OS, código fechado, adota parte do código Windows e é mais enxuto para focar na execução do Direct3D. Ubuntu Touch, código aberto, sistema para smartphones e tablets. Plataforma x86 e ARM. Firefox OS, código aberto, sistema enxuto focado em HTML5 para smartphones. Orbis OS, baseado em FreeBSD é o sistema operacional do PlayStation 4. Módulos de um Sistema Operacional Os módulos típicos em um SO geralmente são: • Núcleo (Kernel que gerencia os recursos do sistema e permite que os programas façam uso deles); • Interpretador de comandos (shell); • Gerenciador de processo; • Escalonador de processos (Scheduler); • Sistema de arquivos. Componentes Básicos de um Sistema Operacional Gerenciador de E/S: atende às solicitações de E/S para dispositivos de hardware (buffer e drivers). Gerenciador de sistema de arquivos: organiza coleções nomeadas de dados em dispositivos de armazenamento e fornece interface para acessar os dados nesses dispositivos. (criação e deleção de arquivos e diretórios, gerenciamento de espaços livres, mapeamento de arquivos emdisco) Gerenciador de processos: criação e extinção de processos, escalonamento de processos, mecanismos de comunicação e sincronização entre processos, entre outros. Componentes Básicos de um Sistema Operacional Gerenciador de memória: alocação e liberação de espaço de memória, gerenciamento de memória virtual (paginação e segmentação). Proteção do Sistema: protetor do sistema operacional, atuando com mecanismos de memória virtual, dos modos de execução (usuário e administrador), que limitam o acesso à usuários não autorizados. Gerenciador de Processos Gerenciador de Memória Gerenciador de Disco Gerenciador de Rede Gerenciador de E / S Gerenciador de Arquivos Sistema de Proteção (segurança de acesso) Sistema Interpretador de Comandos S.O. Componentes Básicos de um Sistema Operacional Componentes de um Sistema Operacional Conceitos fundamentais de sistemas operacionais • Conjunto de rotinas executadas pelo processador • Conjunto de programas responsáveis pela gerência de recursos (hardware, segurança de acesso e utilização, interface com o usuário) • Atua como uma interface entre o usuário e o computador (torna a utilização do computador mais fácil e segura) • Sem um sistema operacional um usuário precisaria conhecer profundamente detalhes sobre o hardware Arquitetura do sistema operacional Classificação de Sistemas Operacionais Os sistemas operacionais podem ser classificados quanto: • Tarefas. • Usuários. • Interface. • Processamento Classificação de Sistemas Operacionais Quanto a execução de tarefas Sistema Monotarefa x Sistema Multitarefa Definem a capacidade de gerenciar mais de uma tarefa ao mesmo tempo. Falamos em gerenciamento de várias tarefas e não de execução. Classificação de Sistemas Operacionais Sistemas monotarefa • Gerenciam apenas uma tarefa por vez • Todos os recursos computacionais (CPU, memória e dispositivos de E/S) são alocados para um único programa • Mesmo que o processador esteja ocioso aguardando por uma operação de E/S (digitação/impressão), nenhum outro programa é executado Sistemas Multitarefa • Recursos computacionais são utilizados por diferentes programas • Processador utiliza o tempo de ociosidade gerado por um determinado processo para processar outra tarefa • Garante uso mais otimizado dos recursos mas sua implementação é mais complexa Classificação de Sistemas Operacionais Sistema Monotarefa x Sistema Multitarefa Monotarefa: Admite e gerencia apenas uma tarefa em execução por vez. Ex.: DOS Multitarefa: Admite e gerencia várias tarefas em processamento concorrente. Ex.: Windows XP, Windows 2003, Linux, MacOS, etc. Monotarefa x Multitarefa Concorrente ≠ Simultâneo Processamento Monotarefa Processamento Multitarefa Sistemas multitarefa As tarefas se ALTERNAM no uso da CPU e dos demais recursos. PERCENTUAL DE TEMPO QUE A TAREFA UTILIZOU A CPU NO ÚLTIMO MINUTO Sistemas multitarefa Classificação de Processamento De acordo com o gerenciamento das aplicações, os sistemas multiprogramáveis podem ser classificados como: • Sistemas Batch • Sistemas de tempo compartilhado • Sistema de tempo real. Classificação de Processamento Sistemas operacionais Batch (lote) • Programas eram escritos em cartões perfurados • Leitoras liam os cartões e gravavam em fita magnética • As fitas eram lidas e processadas e os resultados gravados em outra fita • Os resultados eram então impressos Apesar de apresentarem um tempo de resposta muito longos eram considerados altamente eficientes. Classificação de Processamento Sistemas operacionais de Tempo Compartilhado (time-sharing) Os sistemas operacionais de tempo compartilhado são sistemas onde o tempo do processador é dividido em pequenas partes (time-slice) permitindo a cada programa utilizar uma destas partes para a sua execução. O controle do sistema operacional é feito em um computador central. Os usuários interagem com o computador central através de comandos digitados em terminais compostos por teclado, monitor e mouse. Grande parte das atuais aplicações comerciais é processada em sistemas de tempo compartilhado. Classificação de Processamento Sistemas de Tempo Real (real time) Sistemas que possuem forte vínculo com o tempo. O resultado só é considerado correto se a execução acontecer no tempo previsto. O sistema deve garantir que uma tarefa possua todos os recursos necessários para sua execução em um intervalo de tempo pré-definido. Não se trata de “velocidade” de processamento e sim garantia de tempo de resposta. Classificação de Processamento Sistemas com Múltiplos Processadores São sistemas que gerenciam vários processadores interligados e trabalhando em conjunto. Os processadores podem estar num mesmo computador ou espalhados fisicamente em uma rede de computadores. Dessa forma diversos programas podem ser executados simultaneamente, ou um programa pode ser dividido em partes e executados em processadores diferentes numa mesma máquina ou em várias. Devido a sua capacidade de ampliar consideravelmente o poder de processamento a medida que novos processadores são adicionados, este tipo de sistema é muito empregado em aplicações de processamento de imagens, simulações, prospecção de petróleo, processamento científico entre outros. Sistemas com Múltiplos Processadores Classificação de Processamento Classificação de Processamento Sistemas fortemente acoplados Nos sistemas fortemente acoplados existem vários processadores compartilhando uma única memória física (shared memory) e dispositivos de entrada/saída sendo gerenciados por apenas um sistema operacional. Em função desta características, os sistemas fortemente acoplados também são conhecidos como multiprocessadores. Classificação de Processamento Sistemas fortemente acoplados Segundo Silberschatz et al. (2004) os sistemas fortemente acoplados podem ser divididos em: • Multiprocessamento Simétrico (SMP – Symmetric Multiprocessing) • Multiprocessamento Assimétrico (NUMA – Non-Uniform Memory Access). Nos sistemas de multiprocessamento simétrico os processadores compartilham o mesmo tempo de memória. No multiprocessamento assimétrico, o tempo de acesso à memória pode variar dependendo da localização física dos processadores em relação à memória. Classificação de Processamento Sistemas fracamente acoplados Os sistemas fracamente acoplados caracterizam-se por possuir dois ou mais sistemas computacionais conectados através de linhas de comunicação. Cada sistema funciona de forma independente, possuindo seu próprio sistema operacional e gerenciando seus próprios recursos, como UCP, memória e dispositivos de entrada/saída. Em função destas características, os sistemas fracamente acoplados também são conhecidos como multicomputadores. Neste modelo, cada sistema computa- cional também pode ser formado por um ou mais processadores. Classificação de Processamento Sistemas fracamente acoplados Levando em considera o grau de integração dos computadores da rede, os sistemas fracamente acoplados podem ser classificados como: • Sistemas operacionais de rede (SOR). • Sistemas operacionais distribuídos (SOD). Classificação de Sistemas Operacionais Resumo Classificação de Sistemas Operacionais Quanto aos usuários Sistema Monousuário x Sistema Multiusuário Definem a capacidade de gerenciar mais de um usuário ao mesmo tempo, compartilhando os mesmos recursos de software e hardware. Monousuário: Admite e gerencia apenas um usuário - não permite mais de um usuário “logado” ao mesmo tempo. Ex.: Windows XP e Windows NT (exceto versão TerminalServer). Multiusuário: Admite vários usuários – permite que mais de um usuário esteja “logado” simultaneamente. Ex.: Linux e VMS. Classificação de Sistemas Operacionais Sistema Monousuário x Sistema Multiusuário TODO SISTEMA MULTIUSUÁRIO É OBRIGATORIAMENTE MULTITAREFA Multiusuário Significa mais de uma usuário no mesmo sistema. Monousuário Apenas um usuário por sistema. Classificação de Sistemas Operacionais Quanto ao número de processadores Sistemas capazes de reconhecer e gerencias computadores com apenas um ou mais processadores. • Sistemas Monoprocessados: Somente reconhecem e utilizam um processador. Ex.: Win 98. • Sistemas Multiprocessados: Reconhecem e utilizam mais de um processador. Ex.: Linux , Windows XP, Windows Vista, Windows 7. Sistemas com suporte a multiprocessamento podem executar mais de uma tarefa ao mesmo tempo, uma em cada processador simultaneamente. Classificação de Sistemas Operacionais Outros sistemas com finalidades específicas: Sistemas Embarcados: Sistemas inseridos em produtos com funções específicas como celulares. Nem todo dispositivo eletrônico possui microcontrolador e nem todo aparelho com microcontrolador possui um sistema operacional. Estruturas dos Sistemas Operacionais Os sistemas operacionais são diferentes dos demais programas , não são executados sequencialmente. A execução das rotinas está baseada em eventos relacionados às tarefas internas do sistema operacional e do hardware. O conjunto destas rotinas é chamado Kernel (cérebro) ou núcleo do sistema. Estruturas dos Sistemas Operacionais As principais funções do Kernel são: • Tratamento de interrupções e exceções; • Criação e eliminação de processos e threads; • Sincronização e comunicação entre processos e threads; • Escalonamento e controle dos processos e threads; • Gerência de memória, de sistema de arquivos, de dispositivos de E/S; • Suporte a redes locais e distribuídas; • Contabilização do uso do sistema; • Auditoria e segurança do sistema. Estruturas dos Sistemas Operacionais Chamada de sistema (System Call) Os processadores modernos podem executar instruções com diferentes privilégios. Em sistemas com dois níveis de privilégio, eles são chamados de modo usuário e modo protegido. Os sistemas operacionais disponibilizam diferentes níveis de privilégio que restringem as operações executadas pelos programas, por razões de segurança e estabilidade, pois eles podem solicitar acesso a dispositivos de hardware, habilitar e desabilitar interrupções ou alterar o modo de privilégio do processador. Estruturas dos Sistemas Operacionais Modos de acesso Existe uma preocupação dos desenvolvedores de sistemas operacionais quanto ao acesso direto ao Kernel por usuário e seus aplicativos. Uma instrução indevida executada diretamente, pode corromper o kernel comprometendo todo o sistema. Instruções deste tipo são denominadas instruções privilegiadas. A execução de uma destas instruções está vinculada ao que chamamos de modos de acesso. Estruturas dos Sistemas Operacionais Modos de acesso Os modos de acesso são: • Modo usuário: não permite que o usuário ou aplicações executem instruções privilegiadas, tais como escrever no disco, criar novas tarefas, etc. • Modo Kernel: permite acesso total as instruções privilegiadas. A mudança do modo de execução ocorre através de uma “system call” ou chamado ao sistema. Estruturas dos Sistemas Operacionais Chamadas ao sistema (system calls) Para que o usuário ou alguma aplicação possa usufruir de algum serviço fornecido pelo Kernel deve acessá-lo através de um mecanismo conhecido como System Calls. O System Call é um intermediário entre as aplicações do usuário e o sistema operacional. Usuários ou aplicações acessam os serviços do Kernel chamando uma das suas rotinas através de uma System Call. O serviço é processado, com bases nos parâmetros definidos na System Call, e retorna à aplicação os resultados obtidos. Proteção de Acesso SYSTEM CALL (CHAMADA AO SISTEMA): Porta De Acesso Ao Kernel Instruções privilegiadas MODO USUÁRIO MODO KERNEL Instruções não Privilegiadas SYSTEM CALL Reflexões e Dúvidas
Compartilhar