Sistemas Operacionais

Documentos relacionados
SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

SISTEMAS OPERACIONAIS

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas

SO Sistemas Operacionais

Sistemas Operacionais

Figura 01 Kernel de um Sistema Operacional

4 Estrutura do Sistema Operacional Kernel

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

SISTEMAS OPERACIONAIS

Sistemas Operacionais

SISTEMAS OPERACIONAIS

Estrutura, Processos e Threads

Sistemas Operacionais. Estruturas de SO. Edeyson Andrade Gomes.

Sistemas Operacionais

SISTEMAS OPERACIONAIS 2007

Sistemas Operacionais I Parte III Estrutura dos SOs. Prof. Gregorio Perez gregorio@uninove.br Roteiro. Componentes do Sistema

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

SO - Conceitos Básicos. Introdução ao Computador 2010/01 Renan Manola

Fundamentos de Sistemas Computacionais Introdução

Sistemas Operacionais. Roteiro. Hardware. Marcos Laureano

ESTUDO DE CASO WINDOWS VISTA

Sistemas Operacionais. Conceitos de um Sistema Operacional

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron

6 - Gerência de Dispositivos

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal

ESTRUTURA DE UM SISTEMA OPERACIONAL

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Introdução aos Sistemas Operacionais. Computador = hardware + software. Como é formado o meu computador? E como estes componentes se comunicam?

Sistemas Operacionais

O que veremos nesta aula? Principais Aspectos de Sistemas Operacionais. Visão geral de um sistema computacional

Sistema Operacional Correção - Exercício de Revisão

Visão Geral de Sistemas Operacionais

Sistemas Operacionais. INTRODUÇÃO Prof. Rafael Alberto Vital Pinto FACSUL/CESUR

Resumo até aqui. Gerenciamento Proteção Compartilhamento. Infra-estrutura de Software

Everson Scherrer Borges João Paulo de Brito Gonçalves

Sistemas Operacionais. Patrícia Megumi Matsumoto Luciana Maria Gregolin Dias

Sistemas Operacionais Gerência de Dispositivos

7 Processos. 7.1 Introdução

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais

Processos (Threads,Virtualização e Migração de Código)

Introdução aos Computadores

Apresentação. Ementa da Disciplina. Objetivo da Disciplina. DCA-108 Sistemas Operacionais

Introdução. Sistemas Operacionais

Infra-Estrutura de Software. Introdução. (cont.)

Sistemas Operacionais Entrada / Saída. Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br)

Introdução à Ciência da Computação

1º Estudo Dirigido. Capítulo 1 Introdução aos Sistemas Operacionais

Programação Concorrente Processos e Threads

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

Capítulo 8. Software de Sistema

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

Introdução aos Sistemas Operativos

Sistemas Operacionais

Prof.: Roberto Franciscatto. Capítulo 1.1 Introdução

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal

Virtualização de Sistemas Operacionais

Introdução a Computação

Sistemas Operacionais

Introdução. O que vimos. Infraestrutura de Software. (cont.) História dos Sistemas Operacionais. O que vimos 12/03/2012. Primeira geração:

Sistemas Operacionais

Introdução à Linguagem Java

Organização e Arquitetura de Computadores I. de Computadores

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Prof. André Dutton

Sistema Operacional LINUX

Introdução à Computação: Sistemas de Computação

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

8 Threads. 8.1 Introdução

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 04 - Concorrência. Cursos de Computação

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Introdução aos Sistemas

Arquitetura de Computadores para. Sistemas Operacionais. Sistemas Operacionais. Sumário

Modelos de Arquiteturas. Prof. Andrêza Leite

Gerência de Entrada/Saída

ADMINISTRAÇÃO DE SISTEMA OPERACIONAL DE REDE (AULA 1)

LINUX. Lapro I Profa. Fernanda Denardin Walker. - Aula 2 - Material adaptado de: Isabel Mansour, Marcia Moraes e Silvia Moraes SISTEMA OPERACIONAL

Sistemas Operacionais

Sistemas Operacionais Introdução

Introdução à Sistemas Operacionais. Glauber Magalhães Pires

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Sistemas Distribuídos

Mecanismo de Interrupção

Prof.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais

1.2 Tipos de Sistemas Operacionais

Classificação de SO (Sistemas Operacionais) Técnico de Informática 2º. Módulo Profa. Madalena Pereira da Silva

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

Sistema de Computação

Sistemas Operacionais. Prof. André Y. Kusumoto

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

Sistemas Operacionais

FundamentosemInformática

Laboratório de Redes. Professora Marcela Santos

