21.06.2013 Views

Processamento com SPOOL Utilização do CPU e periféricos ...

Processamento com SPOOL Utilização do CPU e periféricos ...

Processamento com SPOOL Utilização do CPU e periféricos ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Processamento</strong> <strong>com</strong> <strong>SPOOL</strong><br />

Spool de entrada<br />

Leitor<br />

de cartões<br />

disco<br />

Computa<strong>do</strong>r<br />

opera<strong>do</strong>r<br />

utiliza<strong>do</strong>r<br />

Spool de saída<br />

impressora<br />

resulta<strong>do</strong>s<br />

28-02-2007 ASC II - 06/07 1<br />

Exemplo – IBM 1460 (1963)<br />

28-02-2007 ASC II - 06/07 3<br />

Escalonamento<br />

●A reordenação <strong>do</strong>s trabalhos pode rentabilizar<br />

o <strong>CPU</strong> e os <strong>periféricos</strong><br />

Perif. entrada<br />

<strong>CPU</strong><br />

Perif. saída<br />

Escalonan<strong>do</strong> os trabalhos<br />

tempo<br />

28-02-2007 ASC II - 06/07 5<br />

<strong>Utilização</strong> <strong>do</strong> <strong>CPU</strong> e <strong>periféricos</strong><br />

Perif. entrada<br />

<strong>CPU</strong><br />

Perif. saída<br />

Perif. entrada<br />

<strong>CPU</strong><br />

Perif. saída<br />

Puramente sequencial<br />

I/O em concorrência (<strong>SPOOL</strong>)<br />

tempo<br />

tempo<br />

28-02-2007 ASC II - 06/07 2<br />

Perfis <strong>do</strong>s programas<br />

Perif. entrada<br />

<strong>CPU</strong><br />

Perif. saída<br />

O I/O <strong>do</strong>mina (I/O bound)<br />

Perif. entrada<br />

<strong>CPU</strong><br />

Perif. saída<br />

O processamento <strong>do</strong>mina (<strong>CPU</strong> bound)<br />

tempo<br />

tempo<br />

28-02-2007 ASC II - 06/07 4<br />

Problemas no escalonamento<br />

●Nem sempre se pode a priori, prever o perfil<br />

dum programa<br />

O perfil pode variar entre execuções<br />

●Como tirar parti<strong>do</strong> <strong>do</strong> <strong>CPU</strong> quan<strong>do</strong> <strong>do</strong> I/O<br />

<strong>com</strong>o o disco?<br />

●Como suportar programas <strong>com</strong> fases de I/O<br />

durante a execução?<br />

p.ex. Programas que variam entre I/O e <strong>CPU</strong><br />

p.ex. Programas interactivos<br />

28-02-2007 ASC II - 06/07 6<br />

1


Múltiplos programas<br />

● Vários programas em memória prontos a executar<br />

● Quan<strong>do</strong> um fizer I/O escalonar outro para executar,<br />

manten<strong>do</strong> o <strong>CPU</strong> ocupa<strong>do</strong><br />

Perif. entrada<br />

<strong>CPU</strong><br />

Perif. saída<br />

Vários programas em concorrência<br />

(multiprogramação)<br />

tempo<br />

28-02-2007 ASC II - 06/07 7<br />

Time-sharing<br />

●Um programa <strong>CPU</strong> bound pode monopolizar a<br />

máquina<br />

Mau para o uso <strong>do</strong>s <strong>periféricos</strong><br />

Mau para a interactividade<br />

●Há que partilhar <strong>do</strong> tempo de <strong>CPU</strong><br />

por cooperação entre os programas<br />

por apreenção <strong>do</strong> <strong>CPU</strong> pelo SO (preemption)<br />

Time-slice:<br />

Cada programa usa no máximo uma determinada<br />

fatia de tempo, sen<strong>do</strong>-lhe o <strong>CPU</strong> apreendi<strong>do</strong> pelo<br />

SO se gastar to<strong>do</strong> esse tempo.<br />

