• Nenhum resultado encontrado

Infra-Estrutura de Software

N/A
N/A
Protected

Academic year: 2021

Share "Infra-Estrutura de Software"

Copied!
81
0
0

Texto

(1)

CIn.ufpe.br

Infra-Estrutura de Software

(2)

CIn.ufpe.br

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

(3)

CIn.ufpe.br

IBM Model 701 (Early 1950's)

(4)

CIn.ufpe.br

(5)

CIn.ufpe.br

(6)

CIn.ufpe.br

•  Componentes físicos (hardware)

–  Um ou mais processadores

–  Memória

–  Discos

–  Impressoras

–  Vários outros dispositivos de E/S (tela, mouse…)

•  Gerenciar todos componentes requer abstração – um

modelo mais simples do computador

•  É isso que é o sistema operacional

Computador Moderno

Um Sistema

Complexo!!!

(7)

CIn.ufpe.br 7

Concreto

Tangível

Hardware

C

O

M

P

L

E

X

I

D

ADE

Abstrato

Intangível

Software

(8)

CIn.ufpe.br

Sistema Computacional em Camadas

Acesso completo a todo o hardware e pode

executar qualquer instrução que a máquina seja capaz de

executar

Não pode executar instruções que afetam o controle da máquina

ou fazem E/S GUI ou shell

Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved.

(9)

CIn.ufpe.br

9

Sistema Operacional

Máquina Abstrata

(10)

CIn.ufpe.br

Máquina Estendida

•  Sistemas operacionais tornam o hardware pouco atraente em

abstrações mais interessantes

Processador Memória Dispositivos E/S Processos

Arquivos Memória Virtual

(11)

CIn.ufpe.br

(12)

CIn.ufpe.br

(13)

CIn.ufpe.br

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

(14)

CIn.ufpe.br

14

(15)

CIn.ufpe.br Main memory I/O bridge Bus interface ALU Register file CPU

System bus Memory bus

Disk controller Graphics adapter USB controller

Mouse Keyboard Display

Disk I/O bus

Expansion slots for other devices such as network adapters PC

Um pouco de um computador típico

Randal E. Bryant, David R. O'Hallaron. Computer Systems: A Programmer's Perspective.

(16)

CIn.ufpe.br

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

(17)

CIn.ufpe.br

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

(18)

CIn.ufpe.br

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…

(19)

CIn.ufpe.br Registers On-chip L1 cache (SRAM) Main memory (DRAM)

Local secondary storage (local disks) Larger, slower, and cheaper (per byte) storage devices

Remote secondary storage

(distributed file systems, Web servers)

Local disks hold files retrieved from disks on remote network servers. Main memory holds disk

blocks retrieved from local disks.

Off-chip L2 cache (SRAM)

L1 cache holds cache lines retrieved from the L2 cache.

CPU registers hold words retrieved from cache memory.

L2 cache holds cache lines retrieved from memory. L0: L1: L2: L3: L4: L5: Smaller, faster, and costlier (per byte) storage devices

Hierarquia de Memória

Trajetória de dados até a CPU

(20)

CIn.ufpe.br

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.

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

(21)

CIn.ufpe.br

21

(22)

CIn.ufpe.br

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

?????

Hardware Programa em Assembly Sistema Operacional

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

(23)

CIn.ufpe.br

Gerando um executável

•  unix> gcc –o hello hello.c

•  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

1.  #include <stdio.h> 2.  int main() 3.  { 4.  printf(“hello, world\n”); 5.  } pré-processador hello.c programa-fonte (texto) hello.i programa-fonte modificado

(24)

CIn.ufpe.br

Gerando um executável

•  unix> gcc –o hello hello.c

•  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 1.  #include <stdio.h> 2.  int main() 3.  { 4.  printf(“hello, world\n”); 5.  } pré-processador hello.c programa-fonte (texto) compilador hello.i programa-fonte modificado hello.s programa Assembly (texto)

(25)

CIn.ufpe.br

Gerando um executável

•  unix> gcc –o hello hello.c

•  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

1.  #include <stdio.h> 2.  int main() 3.  { 4.  printf(“hello, world\n”); 5.  } pré-processador hello.c programa-fonte (texto) compilador hello.i programa-fonte modificado montador (assembler) hello.s programa Assembly (texto) hello.o programa-objeto relocável (binário)

(26)

CIn.ufpe.br

Gerando um executável

•  unix> gcc –o hello hello.c

•  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 1.  #include <stdio.h> 2.  int main() 3.  { 4.  printf(“hello, world\n”); 5.  } pré-processador hello.c programa-fonte (texto) compilador hello.i programa-fonte modificado montador (assembler) hello.s programa Assembly (texto) hello.o programa-objeto relocável (binário)

ligador (linker) hello programa-objeto executável (binário)

(27)

CIn.ufpe.br

27

Execução

(28)

CIn.ufpe.br

Processo

•  Conceito: Um programa em execução

1.Ao digitar “hello”, os caracteres são passados para um

(29)

CIn.ufpe.br

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

(30)

CIn.ufpe.br

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

(31)

CIn.ufpe.br

Mais de um programa em execução

Múltiplos processos

vs.

um (ou [poucos] mais)

(32)

CIn.ufpe.br

Processos Comunicantes

• 

Como pode???

Dicionário Editor de Texto Gerenciador de Imagens

(33)

CIn.ufpe.br

Sistemas Distribuídos

•  Processos em máquinas distintas e que se comunicam

Web browser

Web server

(34)

CIn.ufpe.br

Sistemas Distribuídos

•  Processos em máquinas distintas e que se comunicam Web browser Web server

Como fazer funcionar aplicações

distribuídas que usam diferentes

sistemas de computador

(hardware), sistemas operacionais

e software de aplicação (ex.

linguagens de programação),

interconectadas por diferentes

redes?

O problema da

(35)

CIn.ufpe.br

•  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

(36)

CIn.ufpe.br

Infra-estrutura de Software

(37)

CIn.ufpe.br

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

(38)

CIn.ufpe.br

História dos Sistemas Operacionais

(39)

CIn.ufpe.br

História dos Sistemas Operacionais

Sistema de

multiprogramação

(40)

CIn.ufpe.br

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

(41)

CIn.ufpe.br

Estruturação de Sistemas Operacionais

•  Monolítico

•  Camadas

•  Cliente-Servidor

(42)

CIn.ufpe.br

Estrutura de Sistemas

Operacionais: Sistema M

onolítico

•  Modelo simples de estruturação de um sistema monolítico SO = um processo com n procedimentos Executam as System Calls Ajudam os Procedimentos de Serviços

(43)

CIn.ufpe.br

Estrutura de Sistemas

Operacionais: Sistema em Camadas

•  Modularidade •  Hierarquia •  Facilita evolução e adaptação a novos ambientes (Flexibilidade)

(44)

CIn.ufpe.br

Estrutura de Sistemas

Operacionais: Sistema em Camadas

•  Modularidade •  Hierarquia •  Facilita evolução e adaptação a novos ambientes (Flexibilidade)

(45)

CIn.ufpe.br

Camadas em Linux

(46)

CIn.ufpe.br

Linux Kernel: Relacionamentos

Hardware

Network Process

Management IPC ManagementMemory SystemFile

Device Driver

System Call Interface

(47)

CIn.ufpe.br

Android em Camadas

(48)

CIn.ufpe.br

Estruturação de Sistemas Operacionais

ü  Monolítico

ü  Camadas

•  Cliente-Servidor

(49)

CIn.ufpe.br

Camadas em Linux

(50)

CIn.ufpe.br

Estrutura de Sistemas

(51)

CIn.ufpe.br

Estrutura de Sistemas

Operacionais: Cliente-Servidor (2)

•  O modelo cliente-servidor em um sistema ( )

(52)

CIn.ufpe.br

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:

(53)

CIn.ufpe.br

Infra-estruturas para SDs: arquiteturas

§ Sistemas homogêneos § Transparência de distribuição § Alto desempenho § Memória compartilhada § Controle de concorrência § Sistemas heterogêneos § Transparência de distribuição e comunicação § Serviços § Abertura § Sistemas heterogêneos § Pouca transparência § Escalabilidade § Comunicação SOD SOR Middleware

(54)

CIn.ufpe.br

Estruturação de Sistemas Operacionais

ü  Monolítico

ü  Camadas

ü  Cliente-Servidor (incl. SOD, SOR, middleware)

(55)

Estrutura  de  Sistemas  

Operacionais:  Máquina  Virtual  (Virtualização)  

Hardware  

Virtual  Machine  Monitor  

Linux   Linux  (devel)   XP   Windows  7   MacOS  

VMM opera na interface de hardware, fornecendo uma interface idêntica para os SOs acima

(56)

CIn.ufpe.br

Virtual Machines: Desde os anos 60

Figure 1-28. The structure of VM/370 with CMS.

(57)

CIn.ufpe.br

Virtual Machines: Tipos (Arquiteturas)

Hardware   Hardware  

Hipervisor Tipo 1 Hipervisor Tipo 2

(58)

CIn.ufpe.br

Hipervisor

Hardware   Hypervisor  

OperaSng  System   Virtual  Kernel Mode   Monitor Mode   Virtual  User Mode   User mode Kernel

mode o Hardware-supported o Roda em modo

(59)

Arquitetura  Hosted  Monitor  

Hardware  

Virtual  Machine  Monitor  

Guest  OS  (Linux)  

Host  OS  (Windows  XP)  

 User  App  

(60)

Arquitetura  Hosted  Monitor  

Hardware  

Virtual  Machine  Monitor  

Guest  OS  (Linux)  

Host  OS  (Windows  XP)  

 User  App   Kernel  Module   Device  I/O   Network,  Disk,   Display,  Keyboard,   Timer,  USB  

(61)

CIn.ufpe.br

Escalonamento

Hosted Monitor

Hardware  

Virtual  Machine   Monitor  

Guest  OS  

(Linux)  

Host  OS  (Window  XP)  

 User  App   Kernel   Module    User  App   Virtual  Machine   Monitor   Guest  OS   (Windows  8)   2 3 CPU   Scheduler   1

(62)

CIn.ufpe.br

Escalonamento

Hosted Monitor

Hardware  

Virtual  Machine   Monitor  

Guest  OS  

(Linux)  

Host  OS  (Window  XP)  

 User  App   Kernel   Module    User  App   Virtual  Machine   Monitor   Guest  OS   (Windows  8)   CPU   Scheduler   4 5 7 6 8

(63)

Ex.:  Cloud  CompuSng  

Po ol Hipervisor Hardware VM VM VM VM VM VM VM Sob demanda

(64)

CIn.ufpe.br

Mais sobre “Processo”

(65)

CIn.ufpe.br

Contexto de Processo

Informações

–  CPU: Registradores

–  Memória: Posições em uso

–  E/S: Estado das requisições

–  Estado do processo: Rodando, Bloqueado, Pronto

–  Outras Vídeo Teclado CPU Memória E/S outros dispositivos

(66)

Estados  de  um  Processo  

Pronto Rodando Bloqueado Criar Terminar bloquear (I/O) desbloquear ID do Processo Estado Program Counter Ponteiros da Memória Contexto (outros regs.)

I/O Status Prioridade

Informações gerais

•  tempo de CPU

•  limites, usuário, etc.

Contexto

executar

suspender (tempo)

(67)

Ciclo  de  vida  de  um  processo…  

criação  

execução  

término  

(68)

CIn.ufpe.br

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

(69)

CIn.ufpe.br

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)

