Fundamentos de Sistemas Operacionais - 2021-2
UnB-\(\gamma\)

Table of Contents

1. Aulas

1.1. Aula 1   17_jan

1.1.1. Tópicos

  • Apresentação da disciplina em live no YouTube

1.1.2. Material de apoio

Para a aula de hoje é recomendado que o aluno veja os vídeos disponibilizados na seção Antes de Começar

  • Vídeo sobre distribuições GNU/Linux e afins:

1.2. Aula 2   21_jan assíncrono

Nesta aula é discutido, o processo básico de boot do sistema operacional e como se define o conceito de processo.

1.2.1. Vídeo Complementar

1.2.2. Exercícios

  1. Questões para pesquisar no livro texto
    1. Enumere e explique resumidamente as principais responsabilidades de um sistema operacional.
    2. Qual é a diferença entre modo usuário e modo kernel? Por que esta distinção é feita?
    3. Descreva como são implementados os seguintes eventos:
      • chamada de sistema,
      • tratamento de interrupção, e
      • tratamento de sinais.
      • Quais são as semelhanças e diferenças entre estes eventos?
    4. Qual é a diferença entre um sistema monolítico e um baseado em camadas?
  2. Sobre Processos
    1. Abra um terminal e execute o comando: pstree -c -p. Descreva o que está vendo (dica: veja o vídeo complementar)

1.3. Aula 3   24_jan

1.3.1. Parte Assíncrona


1.3.2. Vídeo complementar e seus cortes


1.3.3. Tópicos e materiais

Nesta aula foi discutido o processo básico de fluxo de inicialização de processos e os elementos básicos necessários para que o kernel possa controlar o processo.

Foi disponibilizado um conjunto de vídeos (nas seções acima) que complementam a visão geral dos processos dentro dos ambientes UNIX.

Também foi discutido os estados que um processo pode assumir e também em qual circunstância acontece a migração dos estados. Abaixo segue uma imagem representando os estados e suas possíveis transições.

grafo-estados.png

Figure 1: Estado que os processos podem assumir

Para complementar conteúdo passado nos vídeos faça a leitura do seguinte material do livro do prof. Mazieiro:

1.3.4. Exercícios

  1. Sobre Processos
    1. Familiarize-se com a chamada: fork(2), wait(2), execl(3);
    2. Descreva o funcionamento das funções listadas acima.
  2. Na figura 1 são mostrados três estados de processos. Na teoria, com três estados poderia haver seis transições, duas para cada estado. Contudo, somente quatro transições são mostradas. Há alguma circunstância na qual uma delas ou ambas as transições não ilustradam possam ocorrer?
  3. O que é um processo Zumbi? Explique como que um processo passe para o estado de Zumbi.
  4. Escreva um programa que gere um processo Zumbi.
  5. Considere a seguinte parte de um programa:   prof_Orlando
    ...
      p=fork();
      a=fork();
    
    printf("Sistemas Operacionais\n");
    ...
    
    • Quantas vezes é apresentada "Sistemas Operacionais"? Justifique.
    • Quantos processos são criados pelo programa?
  6. Faça um programa que crie 2 processos e:   prof_Orlando
    • Escreve Eu sou o pai no processo pai;
    • Escreve Eu sou o 1o filho no primeiro filho;
    • Escreve Eu sou o 2o filho no segundo filho.
  7. Considere o seguinte pedaço de código em C:   prof_Orlando
    1: for(i=0;i<4;i++)
    2:   pid=fork();
    3: printf("FSO\n");
    
    1. Quantos processos são criados por este programa? Justifique.
    2. Quantas vezes é apresentado "FSO"? Justifique.

1.4. Aula 4   28_jan

1.4.1. Material Adicional


