Você está na página 1de 47

Anatomia dos Processos

Eduardo Ferreira dos Santos


Ciência da Computação
Universidade Presbiteriana Mackenzie

26 de agosto de 2021

1 / 47
Sumário

1 Estruturas de dados

2 Estruturas dos processos

3 Multiprogramação

4 Anatomia de um processo na memória

2 / 47
Estruturas de dados

1 Estruturas de dados

2 Estruturas dos processos

3 Multiprogramação

4 Anatomia de um processo na memória

3 / 47
Estruturas de dados

Pilha

Figura 1.1: Representação de uma pilha 1

1 http:
//www.tutorialspoint.com/data_structures_algorithms/stack_algorithm.htm
4 / 47
Estruturas de dados

Utilização

Armazenamento do contexto;
Último valor acessado;
Ordem de execução.
Ex.: Cálculo fatorial

0! = 1 (1)
1! = 1 ∗ 0! (2)
2! = 2 ∗ 1! (3)
3! = 3 ∗ 2! (4)
4! = 4 ∗ 3! (5)
... (6)
n! = n ∗ (n − 1)! (7)

5 / 47
Estruturas de dados

Exemplo: fatorial

Listing 1: Cálculo fatorial recursivo


float f a t ( i n t n) {
int x; ∗/ define uma á varivel local x ∗/
x=n − 1;
5 i f (n == 0) r e t u r n (1) ;
e l s e r e t u r n (n ∗ f a t ( x ) ) ; /∗ ao é invs de passar n −1 , p a s s a −s e x ∗/
}
int main () {
0 i n t i =0;

w h i l e ( i >=0){
p r i n t f ( " E n t r e v a l o r i n t e i r o >=0 o u v a l o r <0 p a r a t e r m i n a r : " );
scanf ( " % d " , &i ) ;
5 i f ( i >=0) p r i n t f ( " F a t o r i a l d e % d = %f\n" , i , fat ( i )) ;
}
r e t u r n 0;
}
Listing 1: Cálculo fatorial recursivo

6 / 47
Estruturas de dados

Heap

Tipo de árvore;
A chave na raiz é maior do que em qualquer um dos lhos;
Ambas subárvores (direita e esquerda) também são heaps;
Utilizado para la de prioridades;
Método de Ordenação eciente: O(nlog (n))

7 / 47
Estruturas de dados

Heap

Figura 1.2: Estrutura de Heap [Algolist, 2016]

8 / 47
Estruturas de dados

Inserção

Figura 1.3: Inserção do elemento -2 [Algolist, 2016]

9 / 47
Estruturas de dados

Propriedades da heap

Figura 1.4: Propriedade da heap quebrada (menor no topo) [Algolist, 2016]

10 / 47
Estruturas de dados

Reordenação

Figura 1.5: Para manter as propriedades, há uma reordenação da heap


[Algolist, 2016]

11 / 47
Estruturas de dados

Propriedade da raiz

Figura 1.6: Propriedade quebrada na raiz [Algolist, 2016]

12 / 47
Estruturas de dados

Nova reordenação

Figura 1.7: Nova reordenação para manter as propriedades [Algolist, 2016]

13 / 47
Estruturas dos processos

1 Estruturas de dados

2 Estruturas dos processos

3 Multiprogramação

4 Anatomia de um processo na memória

14 / 47
Estruturas dos processos

Processos x Tarefas

Processos são programas que estão sendo executados em um espaço virtual


de endereçamento exclusivo.

Em sistemas Unix, processos são estruturas de dados que contém


informações necessárias para a execução do programa, como conteúdo
dos registradores e memória;
Princípio básico: separar a operação de criação de um processo da
operação de execução de um programa;
São separadas por chamadas de função diferentes: fork() e exec();
fork() cria um processo que tem como pai o processo que a chamou;
exec() cria um novo programa como uma sequência de processos, que
tem como pai o contexto de execução, muitas vezes o próprio init.

15 / 47
Estruturas dos processos

Criação de processos

Principais eventos que levam à criação de um processo:


1 Inicalização do sistema;
2 Execução de uma chamada de sistema por outro processo;
3 Solicitação do usuário para criar um novo processo;
4 Início do processamento em lote.

16 / 47
Estruturas dos processos

Fim do processo

Condições que causam o encerramento de um processo:


1 Saída normal (voluntária);
2 Saída de erro (voluntária);
3 Erro fatal (involuntário);
4 Morto por outro processo (involuntário).

17 / 47
Estruturas dos processos

Elementos do processo

Contexto de hardware Conteúdo dos registradores.


