Buscar

Lista SO

Prévia do material em texto

1 - O que são processos? 
 No contexto da informática, é um programa de computador em execução. Em sistemas 
operacionais, processo é um módulo executável único, que corre concorrentemente com outros módulos 
executáveis. Múltiplas threads de execução podem ocorrer dentro de um mesmo processo. 
 
2 - Existe diferença conceitual entre programas e processos? Explique. 
O programa é o que já está definido na pergunta. Em geral um programa gera um executável que pode ser
chamado diretamente ou através de outros executáveis. Um programa é simplesmente uma sequência de 
instruções definida por um programador e os processos são os programas em execução. Todo executável 
chamado diretamente rodará em um processo. Executáveis chamados dentro de um processo podem 
rodar explicitamente em outro processo ou no mesmo processo (quando isso for possível), em geral 
usando uma DLL. O processo é controlado pelo sistema operacional tanto o tempo de processador que ele 
tem à disposição quanto à memória disponível (que pode ir sendo solicitada pelo processo). Além, é claro, 
de permissões de acesso a outros recursos que ficam vinculados ao processo como um todo. 
3 - Haveria a possibilidade de existir a multiprogramação sem os processos? 
Não. 
4 - O que se quer dizer o termo pseudoparalelismo? 
O pseudoparalelismo é a execução de sistemas operativos multiprogramados com um único processador. 
Conceitualmente, cada processo tem o seu próprio CPU virtual, mas na realidade o CPU troca várias vezes 
de um processo para outro. Esse conceito é conhecido como pseudoparalelismo. 
 
5 - Conceitue “tempo de CPU” para processos. 
É o tempo definido pela CPU para efetuar o escalonamento das tarefas. 
 
6 - Como é o “ciclo de vida” de um processo. 
Os processos são criados, executados e terminados. 
 
7 - Um processo pode ser criado diretamente por um programa de usuário? Explique. 
Sim, com a programação, o usuário pode definir quando o programa vai abrir uma nova janela ou dar 
algum aviso, assim forçando o sistema operacional a criar um novo processo para tais ações. 
 
8 - De quais formas os processos podem ser criados? Explique cada um deles. 
Pela inicialização do sistema : Quando o sistema operacional é carregado, vários processos aleatórios do 
próprio sistema são iniciados. 
Por meio de outro processo em execução : Processos que já estão sendo executados podem requisitar a 
criação de novos processos idênticos a ele. 
Por meio do usuário do sistema : Em sistemas interativos, os usuários podem inicializar um programa por 
meio de comandos ou janelas. 
Início de uma tarefa em lote: No sistema em lote, os processos são criados quando o S.O. julgar a 
possibilidade da execução de uma tarefa em lote. 
 
9 - Do ponto de vista dos usuários, quais os tipos de processos que existem? Explique. 
Existem vários tipos de processos, sejam criados pelo sistema operacional, executados por usuários ou 
criados por outros programas em execução. 
10 - Explique o conceito de processos pai e processos filhos. Quais as semelhanças e diferenças entre 
esses processos? 
O processo inicialmente criado (processo pai) invoca a criação de um novo processo (processo filho). 
Normalmente os processos pai e filho não compartilham recursos entre si, mesmo um sendo a cópia fiel na 
memória do outro, são processos independentes.
11 - Quais as principais razões que levam ao término de um processo? Explique cada um. 
Os processos podem ser terminados voluntariamente, por saída normal ou saída por erro. Podem 
também ser terminados involuntariamente, por um erro fatal ou cancelamento de outro processo. Quando 
por saída normal, o processa encerra sua execução dentro do previsto (sucesso) avisando ao sistema que o 
processo referente a aquele programa terminou. No caso de saída por erro, o processo em execução 
identifica algum erro, disparando uma requisição de sistema solicitando o encerramento do mesmo. O 
término por erro fatal acontece quando um processo encontra um erro inesperado, geralmente por um 
erro de programa, o próprio sistema operacional trata de encerrar imediatamente independente do que 
ela esteja fazendo. E quando por cancelamento de outro processo, há a possibilidade de um processo 
solicitar que o outro processo seja encerrado, no caso podemos citar como exemplo o processo pai, que 
gerou um processo filho para execução temporária ou para auxiliar alguma tarefa. 
 
12 - Quais os estados que um processo pode assumir? Explique cada u m deles. 
Em execução, pronto e em espera. Quando em execução, indica que ele realmente está usando a CPU 
naquele momento. Quando em pronto, o processo está apto para ser executado. Quando em 
espera, quando o processo não recebe a entrada, ele entra no estado de “bloqueado”. 
 
13 - O que são threads? 
Digamos que threads são processos dentro de processos. 
 
14 - Como funcionam os threads? 
Os threads criam e terminam os processos rapidamente, processos dentro de processos. 
 
15 - Quais as principais vantagens de se usar os threads? 
O compartilhamento do mesmo espaço de endereçamento, além de criarem processos e destruírem de 
forma 100 vezes mais rápida permitindo que as atividades se sobreponham. 
 
