Infra-Estrutura de Software



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

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

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

Infra-Estrutura de Software

Infra-Estrutura de Software

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

Infraestrutura de Software. CIn.ufpe.br

Software Básico (INF1018)

Infraestrutura de Software. CIn.ufpe.br

Fundamentos de Sistemas Computacionais Introdução

Introdução à Arquitetura de Computadores

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

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron

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

Programação Concorrente Processos e Threads

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

Introdução. Sistemas Operacionais

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

4 Estrutura do Sistema Operacional Kernel

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

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

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

SISTEMAS OPERACIONAIS 2007

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

Processos e Threads (partes I e II)

Capítulo 1. Introdução

Figura 01 Kernel de um Sistema Operacional

Sistemas Operacionais

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

Edeyson Andrade Gomes

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

Sistemas Operacionais

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

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

SISTEMAS OPERACIONAIS

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

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

Sistemas Operacionais

Estrutura geral de um computador

UFRJ IM - DCC. Sistemas Operacionais I

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

Sistemas Operacionais

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

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

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

Nível do Sistema Operacional

Sistemas Operacionais

Edeyson Andrade Gomes.

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

Sistemas Operacionais

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

Sistemas Operacionais. Roteiro. Hardware. Marcos Laureano

SISTEMAS OPERACIONAIS

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

6 - Gerência de Dispositivos

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

Sistemas Operacionais

Introdução aos Sistemas

Sistemas Operacionais. Estruturas de SO. Edeyson Andrade Gomes.

1. CAPÍTULO COMPUTADORES

Sistemas Operacionais

Sistemas Operacionais. Professor Leslier Soares Corrêa

Sistemas Operacionais

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

Sistemas Operacionais. Introdução

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Introdução a Computação

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

Processamento de Dados

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro

Conceitos Básicos sobre Sistemas Operacionais

Sistemas Distribuídos

Sistemas Operacionais

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

Introdução aos Computadores

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

Sistemas Operacionais. Conceitos de um Sistema Operacional

Programador Web - Pronatec

Sistemas Operacionais

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

BARRAMENTO DO SISTEMA

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

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

Sistemas Operacionais Introdução. Professora: Michelle Nery

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Sistemas Operacionais. Prof. André Y. Kusumoto

Visão Geral de Sistemas Operacionais

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

Prof. Esp. Lucas Cruz

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas

Introdução aos Sistemas Operacionais

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Capítulo 1 Introdução

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

Transcrição:

Infra-Estrutura de Software Introdução

Infraestrutura de Software 2 Alunos, em sua maioria, não gostam de aprender com professores taskmasters, mesmo que isto lhes faça bem no decorrer do curso (e na futura carreira profissional) Michele Pellizzari, Universidade de Genebra, Suíça "O brasileiro não está preparado para ser o maior do mundo em coisa nenhuma. Ser o maior do mundo em qualquer coisa, mesmo em cuspe à distância, implica uma grave, pesada e sufocante RESPONSABILIDADE. Nelson Rodrigues