Sistemas de tempo compartilhado: dividem o uso do
processador.
Mudança de contexto.
Contexto de software Características em tempo de execução
Identicação: PID e UID
Quotas: memória, E/S, processos lhos e threads
Privilégios
Espaço de endereçamento Espaço de memória utilizada pelo processo

18 / 47
Estruturas dos processos

Dados do processo

Figura 2.1: Alguns dos camposde uma entrada na tabela de processos


[Tanenbaum and Boss, 2012]

19 / 47
Multiprogramação

1 Estruturas de dados

2 Estruturas dos processos

3 Multiprogramação

4 Anatomia de um processo na memória

20 / 47
Multiprogramação

Computadores modernos

Em computadores modernos, algumas características dos processos:


Várias tarefas ao mesmo tempo;
Cada instante um programa;
Cada segundo vários programas;
pseudoparalelismo.

21 / 47
Multiprogramação

Multiprogramação

Figura 3.1: (a) Multiprogramação para quatro programas (b) Modelo conceitual
de quatro processos sequenciais independentes (c) Somente um programa está
ativo a cada momento [Tanenbaum and Machado Filho, 1995]

22 / 47
Multiprogramação

Estados dos processos

Durante o ciclo de vida de um processo ele passa por diferentes estados.


Em sistemas Unix [Guarezi and Silva, 2010] são:
run Está sendo executado no processador;
ready ou executável Dispõe de todos os recursos que precisa e está pronto
para ser executado;
sleep ou dormente Bloqueado à espera de algum recurso, e só pode ser
desbloqueado se receber um sinal de outro processo;
zumbi Caso cada vez mais raro, onde um processo é criado por um
programa, que por sua vez é nalizado antes de receber o
resultado do processo;
parado Recebeu ordem do administrador para interromper a
execução. Será reiniciado se receber um sinal de continuação
(CONT).

23 / 47
Multiprogramação

Estados dos processos (Gráco)

Figura 3.2: Estados dos processos [Chagas, 2016]

24 / 47
Multiprogramação

Concorrência

Paradigma: controlar/restringir o acesso ao recurso em determinado


espaço de tempo;
O controle de acesso aos recursos é realizado através de eventos;
Eventos inesperados pode causar um desvio inesperado no uxo de
execução.
Denição [Chagas, 2016]:
1 O programa perde o uso do processador;
2 O programa retorna para continuar o processamento;
3 O estado do programa deve ser idêntico ao do momento em que foi
interrompido.

O programa continua a execução exatemente na instrução seguinte.

25 / 47
Multiprogramação

Troca de contexto

Figura 3.3: Troca de contexto dos processos [Favacho, 2009]


26 / 47
Multiprogramação

Programação concorrente

Na programação concorrente existe mais de uma tarefa sendo


executada ao mesmo tempo. Ex.: Fatorial
No caso de múltiplas tarefas é necessário haver comunicação entre
elas.
Memória compartilhada As tarefas compartilham área de memória;
Troca de mensagens Sinais trocados entre processos.

27 / 47
Multiprogramação

Programação Síncrona

Concorrência [Chagas, 2016]:


1 O programa perde o uso do processador;
2 O programa retorna para continuar o processamento;
3 O estado do programa deve ser idêntico ao do momento em que foi
interrompido.

O programa continua a execução exatemente na instrução seguinte.


O modelo é dito síncrono porque as saídas do sistema po-
dem ser vistas como sincronizadas com as suas entradas.
[FARINES and MELO, 2000]

28 / 47
Multiprogramação

Modelos Síncronos

Uma das características mais importantes encontrada nos


modelos síncronos é a rejeição do não determinismo.
[FARINES and MELO, 2000, p.105]

Determinismo Para cada estado do programa, existe somente uma


possibilidade para a função de transição (próximo estado);
Não determinismo Podem existir várias escolhas para o próximo estado em
qualquer ponto.

29 / 47
Multiprogramação

Determinismo

Figura 3.4: Autômatos Finitos Determinísticos e Não Determinísticos


[Rezende, 2016]
30 / 47
Multiprogramação

Concorrência

Paradigma: controlar/restringir o acesso ao recurso;


O controle de acesso aos recursos é realizado através de eventos;
Eventos inesperados pode causar um desvio inesperado no uxo de
execução.
Interrupção Realizada por algum evento externo ao programa,
independente da instrução.
Podem ser geradas por eventos assíncronos;
Até várias vezes ao mesmo tempo.
Exceção Erro na instrução de algum programa. Ex.: falha de
segmentação (segfault).
Sempre gerada por um evento síncrono;
Somente um evento de cada vez.

31 / 47
Multiprogramação

Interrupção

Figura 3.5: Tratamento de Interrupção [Chagas, 2016]

32 / 47
Multiprogramação