1.4.2. Exercícios

  1. O que é um processo Zumbi? Escreva um programa que crie processos zumbis.
  2. Resolva http://www.brunoribas.com.br/so/2019-1/pratica/multiplicacao-matriz.html
  3. Resolva http://wiki.inf.ufpr.br/maziero/doku.php?id=so:criacao_de_processos
  4. Resolva http://www.dei.isep.ipp.pt/~orlando/so2/processos.htm
  5. Familiarize-se com as chamadas: execve(2), clone(2)
  6. Considere a seguinte parte de um programa   prof_Orlando
    int main()
    {
      ...
      pid2=0;
      for(i=0;i<2;i++)
      {
        pid=fork();
        if(pid==0)
          pid2=fork();
        if(pid2==0)
          printf("Exame de SO\n");
      }
      ...
    }
    
    • Quantas vezes é apresentada a frase Exame de SO? Justifique
    • Veja a discussão deste problema no vídeo abaixo:

  7. Tendo um vetor de inteiros com mil posições, crie um processo e faça o seguinte:   prof_Orlando HOT
    • Os dois processos (pai e filho) fazem o seguinte cálculo: resultado[i]=dados[i]*4+20
    • Cada processo é responsável pelo cálculo de \(500\) posições do vetor dados, colocando o resultado no vetor resultado
    • Os resultados devem ser apresentados seguindo a ordem do vetor (de \([0,499]\) e depois \([500,999]\))
  8. Faça um programa que crie 6 processos e:   prof_Orlando HOT
    • Cada processo escreve \(200\) números:
      • 1o processo \([0,200]\);
      • 2o processo \([201,400]\);
      • 3o processo \([401,600]\);
      • 4o processo \([601,800]\);
      • 5o processo \([801,1000]\);
      • 6o processo \([1001,1200]\);
    • O processo pai tem de esperar que TODOS os processos filho terminem
  9. Tendo um vetor de \(1000\) posições, faça um programa que crie 5 processos e:   prof_Orlando HOT

1.5. Aula 5   31_jan

1.5.1. Cortes de Aula com exercícios resolvidos

1.6. Aula 6   04_fev

A aula de hoje tem caráter assíncrono. Os alunos devem iniciar os estudos sobre escalonamento, este conhecimento é importante para que seja entendido com mais facilidade o conceito de threads.

Além disso os alunos devem aproveitar algum tempo para continuar resolvendo os exercícios da lista que vale nota.

1.6.1. Material Adicional

1.6.2. Exercícios

1.7. Aula 7   07_fev

1.8. Aula 8   11_fev

Aula assíncrona para o Aluno iniciar o estudo sobre Threads

1.8.1. Threads

1.8.2. Abordagem prática de threads

1.8.3. Exercícios

  1. Considere que tem definido na função main duas strings em que a primeira tem o seu primeiro nome e a segunda o último. Faça uma função que receba como parâmetros uma string e escreva essa string no monitor. Implemente um programa em que cada string é apresentada por um thread diferente.   prof_Orlando
  2. Considere que tem um array com cinco posições, sendo cada posição constituída pelo número, nome e morada. Faça uma função que recebe como parâmetros uma estrutura desse tipo e imprima o conteúdo dessa estrutura. Implemente um programa que crie 5 threads, "passando" como argumentos uma estrutura desse array (Ex: 0 primeiro thread fica com a primeira posição do array, etc.)   prof_Orlando
  3. Tendo um array de inteiros com 1200 posições, pretende-se calcular resultado[i] = dados[i]*4 + 20. Crie duas threads :   prof_Orlando
    • o primeiro thread calcula as primeiras 400 posições;
    • o segundo as seguintes 400;
    • o resto é calculado na função main
      • Depois dos cálculos terminarem, devem ser apresentados os valores no monitor (pode ser feito na função main).
  4. Dado um array de inteiros com mil posições, crie 5 threads:   prof_Orlando
    • Dado um número, procurar esse número no array.
    • Cada thread, procura 200 posições.
    • O thread que encontrar o número, deve imprimir a posição do array onde se encontra. Também deve "retornar" como valor de saída o número do thread (1, 2, 3, 4, 5).
    • Os threads que não encontrarem o número devem "retornar" como valor de saída o valor 0.
    • A função main tem de esperar que todos os threads terminem e imprimir o número do thread onde esse número foi encontrado (1, 2, 3, 4, 5).
      • Nota: O array não tem números repetidos.
  5. Faça um programa que crie 5 threads. Cada thread é responsável por calcular 200 posições do array resultado (resultado[i] = dados[i]*2+10). Os threads devem imprimir os resultados segundo a ordem do array.   prof_Orlando

