Baixe o app para aproveitar ainda mais
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.
Compartilhar