Infra-Estrutura de Software. Introdução

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

Infraestrutura de Software. CIn.ufpe.br

Infraestrutura de Software. CIn.ufpe.br

Infra-Estrutura de Software. Introdução

Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.

Infra-Estrutura de Software

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

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

Infra-Estrutura de Software

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

Infra-Estrutura de Software

Infraestrutura de Software. CIn.ufpe.br

Resumo até aqui. Gerenciamento Proteção Compartilhamento. 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:

Infra-Estrutura de Software. Sistemas Operacionais Revisão

O Sistema de Computação

Sistemas Operacionais Processos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Informática Aplicada

Conceitos básicos sobre computadores

Introdução aos Sistemas Operacionais

Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante

Histórico e Evolução da Computação

Arquitetura de Computadores Sistemas Operacionais I

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Organização e Arquitetura de Computadores I

Fundamentos de Arquitetura e Organização de Computadores

Figura 8: modelo de Von Neumann

Arquitetura e Organização de Computadores

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Aula 03

Android Faixa Branca Douglas Drumond

Sistemas Operacionais João Bosco T. Junior. Sistemas Operacionais João Bosco Junior - V1.3

Linux e Computação Científica

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

O Sistema de Computação

Estruturas de Sistemas Operacionais

INFORMÁTICA. Introdução à Informática Hardware CONHECIMENTOS BÁSICOS EM INFORMÁTICA

Virtualização: o caminho para usar os recursos computacionais de forma inteligente

Oganização e Arquitetura de Computadores

FIQUE POR DENTRO DA INTERNET

Arquitetura de Computadores - Módulos de E/S. por Helcio Wagner da Silva

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Capítulo 6 - Threads

Introdução aos Sistemas Operacionais

Montadores e Compiladores

Computadores e Programação (DCC/UFRJ)

Introdução Informática e TIC. Prof. Ivo Júnior

Sistemas Operacionais. Visão Geral

Gerenciamento de Memória Minix 3.1.7

Sistemas Operacionais

Programação Estruturada

Programação para Dispositivos Móveis

Introdução à Informática. Alexandre Meslin

Entrada e Saída Transmissão Serial e Paralela

Introdução a Programação Aula 01

HARDWARE. Prof. Luciano Bertini

Curso de Sistemas de Informação Campus Guaíba Cursos de Informática Projeto de Inclusão Digital APOSTILA APOSTILA CONCEITOS BÁSICOS DE INFORMÁTICA

Prof. Adilson Gonzaga. Interface com Displays

Programação para Dispositivos Móveis

MATA49 Programação de Software Básico

GFM015 Introdução à Computação

FUNDAMENTOS DE SISTEMAS OPERACIONAIS MÓDULO 4

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

Sistema Operacional. Implementação de Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais

INTRODUÇÃO À INFORMÁTICA: TERMINOLOGIA BÁSICA RAÍ ALVES TAMARINDO

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Recursos Entrada e Saída. 02/12/2014 Prof. Valeria M. Bastos

Arquitetura de Computadores

Linguagem de Programação I

Conceitos Gerais Definição e Características dos SOs. Na Aula Anterior... Nesta Aula. O Escopo dos SOs 16/08/2016

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

Processamento de Dados aplicado à Geociências. AULA 1: Introdução à Arquitetura de Computadores

Introdução. Hardware (Parte III) Universidade Federal de Campina Grande Departamento de Sistemas e Computação. joseana@computacao.ufcg.edu.

Memórias. Barramentos. Prof. Demétrios Coutinho

Componentes do Computador

Sistemas Operacionais

Arquitetura de Computadores Moderna

Estrutura do tema ISC

HARDWARE INFORMÁTICA. Prof.: MARCIO HOLLWEG

HARDWARE PROF. ANDRÉ CARDIA

Sistemas Operacionais. Entrada/Saída

FUNDAMENTOS DE SISTEMAS OPERACIONAIS

Interface com Displays de 7 Segmentos. Interface com Displays

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C

Curso: Redes de Computadores

Estrutura de um Computador

Informática I. Aula /09/2006 1

Professor Léo Matos TI para Concursos

MVM Mattos Virtual Machine. Andrey de Oliveira Prof. Mauro Marcelo Mattos, Doutor FURB 2012/2

Introdução. (Aula 2) Organização Estruturada de Computadores

Introdução à Computação

Sistemas Operacionais

Sistemas de Entrada e Saída

Gerência de Entrada e Saída

Sistemas de Entrada e Saída

Organização de Computadores I

Disciplina: Sistemas Operacionais