16 - Analisando a afirmação “Todos os sistemas executam threads.”, é possível dizer que é verdade? 
Explique. 
Sim, todos os sistemas atualmente utilizam threads por serem muito mais rápidos, por ter um poder de 
criar e destruir e sobrepor os processos. 
 
17 - É possível e necessário haver proteção de acesso com relação aos threads? Explique.
 
Não, pois é impossível, não é necessário e os threads devem cooperar e não competir. 
 
18 - Como o tempo de CPU é alocado aos threads? 
São alocados paralelamente. 
 
19 - Cite alguns itens da área de endereçamento que são compartilhados por um thread. E quais itens 
não são compartilhados? 
Os compartilhados são: Espaço de endereçamento, variáveis globais, arquivos abertos, processos filhos, 
alarmes pendentes, sinais e manipuladores de sinais, informação de contabilidade. Os não compartilhados 
são: Contador de programa, registradores, pilha, estado. 
 
20 - Como os threads podem ser implementados? Explique cada maneira. 
Modo de usuário – Pode ser implementado em S.O. que não suporte thread; cada processo tem sua 
própria tabela de threads; Chaveamento mais rápido não envolvendo o núcleo. 
Modo núcleo – Tem uma única tabela de threads; Núcleo pode executar uma nova thread quando a thread 
em execução for bloqueada; Alto custo de criação e destruição de threads (reciclagem). 
Implementação híbrida – Thread espera por outro thread. 
 
21 - Sabemos que um thread pode “desistir” voluntariamente da CPU por meio da chamada 
padrão thread yield. Mas o que faria um thread fazer isso? 
A passagem da prioridade para outro thread executar primeiro. 
 
22 - Quais os estados que um thread pode assumir? Explique cada um. 
Unstarted: logo após ser criada ; Running: após ser ativada; Suspended: após método Suspended(); 
Stopped: após método Abort(); 
 
23 - Existe alguma vantagem de se implementar thread no espaço do usuário? Qual é? E qual uma desvantagem? 
Vantagem: Próprio algoritmo de escalonamento. Desvantagem: Falta de página bloqueia o processo 
inteiro. 
 
24 - Sabemos que em um processo, normalmente existemvárias tarefas. Essas tarefas geralmente 
precisam estar em comunicação. Explique de que forma a comunicação pode ocorrer com relação aos 
processos (IPC). 
Através de memória compartilhada ou troca de mensagens. Quando compartilhada, uma região de 
memória é compartilhada entre os processos. Quando por troca de mensagens: Ocorre por meio de troca 
de mensagens entre os processos. 
 
25 - O que são as condições de corrida? Explique com elas ocorrem. 
As condições de corrida ou race conditions é uma falha num sistema ou processo em que o resultado do 
processo é inesperadamente dependente da sequência ou sincronia doutros eventos. 
 
26 - O que são as regiões críticas em uma tarefa de processo? Explique. 
É uma área de código de um algoritmo que acessa um recurso compartilhado que não pode ser acedido 
concorrentemente por mais de uma linha de execução. 
 
27 - Dê um exemplo, em código-fonte (pode ser em qualquer linguagem d e alto nível) de uma situação 
em que haverá a execução de uma região crítica. 
 
Thread 0 Thread 1 
 
