Infraestrutura de Software. CIn.ufpe.br



Documentos relacionados
Infra-Estrutura de Software. Introdução

Infra-Estrutura de Software

Infra-estrutura de Software

Infra-Estrutura de Software

Infra-Estrutura de Software

Infra-estrutura de Software. Apresentação!

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

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

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

Software Básico (INF1018)

Infraestrutura de Software. CIn.ufpe.br

Infra-Estrutura de Software. Introdução

Infraestrutura de Software. CIn.ufpe.br

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

Pós-Graduação, Maio de 2006 Introdução aos Sistemas Operacionais. Prof. Dr. Ruy de Oliveira CEFET-MT

Introdução à Arquitetura de Computadores

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron

Sistemas Operacionais e Introdução à Programação. Módulo 1 Sistemas Operacionais

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

MC-102 Aula 01. Instituto de Computação Unicamp

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

Fundamentos de Sistemas Computacionais Introdução

Edeyson Andrade Gomes

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

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

SISTEMAS OPERACIONAIS 2007

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Introdução. Sistemas Operacionais

Sistemas Operacionais

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

Sistemas Operacionais

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

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

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

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

Nível do Sistema Operacional

Sistemas Operacionais

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

Cursos de Computação. Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 01 - História e Funções dos Sistemas Operacionais

Figura 01 Kernel de um Sistema Operacional

4 Estrutura do Sistema Operacional Kernel

Sistemas Operacionais

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

SISTEMAS OPERACIONAIS

UFRJ IM - DCC. Sistemas Operacionais I. Unidade I Introdução. 11/02/2014 Prof. Valeria M. Bastos

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

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

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

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

Introdução. Nível do Sistema Operacional. Introdução. Um Sistema Operacional... Introdução a Sistemas Operacionais

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

UFRJ IM - DCC. Sistemas Operacionais I

ESTUDO DE CASO WINDOWS VISTA

Introdução a Computação

Sistemas Operacionais

Visão Geral de Sistemas Operacionais

Sistemas Operacionais

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

6 - Gerência de Dispositivos

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

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE

Programador Web - Pronatec

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Sistemas Operacionais

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

Sistemas de Lotes (2) Sistemas de Lotes (3) Layout da MP em Sistemas de Lotes. Minimizar o tempo de resposta

Sistemas Operacionais

1. CAPÍTULO COMPUTADORES

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Máquinas Multiníveis

Figura 1 - O computador

SISTEMAS OPERACIONAIS

Sistemas Operacionais

Sistemas Operacionais. Conceitos de um Sistema Operacional

Sistemas Operacionais

Laudon & Laudon Essentials of MIS, 5th Edition. Pg. 6.1

Processamento de Dados

Introdução aos Computadores

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

Sistemas Operacionais. Prof. André Y. Kusumoto

Classificação Quanto. Sistemas de Lotes (2) Sistemas de Lotes (3)

Capítulo 1. Introdução

Introdução à Informática

Introdução aos Sistemas

Introdução a Computação

Organização de Computadores 1. Prof. Luiz Gustavo A. Martins

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

Sistemas Operacionais 1/66

Virtualização Gerencia de Redes Redes de Computadores II

Sistemas Operacionais

Sistemas Operacionais. Roteiro. Sistemas de Computadores. Os sistemas de computadores são projetados com basicamente 3 componentes: Marcos Laureano

Conceitos Básicos sobre Sistemas Operacionais

Sistemas Operacionais

Capítulo 1 Introdução

Sistemas Operacionais. Roteiro. Hardware. Marcos Laureano

Unidade III FUNDAMENTOS DE SISTEMAS. Prof. Victor Halla

Estrutura geral de um computador

Sistemas Operacionais Introdução

Transcrição:

Infraestrutura de Software

Ciência da Computação :: IF677 Professor: Carlos Ferraz <cagf> Monitoria: em formação Horários: Quartas (08-10h) e Sextas, 08-10h (D-005) Laboratório: G1, normalmente URL: http://www.cin.ufpe.br/~cagf/if677/2015-1 Haverá aulas em horários extraclasse, com os monitores Infraestrutura de Software 2

