Baixe o app para aproveitar ainda mais
Prévia do material em texto
1) Defina o que é um Sistema Operacional, descrevendo suas principais funções. Programa ou conjunto de programas que tem o intuito de deixar a utilização mais simples e transparente aos seus usuários. Controlando e organizando o uso dos recursos do computador. Interface básica entre usuário e hardware do computador. 2) Quais os objetivos de um SO? Os objetivos são a conveniência, eficiência e possibilidade de atualização. Além disso a abstração de recursos e a gerencia de recursos. O Sistema Operacional controla o hardware e seu uso entre os vários programas aplicativos para os diversos usuários. 3) O que é Shell? Quais os tipos? SHELL – programa do computador que mostra os serviços de um sistema operacional a um usuário ou outros programas (camada mais externa do SO) São três tipos: • Intepretadores de comandos -cmd • Interfaces gráficas de usuários -Windows • Interface touchscreen - celular 4) Qual o propósito de chamadas de sistema? É a maneira programática com que um programa requisita um serviço do sistema operacional. São funções especiais que gerenciam as rotinas do sistema operacional que ocorrem no modo kernel. 5) O que é multiprogramação? Cite duas razões para se ter multiprogramação? Desenvolvimento de técnicas de gerenciamento de recursos no SO Evitar ociosidade do processador Dividir a memória em várias partes, com uma tarefa diferente para cada partição. Num sistema multiprogramado a CPU está sempre apta a compartilhar o seu tempo entre os vários programas e os diferentes dispositivos periféricos que necessitam da sua atenção. 6) Cite alguns tipos de chamadas de sistema, com exemplos de serviços. Controle e Gestão de processos – Criar e finalizar processos, carregar e executar. Gerenciamento de arquivos – Criar e excluir arquivos, abrir e fechar, ler e escrever. Gestão de memória – Alocar/liberar/modificar áreas da memória. 7) Quais são os modos de operação do SO? Quando ocorre a mudança entre esses modos? Existem 2 modos de operação, o modo usuário e o modo kernel. A alteração ocorre quando alguma aplicação no modo usuário realiza uma chamada de sistema e por meio de uma trap o S.O entra em modo kernel para realizar o processo. Usuário: Acesso limitado ao processador e memória. somente um subconjunto das instruções do CPU e registradores estão disponíveis. instruções como RESET e IN/OUT são proibidas Kernel: Acesso irrestrito ao hardware. todas funcionalidades do CPU estão disponíveis: todos os recursos internos (registradores e portas de E/S) e áreas de memória podem ser acessados. 8) Qual a diferença entre uma interrupção e uma instrução trap? Uma interrupção acontece por mais motivos que uma instrução trap. Podendo ser pela execução de um programa, como uma divisão por 0. Falha de Hardware, como oscilação na energia. E/S gerado por um controlador para sinalizar finalização de uma operação ou para sinalizar condições de erros. Enquanto a instrução trap é uma instrução que causa uma interrupção de forma planejada, mudando o modo do processador e desviando o processamento para uma rotina específica do SO 9) Quais as vantagens e desvantagens da abordagem em camadas no design da estrutura do SO? A abordagem por camadas divide o SO em vários níveis, onde a camada inferior é o hardware e a mais superior é a interface do usuário. Isso traz algumas vantagens na simplicidade da construção e debugging, entretanto definir as funcionalidades de cada camada é difícil e pouco eficiente. 10) Qual a principal vantagem da abordagem microkernel no design da estrutura de um SO? Como os programas de usuário e serviços do sistema interagem em uma arquitetura microkernel? Qual a desvantagem dessa abordagem? A principal vantagem é facilitar a extensão do SO (todos os novos serviços são adicionados no espaço do usuário e portanto, não requer modificação do kernel), além disso a segurança e confiabilidade (serviços executados como processos de usuário e não do kernel; se um serviço falha o resto do SO permanece intocado). Principal função do microkernel: comunicar entre os programas e os vários serviços que também estão rodando no nível de usuário Resultado: Kernel menor Interagem separando o sistema operacional em pequenos e bem definidos módulos em que apenas um (o microkernel) roda em modo kernel e os outros módulos rodam no modo usuário. Retirar do núcleo todo o código de alto nível (abstrações de recursos) deixando no núcleo somente o código de baixo nível necessário para interagir com o hardware e criar abstrações básicas. A desvantagem é o aumento do overhead de funções de sistema. 11) Quais as principais vantagens de utilizar módulos de kernel carregáveis? O Kernel tem um conjunto de componentes principais e vincula serviços adicionais por meio de módulos. Quando a funcionalidade fornecida por um módulo de kernel não é mais necessária, ele pode ser desvinculado, liberando memória e outros recursos. 12) Como se dá o processamento de uma interrupção de HW? Qual a relação entre interrupção e multiprogramação? Mecanismo pelo qual os módulos (E/S, memória) podem interromper sequenciamento normal do processador para sinalizar a ocorrência de um evento. Sem interrupções – “polling”: Verificações periódicas dos dispositivos periféricos Com interrupções - O CPU não precisa esperar a conclusão de cada operação solicitada a um dispositivo A interrupção é o mecanismo que torna possível a implementação da concorrência (possibilidade do processador executar várias tarefas ao mesmo tempo) nos computadores, sendo o fundamento básico dos sistemas multiprogramados. 13) Qual a diferença entre processos CPU-bound e I/O-bound? Quais são os problemas que podem ocorrer caso o sistema tenha muitos processos CPU-bound ou muitos processos I/O-bound? CPU - Maior parte do tempo em estado de execução. I/O-bound (E/S) - Maior parte do tempo em estado de bloqueado Se for muitos processos CPU, o processador irá passar muito tempo processando informações, sem espaço de tempo para a entrada e saída. Ou ao contrário, pode ter muito tempo dedicado a E/S e o processador fica ocioso. 14) Explique por que a tarefa do escalonador de processos é importante para o desempenho da CPU. Num sistema multiprogramado, o CPU alterna entre processos de forma muito rápida (milissegundos). Dessa forma, o tempo destinado e a fila que os processos recebem devem ser as que melhores ficam organizadas para o melhor funcionamento do sistema, para a não ocorrência de deadlock, starvation e também ociosidade. Ele determina o fluxo de execução (trecho de código) que é executado pela CPU. 15) Diferencie “Condição de Corrida” de “Exclusão Mútua”. Corrida: Ocorre quando múltiplos processos ou threads escrevem e lêem dados de forma que o resultado final depende da ordem de execução das instruções dos processos. a = 1 e b = 2 p1 = a = a + b p2 = b = b + a Exclusão: Requerimento de que quando um processo está em uma região crítica (que faz o acesso a um recurso compartilhado), nenhum outro processo pode estar na região crítica solicitando acesso ao recurso ao mesmo tempo. 16) Porque uma troca de contexto entre threads é menos “custosa” do que uma troca de contexto entre processos. Threads paralelas podem compartilhar o espaço de endereçamento e os dados entre elas. Além disso, os threads são menores que os processos e o espaço para elas já está alocado. 17) O que diferencia uma thread de um processo? Processo – pai Thread – filha Um thread é a entidade dentro de um processo que pode ser agendado para execução. Todos os threads de um processo compartilham seu espaço de endereço virtual e recursos do sistema. Thread é uma abstração que permite que uma aplicação execute mais de um trecho de código simultaneamente. Processos permitem ao SO executar maisde uma aplicação ao mesmo tempo. Processos estão associados somente à propriedade de recursos. Threads estão associadas às atividades de execução (ou seja, threads constituem as unidades de escalonamento em sistemas multithreading). 18) Quais as vantagens de utilizar multithreading ao invés de múltiplos processos? Threads paralelas podem compartilhar o espaço de endereçamento e os dados entre elas, comunicação e troca de contexto mais rápida. Importante para algumas aplicações (processos são separados). Threads do tipo CPU-bound e I/O bound permitem realizar as tarefas em paralelo tendo um ganho em performance (aplicação mais rápida). 19) Precisamos garantir que dois ou mais processos não entrem juntos na região crítica. Explique o motivo e defina o conceito de “região crítica”. As vezes um processo tem de acessar uma memória compartilhada ou arquivos, ou realizar outras tarefas críticas que podem levar a corridas. Essa parte do programa onde a memória compartilhada é acessada é chamada de região crítica ou seção crítica. Corridas são ruins e devem ser evitadas. Xô corrida Região Crítica é a área de um código ou recurso compartilhado que depende expressivamente que o acesso à mesma seja realizado de maneira sequencial. 20) Qual a relação entre programa, processo e thread? geral um programa gera um executável que pode ser chamado diretamente ou através de outros executáveis. Programa é uma sequência de instruções codificadas (escritas) a serem executadas pelo computador. Thread é uma sequência de instruções sendo executadas. Propositalmente não falarei de processo aqui. Um programa gera processos, esses processos por sua vez precisam ser divididos para que exista o paralelismo, o que nos leva as threads. 21) O que é PCB (Process Control Block ou Bloco de Controle)? Qual o seu conteúdo típico? É uma estrutura de dados no núcleo do sistema operacional que serve para armazenar a informação necessária para tratar um determinado processo. Como o PCB contém informações críticas do processo ele deve ficar armazenado em uma área da memória protegida do acesso de usuários. Em alguns sistemas operacionais o PCB é alocado no início da pilha do núcleo do processo, já que é uma localização convenientemente protegida. Geralmente as informações contidas em um PCB incluem: Identificador do processo (PID) Registradores da CPU (incluindo o contador de programa) O espaço de endereçamento do processo A prioridade do processo O status do processo Informações sobre o escalonamento de processo Informações de entrada/saída (dispositivos de hardware ligados ao processo, arquivos abertos, etc.) O ponteiro para o próximo PCB 22) O que significa um processo sofrer preempção? Retirar um recurso “à força” de um processo (CPU) 23) O custo (e conseqüentemente o tempo) de criação de uma thread (seja ela uma thread de usuário ou uma thread de kernel) é menor que o custo de criação de um processo. Por quê? Porque os threads são mais fáceis de gerenciar do que processos, pois elas não possuem recursos próprios: o processo é que tem. 24) Um processo é caracterizado por ser um “programa em execução”. Durante sua existência no sistema, um processo pode assumir basicamente cinco estados. Cite quais são esses estados e descreve os eventos que fazem com que um processo mude de um estado para o outro. Execução – Está em execução Pronto – esperando pra executar Bloqueado – espera de algum evento externo para continuar Novo – recém criado e não carregado pelo SO Saída - processo que foi liberado da lista dos processos em execução pelo SO ou porque foi parado ou abortado. Vazio -> Novo = um novo processo é criado para executar um programa Novo -> Pronto = quando o SO está preparado para executar mais um processo adicional; quando o processo é carregado para a memória (alguns sistemas tem limitação do número de processos em execução) Pronto -> Execução = o escalonador do SO seleciona o processo para executar. Execução -> Exit = o processo atual em execução é finalizado pelo SO se o processo indica que finalizou ou se é abortado por algum erro. Execução -> Pronto = o processo atual em execução atingiu o tempo máximo de execução e o escalonador escolhe outro processo. Execução -> Bloqueado = o processo está esperando uma entrada de dados que foi solicitada Bloqueado -> Pronto = quando o evento (ou recurso) que estava sendo esperado acontece e pode voltar para ser executado. 25) Uma boa solução de Exclusão Mútua deve satisfazer quais condições? Explique resumidamente. 1. Dois processos jamais podem estar simultaneamente dentro de suas regiões críticas. 2. Nenhuma suposição pode ser feita a respeito de velocidades ou do número de CPUs. 3. Nenhum processo executando fora de sua região crítica pode bloquear qualquer processo. 4. Nenhum processo deve ser obrigado a esperar eternamente para entrar em sua região crítica 26) Por que desabilitar interrupções pode não ser uma boa ideia para garantir exclusão mútua? Justifique sua resposta. Essa abordagem é pouco atraente, pois não é prudente dar aos processos de usuário o poder de desligar interrupções. E se um deles desligasse uma interrupção e nunca mais a ligasse de volta? Isso poderia ser o fim do sistema. Além disso, se o sistema é um multiprocessador (com duas ou mais CPUs), desabilitar interrupções afeta somente a CPU que executou a instrução disable. As outras continuarão executando e podem acessar a memória compartilhada. É conveniente para o próprio núcleo desabilitar interrupções por algumas instruções enquanto está atualizando variáveis ou especialmente listas. Se uma interrupção acontece enquanto a lista de processos prontos está, por exemplo, no estado inconsistente, condições de corrida podem ocorrer. A conclusão é: desabilitar interrupções é muitas vezes uma técnica útil dentro do próprio sistema operacional, mas não é apropriada como um mecanismo de exclusão mútua geral para processos de usuário. 27) Por que é importante sincronizar processos em um sistema? Sincronizar processos envolve o uso de técnicas que fazem o controle de acesso aos dados compartilhados, de forma a evitar condições de corrida. 28) Explique o conceito de “Deadlock” e “Starvation”. DeadLock: Deadlock, no contexto de sistemas operacionais, refere-se a uma situação em que ocorre um impasse, e dois ou mais processos ficam impedidos de continuar suas execuções - ou seja, ficam bloqueados, esperando uns pelos outros. Para muitas aplicações, um processo precisa de acesso exclusivo a não somente um recurso, mas a vários. Suponha, por exemplo, que dois processos queiram cada um gravar um documento escaneado em um disco Blu- -ray. O processo A solicita permissão para usar o scanner e ela lhe é concedida. O processo B é programado diferentemente e solicita o gravador Blu-ray primeiro e ele também lhe é concedido. Agora A pede pelo gravador Blu-ray, mas a solicitação é suspensa até que B o libere. Infelizmente, em vez de liberar o gravador Blu-ray, B pede pelo scanner. A essa altura ambos os processos estão bloqueados e assim permanecerão para sempre. Essa situação é chamada de impasse (deadlock). Starvation: Em um sistema dinâmico, solicitações para recursos acontecem o tempo todo. Alguma política é necessária para tomar uma decisão sobre quem recebe qual recurso e quando. Essa política, embora aparentemente razoável, pode levar a alguns processos nunca serem servidos, embora não estejam em situação de impasse. Starvation é quando um processo não consegue ser executado, de forma alguma, pois sempre existem processos de prioridade maior para serem executados, de forma que o processo "faminto" nunca consiga tempo de processamento. 29) Explique o conceito de “busy waiting” ou espera ocupada. Qual o seu problema?Enquanto um processo está esperando para entrar na seção crítica, consome tempo de CPU. Ociosidade de CPU. As tarefas que aguardam o acesso a uma seção crítica ficam testando continuamente uma condição, consumindo tempo de processador sem necessidade 30) Quais são os principais problemas relacionados ao acesso concorrente de recursos pelos processos (ou threads)? Gera condições de corrida, processos de exclusão múltipla. Gera injustiça: não há garantia de ordem no acesso à seção crítica; dependendo da duração de quantum e da política de escalonamento, uma tarefa pode entrar e sair da seção crítica várias vezes, antes que outras tarefas consigam acessá-la. Gera dependência: tarefas desejando acessar a seção crítica podem ser impedidas de fazê-lo por tarefas que não têm interesse na seção crítica naquele momento.
Compartilhar