28-02-2007 ASC II - 06/07 9<br />

Time-sharing (cont)<br />

● Exemplo: 4 processos concorrem pelo <strong>CPU</strong><br />

● A quan<strong>do</strong> de I/O ou <strong>do</strong> fim <strong>do</strong> time-slice o SO atribui<br />

o <strong>CPU</strong> a outro processo<br />

prog.A prog.B<br />

Realmente<br />

em execução<br />

prog.C<br />

prog.D<br />

Processo 1 Processo 2 Processo 3 Processo 4<br />

S.O.<br />

escalona<strong>do</strong>r<br />

<strong>CPU</strong><br />

temporiza<strong>do</strong>r<br />

28-02-2007 ASC II - 06/07 11<br />

Multiprogramação (multitasking)<br />

● Cada programa executa num contexto (processo):<br />

Imagem <strong>do</strong> programa em memória<br />

Esta<strong>do</strong> <strong>do</strong> <strong>CPU</strong><br />

Esta<strong>do</strong> <strong>do</strong> I/O<br />

● O SO muda de contexto quan<strong>do</strong> necessário<br />

Oferece um máquina virtual a cada processo<br />

● É necessário suporte hardware:<br />

Um programa "vê" um espaço de memória próprio,<br />

recoloca<strong>do</strong>, (e só pode aceder a essa memória)<br />

Só o SO acede realmente a toda a memória e aos<br />

<strong>periféricos</strong> gerin<strong>do</strong> a sua partilha entre os vários<br />

processos<br />

28-02-2007 ASC II - 06/07 8<br />

Múltiplos utiliza<strong>do</strong>res<br />

●Suporta<strong>do</strong> por time-sharing<br />

●Cada utiliza<strong>do</strong>r vê uma máquina virtual<br />

No disco tem um conjunto de aplicações<br />

No disco guarda um conjunto de da<strong>do</strong>s<br />

O utiliza<strong>do</strong>r interage dan<strong>do</strong> <strong>com</strong>an<strong>do</strong>s ao<br />

sistema via um shell<br />

Manda o sistema executar programas, p.ex.<br />

Permite programas interactivos<br />

28-02-2007 ASC II - 06/07 10<br />

Esta<strong>do</strong>s dum processo<br />

criação terminação<br />

escalona<strong>do</strong><br />

pronto<br />

fim <strong>do</strong> I/O<br />

fim <strong>do</strong> time-slice<br />

bloquea<strong>do</strong><br />

executan<strong>do</strong><br />

I/O<br />

28-02-2007 ASC II - 06/07 12<br />

2


Sistema interactivo (time-sharing)<br />

utiliza<strong>do</strong>res<br />

perif. de<br />

entrada<br />

Terminais<br />

(perif. de entrada e saída)<br />

Disco<br />

(da<strong>do</strong>s e programas)<br />

Unidade<br />

central<br />

perif. de<br />

saída<br />

consola<br />

Opera<strong>do</strong>r/administra<strong>do</strong>r<br />

28-02-2007 ASC II - 06/07 13<br />

Curiosidade (Bell-Labs 1970...)<br />

Ritchie<br />

Thompson<br />

Mini-<strong>com</strong>puta<strong>do</strong>r<br />

DEC<br />

PDP-11<br />

<strong>com</strong> vários<br />

<strong>periféricos</strong><br />

http://www.bell-labs.<strong>com</strong>/history/unix/<br />

28-02-2007 ASC II - 06/07 15<br />

Abstracções <strong>do</strong> SO (máquina virtual)<br />

●Gerir a execução <strong>do</strong>s programas e os<br />

recursos da máquina<br />

Criar/terminar os processos<br />

Atribuir espaço de memória a cada processo<br />

Noção de ficheiros em disco<br />

Executa o I/O <strong>com</strong> os <strong>periféricos</strong><br />

Time-sharing <strong>do</strong> <strong>CPU</strong> transparente para os<br />

processos<br />

●Gerir os utiliza<strong>do</strong>res<br />