Informações relacionadas Pré-requisitos Bom conhecimento em programação em alguma linguagem de alto nível (Java, C++, C etc.) Conhecimento desejável em linguagem de montagem (Assembly) Beneficiários dos conhecimentos adquiridos nesta disciplina Programação de sistemas Sistemas distribuídos Redes entre outros Infraestrutura de Software 3

Dimensões do conhecimento em Infra-estruturas de Software Conceitual Ex: concorrência Tecnológica: aspectos técnicos de implementação e funcionalidades Prática: laboratório, exercícios e projeto Para qualquer profissional em computação é importante saber como uma infra-estrutura de software funciona, e não apenas como pode ser utilizada Infraestrutura de Software 4

Infraestrutura de Software 5

O Hardware Computador (físico) Programável Para cada máquina um conjunto diferente de instruções Infraestrutura de Software 6

Mundo real Pessoas e aplicativos sistemas operacionais, middleware uso, gerenciamento, compartilhamento Complexidade hardware redes Infraestrutura de Software 7

Infraestrutura de Software 8 Infra-estruturas de Suporte a Usuários / Programas de Usuários Infra-estrutura de Software sistemas operacionais, middleware Infra-estrutura de Hardware Infra-estrutura de Comunicação

Infraestruturas de Software Um sistema operacional é a ferramenta mais básica (middleware nem tanto) de qualquer sistema de computação, e é importante para qualquer profissional em computação entender como ele(s) funciona(m) O entendimento dos conceitos envolvidos na construção de um sistema operacional (e um pouco de middleware) permite o melhor entendimento dos mecanismos e ferramentas disponíveis para o usuário, para que este possa fazer o uso mais adequado dos recursos do sistema Infraestrutura de Software 9

Infraestrutura de Software 10 Sistemas operacionais / middleware visam gerenciar a operação de computadores de modo a oferecer a seus usuários flexibilidade, eficiência, segurança, transparência e compartilhamento de recursos

Infraestrutura de Software 11 Sistemas operacionais / middleware visam gerenciar a operação de computadores de modo a oferecer a seus usuários flexibilidade, eficiência, segurança, transparência e compartilhamento de recursos

Infraestrutura de Software 12 Sistemas operacionais / middleware visam gerenciar a operação de computadores de modo a oferecer a seus usuários flexibilidade, eficiência, segurança, transparência e compartilhamento de recursos

Infraestrutura de Software 13 Sistemas operacionais / middleware visam gerenciar a operação de computadores de modo a oferecer a seus usuários flexibilidade, eficiência, segurança, transparência e compartilhamento de recursos

Infraestrutura de Software 14 Sistemas operacionais / middleware visam gerenciar a operação de computadores de modo a oferecer a seus usuários flexibilidade, eficiência, segurança, transparência e compartilhamento de recursos

Infraestrutura de Software 15 Sistemas operacionais / middleware visam gerenciar a operação de computadores de modo a oferecer a seus usuários flexibilidade, eficiência, segurança, transparência e compartilhamento de recursos

Infraestrutura de Software 16 Visão ampla: grande porte, desktops, tablets, celulares, TV etc. Sistemas operacionais / middleware visam gerenciar a operação de computadores de modo a oferecer a seus usuários flexibilidade, eficiência, segurança, transparência e compartilhamento de recursos 4 grupos básicos: processamento, memória, armazenamento (arquivos), entrada e saída

Existe aqui um programa (PowerPoint) rodando, usando o processador da máquina, a memória, manipulando um arquivo armazenado no disco, aparecendo na tela, recebendo comandos, via teclado Como se faz? Infraestrutura de Software 17

Infraestrutura de Software 18 Um Sistema Operacional [é um conjunto de programas que] visa esconder as peculiaridades do hardware Máquina mais fácil de ser utilizada, mais amigável e mais segura

[é um conjunto de programas que] gerencia os recursos disponíveis processo/processador memória disco/arquivos outros dispositivos de entrada/saída teclado, tela, mouse etc. Eficiência, compartilhamento e resolução de possíveis conflitos Gerência de processo Gerência de memória Gerência de disco/ armazenamento Sistema de Arquivos Gerência de entrada/saída Infraestrutura de Software 19