Exceção

Figura 3.6: Tratamento de Exceção [Chagas, 2016]

33 / 47
Multiprogramação

Grau de Multiprogramação

Medida de utilização de CPU:


Utilização de CPU = 1 − p n
p -> fração do tempo esperando o processador
n -> número de processos

34 / 47
Multiprogramação

Grau de Multiprogramação

Figura 3.7: Utilização de CPU em função do número de procesoss na memória


[Tanenbaum and Boss, 2012]

35 / 47
Anatomia de um processo na memória

1 Estruturas de dados

2 Estruturas dos processos

3 Multiprogramação

4 Anatomia de um processo na memória

36 / 47
Anatomia de um processo na memória

Estados dos processos

Durante o ciclo de vida de um processo ele passa por diferentes estados.


Em sistemas Unix [Guarezi and Silva, 2010] são:
run Está sendo executado no processador;
ready ou executável Dispõe de todos os recursos que precisa e está pronto
para ser executado;
sleep ou dormente Bloqueado à espera de algum recurso, e só pode ser
desbloqueado se receber um sinal de outro processo;
zumbi Caso cada vez mais raro, onde um processo é criado por um
programa, que por sua vez é nalizado antes de receber o
resultado do processo;
parado Recebeu ordem do administrador para interromper a
execução. Será reiniciado se receber um sinal de continuação
(CONT).

37 / 47
Anatomia de um processo na memória

Espaço Virtual de Memória

No modo 32-bit é um bloco xo de espaço;


Paginação;
Mantida pelo Sistema Operacional e consultada pelo processo.

38 / 47
Anatomia de um processo na memória

Espaço Memória Virtual (32 bit)

Figura 4.1: Utilização do endereço virtual de memória [Duarte, 2009]

39 / 47
Anatomia de um processo na memória

Endereçamento

O kernel sobe em um espaço de endereçamento exclusivo;


No Linux, o mesmo espaço é mapeado em todos os processos;
Interrupções e chamadas de sistema (SYSCALL);
Troca de contexto muda o espaço de memória ativo.

40 / 47
Anatomia de um processo na memória

Endereçamento

Figura 4.2: Troca de contexto entre processos [Duarte, 2009]

41 / 47
Anatomia de um processo na memória

Segmentos de memória

Figura 4.3: Organização da memória [Duarte, 2009]


42 / 47
Anatomia de um processo na memória

Espaço de memória virtual (64 bit)

Figura 4.4: Organização da memória em 64 bit 2

2 Fonte: https://commons.wikimedia.org/wiki/File:
Linux_Virtual_Memory_Layout_64bit.svg
43 / 47
Anatomia de um processo na memória

Endereçamento em 64bit

Somente os 48 bits menos signicantes do processador são utilizados


no endereçamento 3 ;
Os bits 48 a 63 devem ser cópias do bit 47;
O bit 47 contém a pilha de execução;
Espaço total endereçável: 256 TB;
Aumento de 64.000 vezes em relação aos processadores de 32 bit.

3 Normalmente utilizadas para armazenamento da tabela de páginas


44 / 47
Anatomia de um processo na memória
Algolist (2016).
Algorithms and data structures.
Disponível em: http:
//www.algolist.net/Data_structures/Binary_heap/Insertion
Acessado em 11/04/2016.
Chagas, F. (2016).
Notas de aula do prof. fernando chagas.
Duarte, G. (2009).
Anatomy of a program in memory.
Disponível em: http://duartes.org/gustavo/blog/post/
anatomy-of-a-program-in-memory/ Acessado em 11/04/2016.
FARINES, J. M. and MELO, R. (2000).
Sistemas de Tempo Real, volume 1.
IME-USP.
Favacho, A. (2009).
Notas de aula da Profa. Aletéia Favacho.
45 / 47
Anatomia de um processo na memória
Guarezi, D. J. and Silva, E. B. (2010).
Processos em windows e unix.
Disponível em:
http://www.inf.ufsc.br/∼magro/PROCESSOS%20EM%20WINDOWS%2
Acessado em 28/01/2011.
Rezende, P. (2016).
Notas de aula do Prof. Pedro Rezende.
Disponível em: http://cic.unb.br/~rezende/tc.html Acessado
em 14/03/2016.
Tanenbaum, A. S. and Boss, H. (2012).
Modern Operating Systems.
Prentice-Hall, 4th edition.
Tanenbaum, A. S. and Machado Filho, N. (1995).
Sistemas operacionais modernos.
Prentice-Hall, 3 edition.

46 / 47
Anatomia de um processo na memória

OBRIGADO!!!
PERGUNTAS???

47 / 47

Você também pode gostar