Transcrição:

UNIVERSIDADE BANDEIRANTE DE SÃO PAULO INSTITUTO POLITÉCNICO CURSO DE SISTEMAS DE INFORMAÇÃO Sistemas Operacionais Notas de Aulas: Tópicos 7 e 8 Estrutura do Sistema Operacional São Paulo 2009 1

Sumário O Sistema Operacional como máquina virtual...3 O Sistema Operacional como Gerenciador de Recursos...4 Interpretador de comandos...4 Chamadas de Sistema...5 Estrutura do Sistema Operacional...5 System Call...6 Suporte POSIX...8 Modos de Acesso...8 Arquitetura Monolítica...9 Arquitetura de Camadas... 10 Máquina Virtual... 11 Arquitetura Microkernel... 12 2

O Sistema Operacional como uma Máquina Virtual A arquitetura (conjunto de instruções, organização de memória, E/S e estrutura de barramento) da maioria dos computadores em nível de linguagem de máquina é primitiva e difícil de programar, especificamente para operações de entrada e saída. É preferível para um programador trabalhar com abstrações de mais alto nível onde detalhes de implementação das abstrações não são visíveis. No caso de discos, por exemplo, uma abstração típica é que estes armazenam uma coleção de arquivos identificados por nomes simbólicos. O programa que esconde os detalhes de implementação das abstrações é o sistema operacional. A abstração apresentada ao usuário pelo sistema operacional é simples e mais fácil de usar que o hardware original. Nesta visão, a função do sistema operacional é apresentada ao usuário como uma máquina estendida ou máquina virtual que é mais fácil de programar que o hardware que a suporta. 3

O Sistema Operacional como um Gerenciador de Recursos Um computador moderno é composto de vários subsistemas tais como processadores, memórias, discos, terminais, fitas magnéticas, interfaces de rede, impressoras, e outros dispositivos de E/S. Neste ponto de vista, o sistema operacional tem a função de gerenciar de forma adequada estes recursos de sorte que as tarefas impostas pelos usuários sejam atendidas da forma mais rápida e confiável possível. Um exemplo típico é o compartilhamento da unidade central de processamento (CPU) entre as várias tarefas (programas) em sistemas multiprogramados. O sistema operacional é o responsável pela distribuição de forma otimizada da CPU entre as tarefas em execução. Interpretador de Comandos (Shell) 4

O interpretador de comando é um processo que perfaz a interface do usuário com o sistema operacional. Este processo lê o teclado a espera de comandos, interpreta-os e passa seus parâmetros ao sistema operacional. Serviços como login/logout, manipulação de arquivos, execução de programas, etc, são solicitados através do interpretador de comandos. Chamadas de Sistema (System Calls) Assim como o interpretador de comandos é a interface entre o usuário e o sistema operacional, as chamadas do sistema constituem a interface programas aplicativos/sistema operacional. As chamadas do sistema são funções que podem ser ligadas com os aplicativos provendo serviços como: leitura do relógio interno, operações de entrada/saída, comunicação interprocessos, etc. ESTRUTURA DO SISTEMA OPERACIONAL O Sistema Operacional é formado por um conjunto de rotinas que oferecem serviços aos usuários, às suas aplicações, e também ao próprio sistema. Esse conjunto de rotinas é denominado núcleo do sistema operacional ou kernel. É importante não confundir o núcleo do sistema com aplicações, utilitários ou interpretador de comandos que acompanham o sistema operacional. As aplicações são utilizadas pelos usuários e escondem todos 5

os detalhes da interação com o sistema. Os utilitários, como compiladores e editores de texto, e interpretadores de comandos permitem aos usuários, administradores e desenvolvedores uma interação amigável com o sistema. As principais funções do núcleo encontradas na maioria dos sistemas comerciais estão listadas a seguir: - 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; - gerência do sistema de arquivos; - gerência dos dispositivos de E/S; - suporte a redes locais e distribuídas; - contabilização do uso do sistema; - auditoria e segurança do sistema. System Calls Uma preocupação que surge nos projetos de sistemas operacionais é a implementação de mecanismos de proteção ao núcleo do sistema e de acesso aos seus serviços. Caso uma aplicação que tenha acesso ao núcleo realize uma operação que altere sua integridade, todo o sistema poderá ficar comprometido e inoperante. As systems calls podem ser entendidas como uma porta de entrada para o acesso ao núcleo do sistema operacional e a seus serviços. Sempre que um usuário ou aplicação desejar algum serviço do sistema, é realizada 6