1.9. Aula 9   14_fev

1.9.1. Material complementar

1.9.2. Exercícios

  1. Leia o panorama geral de semáforos no linux sem_overview(7)
    • Execute o comando man 7 sem_overview
  2. Familiarize-se com as funções:
    • sem_init(3)
    • sem_wait(3)
    • sem_post(3)
    • sem_destroy(3)
    • sem_getvalue(3)
  3. Exercício sobre semáforo   prof_WagnerZola
    • Faça duas funções em linguagem C, que possam ser usadas por THREADS COOPERANTES. A função get_ticket() retorna um número inteiro positivo ÚNICO a qualquer thread que chamá-la. Protótipo:

      int get_ticket();
      

      A função return_ticket(int) deve receber "de volta" um ticket (número inteiro), supostamente obtido anteriormente via get_ticket(), de modo que esse ticket possa ser "reutilizado" por get_tickets subsequentes.

      void return_ticket(int t);
      
    • Mostre (explique) brevemente porque sua get_ticket() retorna inteiros ÚNICOS, i.e., nunca retorna valores repetidos.

      OBS: Caso seja necessário, sua get_ticket() pode ter um número máximo de tickets (NMAX), nesse caso, ele deve retornar \(-1\) para indicar que não pode mais retornar valores novos.

      Veja o vídeo abaixo, para ver a discussão do exercício. Mas assista somente após de tentar resolver o exercício.

  4. Tente implementar o exercício de multiplicação de matrizes com Threads, conforme descrito em AQUI (há um exemplo de solução)
    • Experimente com 2,4 e 8 threads.

1.10. Aula 10   18_fev

1.11. Aula 11   21_fev prova

  • Prova presencial remota
  • Prova no MOJ

1.12. Aula 12   25_fev

1.13. Aula 13   28_fev feriado

1.14. Aula 14   04_mar

1.14.1. Introdução assíncrona ao Gerenciamento de Memória

1.14.2. Vídeos sobre memória

1.15. Aula 15   07_mar

1.16. Aula 16   11_mar

1.17. Aula 17   14_mar

1.17.1. Vídeos