Slide 3 IBM Model 701 (Early 1950's)

IBM 7094 (Early 1960's)

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

7 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.

9 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

SO: Interface de Usuário - Shell

SO: Interface de Usuário - GUI

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

14 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

Barramentos e Dispositivos de E/S Barramentos: conduítes elétricos que carregam a informação entre os vários componentes da máquina Dispositivos de E/S: Conexão da máquina com o mundo externo Conectados ao barramento de E/ S por controladores (chips no próprio dispositivo ou na placa mãe) ou adaptadores (quando placa separada)

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

Chips Multithreaded e Multicore Cache nível 1: dentro de cada núcleo Cache nível 2: normalmente dentro do mesmo processador e fora dos núcleos Exs.: Core 2 Duo e Quad-Core (a) (b) A quad-core chip with a shared L2 cache. A quad-core chip with separate L2 caches. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved.

21 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 programafonte 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 inseri-lo 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 programafonte 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 programafonte 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 programafonte modificado compilador hello.s programa Assembly (texto) montador (assembler) hello.o programaobjeto relocável (binário) hello ligador (linker) 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

27 Execução Como acontece

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

Programa em execução 2. Ao clicar Enter, sabe-se que acabou o comando e então é realizada uma seqüência de instruções para copiar código e dados do programa hello do disco para a memória principal

Programa em execução 3. PC aponta para o endereço de memória onde o programa hello foi escrito 4. Processador executa instruções em linguagem de máquina da função main() do programa

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

O que vimos até agora Complexidade do computador moderno, do ponto de vista do hardware Necessidade de abstrações software Sistema computacional em camadas SO como uma máquina estendida abstrações SO como um gerenciador de recursos Gerenciamento Proteção Compartilhamento Um pouco de hardware CPU: unidade de controle e execução Registradores Ciclo fetch-decode-execute Barramentos e dispositivos de E/S Memória [hierarquia] Software básico Linguagem de programação de alto nível ð linguagem de montagem (Assembly) ð linguagem de máquina Processo: um programa em execução Comunicação entre processos Sistemas Distribuídos

Infra-estrutura de Software Introdução (II)

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

Estrutura de Sistemas Operacionais: Sistema em Camadas Modularidade Hierarquia Facilita evolução e adaptação a novos ambientes (Flexibilidade)

Estrutura de Sistemas Operacionais: Sistema em Camadas Modularidade Hierarquia Facilita evolução e adaptação a novos ambientes (Flexibilidade)

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

47 Android em Camadas

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

Camadas em Linux Kernel (núcleo)

Estrutura de Sistemas Operacionais: Cliente-Servidor

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

Infra-estruturas para SDs: SOD, SOR e Middleware Sistemas operacionais fortemente acoplados para sistemas (computadores e programas) distribuídos, geralmente, são chamados de sistemas operacionais distribuídos (SODs) visão única e global dos recursos Sistemas operacionais fracamente acoplados são os sistemas operacionais de rede (SORs) cada computador executando seu próprio SO, e vice-versa, um SO completo para cada computador Para melhor suporte à transparência de distribuição são necessários melhoramentos ou serviços adicionais aos serviços de SORs, principalmente uma camada adicional: middleware

Infra-estruturas para SDs: arquiteturas SOD Middleware Sistemas homogêneos Transparência de distribuição Alto desempenho Memória compartilhada Controle de concorrência Sistemas heterogêneos Pouca transparência Escalabilidade Comunicação Sistemas heterogêneos Transparência de distribuição e comunicação Serviços Abertura SOR

Estruturação de Sistemas Operacionais ü Monolítico ü Camadas ü Cliente-Servidor (incl. SOD, SOR, middleware) Virtualização

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

Virtual Machines: Desde os anos 60 Figure 1-28. The structure of VM/370 with CMS. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved.

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.

Hipervisor Virtual User Mode User mode OperaSng System Virtual Kernel Mode Kernel mode Hypervisor Hardware Monitor Mode o Hardware-supported o Roda em modo hardware especial

Arquitetura Hosted Monitor User App Guest OS (Linux) Kernel Module Host OS (Windows XP) Virtual Machine Monitor Hardware

Arquitetura Hosted Monitor User App Guest OS (Linux) Kernel Module Host OS (Windows XP) Device I/O Network, Disk, Display, Keyboard, Timer, USB Virtual Machine Monitor Hardware

Escalonamento Hosted Monitor 3 User App User App Guest OS (Linux) Guest OS (Windows 8) 1 CPU Scheduler 2 Kernel Module Host OS (Window XP) Virtual Machine Monitor Virtual Machine Monitor Hardware

Escalonamento Hosted Monitor 8 User App User App Guest OS (Linux) Guest OS (Windows 8) 6 CPU Scheduler 5 7 Kernel Module Host OS (Window XP) Virtual Machine 4 Monitor Virtual Machine Monitor Hardware

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

Mais sobre Processo Um programa em execução

Contexto de Processo Informações CPU: Registradores Memória: Posições em uso E/S: Estado das requisições CPU Memória Estado do processo: Rodando, Bloqueado, Pronto Outras E/S Vídeo Teclado outros dispositivos

Estados de um Processo Criar Pronto desbloquear executar suspender (tempo) Bloqueado Rodando bloquear (I/O) Terminar Contexto ID do Processo Estado Prioridade Program Counter Ponteiros da Memória Contexto (outros regs.) I/O Status Informações gerais tempo de CPU limites, usuário, etc.

Ciclo de vida de um processo e o que acontece em termos de memória, E/S, sistema de arquivos etc. término criação execução

Criação de Processos Principais eventos que levam à criação de processos Início do sistema Execução de chamada ao sistema de criação de processos Solicitação do usuário para criar um novo processo Início de um job em lote

Término de Processos Condições que levam ao término de processos Saída normal (voluntária) Saída por erro (voluntária) Erro fatal (involuntário) Cancelamento por um outro processo (involuntário)

Hierarquias de Processos Processo pai cria um processo filho, processo filho pode criar seu próprio processo Formando uma hierarquia UNIX chama isso de grupo de processos Windows não possui o conceito de hierarquia de processos Todos os processos são criados iguais (sem conceito de pai e filho )

Conceito: Multiprogramação a) Multiprogramação de quatro programas b) Modelo conceitual de 4 processos sequenciais, independentes, mas c) Somente um processo está ativo a cada momento ð escalonamento

Escalonamento de processos Quando um ou mais processos estão prontos para serem executados, o sistema operacional deve decidir qual deles vai ser executado primeiro A parte do sistema operacional responsável por essa decisão é chamada escalonador, e o algoritmo usado para tal é chamado de algoritmo de escalonamento Para que um processo não execute tempo demais, praticamente todos os computadores possuem um mecanismo de relógio (clock) que causa uma interrupção, periodicamente

E threads? 7 3

O que vamos ver Gerenciamento de Processos / Escalonamento Gerenciamento de Memória / Memória Virtual Gerenciamento de Disco / Sistemas de Arquivos Gerenciamento de Entrada e Saída Middleware (2 a. parte)

Hardware CPU Register file PC ALU System bus Memory buse/s SO: Abstração e Gerenciamento Bus interface I/O bridge Main memory Processador Memória Disco USB controller Graphics adapter I/O bus Disk controller Expansion slots for other devices such as network adapters Mouse Keyboard Display Disk

Software Como rodar um programa? E/S O conceito de Processo Processo Processador Programa Memória Programa Disco

Algumas características e conceitos associados com processos Lifetime - o tempo de vida de um processo em execução PID - a identidade de um processo representado por um número inteiro e único UID - associação com um usuário que inicia um processo Parent Process - primeiro processo inicializado no kernel do sistema é o init. Este processo tem o PID 1 e é o pai de todos os outros processos no sistema Parent Process ID - o PID do processo pai, ou seja, o PID do processo que criou o processo em questão Enviroment - cada processo tem suporte a uma lista de variáveis associadas a valores Current Working Directory - um diretório associado com cada processo

Algumas características e conceitos associados com processos Current Working Directory - um diretório associado com cada processo

Software E se o programa for maior do que o espaço de memória disponível? E/S O conceito de Página e Memória Virtual Processo Processador Página Memória Programa Página Disco

Software Como rodar mais de um programa? E/S O conceito de Interrupção e Escalonamento Processo Processador Página Página Memória Programa Página Programa Página Disco

Software Como rodar vários programas que se comunicam em máquinas diferentes, formando um sistema distribuído? conceito Mais à frente na disciplina