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

asc.di.fct.unl.pt
from asc.di.fct.unl.pt More from this publisher
21.06.2013 Views

SPOOL e multiprogramação ●O SPOOL continua válido para a partilha de certos recursos Exemplo: uma impressora partilhada pelos vários programas só é acessível por SPOOL Um programa que pretenda uma impressão, submete o trabalho ao spooler da impressora Este vai imprimindo os vários trabalhos por ordem, garantido que não há "misturas" 28-02-2007 ASC II - 06/07 19 Termos: os sistemas suportam… ● Multiprogramação Manter vários programas em execução ● Interactividade Permitir a interacção utilizador/programa ● Escalonamento Escolher a ordem de execução dos programas ● Time-sharing Garantir que todos os programas evoluem ao longo do tempo Apreensão do CPU para garantir a sua partilha (preemption) 28-02-2007 ASC II - 06/07 21 Utilizadores e permissões ●Utilizadores: identificação, direitos ou permissões O que pode ler, escrever, executar, que tempo de CPU, espaço em memória, espaço em disco, etc… ●Cada utilizador tem de identificar-se perante o SO: login ●Cada processo recebe os direitos do utilizador que o mandou executar 28-02-2007 ASC II - 06/07 23 Termos: computações… ● Sequenciais Uma computação de cada vez (uma só se inicia depois da anterior completamente concluída) ● Concorrentes Várias computações "concorrem" pelo CPU (não há ordem pré-definida podendo executar-se uma acção de qualquer das computações) ● Paralelas Várias computações executam verdadeiramente em simultâneo (em paralelo) 28-02-2007 ASC II - 06/07 20 Principais características do UNIX ●Suporta múltiplos processos ●Suporta múltiplos utilizadores ●Escalonamento com time-slice ●Organiza o espaço nos discos num sistema de ficheiros hierárquico ●Possui mecanismos de permissões associado aos processos e aos ficheiros (o que hoje todos esperamos de um SO) 28-02-2007 ASC II - 06/07 22 O arranque do SO / processos ●Um pequeno programa para boot-strap Responsável pelo carregamento para memória e execução do núcleo do SO Depende de cada computador ●Depois das inicializações o SO cria o primeiro processo (init) ●O init dá inicio a uma cascata de criação de processos 28-02-2007 ASC II - 06/07 24 4

Árvore de processos (exemplo) init Spooler de impressão Atendimento de logins por rede Login terminal 1 Shell para utilizador A Comando 'ls' (exemplo de uma sessão….) Login terminal 2 28-02-2007 ASC II - 06/07 25 Níveis de software ●Visão de uma aplicação Modo utilizador (executa num processo) Modo supervisor programa bibliotecas API do SO Chamada ao sistema Núcleo do SO device drivers hardware 28-02-2007 ASC II - 06/07 27 Visão do utilizador ● Listar processos: Visão dada pelo comando ps (process status) Exemplo: ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 Feb21 ? 0:03 init [3] cups 513 1 0 Feb21 ? 5:03 cupsd root 519 1 0 Feb21 ? 0:16 /usr/sbin/sshd root 660 1 0 Feb21 tty1 0:00 /sbin/getty tty1 root 661 1 0 Feb21 tty2 0:00 /sbin/getty tty2 vad 11625 519 0 17:54 ? 0:00 /usr/sbin/sshd vad 11633 11625 0 17:54 pts/1 0:00 -bash vad 11663 11633 0 17:55 pts/1 0:00 ps -ef 28-02-2007 ASC II - 06/07 26 Chamada ao sistema _exit void _exit(int status); Código possível Programa C _exit: … mov eax, EXIT_SCALL libc API do SO exit(…) _exit(…) int SYSCALL rot-int… mov ebx, [ebp+4] int SYSCALL … Núcleo (kernel) do_exit No caso do linux/x86: hardware EXIT_SCALL=1 SYSCALL=0x80 28-02-2007 ASC II - 06/07 28 5

Á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!