1.17.2. Exercícios

  1. Considere um sistema cuja gerência de memória é feita através de partições variáveis.
    • Nesse momento, existem as seguintes lacunas (áreas livres): 10K, 4K, 20K,18K, 7K, 9K, 12K e 13K, nessa ordem.
    • Quais espaços serão ocupados pelas solicitações: 4K, 10K e 6K, nessa ordem, se:
      • first-fit for utilizado?
      • best-fit for utilizado?
      • worst-fit for utilizado?
  2. Calcule o número de bits para página, quadro e deslocamento.
    • Memória lógica = 512K, Memória física = 512K, Tamanho de página = 8K
    • Tamanho de página = 4K, número de páginas = 8, número de quadros = 16
  3. O que é paginação?
  4. Qua é a diferença entre paginação e segmentação?
  5. Considere que os processos da tabela abaixo devem ser executados em um SO com paginação.
    • A memória total é de 64K, o tamanho das páginas é de 4K e o SO ocupa 8K. Mostre como seria a alocação de quadros para cada processo.
    Processo Mem. (K) T. Chegada T. Execução
    P1 8 0 10
    P2 6 1 15
    P3 15 2 10
    P4 5 3 14
    P5 10 15 5
  6. Qual a diferença entre fragmentação interna e externa da memória principal?
  7. Qual a principal diferença entre os sistemas que implementam paginação e segmentação?
  8. Para que serve o bit de validade nas tabelas de páginas e segmentos?
  9. Nos sistemas com paginação, a rotina para tratamento de page faults está residente na memória principal
    • Esta rotina pode ser removida da memória em algum momento?
    • O que aconteceria se esta rotina não estivesse na memória principal durante a ocorrência de um page fault?
  10. Descreva como ocorre a fragmentação interna em um sistema que implementa paginação
  11. Na figura abaixo está representada um esquema de paginação que utiliza 4 bits para índice da página e 12 bits para deslocamento.   prof_Islene

    questao-memoria-A17.png

    • Considerando esta tabela, indique para cada endereço virtual o endereço físico correspondente ou escreva page fault
      • 0010 0000 0000 0111
      • 0011 0000 1010 0000
      • 0100 0000 0000 0101
      • 1111 1111 1111 1111
      • 0000 0000 0000 0000
  12. Seria possível e/ou viável implementar as conversões de endereços realizados pelas MMU em software, ao invés de usar um hardware dedicado? Por quê?
  13. O que é memória virtual?
  14. Quais das seguintes técnicas e estruturas de programação são "boas" para um ambiente de paginação por demanda? Quais delas são "más"? Explique suas respostas.
    • pilha
    • Busca Sequencial
    • Busca Binária
    • Operações em vetor
    • Simulação
  15. Considere os seguintes algoritmos de substituição de páginas. Classifique estes algoritmos em uma escala de cinco pontos do "ruim" ao "perfeito" de acordo com a sua taxa de erros de página. Separe os algoritmos afetados pela anomalia de Belady daqueles que não o são.
    • Substituição LRU
    • Substituição FIFO
    • Substituição Ótima
    • Substituição da segunda chance
  16. Considere a seguinte sequência de referências de páginas:

    1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6

    • Quantos erros de pághinas iriam ocorrer para os seguintes algoritmos de substituição , considerando um, dois, três, quatro, cinco, seis ou sete quadros? Lembre-se de que todos os quadros estão inicialmente vazios, de modo que a primeira página de cada um implicará em um erro de página.
      • Substituição LRU
      • Substituição Ótima
      • Substituição do Relógio
      • Substituição WSClock
  17. Você consegue imaginar alguma situação em que dar suporte à memória virtual seria uma má ideia e o que se ganha quando não é necessário o suporte a memória virtual? Explique
  18. Exercícios do capítulo 3 do Tanembaum
  19. Qual é a diferença entre paginação e segmentação? Qual a principal diferença entre os sistemas que implementam paginação e segmentação? Por quê alguns sistemas implementam Segmentação com Paginação?
  20. Observe o programa abaixo:
     4: #define PAGESIZE 4096
     5: #define N 500000
     6: char mat[N][PAGESIZE];
     7: void funcao_A(char c) {
     8:   int i, j;
     9:   for (i = 0; i < N; i++)
    10:     for (j = 0; j < PAGESIZE; j++)
    11:       mat[i][j] = c;
    12: }
    13: void funcao_B(char c) {
    14:   int i,j;
    15:   for (j = 0; j < PAGESIZE; j++)
    16:     for (i = 0; i < N; i++)
    17:       mat[i][j] = c;
    18: }
    19: int main() {
    20:   funcao_A('*');
    21:   funcao_B('-');
    22:   return 0;
    23: }
    

    Considere que o seu sistema utiliza paginação e que o endereço mat[i][j] é calculado da seguinte forma: mat[i][j] = mat + (i*PAGESIZE+j)*sizeof(char)

    • Qual função (funcao_A ou funcao_B) irá, provavelmente, ser executada mais rápido?
    • Descreva duas razões relacionadas ao gerenciamento de memória que justificam a sua resposta acima.

1.18. Aula 18   18_mar

1.19. Aula 19   21_mar prova

  • Prova presencial
    • Salas S1 e S2 no bloco UAC
    • horário: das 16h00 às 17h50
    • vacina: a verificação acontece pela equipe da segurança na entrada do campus
    • máscara: uso obrigatório

1.20. Aula 20   25_mar

1.21. Aula 21   28_mar

