Sistemas Operacionais Modernos - Processos e Threads Flashcards

1
Q

Qual é a diferença entre um processo e um programa em um sistema operacional?

A

Um programa é um conjunto de instruções armazenado em disco, enquanto um processo é a execução ativa desse programa na memória, com recursos alocados pelo sistema operacional.

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

Quais são as 4 situações em que novos processos são criados em um sistema operacional?

A

Novos processos são criados durante a inicialização do sistema, para executar processos em segundo plano, quando solicitados pelo usuário, e para processamentos em lote.

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

Qual é a principal diferença entre as chamadas de sistema fork no Unix e CreateProcess no Windows?

A

Fork cria um novo processo como uma cópia quase idêntica do processo pai, enquanto CreateProcess permite criar um novo processo a partir de um arquivo executável, com maior controle sobre suas configurações.

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

Quais são as quatro situações em que processos são encerrados em um sistema operacional?

A

Processos são encerrados ao completar sua execução, ao identificar erro (ex.: arquivo não encontrado), ao identificar erro fatal (bug) ou quando são encerrados por outro processo.

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

Quais são os três status que um processo pode ter em um sistema operacional e o que cada um significa?

A

Um processo pode estar pronto (aguardando a vez para ser executado), em execução (sendo processado pela CPU) ou bloqueado (esperando por um evento, como a conclusão de uma operação de E/S).

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

Qual é a fórmula para calcular a utilização da CPU em sistemas multiprogramados?

A

Utilização da CPU = 1 - p^n

‘p’ é a fração de tempo médio que um processo individual passa esperando (%) e
‘n’ é o número de processos no sistema.

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

O que é um vetor de interrupção em um sistema operacional?

A

É uma tabela que contém endereços de memória apontando para o código a ser executado quando uma interrupção específica ocorre no sistema.

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

Qual é a principal diferença entre um processo e uma thread em um sistema operacional?

A

Um processo é uma instância independente de um programa em execução, enquanto uma thread é a menor unidade de execução dentro de um processo, compartilhando os mesmos recursos do processo.

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

Threads do processo pai são duplicadas no processo filho após um fork?

A

Não, apenas a thread que chamou o fork é duplicada no processo filho, porque o fork cria uma cópia do estado do processo apenas para a thread que fez a chamada, evitando replicar o estado de outras threads ativas.

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

Qual a finalidade das chamadas pthread_create, pthread_exit, pthread_join e pthread_yield?

A

pthread_create: Cria uma nova thread;
pthread_exit: Termina a execução de uma thread;
pthread_join: Aguarda o final de thread específica;
pthread_yield: Libera CPU para execução de outras threads.

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

Quais são as vantagens e desvantagens de implementar threads no espaço de usuário?

A

A vantagem é que a troca de contexto é rápida e não requer intervenção do kernel. A desvantagem é que, se uma thread bloqueia, todas as threads do processo podem ser bloqueadas.

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

Quais são as vantagens e desvantagens de implementar threads no núcleo?

A

A vantagem é que cada thread pode ser agendada de forma independente, aproveitando melhor os núcleos da CPU. A desvantagem é que a troca de contexto é mais lenta, pois envolve o kernel, o que aumenta o uso de recursos do sistema.

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

Quais são os problemas que podem surgir ao transformar um programa monothread em multithread?

A

Podem surgir problemas como condições de corrida, onde duas threads acessam dados compartilhados ao mesmo tempo, e deadlocks, quando duas ou mais threads ficam esperando indefinidamente por recursos umas das outras.

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

O que é uma máquina de estado finito?

A

É um modelo computacional que realiza transições entre estados com base em entradas e regras predefinidas, sendo usada para representar sistemas com comportamento sequencial.

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

O que é o problema C10k?

A

É o desafio de lidar eficientemente com 10.000 conexões simultâneas em servidores, exigindo soluções de alta escalabilidade em sistemas de rede.

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

O que é uma condição de corrida em processos ou threads?

A

É uma situação onde múltiplos processos ou threads acessam e modificam um recurso compartilhado de forma concorrente, causando resultados inesperados ou incorretos. Isso acontece quando o acesso não é devidamente sincronizado.

17
Q

O que é uma região crítica em processos ou threads?

A

É uma parte do código onde o acesso a recursos compartilhados ocorre, exigindo que apenas um processo ou thread o execute por vez para evitar problemas de concorrência.

18
Q

O que é exclusão mútua no escopo de processos e threads?

A

É um mecanismo que garante que apenas um processo ou thread possa acessar uma região crítica de cada vez, prevenindo condições de corrida.

19
Q

Por que não é aconselhável desabilitar interrupções para lidar com processos em regiões críticas?

