Lista de exercícios Sistemas Operacionais Resolvida



Comments



Description

Lista de Resolvidaexercícios Sistemas Operacionais 1. Os serviços e funções oferecidas por um sistema operacional podem ser divididas em duas categorias. Descreva brevemente as duas categorias e discuta como elas se diferem. • Conveniência Execução de programas Operações de I/O Sistema de arquivos Detecção de erros • Eficiência Alocação de recursos Proteção Contabilizações 2. Liste 5 (cinco) serviços, oferecidos por um sistema operacional, que são projetados para tornar o sistema de computação mais conveniente para os usuários. 1. Gerenciamento de processos, criação, fechamento, escalonamento, prioridades e comunicação entre eles. 2. Gerenciamento da memória principal: Alocação, desalocação, proteção e abstração da memória virutal. 3. Gerenciamento dos sistemas de I/O. 4. Conexão em rede: Conexão com os dispositivos e implementação dos protocolos de rede. 5. Sistema de proteção (autorização a usuários). 6. Implementação de sistema de arquivos. 3. O que são System Calls, cite 4 exemplos. Constituem uma interface entre o processo e o sistema operacional. Exemplos: • Inicia ou finaliza processo • Altera atributos dos processos • Espera sinal • • • Abre ou fecha arquivo Lê relógio do sistema Envia ou recebe mensagens 4. Os sistemas operacionais podem ser construídos de diferentes maneiras. Descreva as principais arquiteturas existentes. Do ponto de vista de projeto (arquitetura), segundo Tanenbaum (1999): * Núcleo monolítico ou monobloco: o núcleo consiste em um único processo executando numa memória protegida executando as principais funções. * Micronúcleo ou modelo cliente-servidor: o núcleo consiste de funções mínimas (comunicação e gerenciamento de processos), e outras funções, como sistemas de arquivos e gerenciamento de memória, são executadas no espaço do usuário como serviços; as aplicações (programas) são os clientes. 5. Descreva as ações tomadas pelo kernel para fazer a troca de contexto entre processos. A troca de contexto exige que o estado do processo antigo (a sair do processamento) seja salvo e que o estado do processo novo (a entrar no processamento) seja carregado. O contexto é representado no PCB que inclui o valor dos registradores. 6. Explique o que são os anéis de execucação. Qual a diferença entre código executando no nível 0 e em outros níveis. São extenções dos processadores que possibilitam separar os códigos sendo executados na CPU por camadas. Nos CHIPs Intel Vão de RING0 (Kernel), passado por RING1 (Drivers), RING2 (Drivers) até RING3 (Aplicativos). O Kernel do Linux e do Windows XP usam somente o RING0 e RING3. O código executado em RING0 é o que tem mais privilégios (ou seja mais acesso ao hardware). 7. O que são processos, e quais os estados que podem assumir? São programas em execução na memória. * Novo * Em execução * Em espera * Pronto * Terminado i=fork(). também se o sistema tiver mais de 1 processador elas podem ser executadas 1 em cada processador. if(i==0) { printf("Processo Filho\n"). Na criação de processos utilizando fork() um novo processo é criado com a imagem do processo pai. Quais destas seções podem e/ou devem ser compartilhadas entre threads? Os threads do mesmo processo compartilham com outros sua seção de código. i). O que são threads? Em que diferem de processos convecionais? Um thread é uma unidade básica de execução na CPU. 9. sua seção de dados. arquivos abertos e sinais. um conjunto de registradores e uma pilha. Qual a diferença de threads em nível de usuário e em nível de SO Thread em nível de SO é implementada em uma biblioteca pelo Sistema Operacional por exemplo pthreads no Linux. 8.8.1. Um único processo pode ter diferentes threads. As principais seções de um processo são Pilha. Utilizando-a as threads em nível de SO são como processos independentes para o escalonador. Para o sistema operacional é apenas 1 processo. que criou um filho numero: %i\n". 8. Como o kernel Linux evita a necessidade de realizar esta cópia no momento da chamada do fork? Sim. Dados e Código. int i. Consistem em compartilhar os dados somente referenciando a mesma área nos forks criados pelo . Cada thread compreende um ID. As threads em nível de usuário é uma implementação da aplicação em que voluntariamente um thread se retira do processamento e cede espaço a outra thread. Explique quais são os valores retornados pela função. Mostre um exemplo de uso do fork(). } 10. uma otimização do Kernel do Linux implementa Copy-on-write. } else if(i>0) { printf("Processo Pai.2. Heap. um contador de programa. 13. Quais dos seguintes algoritmos de escalonamento podem levar a "starvation" e porque? a) First-come. Sem este recurso o processo não pode terminar sua tarefa. Ao modificar alguma das páginas uma cópia da página é feita. . 12. Ocorre quando um processo depende de um recurso e seu acesso é negado perpétuamente. Fist-served Pode ocorrer inanição (starvation). O que significa dizer que o Kernel também é preemptivo? Significa dizer que operações de kernel (serviços ou funções) podem ser interrompidas. um processo (ou mais) está em posse de um recurso não compartilhado e esperando por outro recurso em posse de outro processo que também aguarda um recurso. 11. Ocorre quando. Sendo assim todo processo terá um tempo de execução na CPU em algum momento. 15. O que é um deadlock? Mostre um um algoritmo que pode entrar em deadlock. Essa espera pode ser do processo anterior ou outro processo de forma que feche um ciclo. 14. Então o tempo de espera médio de todos os outros processos será muito grande. E conseqüentemente estes processos não sofrem preempção.mesmo processo. O que é starvation? Mostre um algoritmo que poderia levar a essa condição. se o primeiro processo (que chega primeiro) da fila for longo. O que significa escalonamento preemptivo? Envolve o uso de interrupções para suspender o processo em execução no momento e invoca um escalonador para determinar qual o próximo processo que deve ser executado. 18. Explique como funcionava o escalonador de prioridades no Kernel Linux (de 2. d) Priority Um processo que esteja pronto para executar. Um algoritmo por prioridades pode deixar alguns processos de baixa prioridade esperando indefinidamente pela CPU. O que deve ser considerando ao escrever um algoritmos de escalonamento em um sistema SMP? Primeiramente deve ser considerado que os processadores são idênticos (ou homogêneos).b) Shortest job first É o algoritmo ótimo (do ponto de vista computacional) no tempo de espera. 3. Se for muito grande será equivalente a FCFS. 17. Heurística para dizer se o processo é IO bound. 16. O maior tempo de espera será o processo com maior pico de CPU. É O(1) . c) Round Robin Depende exclusivamente do tamanho do quantum da CPU. mas não tennha a posse da CPU pode ser considerado bloqueado.6 até 2. Escalonador por prioridade dinâmica. 4. Quantum varia durante o tempo e processos. ou se for uma fila deve se evitar que 2 processadores peguem o mesmo processo ou que algum processo se perca da fila. esta diferença mudaria toda a abordagem. mas se for pequeno será a sensação de dividir a CPU pelo numero de processos. Depois pode-se criar uma fila de processos para cada processador.23) 1. Que técnica é usada para evitar que um processo em um algoritmo de escalonamento por Multilevel Feedback-Queue nunca execute? Define-se que os processos que estão esperando por muito tempo na fila de menor prioridade são promovidos com maior prioridade. CPU bound ou interativo. 2.6. O que é o problema da Região Crítica? Mostre um exemplo onde não tratá-lo poderia levar a um erro. Além disso pode acontecer de um dos processos não poder prosseguir normalmente.5. Relógio para incrementar este tempo baseado no wallclock / núm de processos esperando para executar 7. O problema com a solução de alternância estrita é que requer que os dois processos se alternem precisamente. 22. Prioridade dinâmica => max(100. o que significa que o número de acessos de cada processo deve ser exatamente igual ao do outro. Esta é uma solução a qual obriga que a região crítica seja dada a um dos processos por vez. . Quando executa decrementa waiting time 8. Quantum base é => Prio_estat > 120 ? (140-Prio_estat)*20 : (140-Prio_estat) * 5 7. em uma estrita alternância. 2. Dividir n CPU's entre os processos igualmente 3. Explique o algoritmo de escalonamento Completely Fair Scheduler que atualmente é utilizando no kernel Linux. Não tem 1 fila. arquivos e assim por diante. Pois após entregar a seção crítica para o outro processo não pode mais pedi-la novamente. 1. linha do tempo de execução 4. Explique qual é sua limitação na prática. Relógio preciso de nano segundos 6. Região crítica é um segmento de código que enquanto está em execução não é permitido a nenhum outro processo sua execução ao mesmo tempo. Pode ser a operação em tabelas. Mostre como funciona a solução de alternância estrita. 139)) 19. Todo processo tem prio estática entre 100 e 139 e dinâmica entre 100 e 139 (menor valor é maior prioridade) 6. Prioridade → padrão do decaimento do waiting time 20. Mostre e explique o funcionamento da solução de Peterson. 21. min(prio_estat – bonus + 5. Redblack tree O(log(n)) 5. O que são semáforos? Mostre um exemplo de uso.O algoritmo de Peterson é um algoritmo de programação concorrente para exclusão mútua. Este algoritmo satisfaz os 3 problemas de regiões críticas: a exclusão mútua. turn = 1. A entrada na região crítica é garantida para P0 se P1 não quiser entrar na região crítica ou se P1 deu prioridade para P0 atribuindo o valor de turn para 0. P1: flag[1] = 1. flag[1] = 0. { while (flag[0] == 1 && turn == 0) // busy wait { } // busy wait // critical section } . flag[0] = 0. turn. // critical section // end of critical section . flag e turn. // loop sem operação s--. que permite a dois ou mais processos ou subprocessos compartilharem um recurso sem conflitos. P0: flag[0] = 1. A variável turn guarda o ID do processo com a vez. É uma variável inteira que a parte de sincronização é acessada somente por duas operações wait e signal. 23. } . flag[0] = 0.. o progresso e espera limitada.. O algoritmo utiliza duas variáveis.. // end of critical section flag[1] = 0. } void signal(s){ s++. while (flag[1] == 1 && turn == 1) turn = 0. É uma ferramenta de sincronização generalizável. void wait(S){ while (s<=0).. O valor de flag 1 indica que o processo quer entrar na região crítica. utilizando apenas memória compartilhada para a comunicação (Wikipedia). E somente aquela página que é alterada fica “diferente” do resto. <SEÇÃO CRITICA> signal(mutex). signal(mutex). insere_buffer(elemento). É útil pois torna programa implementados com forks mais leves. Resolva pelo menos 3 problemas de sincronização do Livro "The Little Book of Semaphores". remove_buffer(elemento).Exemplo de uso: do{ wait(mutex). Ao se modificar alguma das páginas uma cópia da página é feita. 24. 25. Mostre uma solução usando semáforos para o problema "BoundedBuffer" /* PRODUTOR*/ do{ wait(empty). signal(mutex). }while(1). Mostre uma solução usando semáforos para o problema "Readers-Writers" 26. <SEÇÃO REMANESCENTE> }while(1). signal(empty). /*CONSUMIDOR*/ do{ wait(full). 28. O que é copy-on-write e sob quais circunstâncias ela é útil? Consistem em compartilhar os dados somente referenciando a mesma área. }while(1). signal(full). wait(mutex). wait(mutex). Mostre uma solução usando semáforos para o problema "DiningPhilosophers" 27. . mas por exemplo pode ser escolhido o espaço que deixaria menor resíduo no final do bloco. 200KB. já que teremos áreas vazias entre os arquivos armazenados nos discos magnéticos. como cada um dos algoritmo: Fist-fit. que além de perda de espaço. . best-fit e worst-fit. e/ou eliminados. até encontrar o primeiro espaço livre que seja grande o suficiente. First Fit acomoda espaço na memória pelo começo da memória disponível até o fim. 500KB. 300KB e 600KB (em ordem). Cada unidade de alocação não pode comportar fragmentos de arquivos diferentes. Dadas partições de memória de 100KB. A fragmentação externa ocorre em sistemas de arquivo quando muitos arquivos de tamanhos diferentes são criados. maior é o índice de fragmentação interna. causa perda de desempenho.1. 417Kb. (wikipédia) A fragmentação interna é a perda de espaço dentro de uma área de tamanho fixo. modificados em seu tamanho. Best Fit tenta determinar o melhor lugar para alocar os dados. Explique a diferença entre fragmentação interna e externa. porque isto deixa regiões pequenas de espaço livre. alocariam processos de 212Kb. ela ocorre quando um arquivo ou fragmento de arquivo não ocupa completamente o espaço da unidade de alocação destinado a ele. Quanto maior for o tamanho dos clusters no sistema de arquivos usado e maior for o número de arquivos pequenos armazenados. O efeito é pior se um arquivo que é dividido em muitas pequenas partes for eliminado. Numa memória secundária. A definição de melhor varia nas implementações. 112KB e 426KB? Qual dos algoritmos faria o uso mais eficiente de memória. Se não retorna erro. causando desperdício de espaço. 2. No caso do LRU. É o mapeamento de um arquivo como se fosse um array em memória. Existe um limite superior (maior bloco . É eficiênte porque utiliza leitura preguiçosa só lendo os dados que realmente precisam ser lidos. O que é o modo de alocação de memória "Buddy System". Optimal e LRU. atribui-se a página os bits de não referenciados. Qual a sua desvantagem? O modo de alocação Buddy System divide a memória em pedaços com tamanho potência de 2. qual a vantagem de utilizar esse modo de acesso.4 segundos. O algoritmo seleciona o maior espaço possível que a informação pode ser armazenada (maior que a informação). você deve explicar quais são as políticas de aproximação para o LRU. FIFO é uma fila normal onde o primeiro que entra é o primeiro que sai. Por exemplo. LRU: Quando uma página é usada é marcada como referenciada. 4. 3. Então divide-se a página em 4 classes. Como funciona o mapeamento de arquivos em memória. o sistema operacional troca a página que o seu próximo uso será num futuro distante. uma página que não será usada nos próximos 6 segundos será trocada por uma página que será usada em 0. Em certo momento por interrupção de relógio. Explique os seguintes algoritmos para substituição de páginas (page replacement): FIFO. No Posix pode ser feito por mmap() 5. É o completamente oposto do best-fit que procura o menor espaço possível. É simples e tem desempenho ruim (pode aumentar o paginamento com aumento de memória o que é absurdo) Optimal: Quando uma página precisa ser trocada. referenciado ou não e modificado ou não.Worst Fit. a memória residente 20MB e a memória compartilhada 10MB. . 8. 7. O que é o Overcommit de memória? Overcommit de memória é uma função do kernel que permite alocar mais memória do que realmente é disponível. caso isso aconteça estes aplicativos são fechados. 9. O método de liberar a memória é eficiente e relativamente rápido. O que é o mecanismo de alocação chamado SLAB? A idéia fundamental por trás do SLAB é baseada na observação de que alguns objetos do kernel são frequentemente criados e destruídos e após isso nunca mais são necessários. Senão o bloco é dividido em dois "buddies" e assim recursivamente. Quando é feita uma requisição arredonda-se o tamanho requisitado e se o tamanho é maior que a metade do bloco inicial então o bloco inteiro é alocado. Tipicamente é implementado por uma árvore binária que representa blocos usados e não usados.que pode ser alocado) e inferior (menor bloco que pode ser alocado). A idéia por de trás dessa funcionalidade é de que alguns aplicativos alocam mais espaço que precisam. mas ele não podem usar a memória. Na implementação do SLAB existe cache e uma estrutura Slab que pode ser empty. Como ele aloca somente o espaço necessário a fragmentação interna não existe. O que significa dizer que a memória virtual de um processo é 50MB. 6. Contudo ainda existem problemas de fragmentação interna. E ainda a desalocação do espaço de memória após a destruição do objeto causa fragmentação. Isso permite que se rode mais aplicativos que cabem na memória. Qual a relação entre o espaço de endereçamento virtual e utilização da memória física? O endereçamento virtual agrega tando endereços armazenados em memória secundária quando endereços resididos na memória ram. mas nunca usam. Isso implica que cada alocação de memória para estes objetos as vezes custa uma busca best-fit. partial. full. não existe maneira de apagar o arquivo do sistema. . Ou fica residual em caso de crash da aplicação. Pela forma como o NFS foi especificado. Na semântica de sistema de arquivos do Unix o que acontece quando um arquivo que está aberto é removido? Ele não ficará mais acessível aos programas que quiserem o acessar logo após o momento de remoção.nfsXXXXX". O que o NFS faz é emular este comportamento renomeando o arquivo para algo como ".Significa que 20 mb estão na memória RAM. facilita também a vida do usuário por ter acesso rápido e simples a leitura e edição do arquivo. é comum em aplicações Unix." Após o fechamento do processo o arquivo é apagado. e 10 mb é compartilhado com outro processo por ter gerado (ou sido gerado) por um Fork e estas páginas não sofreram escrita ainda.nfsXXXXXX ? (Segundo NFS FAQ) Aplicações em Unix geralmente criam arquivos de rascunho e removem sua ligação. mas o arquivo é mantido no disco até que todos os processos se encerrem. o deixando disponível para aplicações. Para cada arquivo o file system mantem um contador que indica quantos procesos o estão usando. 10. Porém continuará acessível por aqueles programas que já estavam com o arquivo aberto no momento da remoção. Quando fazem isso o arquivo passa a não ser visível no sistema de arquivos para quando a aplicação fechar o arquivo este ser removido. quando é removido o arquivo se o contador não for 0 é apagado somente o acesso ao mesmo. No NFS (Network File System) o que é o "Silly Rename"? Porque surgem os arquivos . Quais as vantagens e desvantagens de guardar o nome do programa criador junto aos atributos do arquivo? Vantagem: Livra o sistema operacional de saber com qual aplicativo deve ser aberto o arquivo. Desvantagem: Um terceiro pode alterar o arquivo para apontar para um programa mal intencionado. 11. Conhecido como "delete on last close". 12. Isso é conhecido como "silly rename. que esconde o arquivo para seu uso. o espaço necessário é superestimado. assim como o tempo de busca quando uma operação de busca for necessária. mas tais sistemas geram fragmentação externa.a dificuldade de encontrar espaço para um novo arquivo. assim pra manter compatibilidade com os programas linux (onde um arquivo aberto pode ser excluído sem problemas) ele renomeia o arquivo e deixa ele oculto. quem estava com o arquivo aberto continua lendo deste . Com isso. ou para futura ampliação do mesmo.a dificuldade de determinar a quantidade de espaço necessário para um arquivo. Os endereços de disco definem um ordenamento linear no disco. Quais os problemas apresentados por este método? Cada arquivo é uma lista encadeada de blocos em disco. b) Como funciona a alocação de espaço por encadeamento (linked allocation). é mínimo. e não sabe quais arquivos estão sendo utilizados. A alocação de espaço contígua requer que cada arquivo ocupe um conjunto de blocos contíguos no disco. mas os arquivos não podem crescer. Não gera fragmentação externa. Tem pouca perda de espaço porém não tem acesso direto. Como problemas encontrados na alocação contígua temos: . O diretório contém um ponteiro para o primeiro e último blocos do arquivo. Pela falta de conhecimento na hora da criação do arquivo. . Sistemas de gerenciamento de espaço livre devem ser utilizados para realizar esta operação. o número de operações de busca no disco. tem que percorrer a lista. Gerando assim fragmentação interna. Sobre métodos de alocação de espaço.O NFS é stateless. Em geral. E cada bloco contém um ponteiro para o proximo bloco. exigidos para acesso a arquivos alocados contiguamente. Somente é necessário armazenar a localização inicial (número do bloco) e o tamanho do arquivo (quantidade de blocos). . responder: a) Como funciona a alocação de espaço contígua? Que problemas apresenta? Cada arquivo ocupa um conjunto de blocos contíguos no disco.nfsX 13. Pode ser feito mapeamento de endereço lógico para o físico. Os blocos podem ser espalhados no disco. Cada arquivo possui seu próprio bloco de índices que é um array de endereços de blocos de disco. como a integridade do arquivo é mantida por intermedio de ponteiros espalhados por todo o disco. logo. . e a í-esima entrada .O espaço perdido com a alocação dos ponteiros. contém o número do bloco do próximo bloco no aquivo. esta tabela fica alocada em uma seção do disco no inicio de cada partição. se um desses ponteiros for corrompido. existe uma tabela 2 de backup usada pelo scandisk. qual a diferença em relação à alocação por encadeamento simples? A FAT usa uma tabela de alocação de arquivos.Como problemas encontrados na alocação por encadeamento temos: . cada arquivo irá requerer um pouco mais de espaço do que necessitaria em outra situação. Assim continua até o bloco que contém o identificador de fim de arquivo. A entrada da tabela. Ao contrario da alocação por encadeamento a FAT não utiliza um espaço em cada bloco do disco como ponteiro (utiliza os blocos com valor igual a zero na tabela que representam blocos livres). pode-se ter grandes perdas de dados ou de espaço livre. e) Em um sistema de arquivos usando uma FAT o que acontece se ocorrer a corrupção total da tabela de alocação de arquivos? Se a tabela FAT (tabela 1) corromper. A FAT tem uma entrada para cada bloco do disco e é indexada pelo número do bloco. indexada pela entrada do arquivo no diretório. mas agora todos esses ponteiros são armazenados juntos em um bloco de índices.O problema da confiabilidade. c) Como funciona a FAT (File-Allocation Table) usado pelo MS-DOS. f) Como funciona a alocação de espaço indexada? Que problemas da alocação usando encadeamento ela tenta resolver? A alocação indexada utiliza ponteiros. . como a alocação por encadeamento. O diretório contém o endereço do bloco de índices.O principal problema é que ela so pode ser efetivamente utilizada para arquivos de acesso sequencial. . no caso. Eles são: . ou seja. Desta maneira é possível realizar com facilidade o acesso direto ao arquivo. g) O que são i-nodes? Em qual mecanimos de alocação indexada eles se enquadram? I-node é o primeiro bloco encontrado quando se faz o acesso a um arquivo e consite em uma estrutura de dados que relaciona os atributos e os endereços em disco dos blocos do arquivo . que contem dados do arquivo. Pois um bloco inteiro de índices deve ser armazenado para cada arquivo. O primeiro ponteiro para um bloco indireto é o endereço de um bloco indireto simples (um bloco de índices que não contém dados. .Esquema combinado: Utiliza uma combinação dos dois esquemas anteriores. Para reduzir esse desperdício devem ser utilizados blocos de tamanho menor para armazenar os índices. Mas blocos menores limitam a indexação de grandes arquivos. f) Dentro da alocação indexada quais são os mecanismos usados para guardar os índices? A alocação indexada causa um desperdício de espaço em disco por conta do armazenamento do bloco de índices. o ultimo endereço do bloco de índices é nulo (caso o bloco represente todo o arquivo) ou é um ponteiro para outro bloco de índices (para grandes arquivos).do bloco de índices aponta para o í-esimo bloco do arquivo. Em geral utiliza-se um esquema onde os 12 primeiros ponteiros apontam para blocos diretos. Para resolver este problema alguns mecanismos são usados para guardar os índices. Depois existe um ponteiro para um bloco indireto duplo (contém o endereço de um bloco que .Índice multinível: Um bloco de índices de primeiro nível aponta para um conjunto de blocos de índices de segundo nível. este bloco de índice utiliza um mecanismo de alocação indexada do tipo combinada. que ocorre quando se usa a alocação por encadeamento. que por sua vez aponta para os blocos do arquivo. Esta abordagem poderia ser estendida para um terceiro ou quarto níveis dependendo do tamanho máximo de arquivo requerido. os outros 3 ponteiros apontam para blocos indiretos. mas endereços de blocos que contêm dados). A alocação indexada tenta resolver o problema da falta de eficiência no acesso direto a arquivos.Esquema encadeado: Diversos blocos de índices encadeados. mesmo que apenas um ou dois ponteiros sejam realmente utilizados. [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> [] x15-> 12 blocos . Considere ainda que cada bloco tem 512Kb. Considere um sistema com i-nodes com 15 ponteiros. que ficaria os quinze níveis dele apontando cada um para um inode distinto. faltam 10. Como ficaria a estrutura de inodes para armazenar um arquivo de 129024 bytes (252 blocos)? Pra salvar um arquivo de 252 blocos. que usaria apenas um de seus apontadores. no caso. e cada i-node destes teria 15 blocos. O último ponteiro conteria o endereço de um bloco indireto triplo. mais 225 blocos. e totalizando 242 blocos.contém os endereços de blocos que contêm ponteiros para os blocos de dados reais). Ou seja. Depois vem o i-node de nível 2. 14. seria os primeiros 12 blocos do primeiro i-node ocupado. o 13 ponteiro para alocação simples indireta. depois mais 15 blocos do i-node nível 1. que salvaria 10 blocos nele. O i-node de nível 3 apontaria para um de nível dois. o 14 para alocação dupla indireta e o 15 para alocação triplaindireta. pra um de nível 1. Nestes i-nodes os 12 primeiros são usados para alocação direta. Considere um sistema onde o espaço livre é gerênciado por uma lista de espaço livre.[] -> [] x15-> [] x15 -> 225 blocos [] -> [] x1 -> [] x1 -> [] x10 -> 10 blocos No total você ocuparia 268 i-nodes 15. usualmente nomeadas de symbolic link e hard link. Assim. não necessariamente os dados que ele tem são deletados nos blocos (geralmente que eu saiba não.) Um symlink é totalmente diferente: é um pequeno arquivo especial que contém o nome de caminho. . não o arquivo que ela aponta). Suponha que o ponteiro para a lista de espaços-livres foi perdido. Um hard link é exatamente um nome para o arquivo (E um arquivo pode ter vários nomes. Uma possível solução seria veirificar todos os blocos utilizados pelos diretórios/arquivos/sistema e considerar os outros como livres. é apenas deletado a ligação para ele). Esta lista pode ser reconstruída? Explique sua resposta. e não precisa de ponto para o arquivo existente atualmente. Aquilo só é apaguado do disco somente quando o último nome é removido. Deve-se pensar no fato de que ao um arquivo ser deletado. (De qualquer forma. Quando acessado (com a chamada de sistema open ou stat. com rm ou unlink a ligação é removida. Qual a diferença de simbolic links e hard links? E como é a implentação de cada um? Como é feito o controle de remoção de arquivo em cada caso? Existem dois conceitos de "links" no Unix. 16. a ligação fraca pode apontar arquivos em diferentes sistemas de arquivos (talvez NFS montadas de diferentes máquinas). uma referência para o symlink é substituída pelo kernal do sistema operacional com uma referência para o arquivo nomeado no nome de caminho. ou n blocos livres consecutivos no disco. Cada bloco é representado por 1 bit. 17.Vetor de Bits (bitmap) Cria um vetor onde cada posição corresponde a um bloco do disco.Lista Encadeada Desvantagem:para varrer a lista é preciso ler cada bloco -Vetor de bits: A lista de espaço livre é implementada como um mapa de bits ou um vetor de bits. Não é eficiente. Mas são ineficientes a não ser que todo o vetor seja mantido na memória principal. para percorrer a lista. Quais são os métodos para gerênciamento de espaço livre em disco? . Esse primeiro bloco contém um ponteiro ao próximo bloco livre de disco. se o bloco estiver alocado o bit será 0. -Agrupamento: . A principal vantagem é que é relativamente simples e eficiente encontrar o primeiro bloco livre. Vantagem: simplicidade e eficiência para encontrar o primeiro bloco livre.Então a solução de percorrer por todos os blocos e pegar os livres não funciona. Desvantagem: ineficiente ao menos que sejam mantido na memória principal (senão fica muito custoso o acesso repetidamente ao disco) e ocupa muito espaço . mantendo um ponteiro ao primeiro bloco livre em uma posição especial no disco e armazenando-os em cache na memória. Se o bloco estiver livre o bit será 1. e assim por diante. precisamos ler cada bloco. o que requer tempo substancial de I/O. -Lista Encadeada: Encadear todos os blocos de disco livres. e possui valor 0 para livre e 1 para ocupado. de todas as mudanças no sistema de arquivos antes de escrever os dados no disco. Assim os endereços de um grande número de blocos livres podem ser rapidamente encontrados. e uma recuperação mais rápida. Os algoritmos de alocação e gerência de espaço livre determinam os tipos de problemas que o verificador poderá encontrar e qual será a taxa de sucesso na correção desses problemas. Como funcionam os sistema de arquivos baseados em Journaling? Quais suas vantagem? O que tentam garantir? Um sistema de arquivos com journaling dá permissão ao Sistema Operacional de manter um log (journal).Armazena os endereços de n blocos livres no primeiro bloco livre. a lista global fica mais curta. 19. e assim por diante. mantêm o endereço do primeiro bloco livre e o número n de blocos contíguos livres que seguem esse primeiro bloco. Aproveita o fato de que em geral vários blocos contíguos podem ser alocados ou liberados simultaneamente.Embora cada entrada exija mais espaço que um endereço de disco simples. Quais as estapas de um checkagem de consistência de um file system? A verificação de consistência compara os dados na estrutura de diretório com os blocos de dados no disco e tenta corrigir quaisquer inconsistências encontradas. Por ser mais bem localizado em espaço menor costuma ter melhor desempenho também. Este tipo de sistema de arquivos tem a oferecer uma melhor probabilidade de não sofrer corrupção de dados no caso de o sistema travar ou faltar energia. 18. -Contadores: Em vez de manter uma lista de n endereços de disco livres. Um possível teste é verificar no número de hardlinks apontando para o inode. Normalmente este log é um log circular alocado em uma área especial do sistema de arquivos. O bloco final contém os endereços de outros n blocos livres. Os primeiros n-1 desses blocos estão realmente livres. Cada entrada na lista de espaço livre consiste então em um endereço de disco e um contador. pois não . O NOOP é melhor para dispositivos de estado sólido (SSD . Ele insere todas as requisições de I/O é uma fila FIFO (First In First Out) não ordenada.necessita verificar todo o disco. o ponteiro do disco percorre de um lado para o outro atendendo as requisições. C-SCAN e LOOK. O C-SCAN é similar mas só funciona em um sentido e é melhor no tempo de resposta médio. SSTF (Shortest-Seek First). O Look é como o SCAN é implementado na prática que não vai até o fim do disco mas só até o último endereço requisitado. O escalonador assume que a otimização do desempenho de I/O será feito em alguma outra camada da hierarquia de I/O (por exemplo. no dispositivo de blocos. Quais sao os algoritmos de escalonamentos disponíveis atualmente do kernel Linux? Descreva cada um deles. Dispositivos não-mecânicos não necessitam de reordenamento de múltiplas requisições de I/O. dispositivo que não dependam de movimento mecânico para acesso aos dados (como a tecnologia tradicional de "disco rígido" que depende do tempo de acesso . por um controlador RAID "inteligente" ou por um controlador externo como um subsistema de armazenamento (storage). uma técnica que agrupa as requisiçòes de I/O que estão fisicamente próximas no disco. e isso pode causa inanição.Solid State Devices) como memória flash ou. SCAN.e da latência rotacional). somente aqueles que pertenciam a um log que não fora fechado devidamente. NOOP É o escalonador de I/O mais simples do Linux. em linhas gerais. 20. SSTF escolhe o endereço com menor deslocamento.seek time . 21. Explique os seguintes algoritmos de escalonamento de requisições de disco: FCSF. Scan é o método elevador. FCSF atende as requisições em fila. dessa forma reduzindo o tempo . 6. pois sobrecarrega o trabalho de "acesso".18. Isto fará com que um escalonador que procura reduzir trabalho mude para outro processo não relacionado.médio de acesso e a variabililidade do tempo de "serviço" (pense em servir algo) de I/O. Esta situação é prejudicial à vazão de leituras síncronas.0 e o 2. DEADLINE A principal meta deste escalonador é tentar garantir um tempo inicial para atender uma requisição. discos de alto desempenho e conjuntos (arrays) RAID feitos via hardware. Ele faz isso impondo uma "deadline" em todas as operações de I/O para evitar "starvation" dos recursos. ANTICIPATORY O objetivo é aumentar a eficiência de "antecipando" operações de leitura síncrona. São mantidas duas filas de "deadline" além das filas ordenadas (ambas de leitura e escrita). sendo substituído pelo CFQ. As filas de "deadline" são minimamente . O Anticipatory pode reduzir o desempenho em discos usando TCQ (Tagged Command Queuing). utilização do disco "Deceptive idleness" é uma situação onde um processo parece ter terminado a leitura do disco quando na verdade está processando dados enquanto se prepara para a próxima operação de leitura. Este escalonador foi o padrão no Linux entre o kernel 2.6. A solução do escalonador Anticipatory para o "Deceptive idleness" é fazer uma pausa por um pequeno tempo (alguns milisegundos) após uma operação de leitura em antecipação a outra requisição de leitura fisicamente próxima. . o escalonador verifica se a primeira requisição na fila "deadline" expirou. Requisições assíncronas para todos os processos são processadas em conjunto em um número menor de filas que estão separadas por prioridade (uma fila por prioridade). Nos dois casos. as requisições de leitura expiram em 500ms. requisições de escrita em 5 segundos. A quantidade de tempo e o número de requisições que uma fila pode enviar depende da prioridade de IO de um determinado processo. enquanto que as filas ordenadas usam o número do setor para definir a ordem. Em seguida. Filas de leitura recebem prioridade maior porque os processos usalmente "param" em operações de leitura. especialmente em discos que trabalham com TCQ (Tagged Command Queuing) ou quaisquer sistemas com discos de alto desempenho. se não ele serve uma sequência de requisições da fila ordenada.ordenadas por seu tempo de expiração. Antes de atender a próxima requisição. A documentação indica que este é o escalonador recomendado para sistemas de bancos de dados. CFQ (Completely Fair Queuing): 1 fila de I/O por processo. o Deadline decide qual fila usará. o escalonador também serve uma sequência de requisições seguindo a requisição escolhida na fila ordenada. O CFQ funciona colocando requisições síncronas enviadas pelos processos em uma certa quantidade de filas por-processo e então alocando espaços de tempo para que cada uma das filas acesse o disco. Por padrão. o objetivo é ser justo entre os processos. para isso tem que ter ao menos 3 discos. Suponha que você possui 4 discos rígidos de 750GB. 22. Com RAID6 teria 1 paridade a mais que dá (4-2)*750 = 1500GB de espaço utilzável. RAID6 2 Paridades. Com 1 bloco e a paridade (ou 2 blocos) é possível refazer o outro bloco. Então.Embora o CFQ não faça explicitamente escalonamento de I/O anticipatório. permitindo que uma fila de processo "não faça nada" (idle) ao final de um IO síncrono e. RAID1. RAID1 grava os blocos duplicados nos discos. Em especial a escrita se tiver 1 disco lento. O espaço total é a soma de todos os discos. dessa forma. RAID0 grava blocos espalhados pelo disco. "antecipando" IOs próximos vindos do mesmo processo. Quanto espaço disponível você obteria usando RAID5 e quanto espaço você obteria com RAID6? Quantos discos poderiam falhar em cada um destes casos? Com RAID5 para cada 2 blocos tem 1 bloco de paridade. Espaço total é o espaço de 1 disco. você teria 2000GB de espaço utilizável e 1 disco podendo falhar. fica tudo lento. garante alta confiabilidade e desempenho ruim. Podem falhar 2 discos e espaço é (n-2)*x 23. As paridades ficam espalhadas nos discos. O CFQ pode ser considerado uma extensão natural da ação de conceder "fatias de tempo de IO" a um processo. o que dá baixa confiabilidade e alto desempenho. mas podendo falhar 2 discos. RAID5 e RAID6. ele atinge o mesmo efeito de ter boa vazão para o sistema como um todo. . RAID5 faz paridade dos blocos. como os blocos estão espalhados. Compare RAID0. Sistemas Operacionais. chamado de quantum. d) SJF – Shortest Job First. Algoritmo de Escalonamento. Analista de Sistemas. onde todos os processos ganham o mesmo valor de quantum para rodarem na CPU. Agente de Defensoria. caracterizam o escalonamento de processos do tipo a) RR – Round-Robin. voltemos aos mapas mentais para concursos de TI. Os principais algoritmos de escolamento são os citados na questão. Os processos no sistema operacional que possuem um timer. e) SRT – Shortest Remaining Time. concursos TI. first out. Questão – FCC – DPE – SP – Agente de Defensoria – Analista de Sistemas /2010 tags: FCC. Neste algoritmo duas informações importantíssimas: Fatia de tempo (Timeslice/Quantum) e Preempitivo. Processos. Comentário O Escalonamento permite que o Sistema Operacional faça o compartilhamento do CPU entre os os processos. first served. Mapas Mentais Mapas mental dos algoritmos de escalonamento E agora o mapa mental do principal algoritmo de escalonamento – Roud-Robin. .Questão – Sistemas Operacionais – Escalonamento Depois de espairecer um pouco com os mapas mentais sobre História do Egito e da Grécia. b) FIFO – First in. c) FCFS – First come. Escalonamento .Round-Robin Gabarito: A .Sistemas Operacionais .Mapa Mental .
Copyright © 2024 DOKUMEN.SITE Inc.