Anda di halaman 1dari 39

Infra-Estrutura de Software

Introduo

Objetivos das duas prximas aulas


Ao final da aula de quinta-feira voc dever ser
capaz de:
Descrever os componentes bsicos de um
computador
Explicar como o sistema operacional evita que aplicaes
precisem interagir diretamente com a mquina
Explicar sucintamente a histria dos sistemas operacionais
Explicar e comparar as principais organizaes para sistemas
operacionais

Computador Moderno
Componentes fsicos (hardware)

Um ou mais processadores
Memria
Discos
Impressoras
Vrios outros dispositivos de E/S (tela, mouse)

Computador Moderno
Componentes fsicos (hardware)

Um ou mais processadores
Memria
Discos
Impressoras
Vrios outros dispositivos de E/S (tela, mouse)

Gerenciar todos estes componentes requer abstrao


um modelo mais simples do computador o sistema
operacional

Sistema Computacional em
Camadas

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

Sistema Computacional em
Camadas
No pode executar
instrues que afetam o
controle da mquina ou
fazem E/S

GUI ou
shell

Acesso completo a todo o


hardware e pode executar
qualquer instruo que a
mquina seja capaz de
executar

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

Sistema Operacional como uma


Mquina Estendida
Sistemas operacionais transformam o hardware pouco atraente
em abstraes mais interessantes

Processador

Memria

Dispositivos E/S

Sistema Operacional como uma


Mquina Estendida
Sistemas operacionais transformam o hardware pouco atraente
em abstraes mais interessantes

Processos
Memria Virtual
Arquivos
Processador

Memria

Dispositivos E/S

Sistema Operacional como uma


Mquina Estendida
Sistemas operacionais transformam o hardware pouco atraente
em abstraes mais interessantes

Abstraes
Processos
Memria Virtual
Arquivos
Processador

Memria

Dispositivos E/S

SO: Interface de Usurio

SO: Interface de Usurio - Shell

SO: Interface de Usurio - GUI

Sistema Operacional como um


Gerenciador de Recursos
Gerencia e protege memria, dispositivos de
E/S e outros recursos (hardware)
Permite o compartilhamento (ou
multiplexao) de recursos
no tempo (time-sharing)
no espao

Sistema Operacional como um


Gerenciador de Recursos
Gerencia e protege memria, dispositivos de
E/S e outros recursos (hardware)
Permite o compartilhamento (ou
multiplexao) de recursos
no tempo (time-sharing)
no espao

Exemplos?

Sistema Operacional como um


Gerenciador de Recursos
Gerencia e protege memria, dispositivos de
E/S e outros recursos (hardware)
Permite o compartilhamento (ou
multiplexao) de recursos
no tempo (time-sharing)
Ex.: mltiplos programas compartilham o processador
(executam) ao mesmo tempo

no espao
Ex.: dados de diferentes usurios/arquivos podem
compartilhar o espao em disco

Um pouco de hardware
um computador tpico
CPU

Register file
PC

ALU
System bus

Memory bus
Main
memory

I/O
bridge

Bus interface

I/O bus
USB
controller
Mouse Keyboard

Graphics
adapter

Disk
controller

Display
Disk

Expansion slots for


other devices such
as network adapters
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 Aritmtica e
Lgica
Registradores
Funcionam como uma memria
de acesso extremamente rpido
Baixa capacidade
Alguns tm funes especiais

Exemplos de registradores
PC (program counter): contm o
endereo da prxima instruo a
ser executada
Instruction register: onde
copiada cada instruo a ser
executada

CPU: Central Processing Unit


Unidade de Controle
ALU: Unidade Aritmtica e
Lgica
Registradores
Funcionam como uma memria
de acesso extremamente rpido
Baixa capacidade
Alguns tm funes especiais

Exemplos de registradores
PC (program counter): contm o
endereo da prxima instruo a
ser executada
Instruction register: onde
copiada cada instruo a ser
executada

A CPU, seguidamente, executa


instrues requisitadas memria
Ciclo fetch-decode-execute:
1.
2.
3.
4.

busca instruo na memria


atualiza PC
decodifica instruo
executa instruo

Barramentos e Dispositivos de E/S


Barramentos: condutes
eltricos que carregam a
informao entre os vrios
componentes da mquina

Barramentos e Dispositivos de E/S


Barramentos: condutes
eltricos que carregam a
informao entre os vrios
componentes da mquina
Dispositivos de E/S:
Conexo da mquina com o
mundo externo
Conectados ao barramento de E/S
por
controladores (chips no prprio
dispositivo ou na placa me) ou
adaptadores (quando placa
separada)

Memria
Logicamente, a memria
principal corresponde a um
enorme vetor (array) de bytes
cada posio tem um endereo
nico (o ndice do vetor)

Os registradores da CPU muitas


vezes so usados para armazenar
endereos de memria
Assim, o nmero de bits em cada
registrador limita o nmero de
posies de memria endereveis

Hierarquia de Memria
L0:
Registers

Smaller,
faster,
and
costlier
(per byte)
storage
devices

L1:
L2:

L3:
Larger,
slower,
and
cheaper
(per byte)
storage
devices

L4:

L5:

CPU registers hold words retrieved from


cache and main memory.

On-chip L1
cache (SRAM)
Off-chip L2
cache (SRAM)

L1 cache holds cache lines retrieved


from the L2 cache.
L2 cache holds cache lines retrieved
from memory.

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.

Sobre hierarquia de memria


Nvel 1 (L1): dentro de cada ncleo
Nvel 2 (L2): normalmente dentro do mesmo processador
(chip) e fora dos ncleos
No Core 2 Duo e no Core Quad, todos os ncleos compartilham
a mesma cache L2

Nvel 3 (L3): normalmente fora do processador