1.21.1. Vídeos Adicionais

1.21.2. Material de apoio

  • Livro de SO do Prof. Maziero DINF | ResearchGate
    • Leia e resolva os exercícios da Parte VI (Gestão de arquivos)
  • Apresentações de alunos a respeito de sistema de arquivos
  • Familiarize-se com as chamadas:
    • fopen(3), fclose(3), fprintf(3), fscanf(3)
    • fread(3), fwrite(3)
    • fclose(3)
    • open(2), read(2), write(2), close(2)

      Lembre-se que o número entre parenteses significa a página do manual acessado pelo comando man. Logo, para ler o manual da open(2) a chamada correta é man 2 open.

1.21.3. Exercícios

  1. A alocação contígua de arquivos leva a uma fragmentação do disco, explique como essa fragmentação ocorre
    • Essa fragmentação é interna ou externa?
    • Faça uma analogia com a gerência de memória
  2. É possível criar um link simbólico para um arquivo que não existe? E um hard link? Justifique a sua resposta
  3. Por que razão o sistema UNIX não permite hard links de diretórios?
  4. A respeito das imagens abaixo

    lista-ligada.png

    Figure 2: Lista Ligada

    fat.png

    Figure 3: FAT

    inode.png

    Figure 4: INODE

    • A figura 2 apresenta dois arquivos armazenados na forma de uma lista ligada de blocos em disco. A figura 3 apresenta estes mesmos arquivos em uma tabela de alocação em memória (tipo FAT - File Allocation Table). A figura 4 é um exemplo de i-node.
      • Compare e explique as vantagens e desvantagens de se utilizar o armazenamento dos arquivos por lista ligada e por tabela de alocação de memória.
      • Comente vantagens da utilização de i-nodes, como o representado na figura, sobre o uso das tabelas em memória
      • Para arquivos menores que um bloco (ou um i-node) qual é o desperdício no disco? Como o EXT4 minimiza esse impacto?
  5. O início de um mapa de bits do espaço livre parece-se com isto depois que a partição de disco é formatada pela primeira vez: 1000 0000 0000 0000 (o primeiro bloco é utilizado pelo diretório raiz). O sistema sempre busca blocos livres a partir do bloco com o menor número; assim, depois de escrever um arquivo A, que usa seis blocos, o mapa de bits se parece com isto: 1111 1110 0000 0000. Mostre o mapa de bits depois de cada uma das seguintes ações adicionais
    • O arquivo B é escrito, usando cinco blocos
    • O arquivo A é removido
    • O arquivo C é escrito, usando oito blocos
    • O aquivo B é removido
  6. O que aconteceria se o mapa de bits, ou lista de blocos livres contendo a informação sobre blocos de disco livres tivessem sido completamente perdidos em decorrência de um desastre? Há algum modo de recuperar o disco desse desastre ou adeus, disco? Discuta sua resposta, separadamente, para os sistemas de arquivos UNIX e para o FAT-12.
  7. Um certo sistema de arquivos usa blocos de disco de 2KB. O tamanho mediano do arquivo é de 1KB, qual a fração de espaço em disco que será desperdiçada? Você acha que o desperdício para um sistema de arquivos real será mai alto ou mais baixo que esse? Explique.

1.22. Aula 22   01_abr assíncrono

1.22.1. Manipulando arquivos Binários

1.23. Aula 23   04_abr

1.24. Aula 24   08_abr

1.25. Aula 25   11_abr

1.26. Aula 26   15_abr feriado

1.27. Aula 27   18_abr

  • Aula presencial para dúvidas

1.28. Aula 28   22_abr prova

  • Prova presencial

1.29. Aula 29   25_abr

  • Prova presencial

1.30. Aula 30   29_abr

1.31. Aula 31   02_mai última_aula

2. Antes de Começar

Nesta disciplina é esperado que o aluno tenha conhecimento básico da linguagem C tais como:

  • Ponteiros
  • Strings
  • Leitura da Entrada padrão

