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