Void * t0 () { void * t1(){ 
 Long i ; Long i ; 
 For (i=0; i<1000000; i++) { For (i=0; i<1000000; i++) { 
 a = a + 5 ; a = a + 2; 
 } } 
 Printf(“Encerrei a t0 %d\n”,sizeof(int)); Printf(“Encerrei a t1\n”); 
} 
28 - No que consiste a exclusão mútua entre processos? Isso deve ou não correr? 
Evitar que dois processos ou threads tenham acesso simultaneamente a um recurso compartilhado. Não 
deve ocorrer. 
 
29 - Quais são os principais requisitos para que dois ou mais processos não acessem, ao mesmo tempo, 
as suas regiões críticas? 
 
Implementar a exclusão mútua. 
30 - Buscando atender a exclusão mútua, algumas técnicas foram apresentadas. Explique cada uma das 
técnicas citadas abaixo e explique as suas vantagens e desvantagens quanto aos requisitos desejados 
definidos na questão anterior: 
a. Inibição de interrupções: Uma solução simples para a implementação das primitivas enter e leave 
consiste em impedir as trocas de contexto dentro da seção crítica. 
b. Espera ocupada: Consiste em usar uma variável busy p ara indicar se a seção crítica desejada está livre ou 
ocupada. 
c. Chaveamen to obrigatório: Variável de trava (lock) é utilizada uma variável compartilhada trava com 
valor inicial 0, deve verificar antes se a trava está liberada para um processo entrar em sua região crítica. 
d. Algoritmo de Peterson: Foram desenvolvidos para garantir a exclusão mútua entre duas tarefas, 
garantindo também o critério de espera limitada. 
e. As instruções TLS e XCHG; Testa, verificando se está em lock. 
 
31 - Um dos maiores problemas quanto à comunicação de processos, mesmo com as técnicas 
apresentadas, é a espera ocupada, ou seja, o tempo que um processo ou thread fica ocioso até que a sua 
requisição seja atendida, ocupando tempo de CPU. Para resolver esse e outros problemas, existem 
algumas outras soluções. Explique de forma resumida essas soluções, conforme apresentadas abaixo: 
a. Sleep and wakeup (dormir e acordar): As soluções por espera ocupada possuem a séria deficiência de 
consumirem tempo d o processador. Outro problema é a prioridade invertida, cuja descrição é dada a 
seguir: Dois processos L e H, de baixa e alta prioridade; H está bloqueado e L está na sua região crítica; 
acaba o time slot de L e ele é suspenso; H está em estado Read y; Como H tem maior prioridade de L, então 
H é executado antes; Entretanto, H deseja executar sua região crítica. Como L está na sua região crítica, H 
entra em loop para verificar se pode entrar em região crítica até esgotar o seu time slot de tempo. No 
entanto, tanto H como L estão em estado Ready e sempre H vai ser escolhido para execução; dessa 
maneira, L nunca será executado e deixará sua região crítica e H ficará em loop eterno. 
b. Semáforos: A função básica de um semáforo é armazenar a quantidade de sinais para uso futuro, que 
será utilizado para prover a exclusão mútua. 
c. Implementação de Mutexes: São mecanismos utilizados para implementar exclusão mútua em thread s. 
Um algoritmo de exclusão mútua serve p ara garantir que regiões críticas de código não sejam executadas 
simultaneamente, protegendo estruturas de dados compartilhadas de modificações simultâneas. 
pthread_mutex_tlock; pthread_mutex_init(&lock, N ULL); pthre ad_mutex_lock(&lock); /* Executa região 
crítica */ pthread_mutex_unlock(&lock); 
d. Monitores: é um conjunto de procedimentos, variáveis e estruturas de dados, todas agrupadas em um 
módulo especial. Somente um processo pode estar ativo dentro do monitor em um instante. Monitor 
example integer i condition c p rocedure producer ( ) /* Executa região crítica */ end; procedure consumer ( 
) /* Executa região crítica */ end; end monitor; 
e. Troca de mensagens: receive: utilizada por um processo para receber uma msg . Essa operação é 
bloqueante, o processo que a executa fica bloqueado até o recebimento de uma mensagem. reply: usada 
por um processo para responder a uma mensagem recebida. Pode conter uma informação de resposta ou 
simplesmente pode indicar qu e uma mensag em enviada com uma operação send foi recebida sem erros. A 
operação reply é não bloqueante. 
 
32 - No que consiste o escalonamento de processos? E os algoritmos de escalonamento? 
Consiste em salvar o conteúdo dos registradores e a memória utilizada pelo processo e conceder a outro 
processo o privilégio de executar na CPU, restaurando assim o contexto deste último processo. 
 
33 - A afirmação “o escalonador não está só para escalonar”, está correta? Explique. 
 
Sim, pois o escalonador também serve para organizar e executar processos a processo. 
 
34 - O que são tarefas CPU-bound e I/O-bound. 
CPU-bound: Em engenharia de computação CPU Bound é quando o tempo de processamento depende 
mais do processador do que das entradas e saídas, fazendo assim com que atrapalhe o tempo total de 
processamento, a citar alguns jogos eletrônicos que utilizam recursos gráficos em 3D de alta complexidade . 
I/O-bound: I/O bound é um termo utilizado para designar os sistemas que fazem uso intensivo 
de entrada/saída (I/O). Todos os sistemas operacionais executam processos de entrada e saída, como por 
exemplo algum usuário querendo copiar um arquivo para o Pen Drive. Esses processos são conhecidos 
como I/O bound porque fazem pouco uso da CPU. 
 
35 - Explique a assertiva “Um bom escalonador mantém os recursos sempre ocupados”. 
O escalonador sempre mantém os recursos ocupados por motivo de que o escalonador está sempre 
organizando e executando os processos dentro de seu tempo de execução. 
 
36 - Sob quais condições um processo deve ser escolhido para executar? 
Prioridade e tempo de execução. 
 
37 - Explique o que são algoritmos de escalonamento preemptivos e não preemptivos (ou cooperativos). 
 
Os preemptivos são algoritmos que permitem que um processo seja interrompido durante 
sua execução, quer seja por força de uma interrupção de entrada/saída, querseja em decorrência da 
política de escalonamento adotada e aplicada por parte d o escalonador de processos ou simplesmente por 
força do término da execução do processo. 
Os não preemptivos,vale ressaltar que nos algoritmos não preemptivos, por serem utilizados 
exclusivamente em sistemas monoprocessados, esse fato não ocorre, sendo cada programa executado até 
o fim.

Continue navegando