Turma 2006 cooperativo, PCS2042, Sistemas Operacionais. 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 21 6 7 13 14 20 21 27 28 3 4 10 E E E 1 Aline 1 1 1 F 10 1F F . 1 1 1 10 1 F 1 10 . 1 . . . . . . F 16 5 2 Bruno 1 1 1 . 10 1 F . F 1 F . 1 1 F . . 1 . F . . . F . 12 6 3 Carlos 1 1 1 . 10 1 1 . 1 F 1 . 1 1 1 . . F . F . . . F F 13 5 4 Caue 1 1 1 . 10 1 1 . 1 1 1 . 1 1 F . . 1 . . . . . . . 16 1 5 Daniel L 1 1 0? . 10 0 F . 1 F F . 1 F 1 . . 1 . F . F . F . 8 7 6 Dennis T 1 1 1 . 10 1 F . 1 1 1 . 1 F 1 . . 1 . . . . . F . 14 3 1 Diogo 1 1 1 . 10 1 1 . 1 1 1 4 1 1 1 10 . 1 . . . . . F . 16 1 2 Felipe M 1 1 1 . 10 1 1 . 1 1 1 4 1 F 1 . . F . . . . . . . 15 2 3 Felipe K 1 1 1 . 10 .5 1 . 1 1 1 4 F F 1 . . 1 . . . . . F . 14 3 4 Fernando 1 1 1 . 10 1 .5 . 1 1 1 4 1 1 1 . . 1 . . . . . . . 17 0 5 Giselle 1 1 1 F 10 F 1 F 1 1 1 4 F 1 1 . . F . . . . . F . 13 6 6 Gustavo 1 1 1 . 10 F 1 . F 1 1 4 F 1 1 . . F . F . . . F . 11 6 1 Half 1 1 1? F 10 1 0 . 1 F 1 10 0 1 1 10 . F . . . . F . . 12 4 2 Luciene F 0 F F 10 1 F . 1 1 1 . 1 0 1 . . F . . . . F F . 9 7 3 Luiz 1 1 1 . 10 1 1 . 1 1 1 . 0 F 1 . . 1 . . . . . F . 15 2 4 Marcela F F F F F F F F 1 1 1 . 1 1 1 . . 1 . . . . . . . 12 8 5 Marcelo 1 1 1 . 10 F 1 . F 1 1 . 0 1 1 . . F F . . F . F . 10 6 6 Marcos F F F F 10 1 1 . 1 1 1 . 1 1 1 . . F . . . . F . . 12 6 7 Paula F 1 1 1 10 1 1 1 . . 1 . . . . . . . 12 8 1 Rafael B. 1 1 1 F 5 1 1 . 1 F .5 10 1 0 F F . 1 . . . . F . . 13 5 2 Rafael A. 1 1 1 . 5 F 1 . 1 1 1 10 1 1 1 0 . F . . . F . . . 15 3 3 Rafael D. 1 1 F . 5 F 1 . 1 1 1 10 1 F F F . F . . . . . F . 15 7 4 Reginaldo 1 1 1 . 5 1 1 . 1 1 1 10 F 1 1 0 . 1 . . . . . . . 16 1 5 Roberto 0 F F F F F F F F F F F F F F F F F F F 6 Rodrigo P. F 1 1 F 5 1 1 . 1 1 1 10 1 1 1 F . 1 . . . F . F . 14 5 1 Rodrigo O. 1 1 1 . 10 1 1 . 1 1 1 10 F 1 1 9 . 1 . . . . . F . 15 2 2 Tatiana 1 1 1 . 10 F 1 . 1 1 1 10 F 1 1 . . F . . . F . F . 12 5 3 Thiago 1 1 1 . 10 1 1 . 1 1 1 10 1 1 1 . . 1 . . . . . . . 17 0 4 Vitor 1 1 1 . 10 1 1 . 1 1 1 10 1 1 1 . . 1 . . . . . F . 17 0 5 William 1 1 1 . 10 1 1 . 1 1 1 10 1 1 1 . . 1 F . . . . . . 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 17 09/1 1 - 1.1 O que é um sistema operacional, 1.2 História dos sistemas operacionais 2 - 1.3 conceitos de sistema operacional 1.4 chamadas de sistema 16/1 3 - 1.4 chamadas de sistema 4 - 1.5 estrutra do sistema operacional. 23/1 5 => apresentação dos projetos (fase 1) 1.2 (um por grupo) - criar aplicativos na linguagem C para rodar no minix utilizando as chamadas do sistema operacional. a- programa que concatena dois arquivos. b- programa que compara dois diretórios: um de uso e outro para backup. O programa deve listar os arquivos que devem ir para o backup. c- programa que cria um processo pai e outro filho. O pai escreve uma string e o filho outra string. d- troca o nome dos arquivos de um diretório colocando uma string na frente. e- lista o diretorio apresentando os arquivos mais recentemente modificados (tiramos o exercicio que envolvia alterar o password). 6 - 2.1 introdução aos processos 30/1 7 - 2.2 comunicação interprocesso 1. O que sao condicoes de corrida? Como resolver esse problema? 2. Qual o erro da solucao lock = 0 entra() { while (lock != 0) {}; lock = 1; } sai () { lock = 0; } 3. Supondo que TSL pudesse ser reescrito por MOVE LOCK -> REGISTER; SET LOCK <- 1 qual o problema que poderia dar ? 4. No produtor/consumidor em que situacao poderia ocorrer um wakeup sem que antes tivesse ocorrido um sleep? 8 - 2.2 comunicação interprocesso/ - 2.3 problemas clássicos de CIP 06/2 9 - 2.3 problemas clássicos de CIP Em grupo fazer o problema do leitor/escrito em um banco de dados. 10 - 2.4 agendamento de processo. Calcular o tempo entre a submissao e o termino de 5 jobs. Exercicio 2.23 Projeto e Implementacao. 13/2 11 - 3.1 Hardware Entrada e Saida 3.2 Software Entrada e Saida 12 => Projetos 2.5 visão geral de processos em minix (fase 2) Exercícios processos & threads Equipe 1 (Aline). 2.40 reprojeto o minix de tal modo que cada processo tenha um campo de nível prioridade em sua tabela de processos que possa ser utilizado para dar prioridades mais altas ou mais baixas a processos individuais. Equpe 2 (Diogo). 2.39 Modifique o agendador do Minix para monitorar o tempo de CPU que cada processo de usuário teve recentemente. Quando nenhuma tarefa ou servidor quiser executar, selecione o processo de usuário que teve a menor porção de CPU. Equipe 3 (Half) 2.38 Adicione código ao kernel do minix para monitorar o número de mensagens enviadas a partir do processo (ou tarefa) i ao processo (ou tarefa) j. Imprima essa matriz quando a tecla F4 for pressionada. Equipe 4 (Rafael Bueno) Adicione código ao kernel do minix para monitorar processos x uso de CPU da seguinte forma: ao teclar F4, os processos são apresentados segundo o uso de CPU. Os processo que mais usam CPU aparecem acima. (o código provavelmente será parecido com o dos exercícios 2.38 e 2.39). Equipe 5 (Rodrigo Oliveira) Altere o minix de tal forma que faça o agendamento por sorteio (item 2.4.6 do livro do Tanenbaun - projeto e implementação). 20/2 13 => Apresentacao dos dois grupos restantes; Exercicios sobre impasses: escreva o codigo de dois processos que compartilhem dois recursos. Esse codigo deve ser capaz de ter deadlock. 14 - 3.3 impasses 27/2 SEM AULA - carnaval 06/3 17 - 4.1 gerenciamento básico de memória 4.2 troca (swap) Exercicios 3.1 e 3.2 do tanenbaum 16 => Projetos 3.4 visão geral de E/S no minix (fase 3) Exercícios sobre Entrada e Saida. Equipe 1 (Aline). Ao teclar F4, o minix deve apresentar para cada uma das 16 interrupcoes quantas vezes elas ocorreram. Por exemplo: eh de se esperar que cada vez que se tecle F4 observemos um acrescimo no numero de interrupcoes vindas do relogio. Equpe 2 (Diogo). Ao teclar F5, o minix deve apresentar em que estado estao cada uma das tarefas de Entrada/Saida. Se elas estao aguardando uma mensagem generica ou tratando qual tipo de mensagem. Equipe 3 (Half) 3.37 Modifique o driver de termnal de modo que alem de ter uma tecla especial para apagar o caracter anterior, haja uma tecla para apagar a palavra anterior. Equipe 4 (Rafael Bueno) 3.36 Implemente a chamada de sistema profil do unix que estah faltando no minix. profil: This routine provides a means to find out in what areas your program spends most of its time. The argument buf points to bufsiz bytes of core. Every virtual 10 milliseconds, the user's program counter (PC) is examined: off- set is subtracted and the result is multiplied by scale and divided by 65536. If the resulting value is less than bufsiz, then the corresponding entry in buf is incremented. If buf is NULL, profiling is disabled. Equipe 5 (Rodrigo Oliveira) Ao teclar F6 o minix deve imprimir as ultimas mensagens de erros geradas pelos drivers. 13/3 15 Prova 1 18 - 4.3 memória virtual, 4.4 algoritmos de substituição de página. 20/3 19 - 4.4, 4.5 questões para sistemas de paginação. 20 - 4.6 segmentação 27/3 20 => Projetos 4.7 visão geral do gerenciamento de memória do minix (fase 4) Equipe 1 (Aline). Altere o Minix de forma que ao se teclar F2 apareca na tela uma tabela contendo as alocacoes de memoria feitas pelas ultimas 10 chamadas da system call fork(). Equpe 2 (Diogo). Altere o Minix de forma que ao se teclar F1 apareca na tela uma tabela contendo os processos e as areas de memoria por ele ocupadas. Equipe 3 (Half) Altere o Minix de forma que ao se teclar F3 apareca na tela uma tabela contendo as areas liberadas de memoria feitas pelas ultimas 10 chamadas de exit(). Equipe 4 (Rafael Bueno) Altere o Minix de forma que ao se teclar F4 apareca na tela onde estao as areas livres de memoria (nao alocadas a nenhum processo). Crie novos processos e verifique se a area diminui. Equipe 5 (Rodrigo Oliveira) Altere o Minix de forma que ao se teclar F5 apareca na tela a area de memoria ocupada pelo kernel do minix. 21 - 5.1 arquivos 5.2 diretórios 03/4 22 - 5.3 implementação do sistema de arquivos 23 - 5.4 segurança, 5.5 mecanismos de proteção 10/4 24 => Projetos 5.6 visão geral do sistema de arquivos minix (fase 5) 25 Prova 2.