uma chamada a uma de suas rotinas através de uma system call (chamada de sistema). O termo system call é tipicamente utilizado em sistemas Unix, porém em outros sistemas o mesmo conceito é apresentado com diferentes nomes, como system services no OpenVMS e Application Program Interface (API) no Windows da Microsoft. Para cada serviço disponível existe uma system call associada e cada sistema operacional tem seu próprio conjunto de chamadas, com nomes, parâmetros e formas de ativação específicos. Isto explica por que uma aplicação desenvolvida utilizando serviços de um determinado sistema operacional não pode ser portada (migrado) diretamente para um outro sistema operacional. Uma tentativa de criar uma biblioteca de chamadas padronizadas foi proposta pelos institutos ISSO e IEEE. O padrão POSIX (Portable Operating System Interface for Unix), como foi definido, permitiu que uma aplicação desenvolvida seguindo este conjunto de chamadas pudesse ser executada em qualquer sistema operacional que oferecesse suporte ao padrão. Inicialmente voltado para a unificação das diversas versões do sistema Unix, o POSIX foi incorporado, posteriormente, pela maioria dos sistemas operacionais modernos. A maioria dos programadores e usuários desconhece os detalhes envolvidos, por exemplo, em um simples comando de leitura a um arquivo utilizando uma linguagem de alto nível. De forma simplificada, o comando da linguagem de alto nível é convertido pelo compilador para uma chamada a uma system call específica, que, quando executada, verifica a ocorrência de erros e retorna os dados ao programa de forma transparente ao usuário. 7

Suporte POSIX Sistemas Operacionais O subsistema POSIX (Sistema operacional portátil para UNIX) não está incluído no Windows XP ou no Windows Server 2003. O subsistema POSIX foi substituído por um ambiente mais parecido com UNIX chamado Windows Services para UNIX, ou simplesmente Microsoft SFU (Services for UNIX). O Windows Services para UNIX está contido no subsistema original POSIX e fornece uma funcionalidade maior para programas do UNIX. O Windows Services para UNIX requer Windows XP Professional Service Pack 1 (SP1) ou posterior. Para obter informações adicionais sobre o Windows Services para UNIX, visite o seguinte site da Microsoft: http://www.microsoft.com/windows/sfu/productinfo/overview/default.asp Modos de Acesso Existem certas instruções que não podem ser colocadas à disposição das aplicações, pois a sua utilização indevida ocasiona sérios problemas à integridade do sistema. Suponha que uma aplicação atualize um arquivo em disco. O programa, por si só, não pode especificar diretamente as instruções que acessam seus dados no disco. Como o disco é um recurso compartilhado, sua utilização deverá ser gerenciada unicamente pelo sistema operacional, evitando que a aplicação possa ter acesso a qualquer área do disco indiscriminadamente, o que poderia comprometer a segurança e integridade do sistema de arquivos. Como visto fica claro que existem certas instruções que só devem ser executadas pelo sistema operacional ou sob sua supervisão, impedindo, assim, a ocorrência de problemas de segurança e integridade do sistema. As 8

instruções que têm o poder de comprometer o sistema são conhecidas como instruções privilegiadas, enquanto as instruções não-privilegiadas são as que não oferecem risco ao sistema. Para que uma aplicação possa executar uma instrução privilegiada, é necessário que no processador seja implementado o mecanismo de proteção conhecido como modos de acesso. Existem basicamente dois modos de acesso implementados pelos processadores: modo de acesso usuário ou modo de acesso kernel. Quando o processador trabalha no modo usuário, uma aplicação só pode executar instruções não privilegiadas, tendo acesso a um número reduzido de instruções, enquanto no modo kernel ou supervisor a aplicação pode ter acesso ao conjunto total de instruções do processador. O mecanismo de modos de acesso também é uma boa forma de proteger o próprio núcleo do sistema residente na memória principal. Suponha que uma aplicação tenha acesso a áreas de memória onde está o sistema operacional. Qualquer programador mal-intencionado ou um erro de programação poderia gravar nesta área, violando o sistema. Com o mecanismo de modos de acesso, para uma aplicação escrever numa área onde resida o sistema operacional o programa deve estar sendo executado no modo kernel. Arquitetura Monolítica A arquitetura monolítica pode ser comparada com uma aplicação formada por vários módulos que são compilados separadamente e depois linkados (ligados), formando um grande e único programa executável, onde os módulos podem interagir livremente. Os primeiros sistemas operacionais 9

