Table of Contents
- Programação aula a aula.
- 1.1 O que é um sistema operacional, 1.2 História dos sistemas operacionais
- Visao do hardware
- conceitos de sistema operacional; 1.4 chamadas de sistema
- 1.4 chamadas de sistema 1.5 estrutra do sistema operacional.
- => Projetos, fase 1, impares : grupos ímpares
- => Projetos, fase 1, pares - apresentação dos projetos (fase 1) : grupos pares
- 2.2 comunicação interprocesso até solucao de peterson
- 2.2 comunicacao inter processos - comeco de 2.3
- 2.3 problemas clássicos de CIP 2.4 agendamento de processo + problema reader/writer.
- => Projetos, fase 2, pares
- => Projetos, fase 2, impares
- prova 1
- 3.1 Hardware Entrada e Saida 3.2 Software Entrada e Saida 3.2 Software Entrada e Saida
- feriado (Corpus Christ)
- 3.3 impasses
- => Projetos, fase 3, impares
- => Projetos , fase 3, pares
- feriado (evolucao Constitucionalista)
- 4.1 gerenciamento básico de memória 4.2 troca (swap)
- 4.3 memória virtual, 4.4 algoritmos de substituição de página.
- 4.4, 4.5 questões para sistemas de paginação.
- 4.6 segmentação
- => Projetos, fase 4, pares
- => Projetos, fase 4, impares
- 5.1 arquivos 5.2 diretórios
- 5.3 implementação do sistema de arquivos
- => Projetos, fase 5, impares
- => Projetos, fase 5, pares
- prova 2
- Livro texto:
- Criterio de Avaliação:
- Grupos para os projetos.
- Criterios de avaliacao.
- Fase 1:
- Fase 2
- Fase 3
- fase 4
Curso sistemas operacionais 2019 PCS3746 prof. Jorge Kinoshita.
Aulas segunda: 14:00-15:40H, sala B2-4 sexta: 10:20-12:00H, sala B2-4
Programação aula a aula.
1.1 O que é um sistema operacional, 1.2 História dos sistemas operacionais
obter folha de presenca. Apresentacao do curso: programacao aula a aula. Apresentacao do material didatico: livros do Tanenbaum e Silberzchatz. Criterio de avaliacao.
O site http://www.cs.vu.nl/~ast/ é do prof. Tanenbaum. Em seu site, ele deixou o conjunto de transparênicas: http://www.cs.vu.nl/~ast/books/mos2/mos2-ppt.zip que vamos utilizar no curso.
transparencia a ser usada: Chapter-01jk.ppt slides 1-9.
Pedir para os alunos se dividirem em grupos. Da proxima vez pedir grupos com o minimo de alunos e depois acrescenta. Extra: história do Minix, Linux e comentários sobre os projetos da fase 1.
Visao do hardware
Chapter-01jk.ppt 9-14 - Computer Hardware Review - interrupcao. comentários sobre os projetos da fase 1. Alocacao das turmas. Extra: comentario sobre o minix - o microkernel, processos do SO e processos de usuario; o linux como sistema monolitico. Incentivar que as turmas comecem os trabalhos.
conceitos de sistema operacional; 1.4 chamadas de sistema
transparencias Chapter-01jk.ppt 10-23 hardware da aula passada: memoria.
Codigo relativo: os labels ainda nao foram definidos pelo linker. Codigo absoluto: os lables foram definidos pelo linker. O programa em codigo absoluto ao ser colocado na memoria deve entrar de forma "relativa" a algum endereco (um endereco definido em um registrador base).
Quando se faz uma system call, no final a pilha deve ser limpa incrementando o SP. Explicar que tem 4 formas de se implementar push e pop em pilha.
Termina a aula procurando explicar o melhor possivel como funciona interrupcao no computador. Explicar interrupcao de software e de hardware. Relacionar com o projeto de SO. Bater a foto da losa.
1.4 chamadas de sistema 1.5 estrutra do sistema operacional.
Finalizar Chapter-01,ppt 21-35 system calls comentar sobre máquinas virtuais. sistemas monolíticos (linux) x microkernel (minix). falar sobre o projeto: os alunos devem mostrar em que código (arquivo fonte) está a interrupcao de software quando ocorre a system call. No linux, processo usuario nao eh debugado, mesmo se compilado com opcao -g; somente o kernel eh debugado.
=> Projetos, fase 1, impares : grupos ímpares
TRAZER: apresentacao em powerpoint relatorio; enviar para mim via email no dia da apresentacao. relacionar a apresentacao com o codigo do linux e minix quando apropriado.
Se sobrar tempo: Filme: https://www.youtube.com/watch?v=iBVgcjhYV2A Revolution OS https://www.youtube.com/watch?v=xHu7qI1gDPA
=> Projetos, fase 1, pares - apresentação dos projetos (fase 1) : grupos pares
2.2 comunicação interprocesso até solucao de peterson
2.1 introdução aos processos
transparencias "Processes and Threads". 1-24. Se sobrar tempo falar sobre os exercicios que passei. resumir explicacao sobre a diferenca entre treads e processos: basta colocar as transparencias principais sobre thread de kernel e de usuário. Ao explicar sobre threads seja mais rápido em afirmar que existe uma parte que cuida da execucao (PC, registradores, ponteiro de pilha) e outra que cuida dos recursos (memoria, arquivos). process group - lidar com signals de processos em foreground e background. Serah que eh usado muito hoje em dia com o X-windows? group id. Coloquei tudo em um desenho: vetor de interrupcao e tabela de processos.
transparencias "interprocess communication", 1-10,11 Solucao de Peterson: 3 casos: 1- a regiao critica eh acessada em momentos diferentes - sem problema 2- a regiao critica serah acessada quase ao mesmo tempo, mas nao hah conflito em enterregion (o processo 0 ou 1 nao chaveia em enterregion) - sem problema. 3- a regiao critica serah acessada quase ao mesmo tempo e hah conflito em enterregion: o último a fazer turn=process eh o que fica em loop e nao entra na regiao critica.
2.2 comunicacao inter processos - comeco de 2.3
Sleep and Wakeup Para pensar:
- explique a perda de wakeup com o buffer cheio.
- como corrigir o código adicionando uma flag informando que o sinal foi perdido?
Semáforos: Explicar como exclusao mutua pode ser feita usando semáforos. Mostrar o caso em rede de Petri.
A aula retoma o que seja o up e o down em semaforos. transparencias "interprocess communication", 11-25 explicar exclusao mutua com semaforos modelado em redes de Petri. explicar semaforos para resolver o problema do consumidor produtor.
static class: a declaracao permite que uma classe declarada dentro de outra seja visivel fora da classe-pai. http://www.programcreek.com/2009/02/notify-and-wait-example/ wait( ) tells the calling thread to give up the monitor and go to sleep until some other thread enters the same monitor and calls notify( ). notify( ) wakes up the first thread that called wait( ) on the same object. notifyAll( ) wakes up all the threads that called wait( ) on the same object. The highest priority thread will run first. Monitores, condition variables: http://en.wikipedia.org/wiki/Monitor_(synchronization)
2.3 problemas clássicos de CIP 2.4 agendamento de processo + problema reader/writer.
- Transparencias "scheduling - introduction to scheduling"
Explicar melhor o conflito no batch system entre turnround time e throuput. Ao colocar jobs mais curtos na frente diminuo o tempo de retorno medio (mean turnround time) pg 109 - minix3. Ao colocar jobs mais curto na frente aumento a vazao, pg 107; porem posso ter tempos de retorno terriveis para processos longos.
- filosofos jantando.
=> Projetos, fase 2, pares
equipes pares
=> Projetos, fase 2, impares
equipes ímpares
prova 1
3.1 Hardware Entrada e Saida 3.2 Software Entrada e Saida 3.2 Software Entrada e Saida
Transparencias do silberschatz capitulo 13. http://codex.cs.yale.edu/avi/os-book/OS9/slide-dir/PPT-dir/ch13.ppt
até Block and Character Devices - 13.20.
Transparencias do silberschatz capitulo 13. http://codex.cs.yale.edu/avi/os-book/OS7/os7c/slide-dir/ch13.ppt do slide 13.17 até o final. pula a parte de streams.
- discutir como implementei um driver para a porta paralela.
- discutir como poderia ser implementado a syscall getchar e como funciona o mecanismo de interrupcao do teclado.
feriado (Corpus Christ)
3.3 impasses
transparencias: Chapter-03.ppt (mos2-ppt.zip)
=> Projetos, fase 3, impares
equipes ímpares
=> Projetos , fase 3, pares
equipes pares
feriado (evolucao Constitucionalista)
4.1 gerenciamento básico de memória 4.2 troca (swap)
transparecias - chapter 4; 1-11 (mos2-ppt.zip)
-> transp 6 fig c- em 10 minutos a cpu eh usada 20% do tempo, portanto apenas 2 minutos para um processo. em 5 minutos, a cpu eh usada 36% do tempo por 2 processos, portanto apenas 5 * 0.36 = 1.8 minutos ou seja, 0.9 minutos para cada um dos 2 processos.
-> transp 7 relocacao, protecao -> como o minix trata? Relacionar com fork, exec e exit.
-> swapping comentar swapping x virtual memory - dizer que minix 1 e 2 nao usavam nenhum dos dois.
-> transp 10 first fit next fit best fit worst fit qual o minix usa?
-> Como gerenciar memória no evaluator 7t que nao possui MMU?
- para deixar a aula mais interessante deveria comentar como funciona o gerenciamento de memoria no minix sem usar a memoria virtual.
-> dar a aula rapidamente e depois comentar o que eh cada exercicio da fase 4 no final da aula; enfatizando principalmente os exercicios que envolvem o minix.
4.3 memória virtual, 4.4 algoritmos de substituição de página.
transparencias - chapter 04 (mos2-ppt.zip); 12-20 (troca otimo), 32 (comparar FIFO com otimo). Inverted page tables http://www.cs.nmsu.edu/~pfeiffer/classes/573/notes/ipt.html geralmente a tabela de páginas é uma por processo, mas no caso da inverted page table, não. Nesse caso, a memória RAM está dividida em páginas sendo algumas para um processo, outras para outro processo, etc. A inverted page table mapea essa RAM atribuida a vários processos. Funciona graças aa TLB que armazena as entradas da tabela de paginas. https://en.wikipedia.org/wiki/Page_table#Inverted_page_table discute o problema de alocar memoria continua usando tabelas de pagina invertidas.
No maximo ateh algoritmo de troca otimo.
Eh possivel dar a anomalia de Belady usando o algoritmo otimo? Fazer uma simulacao.
4.4, 4.5 questões para sistemas de paginação.
termina algoritmos de troca tanenbaum transparencias vitural memory (2) 21-31 exercicio 4.12 pg 442
Comentar sobre o algorimto worst e como ele pode ser usado para avaliar outros algoritmos pois dah uma piso minimo.
4.6 segmentação
- De implmentacao da excessao de page fault ateh segmentacao.
- memória Linux.
http://www.youtube.com/watch?v=NtKAG46_3Vg - memoria linux http://kerneltrap.org/node/2450/ memoria linux http://www.youtube.com/watch?v=L2SED6sewRw - desenvolvimento do kernel Item 21.6.2 do Silberschatz
Fazer um grande desenho procurando resumir tudo o que foi ensinado ateh agora em SO.
- colocar um mapa geral de um SO - hw e sw.
– hw - MMU, TBL, e page fault . – sw. - interrupcoes em geral, mas acrescentando com as page faults, colocar a transparencia da interrupcao de page fault e relacionar na figura com os algoritmos de troca de paginas.
frisar inodes. transparencias Chapter06 - Qual o tamanho maximo do arquivo? transparencia de i-node no unix.
=> Projetos, fase 4, pares
equipes pares
=> Projetos, fase 4, impares
equipes impares.
5.1 arquivos 5.2 diretórios
5.3 implementação do sistema de arquivos
terminar sistemas de arquivos
- discutir o gerenciador de arquivos no minix. (cap 5 do projeto e implementacao).
=> Projetos, fase 5, impares
equipes impares
=> Projetos, fase 5, pares
equipes pares
prova 2
Livro texto:
Sistemas Operacionais - Projeto e Implementação ; Tanenbaum A.S. Woodhull A.S.; Bookman terceira edição Obs: Este livro contém o Minix que serviu de base para a criação do Linux, mas a versão atual é a 3.0.
Bons Livros de apoio:
- Sistemas Operacionais com Java; Silberschatz, Galvin, Gane; Editora Campus
Obs: Este livro apresenta os conceitos de forma mais clara que os livros do Tanenbaum. O titulo "com java" se refere a exemplos em java e nao a um sistema operacional em java (que faz uso de threads do SO, e do gerenciamento de memoria para a criacao de objetos e portanto nao eh adequada para se criar SO). A Editora Campus / Esevier publicou a oitava edicao desse livro.
- Sistemas Operacionais Modernos 3a. edição; Tanenbaum A.S.; Prentice Hall
Obs: Este livro é muito parecido com "Projeto e Implementação" mas não contém o Minix. Por outro lado é mais didático e contém mais informação que o outro.
Sobre Linux: Robert Love, Linux Kernel Development Understanding the Linux Kernel – Publisher: O'REILLY http://www.google.com/books?q=isbn:978-0-596-00565-8 Linux Kernel in a Nutshell – Publisher: O'REILLY: http://www.kroah.com/lkn/ UNIX Internals: The New Frontiers – Author: Uresh Vahalia http://www.google.com/books?q=isbn:9780131019089 Design of The Unix Operating system – Author: Maurice J.Bach http://www.google.com/books?q=isbn:9780132017992 Professional Linux Kernel Architecture [Paperback] Wolfgang Mauerer (Author)
Cursos http://www.cs.berkeley.edu/~kubitron/courses/cs162-F10/
Criterio de Avaliação:
O aluno deve ter mais que media 5 nas provas e nos trabalhos.
Nota final = (3 P1 + 4 P2 + 3 P)/10
Caso nao tenha, a nota a ser lançada eh a menor delas. Exemplo: se o aluno tirar como notas de prova, 3 e 5 entao terah como media de nota de prova (3*3 +4*5)/7 = 4,1 que serah a media a ser lancada como nota final independentemente de ter tirado 10 nos trabalhos.
Nota final = (3 P1 + 4 P2)/7
Grupos para os projetos.
Criterios de avaliacao.
- tempo: 20 minutos por equipe, com 5 minutos para perguntas.
- usar powerpoint para explicar o que foi feito.
- apresentar o sistema rodando ao vivo (muito importante!!!) (caso contrário 1 ponto a menos no mínimo na nota).
- entregar um relatorio em pdf no dia da apresentacao. Serah descontado um ponto por dia de atraso na entrega do relatorio.
O relatório e apresentacao em powerpoint devem conter: a. todos os passos para desempenhar a tarefa com referencias caso houver (a sites, livros, etc.). b. print screens da tela - geralmente da maquina virtual. A nota costuma ser dividida entre os alunos que apresentarem o trabalho em pesos iguais; porém os pesos podem ser alterados a critério dos alunos. 8 - bom; o aluno fez o esperado. 10 - melhor que o esperado. cada equipe deve entregar o relatorio no dia da apresentacao via email; cada dia de atraso corresponde a um ponto a menos.
Fase 1:
Objetivos gerais: . criar processos de usuários que facam chamadas de sistema e observar como elas se comportam. . system call faz com que o processador passe do modo usuário para o modo kernel. Como isso ocorre? É possível visualizar isso? . dados do kernel sao mais difíceis de serem visualizados por processos comuns. Como o "ps" e "top" visualizam dados do kernel? Através de /proc. . fazer pequenas alteracoes no kernel. Exemplo: fazer o kernel imprimir uma mensagem em um dado momento.
Criei um blog para os trabalhos de SO em: http://linux-kernel-lab.blogspot.com.br/ A classe serah dividida em 10 equipes e cada uma terah o trabalho de acordo com: http://linux-kernel-lab.blogspot.com.br/2018/04/assignments-1.html O primeiro relatorio da turma do Shibata estah em: http://linux-kernel-lab.blogspot.com/2018/05/a-first-assignment-report.html
Fase 2
Veja no blog
adicionar https://www.linuxjournal.com/article/8144 para leitura
Fase 3
no blog
fase 4
no blog