Escolar Documentos
Profissional Documentos
Cultura Documentos
Sistemas Operacionais
01_SisOps.qxp 11/2/2009 11:34 Page 2
01_SisOps.qxp 11/2/2009 11:34 Page 3
Sistemas Operacionais
Manaus - AM
2009
01_SisOps.qxp 11/2/2009 11:35 Page 4
Ficha Técnica
Érica Lima
Projeto gráfico
V154s Sistemas operacionais / Danielle Gordiano Valente, Edward David Moreno Ordonez,
José Roberto Vasques Nascimento – Manaus/AM: UEA Edições, 2009.
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
01_SisOps.qxp 11/2/2009 11:35 Page 7
Agradeço a Deus pelas vibrações eternas de amor com toda a Criação. A minha
esposa Elena, e meus filhos pelo constante amor e harmonia em família. Eles
inspiram e fortalecem cada segundo das nossas vidas.
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
8
01_SisOps.qxp 11/2/2009 11:35 Page 9
Palavra da Reitora
Sumário
CAPÍTULO 2 - PROCESSOS............................................................29
2.1 Execução de um Processo .....................................................30
CAPÍTULO 3 - THREADS...............................................................33
3.1 Introdução........................................................................33
3.2 Modelos de criação de threads ...............................................35
3.2.1 Modelo muitos-para-um .................................................35
3.2.2 Modelo um-para-um .....................................................36
3.2.3 Modelo muitos-para-muitos ............................................37
3.3 Operações realizadas sobre threads .........................................38
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
BIBLIOGRAFIA...........................................................................213
13
01_SisOps.qxp 11/2/2009 11:35 Page 14
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
14
01_SisOps.qxp 11/2/2009 11:35 Page 15
Lista de Figuras
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
16
01_SisOps.qxp 11/2/2009 11:35 Page 17
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
17
01_SisOps.qxp 11/2/2009 11:35 Page 18
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
18
01_SisOps.qxp 11/2/2009 11:35 Page 19
Lista de Tabelas
19
01_SisOps.qxp 11/2/2009 11:35 Page 20
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
20
01_SisOps.qxp 11/2/2009 11:35 Page 21
Lista de Programas
Programa 5.1: Exemplo de uso dos comandos fork e join.
Programa 5.2: Exemplo do uso dos comandos PARBEGIN e PAREND.
Programa 5.3: Exemplo de concorrência usando threads.
Programa 5.4: Exemplo básico de região crítica.
Programa 5.5: Exemplo de uso de interrupções e região crítica.
Programa 5.6: Exemplo de uso do comando test and set.
Programa 5.7: Exemplo de exclusão mútua - Algoritmo 1.
Programa 5.8: Exemplo de exclusão mútua - Algoritmo 2.
Programa 5.9: Exemplo de exclusão mútua - Algoritmo 3.
Programa 5.10: Exemplo de exclusão mútua - Algoritmo 4.
Programa 5.11: Exemplo de exclusão mútua - Algoritmo de Peterson.
Programa 5.12: Exemplo de produtor/consumidor.
Programa 5.13: Exemplo de semáforo - Instruções DOWN e UP.
Programa 5.14: Exemplo de semáforo - Instruções V(sem) e P(sem).
Programa 5.15: Exemplo de concorrência usando threads e primitivas P(sem)
e V(sem).
Programa 5.16: Exemplo básico de exclusão mútua usando monitores.
Programa 5.17: Exemplo usando monitores.
Programa 5.18: Exemplo de monitores condicionais.
21
01_SisOps.qxp 11/2/2009 11:35 Page 22
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
22
01_SisOps.qxp 11/2/2009 11:35 Page 23
CAPÍTULO 1
Visão Geral
1.1 Introdução
23
01_SisOps.qxp 11/2/2009 11:35 Page 24
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
25
01_SisOps.qxp 11/2/2009 11:35 Page 26
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
26
01_SisOps.qxp 11/2/2009 11:35 Page 27
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
28
01_SisOps.qxp 11/2/2009 11:35 Page 29
CAPÍTULO 2
Processos
29
01_SisOps.qxp 11/2/2009 11:35 Page 30
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
30
01_SisOps.qxp 11/2/2009 11:35 Page 31
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Figura 2.1: Alternância de ciclos de CPU e E/S na execução das instruções de um processo.
Fonte: [Silberschatz, 2004]
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
32
01_SisOps.qxp 11/2/2009 11:35 Page 33
CAPÍTULO 3
Threads
3.1 Introdução
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
34
01_SisOps.qxp 11/2/2009 11:35 Page 35
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
35
01_SisOps.qxp 11/2/2009 11:35 Page 36
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
36
01_SisOps.qxp 11/2/2009 11:35 Page 37
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
37
01_SisOps.qxp 11/2/2009 11:35 Page 38
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
38
01_SisOps.qxp 11/2/2009 11:35 Page 39
CAPÍTULO 4
Escalonamento
de Processos
4.1 Introdução
39
01_SisOps.qxp 11/2/2009 11:35 Page 40
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
40
01_SisOps.qxp 11/2/2009 11:35 Page 41
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
42
01_SisOps.qxp 11/2/2009 11:35 Page 43
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
43
01_SisOps.qxp 11/2/2009 11:35 Page 44
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
44
01_SisOps.qxp 11/2/2009 11:35 Page 45
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
45
01_SisOps.qxp 11/2/2009 11:35 Page 46
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
46
01_SisOps.qxp 11/2/2009 11:35 Page 47
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
47
01_SisOps.qxp 11/2/2009 11:35 Page 48
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
48
01_SisOps.qxp 11/2/2009 11:35 Page 49
CAPÍTULO 5
Comunicação e
Sincronização de
Processos
5.1 Introdução
49
01_SisOps.qxp 11/2/2009 11:35 Page 50
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
50
01_SisOps.qxp 11/2/2009 11:35 Page 51
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
51
01_SisOps.qxp 11/2/2009 11:35 Page 52
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
PROGRAM A; Program B;
FORK B' .
JOIN B' .
.
End
END.
52
01_SisOps.qxp 11/2/2009 11:35 Page 53
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
53
01_SisOps.qxp 11/2/2009 11:35 Page 54
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
PROGRAM Calculo
VAR X, Temp1, Temp2, Temp3 : REAL; BEGIN
PARBEGIN
Temp1 :; SQRT (1024);
Temp2 :; 35.4 * 0.23;
Temp3 :; 302 / 7;
PAREND;
X :; Temp1 + Temp2 - Temp3;
WRITELN ('x; " X);
END.
54
01_SisOps.qxp 11/2/2009 11:35 Page 55
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
#include <pthread.h>
#include <stdio.h> pthread_t tid1,tid2;
long conta=8;
void * t1()
{
long i ;
for (i=0; i<500000; i++) {
conta = conta + 5 ;}
printf("Encerrei t1\n");
}
void * t2()
{
long i ;
for (i=0; i<200000; i++) {
conta = conta + 2; }
printf("Encerrei a t2\n");
}
int main()
{
pthread_create(&tid1, NULL, t1, NULL);
pthread_create(&tid2, NULL, t2, NULL);
pthread_join(tid1,NULL);
pthread_join(tid2,NULL);
printf("O valor da variavel conta ~: %d\n", conta);
}
55
01_SisOps.qxp 11/2/2009 11:35 Page 56
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
57
01_SisOps.qxp 11/2/2009 11:35 Page 58
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
BEGIN
*
*
*
Entra_Regiao_Critica; (* Protocolo de Entrada *)
Regiao_Critica;
58
01_SisOps.qxp 11/2/2009 11:35 Page 59
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
59
01_SisOps.qxp 11/2/2009 11:35 Page 60
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Desabilitar as interrupções:
BEGIN
*
*
Desabilita_Interrupcoes;
Regiao Critica;
Habilita_Interrupcoes;
*
*
END
60
01_SisOps.qxp 11/2/2009 11:35 Page 61
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Instrução test-and-set:
61
01_SisOps.qxp 11/2/2009 11:35 Page 62
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
PROCEDURE Processo_A;
VAR Pode_A : BOOLEAN;
BEGIN
REPEAT
Pode_A := true;
WHILE (Pode AI DO
Test and Set (Pode A, Bloqueio);
Regiao Critica A;
Bloqueio := false
UNTIL false;
END;
PROCEDURE processo_B;
VAR Pode_B : BOOLEAN;
BEGIN
REPEAT
Pode_B := true;
WHILE (Pode B) DO
Test_and_Set (pode_B, Bloqueio);
Regiao Critica B;
BloqueIo := false;
UNTIL false;
END;
BEGIN
Bloqueio := false;
PARBEGIN
Processo_A;
processo_B;
PAREND;
END.
Programa 5.6: Exemplo de uso do comando test and set.
62
01_SisOps.qxp 11/2/2009 11:35 Page 63
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
63
01_SisOps.qxp 11/2/2009 11:35 Page 64
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
5.4.2.1 Algoritmo 1
PROGRAM Algoritmo_l;
VAR Vez : CHAR;
PROCEDURE Processo_A;
BEGIN
REPEAT
WHILE (Vez = 'B') DO (* Nao faz nada *);
Regiao_Critica_A;
Vez := 'B';
processamento_Ai
UNTIL false;
END;
64
01_SisOps.qxp 11/2/2009 11:35 Page 65
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
PROCEDURE processo B;
BEGIN - -
REPEAT
WHILE (Vez = 'A') DO (* Nao faz nada *);
Regiao_Critica_B;
Vez :: 'A';
processamento_B;
UNTIL false; END;
BEGIN
Vez := ‘A’;
PARBEGIN
processo_A;
processo_B;
PAREND;
END.
65
01_SisOps.qxp 11/2/2009 11:35 Page 66
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
5.4.2.2 Algoritmo 2
PROGRAM Algoritmo_2;
VAR CA, CB: BOOLEAN;
PROCEDURE Processo_A;
BEGIN
REPEAT
WHILE (CB) DO (* Nao faz nada *);
CA := true;
Regiao_Critica_A;
CA : = false;
processamento_A;
UNTIL false;
END;
66
01_SisOps.qxp 11/2/2009 11:35 Page 67
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
67
01_SisOps.qxp 11/2/2009 11:35 Page 68
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
5.4.2.3 Algoritmo 3
PROGRAM Algoritmo_3;
VAR CA, CB : BOOLEAN;
PROCEDURE processo_A;
BEGIN
REPEAT
CA : = true:
WHILE (CB) DO (* Nao faz nada *);
Regiao_Critica_A;
CA : = false;
processamento_A;
UNTIL false;
END;
PROCEDURE processo_B;
BEGIN
REPEAT
CB : = true:
WHILE (CA) DO (* Nao faz nada *);
Regiao_Critica_B;
CB := false;
processamento_B;
UNTIL false;
END;
68
01_SisOps.qxp 11/2/2009 11:35 Page 69
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
5.4.2.4. Algoritmo 4
69
01_SisOps.qxp 11/2/2009 11:35 Page 70
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
PROGRAM Algoritmo_4;
VAR CA,CB : BOOLEAN;
PROCEDURE Processo_A;
BEGIN
REPEAT
CA := true;
WHILE (CB) DO
BEGIN
CA : = false;
{ pequeno intervalo de tempo aleatorio } CA := true
END;
Regiao_Critica_A:
CA :=false;
UNTIL false;
END
PROCEDURE Processo_B;
BEGIN
REPEAT
CB := true;
WHILE (CA) DO
BEGIN
CB : = false;
{ pequeno intervalo de tempo aleatorio } CB := true;
END;
Regiao_Critica_B;
CB := false;
UNTIL false;
END;
BEGIN
CA : = false;
CB : = false;
PARBEGIN
processo_A;
processo_B;
PAREND;
END.
70
01_SisOps.qxp 11/2/2009 11:35 Page 71
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
PROGRAM Algoritmo_peterson;
VAR CA,CB: BOOLEAN;
Vez : CHAR;
PROCEDURE Processo_A;
BEGIN
REPEAT
CA : = true:
Vez := 'B'i
WHILE (CB and Vez = `B`) DO (* Não faz nada *);
Regiao_Critica_A;
CA := false;
processamento_A;
UNTIL false;
END;
PROCEDURE Processo_B;
BEGIN
REPEAT
CB : = true;
Vez := 'A'i
WHILE (CA and Vez = ‘A’) DO (* Não faz nada *);
Regiao_Critica_B;
CB : = false:
processamento_B:
UNTIL false;
END;
BEGIN
CA := false;
CB := false;
PARBEGIN
processo_A;
processo_B;
PAREND;
END.
71
01_SisOps.qxp 11/2/2009 11:35 Page 72
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
PROGRAM Produtor_Consumidor_l;
CONST TamBuf = (* Tamanho gualguer *);
TYPE Tipo_Dado = (* Tipo gualguer *);
VAR Buffer: ARRAY [l .. TamBufJ OF Tipo_Dado;
Dado_l :Tipo_Dado;
Dado_2 : Tipo_Dado;
Cont : O .. TamBuf;
PROCEDURE Produtor;
BEGIN
REPEAT
Produz_Dado (Dado_l);
WHILE (Cont = TamBuf) DO (* Nao faz nada *);
Grava_Buffer (Dado_l, Buffer);
Cont := Cont + 1;
UNTIL false;
END;
PROCEDURE Consumidor;
BEGIN
REPEAT
WHILE (Cont = 0) DO (* Nao faz nada *);
Le_Buffer (Dado_2, Buffer);
Consome_Dado (Dado_2);
Cont := Cont - 1;
UNTIL false;
END;
BEGIN
Cont := 0;
PARBEGIN
produtor;
Consumidor;
PAREND;
END.
73
01_SisOps.qxp 11/2/2009 11:35 Page 74
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
5.7 Semáforos
74
01_SisOps.qxp 11/2/2009 11:35 Page 75
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
PROGRAM Semaforo_l;
VAR s : Semáforo := 1; (* inicializa o semáforo *)
PROCEDURE Processo_A;
BEGIN
REPEAT
DOWN (s);
Regiao_Critica_A;
UP (s);
UNTIL false;
END;
PROCEDURE Processo_B;
BEGIN
REPEAT
DOWN (s);
Regiao_Critica_B;
UP (s);
UNTIL false;
END;
BEGIN
PARBEGIN
processo_A;
processo_B;
PAREND;
END.
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
76
01_SisOps.qxp 11/2/2009 11:35 Page 77
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
77
01_SisOps.qxp 11/2/2009 11:35 Page 78
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
78
01_SisOps.qxp 11/2/2009 11:35 Page 79
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <stdio.h>
#include <unistd.h>
#include "dijkstra.h"
#define KEY 123
int main()
{
int sem;
sem = sem_create(KEY,l)
printf("Um semaforo foi criado com 0 identificador
%d.\n",sem);
if (fork() == 0)
{
printf("\tProcesso filho usa 0 recurso \n");
P (sem) ;
sleep(8) ;
printf("\tProcesso filho libera 0 recurso.\n");
V(sem) ;
sleep (1) ;
else
{
sleep(l) ;
printf("Processo PAl bloqueia ao tentar acessar
recurso.\n");
P(sem) ;
printf("Recurso disponivel para o processo
PAI.\n");
sem_delete(sem) ;
}
exit (0);
}
Programa 5.14: Exemplo de semáforo - Instruções V(sem) e P(sem).
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <unistd.h>
#include "dijkstra.h"
#include <pthread.h>
#include <stdio.h>
#define KEY 1234
80
01_SisOps.qxp 11/2/2009 11:35 Page 81
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
pthread_t tid1.tid2;
long conta=0;
81
01_SisOps.qxp 11/2/2009 11:35 Page 82
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
5.8 Monitores
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
PROCEDURE Região_Critica_1;
BEGIN
…
…
END;
PROCEDURE Regiao_Critica_2;
BEGIN
…
…
END;
BEGIN
(* Codigo de Inicializacao *)
END;
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
PROGRAM Monitor_1;
MONITOR Região_Critica;
VAR X: Integer;
PROCEDURE Soma;
BEGIN
X:= X +1;
END;
PROCEDURE Diminui;
BEGIN
X := X – 1;
END;
BEGIN
X := 0;
END;
BEGIN
PARBEGIN
Regiao_Critica.Soma;
Regiao_Critica.Diminui;
PAREND;
END.
84
01_SisOps.qxp 11/2/2009 11:35 Page 85
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
MONITOR Condicional;
Var Cheio, Vazio: (* Variáveis especiais de condição *);
PROCEDURE Produz;
BEGIN
IF (Cont = TamBuf) THEN WAIT (Cheio);
…
…
IF (Cont = 1) THEN SIGNAL (Vazio);
END;
PROCEDURE Consome;
BEGIN
IF (Cont = 0) THEN WAIT (Vazio);
…
…
IF (Cont = TamBuf - 1) THEN SIGNAL (Cheio);
END;
BEGIN
END;
85
01_SisOps.qxp 11/2/2009 11:35 Page 86
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
86
01_SisOps.qxp 11/2/2009 11:35 Page 87
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
87
01_SisOps.qxp 11/2/2009 11:35 Page 88
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
88
01_SisOps.qxp 11/2/2009 11:35 Page 89
CAPÍTULO 6
Gerenciamento de
Memória Real
89
01_SisOps.qxp 11/2/2009 11:35 Page 90
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
90
01_SisOps.qxp 11/2/2009 11:35 Page 91
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
91
01_SisOps.qxp 11/2/2009 11:35 Page 92
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
92
01_SisOps.qxp 11/2/2009 11:35 Page 93
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
93
01_SisOps.qxp 11/2/2009 11:35 Page 94
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Grau de Multiprogramação
Figura 6.4: Um exemplo do impacto da multiprogramação [Silberschatz, 2001][Sementille, 2006]
95
01_SisOps.qxp 11/2/2009 11:35 Page 96
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Veja que a CPU fica sendo usada por todos os processos, é isso
implica que os dados que precisa devem estar na memória, e é isso
que o gerenciamento de memória deve fazer. Essa é uma das tarefas
mais delicadas e complexas executadas pelo sistema operacional.
97
01_SisOps.qxp 11/2/2009 11:35 Page 98
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
98
01_SisOps.qxp 11/2/2009 11:35 Page 99
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
99
01_SisOps.qxp 11/2/2009 11:35 Page 100
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Troca de Processos
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
A parte (b) mostra uma outra solução, a qual aloca espaço tanto
para o processo A quanto para o processo B. Mas neste caso, se
observa que há áreas dedicadas para certas atividades do processo.
Por exemplo, o processo A possui um espaço dedicado para atividades
do próprio programa (A-programa), outro espaço para dado (A-data) e
101
01_SisOps.qxp 11/2/2009 11:35 Page 102
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
102
01_SisOps.qxp 11/2/2009 11:35 Page 103
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
103
01_SisOps.qxp 11/2/2009 11:35 Page 104
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
104
01_SisOps.qxp 11/2/2009 11:35 Page 105
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Figura 6.10: Combinações para uso de memória antes e depois de finalizar processos [Deitel,
2005][Sementille, 2006]
105
01_SisOps.qxp 11/2/2009 11:35 Page 106
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Existem três métodos que podem ser usados para selecionar uma
região para um processo. Para isso é necessário que existam
algoritmos que permitam fazer essa alocação. Os algoritmos mais
conhecidos e usados são:
Melhor escolha (Best fit): colocar o processo no bloco com o
mínimo resto de memória;
Pior escolha (worst fit): usar o bloco com o maior resto de
memória;
Primeira escolha (First fit): ir sequencialmente através dos
blocos, e tomar o primeiro bloco que seja grande e suficiente para
alocar espaço para esse processo.
106
01_SisOps.qxp 11/2/2009 11:35 Page 107
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
107
01_SisOps.qxp 11/2/2009 11:35 Page 108
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
108
01_SisOps.qxp 11/2/2009 11:35 Page 109
CAPÍTULO 7
Gerenciamento de
Memória Virtual
109
01_SisOps.qxp 11/2/2009 11:35 Page 110
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Figura 7.1: Utilização de Overlays (zonas de sobreposição) nos Programas [Sementille, 2008]
110
01_SisOps.qxp 11/2/2009 11:35 Page 111
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
111
01_SisOps.qxp 11/2/2009 11:35 Page 112
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
112
01_SisOps.qxp 11/2/2009 11:35 Page 113
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
113
01_SisOps.qxp 11/2/2009 11:35 Page 114
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Características da Implementação
114
01_SisOps.qxp 11/2/2009 11:35 Page 115
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
115
01_SisOps.qxp 11/2/2009 11:35 Page 116
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Figura 7.6: Exemplo de Tabelas de Páginas para o exemplo da figura 7.5 [Sementille, 2006]
116
01_SisOps.qxp 11/2/2009 11:35 Page 117
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
117
01_SisOps.qxp 11/2/2009 11:35 Page 118
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
119
01_SisOps.qxp 11/2/2009 11:35 Page 120
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
120
01_SisOps.qxp 11/2/2009 11:35 Page 121
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
121
01_SisOps.qxp 11/2/2009 11:35 Page 122
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Figura 7.12: Comparação de uma tabela de páginas tradicional com uma tabela
de páginas invertidas
122
01_SisOps.qxp 11/2/2009 11:35 Page 123
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
123
01_SisOps.qxp 11/2/2009 11:35 Page 124
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
124
01_SisOps.qxp 11/2/2009 11:35 Page 125
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
126
01_SisOps.qxp 11/2/2009 11:35 Page 127
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
A primeira opção que existe é pensar que essa escolha seja feita
de forma aleatória. Isso traz o primeiro algoritmo, conhecido como
algoritmo aleatório ou substituição randômica (random algorithm).
Esta escolha não é muito satisfatória. Portanto, existem alguns
sistemas que tentam fazer predição de quais são as páginas menos
úteis e essas são alvo para serem substituídas.
127
01_SisOps.qxp 11/2/2009 11:35 Page 128
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Algoritmo LRU
128
01_SisOps.qxp 11/2/2009 11:35 Page 129
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
130
01_SisOps.qxp 11/2/2009 11:35 Page 131
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Funcionamento do CACHE
131
01_SisOps.qxp 11/2/2009 11:35 Page 132
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
7.7 SEGMENTAÇÃO
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
133
01_SisOps.qxp 11/2/2009 11:35 Page 134
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
134
01_SisOps.qxp 11/2/2009 11:35 Page 135
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
135
01_SisOps.qxp 11/2/2009 11:35 Page 136
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
136
01_SisOps.qxp 11/2/2009 11:35 Page 137
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Para isso, tem-se que redefinir o que parece ser o espaço virtual
de um processo:
137
01_SisOps.qxp 11/2/2009 11:35 Page 138
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
139
01_SisOps.qxp 11/2/2009 11:35 Page 140
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
141
01_SisOps.qxp 11/2/2009 11:35 Page 142
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
143
01_SisOps.qxp 11/2/2009 11:35 Page 144
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
144
01_SisOps.qxp 11/2/2009 11:36 Page 145
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
145
01_SisOps.qxp 11/2/2009 11:36 Page 146
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
146
01_SisOps.qxp 11/2/2009 11:36 Page 147
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
147
01_SisOps.qxp 11/2/2009 11:36 Page 148
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
148
01_SisOps.qxp 11/2/2009 11:36 Page 149
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
150
01_SisOps.qxp 11/2/2009 11:36 Page 151
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
O Linux reserva para seu próprio uso interno uma região do espaço
de endereçamento virtual de cada processo constante e dependente
da arquitetura. O núcleo do kernel, bem como todas as páginas
alocadas pelo alocador de páginas normal, reside nessa região.
151
01_SisOps.qxp 11/2/2009 11:36 Page 152
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
153
01_SisOps.qxp 11/2/2009 11:36 Page 154
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
154
01_SisOps.qxp 11/2/2009 11:36 Page 155
CAPÍTULO 8
Entrada e Saída
155
01_SisOps.qxp 11/2/2009 11:36 Page 156
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
156
01_SisOps.qxp 11/2/2009 11:36 Page 157
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Conforme Oliveira, R., et. al. (2004), para atenuar este problema,
utiliza-se um método denominado de Polling, inserindo operações de
cálculos entre cada verificação ao registrador de estado. Com isso
reduziremos os gastos de tempo do processador, mas em
contrapartida estaremos causando outro problema, que seria o fato de
determinar o tempo para realização destas verificações por parte do
processador. Neste caso porém, teríamos duas linhas de ação:
1ª linha de ação
Quando este tempo for muito alto, consequentemente haverá
certo gasto de tempo principalmente se o dispositivo de E/S for muito
lento;
2ª linha de ação
Quando este tempo for baixo, poderemos despender um tempo
desnecessário esperando uma resposta por parte do dispositivo de E/S
e com isso poderá ocorrer perdas de informações por alguns
dispositivos que utilizam buffers com limitação de armazenamento de
dados, que por um determinado espaço de tempo, deixará de ser lido,
ocorrendo uma sobreposição de informações e com isso perderíamos
os dados anteriormente armazenados. Esta ocorrência poderia ser
resolvida se os próprios dispositivos fossem capazes de encaminhar ao
processador uma mensagem avisando sobre a disponibilidade dos
dados a serem utilizados em suas operações.
158
01_SisOps.qxp 11/2/2009 11:36 Page 159
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
159
01_SisOps.qxp 11/2/2009 11:36 Page 160
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
160
01_SisOps.qxp 11/2/2009 11:36 Page 161
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
161
01_SisOps.qxp 11/2/2009 11:36 Page 162
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
162
01_SisOps.qxp 11/2/2009 11:36 Page 163
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
163
01_SisOps.qxp 11/2/2009 11:36 Page 164
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
164
01_SisOps.qxp 11/2/2009 11:36 Page 165
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
8.2 DEADLOCK
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
166
01_SisOps.qxp 11/2/2009 11:36 Page 167
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Figura 8.7: Processos com Deadlock. Fonte. Sistemas Operacionais Projetos e Implementação,
Tanenbaum (2002)
a. Exclusão Mútua:
É proibido o acesso de dois processos ao mesmo recurso de forma
mutuamente exclusiva, bem como, nem sempre poderá ser utilizada a
técnica de spool.
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
c. Não preempção:
Nesta situação não há o que se fazer, pois poderia gerar vários
conflitos por conta de resgatar um recurso que está sendo utilizado
por um processo e disponibilizá-lo para um outro.
d. Espera circular:
Para esta prevenção é necessário apenas impossibilitar que se
fechem ciclos no grafo de recursos. Como seria isto? Fazendo com que
cada processo só possa ter um recurso de cada vez e, caso deseje um
novo, deverá liberar o recurso que esta sendo utilizado para um outro
processo que esteja precisando. Podemos ainda nomear os recursos
em uma ordem padrão a ser seguida ao qual os processos ao
realizarem suas requisições deverão obedecer a esta ordem, o mais
difícil talvez, seja implementar esta ordem padrão a ser seguida e que
atenda as condições de acesso.
168
01_SisOps.qxp 11/2/2009 11:36 Page 169
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
169
01_SisOps.qxp 11/2/2009 11:36 Page 170
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
170
01_SisOps.qxp 11/2/2009 11:36 Page 171
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
8.3 DISCOS
Cada disco é composto ainda por cilindros que nada mais são do
que o conjunto de trilhas de todas as superfícies que estão
devidamente posicionadas à mesma distância do eixo central,
conforme ilustrado na Figura 8.8. Oliveira, R., et. al. (2004).
171
01_SisOps.qxp 11/2/2009 11:36 Page 172
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
172
01_SisOps.qxp 11/2/2009 11:36 Page 173
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Segundo Oliveira, R., et. al. (2004), para realização desta tarefa
é necessário o posicionamento da cabeça de leitura e escrita no setor
onde se encontram os dados que deverão ser lidos ou escritos. Esse
procedimento do posicionamento do cabeçote demandará certo
tempo, que devererá levar em consideração como o disco está
organizado. Este tempo de acesso é formado por três valores,
conforme exposto abaixo.
a. Tempo de resposta:
É a seleção da trilha (cabeçote) sendo realizada eletronicamente,
perfazendo um tempo zero. Este valor corresponde ao tempo
despendido ao deslocamento dos cabeçotes até o cilindro onde está a
trilha a que será acessada;
b. Tempo latência:
É o tempo despendido pelo cabeçote para se posicionar no início
do setor a ser lido ou escrito. Esse valor também é chamado de
atraso;
c. Tempo de transferência:
É o tempo gasto pela realização da transferência das informações,
sejam, leitura ou escrita, sempre sendo predominante o tempo de
busca. É por este motivo que discos antigos possuem o seu sistema
com cabeçotes fixos, sendo um para cada trilha do disco.
173
01_SisOps.qxp 11/2/2009 11:36 Page 174
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
8.3.2 Entrelaçamento
174
01_SisOps.qxp 11/2/2009 11:36 Page 175
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
176
01_SisOps.qxp 11/2/2009 11:36 Page 177
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
177
01_SisOps.qxp 11/2/2009 11:36 Page 178
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
178
01_SisOps.qxp 11/2/2009 11:36 Page 179
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
179
01_SisOps.qxp 11/2/2009 11:36 Page 180
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
8.4.1.4 RAIDs 2, 3, 4:
8.4.1.5 RAID 6:
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
181
01_SisOps.qxp 11/2/2009 11:36 Page 182
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tabela 8.1:Diretórios
182
01_SisOps.qxp 11/2/2009 11:36 Page 183
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
183
01_SisOps.qxp 11/2/2009 11:36 Page 184
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
184
01_SisOps.qxp 11/2/2009 11:36 Page 185
CAPÍTULO 9
Arquivos
185
01_SisOps.qxp 11/2/2009 11:36 Page 186
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
186
01_SisOps.qxp 11/2/2009 11:36 Page 187
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
187
01_SisOps.qxp 11/2/2009 11:36 Page 188
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
188
01_SisOps.qxp 11/2/2009 11:36 Page 189
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
189
01_SisOps.qxp 11/2/2009 11:36 Page 190
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
190
01_SisOps.qxp 11/2/2009 11:36 Page 191
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
191
01_SisOps.qxp 11/2/2009 11:36 Page 192
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
194
01_SisOps.qxp 11/2/2009 11:36 Page 195
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
196
01_SisOps.qxp 11/2/2009 11:36 Page 197
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
197
01_SisOps.qxp 11/2/2009 11:36 Page 198
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
198
01_SisOps.qxp 11/2/2009 11:36 Page 199
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
199
01_SisOps.qxp 11/2/2009 11:36 Page 200
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
9.6 Diretórios
200
01_SisOps.qxp 11/2/2009 11:36 Page 201
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
201
01_SisOps.qxp 11/2/2009 11:36 Page 202
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
202
01_SisOps.qxp 11/2/2009 11:36 Page 203
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
9.7.1 Funcionamento
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
204
01_SisOps.qxp 11/2/2009 11:36 Page 205
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
205
01_SisOps.qxp 11/2/2009 11:36 Page 206
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
206
01_SisOps.qxp 11/2/2009 11:36 Page 207
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
207
01_SisOps.qxp 11/2/2009 11:36 Page 208
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
sendo que este link aponta para um outro arquivo e que poderá
também ser direcionado até mesmo a um outro tipo de sistema de
arquivo.
Diretório /etc
Diretório /usr
209
01_SisOps.qxp 11/2/2009 11:36 Page 210
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
Diretório /var
Segurança de Arquivos
210
01_SisOps.qxp 11/2/2009 11:36 Page 211
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
- $ ls -l joao
-rw-rw-r-- 1 professor escola 71815 2004-04-02 10:00 joao.
Identificação:
(-) atributo de arquivo;
(d) quando se trata de um diretório;
(l) arquivo é um link simbólico;
(b) dispositivos de bloco.
Permissões:
Letra r significa leitura (copiar, imprimir, visualizar);
Letra w significa escrita (mover, apagar, modificar);
Letra x significa execução (programas, scripts, diretórios);
Símbolo ( - ) o usuário não tem permissão.
E para os diretórios:
Letra r permite que o usuário possa listar o conteúdo;
Letra w permite a criação, apagar e alterar arquivos no diretório;
Letra x permite a realização de buscas no diretório;
Símbolo ( - ) o usuário não tem permissão.
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
212
01_SisOps.qxp 11/2/2009 11:36 Page 213
Bibliografia
213
01_SisOps.qxp 11/2/2009 11:36 Page 214
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
214
01_SisOps.qxp 11/2/2009 11:36 Page 215
Tecnologia em Análise e
Sistemas Operacionais
Desenvolvimento de Sistemas
215