Gerir os recursos que oferece a cada utiliza<strong>do</strong>r<br />

28-02-2007 ASC II - 06/07 17<br />

Exemplos de terminais<br />

Digital (DEC) vt100<br />

1978<br />

Teletype 33-ASR<br />

1965<br />

28-02-2007 ASC II - 06/07 14<br />

Papel <strong>do</strong> SO (resumo)<br />

●Melhorar a utilização <strong>do</strong>s recursos disponíveis<br />

Escalonar os vários trabalhos/processos<br />

Suportar a multiprogramação<br />

Gerir o hardware:<br />

Acede realmente aos <strong>periféricos</strong><br />

Permite a protecção entre os programas<br />

●Facilitar a programação<br />

Implementa abstracções e oferece uma<br />

interface <strong>com</strong> o hardware mais fácil de usar<br />

28-02-2007 ASC II - 06/07 16<br />

Resumo (utiliza<strong>do</strong>r vs. <strong>com</strong>puta<strong>do</strong>r)<br />

● Mo<strong>do</strong> de trabalho <strong>do</strong> utiliza<strong>do</strong>r<br />

Submissão de trabalhos off-line<br />

☺ Interactiva (aumenta a produtividade <strong>do</strong> utiliza<strong>do</strong>r)<br />

● Execução suportada pelo SO<br />

Puramente sequencial<br />

Concorrência <strong>do</strong> I/O <strong>com</strong> <strong>com</strong>putação<br />

Usan<strong>do</strong> lotes (c/ I/O off-line)<br />

Usan<strong>do</strong> <strong>SPOOL</strong> (c/ I/O on-line)<br />

☺ Concorrência também na<br />

<strong>com</strong>putação/multiprogramação (aumenta a eficiência<br />

<strong>do</strong> sistema e rentabiliza a máquina)<br />

28-02-2007 ASC II - 06/07 18<br />

3


<strong>SPOOL</strong> e multiprogramação<br />

●O <strong>SPOOL</strong> continua váli<strong>do</strong> para a partilha de<br />

certos recursos<br />

Exemplo: uma impressora partilhada pelos<br />

vários programas só é acessível por <strong>SPOOL</strong><br />

Um programa que pretenda uma impressão,<br />

submete o trabalho ao spooler da impressora<br />

Este vai imprimin<strong>do</strong> os vários trabalhos por ordem,<br />

garanti<strong>do</strong> que não há "misturas"<br />

28-02-2007 ASC II - 06/07 19<br />

Termos: os sistemas suportam…<br />

● Multiprogramação<br />

Manter vários programas em execução<br />

● Interactividade<br />

Permitir a interacção utiliza<strong>do</strong>r/programa<br />

● Escalonamento<br />

Escolher a ordem de execução <strong>do</strong>s programas<br />

● Time-sharing<br />

Garantir que to<strong>do</strong>s os programas evoluem ao longo<br />

<strong>do</strong> tempo<br />

Apreensão <strong>do</strong> <strong>CPU</strong> para garantir a sua partilha<br />

(preemption)<br />

28-02-2007 ASC II - 06/07 21<br />

Utiliza<strong>do</strong>res e permissões<br />

●Utiliza<strong>do</strong>res: identificação, direitos ou<br />

permissões<br />

O que pode ler, escrever, executar, que<br />

tempo de <strong>CPU</strong>, espaço em memória, espaço<br />

em disco, etc…<br />

●Cada utiliza<strong>do</strong>r tem de identificar-se perante<br />

o SO: login<br />

●Cada processo recebe os direitos <strong>do</strong> utiliza<strong>do</strong>r<br />

que o man<strong>do</strong>u executar<br />

28-02-2007 ASC II - 06/07 23<br />

Termos: <strong>com</strong>putações…<br />

● Sequenciais<br />

Uma <strong>com</strong>putação de cada vez (uma só se inicia<br />

depois da anterior <strong>com</strong>pletamente concluída)<br />

● Concorrentes<br />