A

Desabilitar interrupções pode comprometer o sistema, causando a perda de eventos importantes. Além disso, não impede que outros núcleos de CPU acessem regiões compartilhadas de dados.

20
Q

Por que não é aconselhável usar variáveis do tipo trava (lock variables) em regiões críticas de processos?

A

Variáveis do tipo trava podem levar a condições de corrida, já que dois processos podem verificar a trava ao mesmo tempo e ambos acreditarem que têm acesso exclusivo à zona crítica.

21
Q

Por que a alternância explícita não é uma boa solução para regiões críticas?

A

A alternância explícita pode resultar em ineficiência, pois um processo pode ficar esperando indefinidamente, mesmo que a zona crítica esteja disponível, caso o outro processo não precise dela naquele momento.

22
Q

O que é a solução de Peterson para acesso a regiões críticas?

A

A solução de Peterson é um algoritmo que permite que dois processos compartilhem uma zona crítica de forma segura, garantindo exclusão mútua por meio de duas variáveis: uma que indica a intenção de entrar e outra que controla a vez de cada processo.

23
Q

Para que serve a instrução TSL em sistemas operacionais?

A

A TSL (Test-and-Set Lock) testa se um recurso está livre e, se estiver, ela bloqueia o recurso através do hardware (trava o barramento) para que outros processos não o usem ao mesmo tempo, evitando erros na execução.

24
Q

Para que servem as chamadas de sistema sleep e awake em sistemas operacionais?

A

A chamada sleep faz um processo parar de executar temporariamente até que um evento ocorra, enquanto a chamada awake reativa o processo, permitindo que ele continue sua execução após o evento esperado.

25
Q

O que é um semáforo em programação de concorrência?

A

É uma variável especial usada para controlar o acesso de threads a recursos compartilhados, garantindo que apenas uma thread acesse uma região crítica de cada vez.

26
Q

Como o valor de um semáforo afeta o comportamento das threads em relação à região crítica?

A

O valor do semáforo indica quantas threads podem acessar a região crítica; se o valor for maior que zero, uma thread pode acessar e o valor é decrementado. Se for zero, a thread é bloqueada até que outra libere o semáforo.

27
Q

O que é um mutex em threads e como ele funciona?

A

Um mutex (mutual exclusion) é uma estrutura de sincronização usada para controlar o acesso a recursos compartilhados entre threads em espaço de usuário. Ele funciona bloqueando o acesso a uma seção crítica do código, permitindo que apenas uma thread execute aquela parte de cada vez.

28
Q

O que é um futex em threads e como ele funciona?

A

Um futex (fast userspace mutex) é uma primitiva de sincronização que permite implementar mutexes de maneira mais eficiente, combinando espaço de usuário e kernel. Ele funciona no espaço de usuário sem precisar de chamadas ao kernel, exceto quando várias threads tentam acessar o mesmo recurso simultaneamente, aí o futex faz uma chamada ao kernel para gerenciar a espera e o desbloqueio.

29
Q

Por que mutexes e variáveis de condição são usados em conjunto no gerenciamento de threads?

A

Mutexes garantem exclusão mútua ao acessar recursos compartilhados, evitando condições de corrida. Variáveis de condição permitem que threads esperem por eventos específicos de forma eficiente, liberando o mutex enquanto aguardam. Juntos, eles sincronizam o acesso e a comunicação entre threads de maneira segura e organizada.

30
Q

O que são monitores no contexto de threads em sistemas operacionais?

A

Monitores são estruturas de sincronização que permitem o acesso controlado de threads a recursos compartilhados. Eles encapsulam variáveis compartilhadas, operações e mecanismos de sincronização, como locks e condition variables. Assim, garantem que apenas uma thread execute uma operação crítica de cada vez.

31
Q

Qual a diferença entre monitores e semáforos em sistemas operacionais?

A

Monitores são abstrações de alto nível que combinam sincronização e operações em um único módulo, enquanto semáforos são primitivas mais simples que apenas controlam o acesso por meio de contadores. Monitores oferecem segurança estrutural com bloqueios automáticos, enquanto semáforos exigem gerenciamento manual pelo programador. Isso torna os monitores menos propensos a erros como deadlocks.

32
Q

O que é o mecanismo de troca de mensagens em sistemas operacionais?

A

É um método de comunicação entre processos, onde mensagens são enviadas e recebidas para trocar informações de forma sincronizada ou assíncrona.

33
Q

O que é uma barreira em sincronização de processos?

A

É um ponto de sincronização onde múltiplos processos ou threads devem esperar até que todos alcancem o mesmo estágio de execução antes de prosseguir.