Buscar

Exercicio 02 SO

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Curso: Sistemas de Informação
Disciplina: Sistemas Operacionais
Professor: Leonardo Araújo 
Turma: 3º período
Aluno: João Átila Melo
Matricula: 10006195
 
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 thrads de execução pode 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 um deles. 
Em execução, pronto e bloqueado. 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 bloqueado (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 é alocada 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 ser 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 existem várias tarefas. Essas tarefas geralmente precisam estar em comunicação. Explique de 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 dependenteda 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 de 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 para indicar se a seção crítica desejada está livre ou ocupada.
c. Chaveamento 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érie deficiência de consumirem tempo do 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 Ready; 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 threads. Um algoritmo de exclusão mútua serve para 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_t lock; pthread_mutex_init(&lock, NULL); pthread_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 procedure 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 que uma mensagem 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. 
Não, 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 mantem os recursos sempre ocupados”. 
O escalonador sempre mantem 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: 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, quer seja em decorrência da política de escalonamento adotada e aplicada por parte do escalonador de processos ou simplesmente por força do término da execução do processo.
Os não preemptivos:  Cabe 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.
38 - Qualquer algoritmo de escalonamento terá o mesmo desempenho em qualquer tipo de sistema que ele for implementado? Explique. 
Não, pois há a variação de sistema para sistema.
39 - Quais as principais características e objetivos pretendidos dos algoritmos de escalonamento que rodam sob os seguintes tipos de sistemas: 	
a. Sistemas em lote : Os sistemas batch ou sistemas em lote foram os primeiros sistemas multiprogramáveis a serem implementados (primeira fase da computação), caracterizando-se por programas armazenados em disco ou fita, que uma vez iniciados, exigem pouca ou nenhuma interação do usuário, processando de forma sequencial e contínua até o fim do serviço (job), quando então é devolvido o resultado final do processamento. O tempo de execução da tarefa é conhecido como turnaround.
b. Sistemas interativos:
c. Sistemas de tempo real: São sistemas no qualo tempo tem uma função essencial. Em geral, um ou mais dispositivos físicos externos ou computador geram estímulos, e o computador deve reagir apropriadamente a eles dentro de um dado intervalo de tempo.
d. Todos os sistemas (características em comum): 
40 - Explique a afirmação “Maior vazão não significa necessariamente maior tempo de retorno”. 
41 - Cite alguns critérios usados para o escalonamento de processos. 
a taxa de utilização de CPU, que é a fração de tempo durante a qual ela está sendo ocupada; throughput que são números de processos terminados por unidade de tempo; turnaround que é o tempo transcorrido desde o momento em que o software entra e o instante em que termina sua execução; tempo de resposta: intervalo entre a chegada ao sistema e início de sua execução; tempo de espera: soma dos períodos em que o processo estava no seu estado pronto.
42 - Explique o funcionamento do algoritmo de escalonamento First Come First Serverd – FCFS. 
A forma de escalonamento mais elementar consiste em simplesmente atender as tarefas em sequência, à medida em que elas se tornam prontas (ou seja, conforme sua ordem de chegada na fila de tarefas prontas). Esse algoritmo é conhecido como FCFS – First Come - First Served – e tem como principal vantagem sua simplicidade.
43 - Qual a diferença dos algoritmos de escalonamento Shortest Job First – SJF e Shortest Remaining Time Next – SRTN? Explique. 
O Shortest Job First: Escalona primeiramente os processos mais curtos primeiros. 
O Shortest remaining time next: Escalona para ser o próximo o que tiver menos tempo restante.
44 - Explique como funciona o algoritmo de escalonamento round-robin. 
Round-Robin é um dos mais antigos e simples algoritmos de escalonamento. É largamento usado, e foi projetado especialmente para sistemas time-sharing.A idéia do algoritmo é a seguinte. Uma pequena unidade de tempo, denominada timeslice ou quantum, é definida. Todos os processos são armazenados em uma fila circular. O escalonador da CPU percorre a fila, alocando a CPU para cada processo durante um quantum. Mais precisamente, o escalonador retira o primeiro processo da fila e procede à sua execução. Se o processo não termina após um quantum, ocorre uma preempção, e o processo é inserido no fim da fila. Se o processo termina antes de um quantum, a CPU é liberada para a execução de novos processos. Em ambos os casos, após a liberação da CPU, um novo processo é escolhido na fila. Novos processos são inseridos no fim da fila.
45 - Existe um algoritmo de escalonamento normalmente implementado em sistemas interativos chamado “escalonamento por prioridade”. Explique como ele funciona. 
No caso do SJF, usou-se o critério “duração” para priorizar os processos. • Versão mais geral: – Decide-se uma prioridade por processo; – Processos com mesma prioridade podem ser desempatados através do FIFO (por exemplo). • Prioridades podem ser atribuídas por ordem crescente (0 é a mais baixa) ou decrescente (0 é a mais alta).
46 - Como as prioridades são definidas por um algoritmo de escalonamento por prioridade? Explique. 
A prioridade pode ser determinada: – Pelo Sis. Op. (a partir do histórico, de seus I/O,…); – Pelo usuário (a partir da avaliação da importância do processo); – Pelos dois juntos.
47 - Como os algoritmos de escalonamento em sistemas reais devem se comportar? E a sua organização, como deve ser feita? Explique. 
48 - Explique a afirmação “separar mecanismo de escalonamento da política de escalonamento”. 
O projeto de um escalonador adequado deve levar em conta uma série de diferentes necessidades, ou seja, o projeto de uma política de escalonamento deve contemplar os seguintes objetivos:
Ser justo: Todos os processos devem ser tratados igualmente, tendo possibilidades idênticas de uso do processador, devendo ser evitado o adiamento indefinido.
Maximizar a produtividade (throughput): Procurar maximizar o número de tarefas processadas por unidade de tempo.
Ser previsível: Uma tarefa deveria ser sempre executada com aproximadamente o mesmo tempo e custo computacional.
Minimizar o tempo de resposta para usuários interativos.
Maximizar o número possível de usuário interativos.
Minimizar a sobrecarga (overhead): Recursos não devem ser desperdiçados embora algum investimento em termos de recursos para o sistema pode permitir maior eficiência.
Favorecer processos "bem comportados": Processos que tenham comportamento adequado poderiam receber um serviço melhor.
Balancear o uso de recursos: o escalonador deve manter todos os recursos ocupados, ou seja, processos que usam recursos sub- utilizados deveriam ser favorecidos.
Exibir degradação previsível e progressiva em situações de intensa carga de trabalho.
49 - Quais os tipos de escalonamento de threads possíveis? 
50 - Descreva no que consiste a ideia básica envolvida no problema do jantar dos filósofos.

Continue navegando