Várias <strong>com</strong>putações "concorrem" pelo <strong>CPU</strong> (não há<br />

ordem pré-definida poden<strong>do</strong> executar-se uma acção<br />

de qualquer das <strong>com</strong>putações)<br />

● Paralelas<br />

Várias <strong>com</strong>putações executam verdadeiramente em<br />

simultâneo (em paralelo)<br />

28-02-2007 ASC II - 06/07 20<br />

Principais características <strong>do</strong> UNIX<br />

●Suporta múltiplos processos<br />

●Suporta múltiplos utiliza<strong>do</strong>res<br />

●Escalonamento <strong>com</strong> time-slice<br />

●Organiza o espaço nos discos num sistema de<br />

ficheiros hierárquico<br />

●Possui mecanismos de permissões associa<strong>do</strong><br />

aos processos e aos ficheiros<br />

(o que hoje to<strong>do</strong>s esperamos de um SO)<br />

28-02-2007 ASC II - 06/07 22<br />

O arranque <strong>do</strong> SO / processos<br />

●Um pequeno programa para boot-strap<br />

Responsável pelo carregamento para memória<br />

e execução <strong>do</strong> núcleo <strong>do</strong> SO<br />

Depende de cada <strong>com</strong>puta<strong>do</strong>r<br />

●Depois das inicializações o SO cria o primeiro<br />

processo (init)<br />

●O init dá inicio a uma cascata de criação de<br />

processos<br />

28-02-2007 ASC II - 06/07 24<br />

4


Árvore de processos (exemplo)<br />

init<br />

Spooler de impressão<br />

Atendimento de logins por rede<br />

Login terminal 1<br />

Shell para utiliza<strong>do</strong>r A<br />

Coman<strong>do</strong> 'ls' (exemplo de uma sessão….)<br />

Login terminal 2<br />

28-02-2007 ASC II - 06/07 25<br />

Níveis de software<br />

●Visão de uma aplicação<br />

Mo<strong>do</strong> utiliza<strong>do</strong>r<br />

(executa num processo)<br />

Mo<strong>do</strong> supervisor<br />

programa<br />

bibliotecas<br />

API <strong>do</strong> SO<br />

Chamada ao sistema<br />

Núcleo <strong>do</strong> SO<br />

device drivers<br />

hardware<br />

28-02-2007 ASC II - 06/07 27<br />

Visão <strong>do</strong> utiliza<strong>do</strong>r<br />

● Listar processos:<br />

Visão dada pelo <strong>com</strong>an<strong>do</strong> ps (process status)<br />

Exemplo: ps -ef<br />

UID PID PPID C STIME TTY TIME CMD<br />

root 1 0 0 Feb21 ? 0:03 init [3]<br />

cups 513 1 0 Feb21 ? 5:03 cupsd<br />

root 519 1 0 Feb21 ? 0:16 /usr/sbin/sshd<br />

root 660 1 0 Feb21 tty1 0:00 /sbin/getty tty1<br />

root 661 1 0 Feb21 tty2 0:00 /sbin/getty tty2<br />

vad 11625 519 0 17:54 ? 0:00 /usr/sbin/sshd<br />

vad 11633 11625 0 17:54 pts/1 0:00 -bash<br />

vad 11663 11633 0 17:55 pts/1 0:00 ps -ef<br />

28-02-2007 ASC II - 06/07 26<br />

Chamada ao sistema _exit<br />

void _exit(int status);<br />

Código possível<br />

Programa C<br />

_exit: …<br />

mov eax, EXIT_SCALL<br />

libc<br />

API <strong>do</strong> SO<br />

exit(…)<br />

_exit(…)<br />

int SYSCALL<br />

rot-int…<br />

mov ebx, [ebp+4]<br />

int SYSCALL<br />

…<br />

Núcleo (kernel) <strong>do</strong>_exit<br />

No caso <strong>do</strong> linux/x86:<br />

hardware<br />

EXIT_SCALL=1<br />

SYSCALL=0x80<br />

28-02-2007 ASC II - 06/07 28<br />

5

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!