Infraestrutura de Software 20 Usuários Aplicações de software MS- Word Web Browser Skype Task Manager de software usam o hardware diretamente Arquitetura de hardware de um computador típico CPU Memória Principal Interface de E/S Interface de E/S Interface de E/S Teclado Disco Tela

Infraestrutura de Software 21 Usuários Aplicações de software MS- Word Web Browser Skype Task Manager Software é abstrato Infra-estrutura de software Sistema Operacional de hardware e recursos de Arquitetura de hardware de um computador típico CPU Memória Principal Interface de E/S Interface de E/S Interface de E/S proteção, eficiência etc. Hardware é concreto (físico) Teclado Disco Tela

E se o sistema for distribuído em rede? Ex.: Web browser e servidor É preciso gerenciar também recursos de rede/comunicação, entre outras coisas Um middleware [é um conjunto de serviços que] dá suporte a sistemas de software distribuídos Infraestrutura de Software 22

Pilha TCP/IP Infraestrutura de Software 23 Pilha TCP/IP MS-Word Web Browser App- Client App- Server Web Server Task Manager Middleware Sistema Operacional Sistema Operacional CPU Memória Principal Subsistema de comunicação CPU Memória Principal Interface de E/S Interface de E/S Interface de E/S Interface de E/S Interface de E/S Interface de E/S Interface de E/S Interface de E/S Teclado Disco Tela Placa de Rede Placa de Rede Disco Tela Teclado Rede Nem sempre suficiente, diante da complexidade de alguns sistemas distribuídos

Ao final do curso você deverá ser capaz de Explicar o funcionamento de um SO Dos pontos de vista de: mecanismo de abstração e gerenciamento de recursos Aplicar vários dos conceitos discutidos, como processos, threads, concorrência, interrupções e escalonamento, no desenvolvimento de aplicações do mundo real Usar infra-estruturas existentes para computação [incl. distribuída] Infraestrutura de Software 24

E não deverá ser capaz de Projetar um novo sistema operacional Implementar um novo sistema operacional Estender um sistema operacional existente <os mesmos verbos> uma plataforma de middleware Existem disciplinas mais apropriadas para isso: IF709 -IMPLEMENTAÇÃO SIST. OPERACIONAIS IF749 -TÓPICOS AVANÇ. SIST. DISTRIBUÍDOS Infraestrutura de Software 25

Avaliação Provas (EE1 e EE2) Projeto (EE3) em duplas! Lista de exercícios sobre programação concorrente Nota Final = (EE1 + EE2 + EE3) / 3 Infraestrutura de Software 26

Material de Estudo Transparências das aulas http://www.cin.ufpe.br/~cagf/if677/2015-1/ Livros Parte I: Sistemas Operacionais Modernos 2ª Edição. A. Tanenbaum, 2003 Parte II: Opção: Modern Operating Systems 3e. Prentice-Hall, 2008 (Já em Português, edição 2010) Distributed Systems: Principles and Paradigms. Andrew Tanenbaum, Maarten van Steen. Prentice-Hall, 2002 Distributed Systems: Concepts and Design (4th / 5th Edition). George Coulouris, Jean Dollimore, Tim Kindberg. Addison-Wesley, 2005 / 2011 Infraestrutura de Software 27

Conclusão Sistema Operacional Mecanismo de abstração dos dispositivos subjacentes Gerenciador de recursos Middleware Plataforma de suporte de valor agregado a sistemas distribuídos Infraestrutura de Software 28

IBM System 360 Console

Computador Moderno Componentes físicos (hardware) Um ou mais processadores Memória Discos Impressoras Vários outros dispositivos de E/S (tela, mouse ) Um Sistema Complexo!!! Gerenciar todos componentes requer abstração um modelo mais simples do computador É isso que é o sistema operacional

31 Concreto Tangível Abstrato Intangível Hardware Software COMPLEXIDADE

Sistema Computacional em Camadas Não pode executar instruções que afetam o controle da máquina ou fazem E/S GUI ou shell System Calls Acesso completo a todo o hardware e pode executar qualquer instrução que a máquina seja capaz de executar Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved.

33 Sistema Operacional Máquina Abstrata Gerenciador de Recursos

Máquina Estendida Sistemas operacionais tornam o hardware pouco atraente em abstrações mais interessantes Abstrações Processos Memória Virtual Arquivos Processador Memória Dispositivos E/S