(70)

CIn.ufpe.br

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

(71)

CIn.ufpe.br

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 ð

(72)

CIn.ufpe.br

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

(73)

CIn.ufpe.br

E

threads

?

7 3

(74)

CIn.ufpe.br

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

(75)

Hardware

Main memory I/O bridge Bus interface ALU Register file CPU

System bus Memory bus

Disk controller Graphics adapter USB controller

Mouse Keyboard Display

Disk

I/O bus Expansion slots for other devices such as network adapters PC Disco Memória Proces- sador E/S

(76)

Software

Disco Memória Proces- sador E/S Programa Programa Processo Como rodar um programa? Programa O conceito de “Processo”

(77)

CIn.ufpe.br

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

(78)

CIn.ufpe.br

Algumas características e conceitos associados com

processos

• 

•  Current Working Directory - um diretório associado com cada

(79)

Software

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

(80)

Software

Disco Memória Proces- sador E/S Programa Página Processo Como rodar mais de um programa? Página Programa Página Página Processo O conceito de “Interrupção” e “Escalonamento”

(81)

Software

Como rodar vários programas que se

comunicam em máquinas diferentes,

formando um

sistema distribuído

?

Mais à frente na disciplina…

Referências

Documentos relacionados

Foram aplicados os modelos de adsorção de Langmuir e Freundlich nos dados obtidos das soluções de tensoativo de 6 x 10 -4 e 8 x 10 -4 g/ml na rocha calcária (Figuras 32 e

No entanto, Kimura e Harshiman (1984) relatam que as mulheres tendem a ir melhor que os homens em provas que avaliaram a velocidade perceptual, fluência verbal,

Neste contexto, o objetivo deste trabalho é analisar a participação da agricultura familiar nas compras da alimentação escolar nas escolas municipais de Passo Fundo,

A adaptação com a sociedade paulistana foi um processo que costumou levar pouco tempo segundo os entrevistados, tanto que foi observada a intenção de seguir mantendo

As perguntas da pesquisa PINTEC/IBGE/2005 procuram obter uma avaliação das empresas a respeito das formas de cooperação e da importância do uso das fontes de informação

a) Em primeiro lugar, as cidades devem ser conside- radas como verdadeiros espaços de aprendizagem, organizando, sistematizando e aprofundando o co- nhecimento informal que

Sobre os motivos que levam a mulher a postergar a maternidade, verificou-se nesses estudos, uma variedade de situações que ocasionam esse fato; de modo geral, esse

A determinação da direcção da fonte sonora (Sound Direction Of Arrival - SDOA) centra-se no cálculo da diferença de tempo interaural, em inglês Interaural Time Diference