Sistemas Operacionais Modernos - Processos e Threads Flashcards
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.