Gerenciador de Recursos Gerencia e protege memória, dispositivos de E/S e outros recursos (hardware) Permite o compartilhamento (multiplexação) de recursos no tempo (time-sharing) Ex.: múltiplos programas compartilham o processador (executam) ao mesmo tempo no espaço Ex.: dados de diferentes usuários/arquivos compartilham o espaço em disco

36 Hardware

Um pouco de um computador típico CPU Register file PC ALU System bus Memory bus Bus interface I/O bridge Main memory USB controller Graphics adapter I/O bus Disk controller Expansion slots for other devices such as network adapters Mouse Keyboard Display Disk Randal E. Bryant, David R. O'Hallaron. Computer Systems: A Programmer's Perspective. Prentice Hall, 2003

CPU: Central Processing Unit Unidade de Controle ALU: Unidade Aritmética e Lógica Registradores Funcionam como memória de acesso extremamente rápida Baixa capacidade de armazenamento Funções específicas Exemplos de registradores PC (program counter): contém o endereço da próxima instrução a ser executada Instruction register: onde é copiada cada instrução a ser executada A CPU, seguidamente, executa instruções requisitadas à memória Ciclo fetch-decode-execute: 1. busca instrução na memória 2. atualiza PC 3. decodifica instrução 4. executa instrução

Memória Logicamente, a memória principal corresponde a um enorme vetor (array) de bytes cada posição tem um endereço único (índice do vetor) Os registradores da CPU muitas são usados para armazenar endereços de memória Assim, o número de bits em cada registrador limita o número de posições de memória endereçáveis Ex.: 8 bits 256 posições

Hierarquia de Memória Smaller, faster, and costlier (per byte) storage devices L2: L1: L0: Registers On-chip L1 cache (SRAM) Off-chip L2 cache (SRAM) CPU registers hold words retrieved from cache memory. L1 cache holds cache lines retrieved from the L2 cache. L2 cache holds cache lines retrieved from memory. Larger, slower, and cheaper (per byte) storage devices L5: L4: L3: Main memory (DRAM) Local secondary storage (local disks) Remote secondary storage (distributed file systems, Web servers) Main memory holds disk blocks retrieved from local disks. Local disks hold files retrieved from disks on remote network servers. Trajetória de dados até a CPU

41 Software Básico