foram desenvolvidos com base neste modelo, o que torna seu desenvolvimento e, principalmente, sua manutenção bastante difícil. Devido a sua simplicidade e bom desempenho, a estrutura monolítica foi adotada no projeto MS-DOS e nos primeiros sistemas UNIX. Arquitetura de Camadas Com o aumento da complexidade e do tamanho do código do sistema operacionais, técnicas de programação estruturada e modular foram incorporadas ao seu projeto. Na arquitetura de camadas, o sistema é dividido em níveis de sobrepostos. Cada camada oferece um conjunto de funções que podem ser utilizadas apenas pelas camadas superiores. O primeiro sistema com base nesta abordagem foi o sistema THE (Technische HogeSchool Eindhoven) construído por Dijkstra, na Holanda, em 1968, e que utilizava seis camadas. Posteriormente, os sistemas MULTICS e Open VMS também implementaram o conceito de camadas, sendo estas concêntricas. Neste tipo de implementação, as camadas mais internas são mais privilegiadas que as mais externas. Uma grande vantagem desse modelo é isolar as funções do sistema operacional, facilitando sua programação e depuração, além de criar uma hierarquia de níveis de acesso protegendo as camadas mais internas. Uma desvantagem é o desempenho. Cada nova camada implica em mudanças no modo de acesso. Atualmente a maioria dos sistemas operacionais comerciais utiliza o modelo de duas camadas, onde existem os modos de acesso usuário (nãoprivilegiado) e kernel (privilegiado). As maiorias das versões do Unix e o Windows 2000 da Microsoft estão baseados neste modelo. 10

Máquina Virtual Sistemas Operacionais Um sistema computacional é formado por níveis, onde a camada de nível mais baixa é o hardware. Acima desta camada encontramos o sistema operacional, que oferece suporte às aplicações. O modelo de máquina virtual, ou virtual machine (VM), cria um nível intermediário entre o hardware e o sistema operacional, denominado gerência de máquinas virtuais. Este nível cria diversas máquinas virtuais independentes, onde cada uma oferece uma cópia virtual do hardware, incluindo os modos de acesso, interrupções, dispositivos de E/S, etc. Como cada máquina virtual é independente das demais, é possível que cada VM tenha seu próprio sistema operacional e que seus usuários executem suas aplicações como se todo o computador estivesse dedicado a cada um deles. Além de permitir a convivência de sistemas operacionais diferentes no mesmo computador, este modelo cria o isolamento total entre cada VM, oferecendo grande segurança para cada máquina virtual. Uma desvantagem desta arquitetura é sua grande complexidade, devido à necessidade de se compartilhar e gerenciar os recursos do hardware entre as diversas VMs. Outro exemplo de utilização desta arquitetura ocorre na linguagem Java, desenvolvida pela Sun Microsystems. Para se executar um programa em Java é necessário uma máquina virtual Java (Java Virtual Machine JVM). Qualquer sistema operacional pode suportar uma aplicação Java, desde que exista uma JVM desenvolvida para ele. Desta forma, a aplicação não precisa ser recompilada para cada sistema computacional, tornando-se independente do hardware e do sistema operacional utilizados. A 11

desvantagem deste modelo é seu menor desempenho se comparado a uma aplicação compilada e executada diretamente em uma arquitetura específica. Arquitetura Microkernel Uma tendência nos sistemas operacionais modernos é tornar o núcleo do sistema operacional menor e mais simples possível. Para implementar esta idéia, os serviços do sistema são disponibilizados através de processos, onde cada um é responsável por oferecer um conjunto específico de funções, como gerência de arquivos, gerência de processos, gerência de memória e escalonamento. O conceito de arquitetura microkernel surgiu no sistema operacional Mach, na década de 1980, na Universidade Carnegie-Mellon. O núcleo do sistema Mach oferece basicamente quatro serviços: gerência de processos, gerência de memória, comunicação por troca de mensagens e operações de E/S, todos em modo usuário. Sempre que uma aplicação deseja algum serviço, é realizada uma solicitação ao processo responsável. A aplicação solicitante é chamada de cliente, enquanto que o processo que responde à solicitação é chamado de servidor. A principal função do núcleo é realizar a comunicação, ou seja, a troca de mensagens entre o cliente e o servidor. A utilização deste modelo permite que os servidores executem em modo usuário, ou seja, não tenham acesso direto a certos componentes do sistema. Apenas o núcleo do sistema, responsável pela comunicação entre os clientes e servidores, executa no modo kernel. Como conseqüência, se 12

ocorrer um erro em um servidor, este poderá parar, mas o sistema não ficará inteiramente comprometido, aumentando assim a sua disponibilidade. 13