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 ...
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
- Page 1 and 2: Processamento com SPOOL Spool de en
- Page 3: Sistema interactivo (time-sharing)
Á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