Software Básico [A. Raposo e M. Endler, PUC-Rio, 2008] Conhecendo mais sobre o que está por baixo do programa, você pode escrever programas mais eficientes e confiáveis Abstrações em um sistema de computação: Programa de usuário Programa em Assembly????? Sistema Operacional Hardware Aplicações: jogos, editores, browsers, media players Escritos geralmente em linguagem de alto nível (C, C++, C#, Java etc.) Linguagem de máquina: binária (0,1) pouco legível por humanos A linguagem de montagem (Assembly) é um mapeamento direto da linguagem de máquina, mas que introduz várias facilidades (ou menos dificuldades ) para o programador usa "apelidos" das instruções de máquina, mais fáceis de lembrar do que seu valor hexadecimal exigido pelo processador Ex.: mov eax, edx move o que está no registrador de dados para o acumulador

Gerando um executável unix> gcc o hello hello.c 1. #include <stdio.h> 2. int main() 3. { 4. printf( hello, world\n ); 5. } hello.c préprocessador programafonte (texto) hello.i programa-fonte modificado Modifica o programa em C de acordo com diretivas começadas com # Ex.: #include <stdio.h> diz ao pré-processador para ler o arquivo stdio.h e inserilo no programa fonte O resultado é um programa expandido em C, normalmente com extensão.i, em Unix

Gerando um executável unix> gcc o hello hello.c 1. #include <stdio.h> 2. int main() 3. { 4. printf( hello, world\n ); 5. } hello.c préprocessador programafonte (texto) hello.i programa-fonte modificado compilador hello.s programa Assembly (texto) Compilador traduz o programa.i em um programa em Assembly É o formato de saída comum para os compiladores nas várias linguagens de programação de alto nível i.e., programas em C, Java, Fortran, etc vão ser traduzidos para a mesma linguagem Assembly

Gerando um executável unix> gcc o hello hello.c 1. #include <stdio.h> 2. int main() 3. { 4. printf( hello, world\n ); 5. } hello.c préprocessador programafonte (texto) hello.i programa-fonte modificado compilador hello.s programa Assembly (texto) montador (assembler) hello.o programaobjeto relocável (binário) Montador (Assembler) transforma o programa em Assembly em um programa binário em linguagem de máquina (chamado programa-objeto) Os módulos de programas, compilados ou montados, são armazenados em um formato intermediário ( Programa-Objeto Relocável extensão.o) Endereços de acesso e a posição do programa na memória ficam indefinidos

Gerando um executável unix> gcc o hello hello.c 1. #include <stdio.h> 2. int main() 3. { 4. printf( hello, world\n ); 5. } printf.o hello.c préprocessador programafonte (texto) hello.i programa-fonte modificado compilador hello.s programa Assembly (texto) montador (assembler) hello.o ligador (linker) programaobjeto relocável (binário) hello programaobjeto executável (binário) O ligador (linker) gera o programa executável a partir do.o gerado pelo assembler No entanto, pode haver funções-padrão da linguagem (ex., printf) que não estão definidas no programa, mas em outro arquivo.o pré-compilado (printf.o) O ligador faz a junção dos programas-objeto necessários para gerar o executável

47 Execução Como acontece

Processo Conceito: Um programa em execução Ao digitar hello, os caracteres são passados para um registrador e depois para memória principal

Mais de um programa em execução Múltiplos processos vs. um (ou [poucos] mais) processador(es) como pode???

Processos Comunicantes Como pode??? Dicionário Editor de Texto Gerenciador de Imagens

Sistemas Distribuídos Processos em máquinas distintas e que se comunicam Web browser Web server

Sistemas Distribuídos Como fazer funcionar aplicações distribuídas que usam diferentes sistemas de computador Web browser Web server Processos em máquinas distintas e que se comunicam (hardware), sistemas operacionais e software de aplicação (ex. linguagens de programação), interconectadas por diferentes redes? O problema da interoperabilidade

História dos Sistemas Operacionais Primeira geração: 1945-1955 Válvulas, painéis de programação Segunda geração: 1955-1965 transistores, sistemas em lote Terceira geração: 1965 1980 CIs (circuitos integrados) e multiprogramação Quarta geração: 1980 presente Computadores pessoais Hoje: onipresença computação ubíqua

História dos Sistemas Operacionais Estrutura de um job típico (lote de cartões) 2a. geração

História dos Sistemas Operacionais Sistema de multiprogramação Três jobs na memória 3a. geração

Diversidade de Sistemas Operacionais Sistemas operacionais de computadores de grande porte (mainframe) Sistemas operacionais de servidores / redes Sistemas operacionais de multiprocessadores (paralelismo) Sistemas operacionais de computadores pessoais Sistemas operacionais de dispositivos portáteis/ móveis (ex. celulares) Sistemas operacionais de tempo-real Sistemas operacionais embarcados Sistemas operacionais de cartões inteligentes Sistemas operacionais de sensores

Estruturação de Sistemas Operacionais Monolítico Camadas Cliente-Servidor Virtualização

Estrutura de Sistemas Operacionais: Sistema Monolítico Executam as System Calls Modelo simples de estruturação de um sistema monolítico Ajudam os Procedimentos de Serviços SO = um processo com n procedimentos

Camadas em Linux Kernel (núcleo)

Linux Kernel: Relacionamentos Process Process Process Process Process System Call Interface Process Management IPC Memory Management Network File System Device Driver Hardware

61 Android em Camadas

Estrutura de Sistemas Operacionais: Cliente-Servidor O modelo cliente-servidor em um sistema ( ) distribuído

Estrutura de Sistemas Operacionais: Máquina Virtual (Virtualização) Linux Linux (devel) XP Windows 7 MacOS VMM opera na interface Virtual Machine Monitor de hardware, fornecendo uma interface Hardware idêntica para os SOs acima

Virtual Machines: Tipos (Arquiteturas) Hardware Hardware Hipervisor Tipo 1 Hipervisor Tipo 2 Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved.

Pool Ex.: Cloud Computing VM VM VM Sob demanda VM VM VM VM Hipervisor Hardware