Sistemas Operacionais

Introdução (Aula 2) Introdução Arquitetura de Hardware. Organização Estruturada de Computadores. Introdução Conceitos (2) Introdução Conceitos (1)

Software Básico (INF1018)

Elementos básico de uma rede Samba - Local Master Browser

Transcrição:

Infra-Estrutura de Software Introdução

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

Sistema Computacional em Camadas Não pode executar instruções que afetam o controle da máquina ou fazem E/S GUI ou shell 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.

Sistema Operacional como uma 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 - GUI

SO: Interface de Usuário - Shell

Sistema Operacional como um 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.: um sistema de arquivos (parte do SO) permite que dados de diferentes usuários/arquivos compartilhem o espaço em disco

Um pouco de hardware 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 uma memória de acesso extremamente rápido, pois estão contidos na própria CPU 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 (chipsets 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 um com seu endereço (o índice do vetor) Os registradores da CPU muitas vezes 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

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.

Chips Multithreaded e Multicore (a) A quad-core chip with a shared L2 cache. (b) A quad-core chip with separate L2 caches. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved.

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) Para facilitar a elaboração de programas, costuma-se utilizar conceitos de modularidade, particionando-se os programas em módulos, que depois são convenientemente interligados, inclusive com bibliotecas de rotinas de uso geral ou específico, economizando-se tempo de programação Os módulos de programas, compilados ou montados, são armazenados em um formato intermediário ( Programa-Objeto Relocável extensão.o) Nesta notação, os endereços de acesso a posições externas ao módulo ficam indefinidos até o momento em que o módulo é concatenado com outros módulos A posição de memória do programa também é indefinida

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) ligador (linker) 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

Execução Como ocorre

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

Processo Um 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 objeto hello.o do disco para a memória principal

Processo Um programa em execução 3. PC aponta para o endereço de memória onde o programa foi escrito 4. Processador executa instruções em linguagem de máquina da 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

O que vimos 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 (cont.)

Transformar grande complexidade em uma complexidade menor

Mais uma vez: O que é um Sistema Operacional? É uma máquina estendida Oculta os detalhes complicados que têm quer ser executados Apresenta ao usuário uma máquina virtual, mais fácil de usar É um gerenciador de recurso Cada programa tem um tempo com o recurso Ex.: compartilhamento de CPU Cada programa tem um espaço no recurso Ex.: compartilhamento de memória

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 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 em camadas

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) 37

Arquitetura Linux - Outra Visão User applications User applications System libraries(e.g., libc) System libraries(e.g., libc) System call interface Architecture-independent (portable)portion of kernel Architecture-dependent (nonportable)portion of kernel Hardware I/O Hardware Process Control Process Scheduler Interprocess Communication Memory Management 38

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

rse sale A Home Applications Contacts Phone Browser... Android em Camadas Application Framework Activity Manager Window Manager Content Providers View System Notification Manager Package Manager Telephony Manager Resource Manager Location Manager GTalk Service Libraries Android Runtime Surface Manager Media Framework SQLite Core Libraries OpenGL ES FreeType WebKit Dalvik Virtual Machine SGL SSL libc Linux Kernel Display Driver Camera Driver Bluetooth Driver Flash Memory Driver Binder (IPC) Driver USB Driver Keypad Driver WiFi Driver Audio Drivers Power Management 40

Estrutura de Sistemas Operacionais: Cliente-Servidor O modelo cliente-servidor

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

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

Tipos de Virtualização De processo Java,.NET De dispositivo RAID De sistema VMware 44

Arquiteturas de VMM de Tradicional Sistema Linux Linux XP Vista MacOS Virtual Machine Monitor Hardware Hospedado (hosted) Hipervisor 45

Arquitetura Hosted Monitor Executa como uma aplicação em um SO existente User App Guest OS (Linux) Kernel Module Host OS (Window XP) Virtual Machine Monitor Hardware 46

Hipervisor User mode Virtual User Mode OperaCng System Virtual Kernel Mode Kernel mode Hypervisor Monitor Mode Hardware 47

Conceito Básico: Processo (um programa em execução) Contexto de processo CPU Memória Vídeo Teclado n n n n n CPU: Registradores Memória: Posições em uso E/S: Estado das requisições Estado do processo: Rodando, Bloqueado, Pronto Outras informações E/S outros dispositivos

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

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

O que vamos ver neste Módulo I? Gerenciamento de Processos / Escalonamento Gerenciamento de Entrada e Saída Gerenciamento de Memória / Memória Virtual Gerenciamento de Disco / Sistemas de Arquivos