Alguns exemplos do contrrio: Itanium 2 e Xeon MP

Nvel 4 (L4): fora do processador. til dependendo do


padro de funcionamento da aplicao

Sobre memria cache


Um sistema de computador tem memria cache em
dois nveis e memria principal (RAM). So
necessrios 2ns para acessar uma palavra a partir da
cache L1, 3ns para a cache L2 e 10ns para a memria
RAM. Se a taxa de acertos da cache L1 70% e a da
cache L2 95%, qual o tempo mdio de acesso a
uma palavra?

Resoluo
Tmdio = 0,7*2 + (0,3*0,95)*(3+2) + (0,3*0,05)*(10+3+2) = 3,05
Tempo
mdio
para
acesso
cache L1

Tempo
mdio
para
acesso
cache
L2

Tempo mdio para


acesso memria
RAM

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 Bsico
[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 confiveis
Abstraes em um sistema de computao:
Programa de
usurio
Aplicaes: jogos, editores,
browsers, media players
Escritos geralmente em
linguagem de alto nvel (C, C+
+, C#, Java etc.)

?????

Hardware
Linguagem de
mquina: binria
(0,1) pouco legvel
por humanos

Software Bsico
[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 confiveis
Abstraes em um sistema de computao:
Programa de
usurio

Programa em
Assembly

Aplicaes: jogos, editores,


browsers, media players
Escritos geralmente em
linguagem de alto nvel (C, C+
+, C#, Java etc.)

Sistema
Operacional

Hardware
Linguagem de
mquina: binria
(0,1) pouco legvel
por humanos

A linguagem de montagem (Assembly) um mapeamento direto da


linguagem de mquina, mas que introduz vrias facilidades para o
programador
usa "apelidos" das instrues de mquina

Ex.: mov eax, edx


move o que est no registrador de dados para o acumulador

Gerando um executvel
unix> gcc o hello hello.c
1.
2.
3.
4.
5.

hello.c
programafonte
(texto)

#include <stdio.h>
int main()
{
printf(hello, world\n);
}

hello.i
prprocessador programa-fonte
modificado

Modifica o programa em C de acordo com diretivas


Ex.: #include <stdio.h> diz ao pr-processador para ler o arquivo
stdio.h e inseri-lo no programa fonte

Comando cpp hello.c > hellopp.c


Resultado: programa expandido em C (extenso .i, em Unix)

Gerando um executvel
unix> gcc o hello hello.c
1.
2.
3.
4.
5.

hello.c
programafonte
(texto)

#include <stdio.h>
int main()
{
printf(hello, world\n);
}

hello.i
hello.s
prcompilador
processador programa-fonte
programa
modificado
Assembly
(texto)

Compilador traduz o programa .i em um programa em Assembly


Opo -S
Formato de sada comum para os compiladores em vrias LPs de alto nvel
i.e., programas em C, Java, Fortran, etc. vo ser traduzidos para a mesma
linguagem Assembly

Gerando um executvel
unix> gcc o hello hello.c
1.
2.
3.
4.
5.

hello.c
programafonte
(texto)

#include <stdio.h>
int main()
{
printf(hello, world\n);
}

hello.i
hello.s
prcompilador
processador programa-fonte
programa
modificado
Assembly
(texto)

Compilador traduz o programa .i em um programa em Assembly


Opo -S
Formato de sada comum para os compiladores em vrias LPs de alto nvel
i.e., programas em C, Java, Fortran, etc. vo ser traduzidos para a mesma
linguagem Assembly

Gerando um executvel
unix> gcc o hello hello.c
1.
2.
3.
4.
5.

hello.c
programafonte
(texto)

hello.i
hello.s
prcompilador
processador programa-fonte
programa
modificado
Assembly
(texto)

#include <stdio.h>
int main()
{
printf(hello, world\n);
}

hello.o
montador
(assembler) programaobjeto relocvel
(binrio)

Montador transforma o programa em Assembly em um binrio em


linguagem de mquina (programa-objeto relocvel extenso .o)

Opo -c
Os mdulos de programas, compilados ou montados, so armazenados em um formato
intermedirio (Programa-Objeto Relocvel)

Endereos de acesso e a posio do programa na memria ficam indefinidos

Gerando um executvel
unix> gcc o hello hello.c
1.
2.
3.
4.
5.

#include <stdio.h>
int main()
{
printf(hello, world\n);
}
printf.o

hello.c
programafonte
(texto)

hello.i
hello.s
prcompilador
processador programa-fonte
programa
modificado
Assembly
(texto)

hello.o
hello
montador
ligador (linker)
(assembler) programaprogramaobjeto relocvel
objeto
(binrio)
executvel
(binrio)

Ligador (linker) gera o programa executvel a partir do arquivo .o


Pode haver funes-padro da linguagem (ex., printf) definidas em outro
arquivo .o pr-compilado (printf.o)
O ligador combina os programas-objeto necessrios para gerar o executvel

Execuo de um programa
Processo: Um programa em execuo
1. Ao digitar hello, os caracteres so passados para
um registrador e depois para memria principal

Execuo de um programa
1. Ao digitar Enter, sabe-se que acabou o comando
So executadas instrues para copiar cdigo e dados do
programa hello do disco para a memria principal

Execuo de um programa
1. PC aponta para o endereo de memria onde o
programa hello est
2. Processador executa instrues em linguagem de
mquina da funo main() do programa

Mais de um programa em execuo


Mltiplos processos vs. um (ou [poucos] mais)
processador(es) como possvel?

Processos que se Comunicam


Como possvel?
Dicionrio

Editor de
Texto

Gerenciador de
Imagens

Sistemas Distribudos
Processos em mquinas distintas e que se
comunicam
Web
browser

Web
server