Sistemas Operacionais Modernos - Processos e Threads Flashcards
(44 cards)
Qual é a diferença entre um processo e um programa em um sistema operacional?
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.
Quais são as 4 situações em que novos processos são criados em um sistema operacional?
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.
Qual é a principal diferença entre as chamadas de sistema fork no Unix e CreateProcess no Windows?
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.
Quais são as quatro situações em que processos são encerrados em um sistema operacional?
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.
Quais são os três status que um processo pode ter em um sistema operacional e o que cada um significa?
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).
Qual é a fórmula para calcular a utilização da CPU em sistemas multiprogramados?
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.
O que é um vetor de interrupção em um sistema operacional?
É 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.
Qual é a principal diferença entre um processo e uma thread em um sistema operacional?
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.
Threads do processo pai são duplicadas no processo filho após um fork?
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.
Qual a finalidade das chamadas pthread_create, pthread_exit, pthread_join e pthread_yield?
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.
Quais são as vantagens e desvantagens de implementar threads no espaço de usuário?
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.
Quais são as vantagens e desvantagens de implementar threads no núcleo?
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.
Quais são os problemas que podem surgir ao transformar um programa monothread em multithread?
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.
O que é uma máquina de estado finito?
É um modelo computacional que realiza transições entre estados com base em entradas e regras predefinidas, sendo usada para representar sistemas com comportamento sequencial.
O que é o problema C10k?
É o desafio de lidar eficientemente com 10.000 conexões simultâneas em servidores, exigindo soluções de alta escalabilidade em sistemas de rede.
O que é uma condição de corrida em processos ou threads?
É 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.
O que é uma região crítica em processos ou threads?
É 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.
O que é exclusão mútua no escopo de processos e threads?
É 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.
Por que não é aconselhável desabilitar interrupções para lidar com processos em regiões críticas?
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.
Por que não é aconselhável usar variáveis do tipo trava (lock variables) em regiões críticas de processos?
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.
Por que a alternância explícita não é uma boa solução para regiões críticas?
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.
O que é a solução de Peterson para acesso a regiões críticas?
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.
Para que serve a instrução TSL em sistemas operacionais?
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.
Para que servem as chamadas de sistema sleep e awake em sistemas operacionais?
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.