Programação concorrente Flashcards

1
Q

O que é bloco descritor de processo?

A
  • É onde o processo é representado no sistema operacional
  • Tem todas as informações do processo
  • Pesado para o sistema operacional
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

O que faz o /proc

A

Salva as informações do Bloco descritor de processo (PCD) em um disco temporário, no diretório daquele processo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Quais informações guardadas em um bloco descritor?

A
  • Prioridade
  • Localização e tamanho na memória principal
    – Identificação de arquivos abertos
    – Informações de contabilidade (tempo de CPU, etc.)
    – Estado do processador (apto, executando, etc.)
    – Contexto de execução
    – Apontadores para encadeamento dos próprios descritores
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

O que é programação concorrente? O que programação sequencial?

A

Programação concorrente é quando possuímos diversos fluxos de controlo, onde diversos processos trocam informações entre si e fazem interações. Já na programação sequencial temos apenas um processo sendo executado em um programa

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Vantagens x Desvantagens da programaçao concorrente

A

Vantagens:

  • É mais rápido que a sequencial
  • Maior desempenho
  • Pode utilizar de paralelismo real

Desvantagens:

  • É mais complexo de programar
  • Pode ocorrer erros por diferença de velocidade
  • Race condition
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

O que é composto por um conjunto de processos
sequenciais que são executados
concorrentemente?

A

Programação concorrente

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Na programação concorrente é muito importante que?

A

Os processos troquem informações entre si, se não teremos apenas instâncias rodando ao mesmo tempo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Cite pelo menos um problema da programação concorrente?

A
  • Programação mais complexa
  • É necessário cuidar com a sincronicidade dos processos, se um processo for mais rápido que outro, isso vira um problema (mesmo com esse problema ela é mais rápida que a sequencial)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

O que é race condition?

A

É quando dois ou mais processos tentam alterar o mesmo conjunto de dados concorrentemente e o resultado será alterado dependendo da ordem que esses dados forem alterados

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Programação concorrente é o mesmo que multithreading, cite um exemplo em que ela se faz útil?

A

Supondo que precisamos criar 100 processos que se relacionam entre si.
Se criamos eles de forma separada, eles vão ser muito pesados pq todos eles terão suas estruturas
Caso a gente crie em multithreading, ele ocupará muito menos recursos pq só será necessário um processo com várias threads.
Além disso, não é necessário alocar e inicializar estrutura de dados no sistema operacional para representar cada processo, só é necessário definir uma pilha e um novo contexto de execução dentro de um processo existente

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Qual é o objetivo de Multhreading/Processos leves/ Programação concorrente?

A

Tentar reduzir o peso computacional, torná-los mais leves

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Onde são guardadas as informações das threads?

A

As threads possuem um bloco descritor de processos, mas é um bloco descritor de threads que é mais leve

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Quais são as formas de implementar threads?

A

Método 1:N, N:N. M:N

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Diferenças entre o modelo 1:N, N:N e M:N

A

1:N (nível de usuário)
É um processo com vários fluxos de execução
Utiliza um CPU virtual, que é um biblioteca. Ele que faz o escalonamento
O sistema operacional não nota a existência de threads
É leve, porém uma chamada de sistema bloqueando pode bloquear todo processo
Ele tb não explora o paralelismo da máquina
O sistema operacional apenas se preocupa em dividir o tempo de processador

N:N (nível de sistema)
É o próprio sistema operacional que faz o escalonamento
Nível de kernel
O sistema operacional enxerga as threads
Explora o paralelismo mas a implementação é mais pesada que a 1:N

M:N
`É a junção dos outros dois

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Por que utilizar threads?

A

Porque você consegue ter mais atividades acontecendo por unidade de tempo (throughput)
Permite o explorar o paralelismo
Criação/Destruição de threads é mais rápido que o de processos
Chaveamento de contexto é mais rápido

No entanto, não significa que vai ganhar muito desempenho

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Por que a comunicação entre threads é mais rápida?

A

Porque as threads possuem memória compartilhada

17
Q

Porque multithreads é chamado de processo leve?

A

Porque todas as thread ficam dentro de um processo, não sendo necessária alocar e inicializar estruturas de dados no sistema operacional
Além disso, a sua criação/destruição e chaveamento de contexto é muito mais rápido