As subseções abaixo elencam alguns vídeos que recaptulam o conhecimento necessário.

2.1. Material no Youtube

Vídeos com material relacionado ao conteúdo esperado para uso na disciplina.

Tenho disponibilizado vários materiais em meu canal no YouTube, por favor, considere assinar o canal e deixar o joinha :)

2.1.1. Revisão de Ponteiros

Segue abaixo a playlist da revisão de ponteiros no Youtube. Por ora são 5 vídeos que exploram o que é necessário saber para a disciplina de EDA-2.

2.1.2. Strings em C

Aqui um apanhando geral em como se manipula strings na linguagem C. Em uma série que chamei de "Umas Palavras sobre String"

2.1.3. SCANF

O SCANF é uma poderosa função capaz de ler dados da entrada padrão (e de outros arquivos com suas aliases como fscanf(3).

Na série Detonando o SCANF temos, além do uso básico da função abordo algumas curiosidades sobre as funções.

3. Plano de Aulas

O plano de ensino e plano de aulas é um PLANO e pode sofrer modificações ao longo do semestre de acordo com o rendimento da turma.

Curso: Engenharia de Software Período Letivo 2021/2
Disciplina: F. Sistemas Operacionais Código  
Carga Horária: 60 horas Créditos 04

3.1. Ementa

  1. Princípios e características dos sistemas operacionais
    • Conceitos
    • Estrutura
    • Chamadas de sistema
  2. Gerencia de processos e threads, gerencia de memória
    • escalonamento
    • concorrência
    • deadlock
  3. Gerencia de dispositivos de entrada e saída
    • princípios de hardware e software de E/S
    • discos
    • relógios
  4. Sistemas de arquivos
    • arquivos
    • diretórios
    • gerenciamento de espaço em disco
    • consistência do sistema de arquivos
  5. Segurança e proteção
    • criptografia
    • autenticação de usuário
    • ataques
  6. Virtualização.

3.2. Horários das aulas e atendimento

  • Aulas:
    • {segunda,sexta}-feira, das 16:00 às 17:50
  • Atendimento:
    • por e-mail nos dias e horário das aulas
      • caso necessário será aberto uma CALL para sanar as dúvidas
  • E-mail:
    • bruno.ribas EM unb.br
  • Página:

3.3. Método

Aula expositiva por meio de vídeos no Youtube (gravados ou em live stream) ou em sala de aula presencialmente, conversas periódicas em vídeo conferências com os alunos nos horários das aulas, quadro branco (representado pelo tablet), listas de exercícios.

3.4. Critérios de Avaliação

  • A avaliação será feita por um conjunto de provas, trabalhos e listas, com pesos variáveis.
    • As provas serão realizadas presencialmente na FGA
    • As listas serão feitas e entregues pelo sistema MOJ
    • O trabalho será feito e entregue pelo sistema MOJ
      • Caso a nota do trabalho seja muito maior, com uma diferença de 40pontos, que a média ponderada das provas o aluno deverá apresentar, presencialmente, o trabalho.
  • As notas serão compostas por um número inteiro no intervalo \([0,100]\);
  • As avaliações serão compostas por questões, podendo ser, a critério do professor, teóricas e/ou práticas
  • Qualquer tentativa de fraude nas provas implicará em média ZERO no semestre para todos os envolvidos.

3.4.1. Presença

  • Em atividades presenciais será passada uma lista de presença;
  • Para atividades a distância uma atividade específica de presença será passada com um prazo determinado pelo professor.

A entrega DENTRO do prazo é obrigatória para todos os alunos.

3.4.2. Menção Final

As notas serão calculadas conforme a equação abaixo:

\begin{align} M_F = \frac{ P1 + 2*P2 + 3*P3 + Listas + 2*T1}{9} \end{align}

3.4.3. Critérios de aprovação

Obterá aprovação no curso o aluno que cumprir todas as exigências listadas abaixo:

  1. \(M_F >= 50\); e
  2. Presença em \(75\%\) ou mais das aulas.

Por fim, a menção final do curso é dada de acordo com a tabela abaixo:

\(M_F\) Menção Descrição
\(0\) SR Sem rendimento
\([1,29]\) II Inferior
\([30,49]\) MI Médio Inferior
\([50,69]\) MM Médio
\([70,89]\) MS Médio Superior
\([90,100]\) SS Superior

3.5. Cronograma

Data Atividade
Semana 1 Introdução ao conceito de sistemas operacionais
Semanas {2,3} Gerência de Processos
Semanas {4,5,6} Processos e Threads
Semanas {7,8,9,10} Gerenciamento de memória
Semanas {11,12,13,14} Sistema de Arquivos
Semanas {15,16} Virtualização, Segurança e Proteção

3.6. Bibliografia

  • SILBERSCHATZ, A.; GAGNE, G.; GALVIN, P.B. Obra: Operating System Concepts Editor: Wiley Edição 8, Ano: 2008
  • TANENBAUM, A.S. Obra: Sistemas Operacionais Modernos Editor: Pearson Edição 3, Ano: 2010
  • DEITEL, H.M., DEITEL, P.J. e CHOFFNES,D.R. Obra: Sistemas Operacionais. Editor: Prentice Hall Edição 3, Ano: 2005
  • SILBERCHATZ, A.; GAGNE, G.; GALVIN, P.B. Obra: Sistemas operacionais com Java Editor: Campus. Edição: 7, Ano: 2008
  • Tanenbaum, Andrew S., and Albert S. Woodhull. Operating Systems Design and Implementation. Pearson, 3, edition, 2006.
  • Mitchell, Mark, Jerey Oldham, and Alex Samuel. Advanced linux programming. New Riders, 2001.
  • SILBERCHATZ, A.; GAGNE, G.; GALVIN, P.B., Sistemas operacionais com Java, Campus, 7 a Ed, 2008.
  • MACHADO, F.B., MAIA, L.P. ”Arquitetura de Sistemas Operacionais”, 4a edição, LTC, 2007.ISBN: 8521615485,

ISBN-13: 9788521615484.

  • SHAY, W., Sistemas Operacionais, Makron Books, 1996
  • DAVIS, W. Sistemas Operacionais,: uma visão sistemática, Campus, 1991

4. Monitor

Em busca de um MONITOR.

5. Presença

  • VAZIO

6. Notas

6.1. Listas que valem nota

O acesso nas listas abaixo foi enviado para o e-mail institucional do aluno.

6.2. Consolidadas

  • Px são as provas
  • LS é a nota consolidada das listas, ao todo foram 13 exercícios. Logo a nota é Resolvidos*100/13
  • TO é o trabalho
  • PP é a porcentagem de presença (consolidada nesta tabela no fim do semestre)
  • situação é a situação final na disciplina, gerada após todas avaliações
  • As penalidades nas avaliações são relativas às chamadas ao getlog do MojinhoBot
  • PP é a porcentagem de presença (consolidada nesta tabela no fim do semestre)
    • Na seção anterior você pode ver o acompanhamento das presenças
  • situação é a situação final na disciplina, gerada após todas avaliações
  • As penalidades nas avaliações são relativas às chamadas ao getlog do MojinhoBot
matricula PP P1 P2 P3 LS TO MM SIT nome
190023376 100 070 049 035 053 100 058 MM Abraao Alves Ribeiro
190124997 100 070 040 050 092 100 065 MM Amanda Jeniffer Pereira Nobre
190101792 100 100 030 015 069 100 052 MM ANA CAROLINA RODRIGUES LEITE
190102390 100 080 027 050 046 100 058 MM Andre Macedo Rodrigues Alves
170006328 100 100 031 045 100 100 066 MM Ariel Vieira Lima Serafim
190010606 100 100 026 035 038 100 055 MM Artur de Sousa Vieira
190025298 100 100 069 045 076 100 072 MS Bianca Sofia Brasil de Oliveira
170008291 100 100 063 045 076 100 070 MS Cristian Souza Assis Furtado
190106565 100 100 044 060 100 100 074 MS Fernando Miranda Calil
180016563 100 100 031 040 046 100 058 MM Filipe Santana Machado
170142434 100 070 017 020 046 000 023 II Gabriel Araujo Souza
180100831 100 093 022 070 069 100 068 MM Gabriel Avelino Freire
180018019 100 100 033 035 061 100 059 MM Guilherme Daniel Fernandes da Silva
170034992 100 100 030 050 061 100 063 MM Gustavo Afonso Pires Severo
180121847 100 100 021 040 061 100 058 MM Helder Lourenco de Abreu Marques
180136925 100 100 052 050 076 100 070 MS Hugo Rocha de Moura
190125829 100 100 033 030 038 100 054 MM Ian da Costa Gama
180113666 100 100 040 035 038 100 058 MM Italo Alves Guimaraes
180102613 100 100 051 070 061 100 074 MS Italo Fernandes Sales de Serra
190089792 100 100 055 045 076 100 069 MS Joao Victor Correia de Oliveira
180042271 100 100 062 040 092 100 070 MS Joao Vitor Alves de Araujo
180123459 100 100 066 050 092 100 074 MS João Vitor de Souza Durço
180103792 100 100 016 030 046 100 052 MM Julia Farias Sousa
180042386 100 100 043 060 092 100 073 MS Kevin Luis Apolinario Batista
190128712 100 100 025 070 084 100 071 MS Leticia Assuncao Aires Moreira
190032821 100 087 027 040 038 100 055 MM Lorenzo de Lima Alves dos Santos
180113992 100 100 050 050 053 100 067 MM Lorrany Oliveira Souza
190032863 100 100 023 055 100 100 067 MM Lorrayne Alves Cardozo
190111836 100 100 059 070 092 100 080 MS Luan Vasco Cavalcante
180022512 100 080 027 060 053 100 063 MM Lucas de Lima Spinosa dos Santos
170016838 100 100 045 040 100 100 067 MM Lucas Lopes Xavier
180125974 70 ** ** ** ** ** 000 SR Lucas Rodrigues Monteiro
180105825 100 099 025 025 046 ** 030 MI Maicon Rodrigues Queiroz
140155350 100 097 034 025 092 100 059 MM Matheus Filipe Faria Alves de Andrade
150141629 100 100 044 043 084 100 066 MM Matheus Pimentel Leal
170122310 100 100 ** ** 030 100 037 MI Matheus Salim de Oliveira
190129221 100 100 033 010 069 100 051 MM Murilo Perazzo Barbosa Souto
190058650 100 070 034 000 100 100 049 MI Natanael Fernandes Coelho Filho
190094257 100 100 020 058 053 100 063 MM Paulo Henrique de Oliveira Rezende
180129147 100 100 079 040 069 100 071 MS Pedro de Miranda Haick
190036435 100 100 055 080 100 100 083 MS Pedro Henrique Carvalho Campos
180027352 100 100 042 040 053 100 061 MM Rodrigo Carvalho dos Santos
180037242 100 100 060 035 069 100 066 MM Rodrigo Tiago Costa Lima
180130889 100 100 024 035 076 100 058 MM Savio Cunha de Carvalho
190117401 100 100 082 060 100 100 082 MS Thalisson Alves Goncalves de Jesus
190038926 100 100 051 020 053 100 057 MM Victor Eduardo Araujo Ribeiro
180149598 100 100 015 070 053 100 065 MM Victor Hugo Siqueira Costa
190044390 100 100 041 055 084 100 070 MS Victor Rayan Adriano Ferreira
180132385 100 100 022 090 053 100 074 MS Vitor Diniz Pagani Vieira Ribeiro
190118288 100 100 017 040 076 100 058 MM Vitor Eduardo Kuhl Rodrigues
180145363 100 070 060 055 092 100 071 MS Yan Andrade de Sena
média ** 095 039 045 069 097 063 ** Média da turma

Author: Bruno Ribas

Created: 2022-05-04 Wed 19:35

Validate