Ementa
Componentes de um sistema. Administração dos recursos: memória principal e secundária. Administração dos processos: prioridades, interrupção, filas. Comunicação entre processos: semáforos e mensagens. Segurança.
Programa
- Introdução e estrutura de Sistemas Operacionais
- Processos e threads.
- Sincronização entre processos.
- Gerenciamento de memória. Esquemas de gerenciamento de memória.
- Memória virtual.
- Paginação, segmentação, princípio da localidade e do conjunto de trabalho.
- Gerência de Armazenamento. Sistema de arquivos. Memória secundária. Mapeamento de arquivos em disco.
- Dispositivos de entrada e saída.
- Projeto, interface e desempenho de sistemas de entrada e saída.
- Virtualização
-
-
-
Aulas
- Aulas 1 e 2
- Apresentação do curso
- Estrutura de Sistemas Operacionais
- Capitulo 1 e 2 de [1]
- Parte 1 de [7]
- Outros detalhes: https://linux-kernel-labs.github.io/master/lectures/intro.html#basic-operating-systems-terms-and-concepts
- Aulas 3-6
- Conceitos de Processos
- Process Control Block
- Organização
- A árvore de processos
- Criando processos
- Fork (man fork e man clone)
- CreateProcess https://docs.microsoft.com/pt-br/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessa
- Estados
- Extra Zumbis e Órfãos: https://www.geeksforgeeks.org/zombie-and-orphan-processes-in-c/
- Conceitos de Processos
- Aulas 1 e 2
-
-
-
-
-
- Threads
- Conceitos e exemplos
- Libpthreads [8,9]
- Tipos e modelos: http://www.it.uu.se/education/course/homepage/os/vt18/module-4/implementing-threads/
- Comunicação entre processos (IPC)
- Capitulo 3 e 4 de [1]
- Capitulo 4, 5 e 8 de [7]
- Threads
- Aulas XX -> (pos prof. Wagner)
- Memória Princial( Capítulo 8 de [1])
- Conceitos básico
- Hierarquia
- Hardware básico
- Desafos
- Endereço lógico vs endereço físico
- Bibliotecas compartilhadas e ligação dinâmica
- Alocação contínua
- Proteção
- Partições
- Fragmentação
- Segmentação
- Paginação
- Estrutura da tabela de páginas
- Gerenciamento memória física
- Buddy system
- SLABs
- Conceitos básico
- Memória Princial( Capítulo 8 de [1])
- Memória Virtual (Capítulo 9 de [1])
- Espaço de Endereçamento
- Paginação sob demanda
- Copy on Write
- Arquivos mapeados em memória
- Algoritmos de substituição de páginas
- Thrasing
-
-
Bibliografia de Referência
- [1] SILBERSCHATZ, Avi; GALVIN, Peter B.; GAGNE, Greg. Operating system concepts. 7.ed. Hoboken: Wiley. 2005.
- [2] TANENBAUM, Andrew. Sistemas operacionais modernos. Rio de Janeiro: LTC. 1999.
- [3] CESATI, Marco; BOVET, Daniel. Understanding the Linux Kernel. 3rd Edition: O’Reilly, 2005. voinici.ceata.org/~tct/resurse/utlk.pdf
- [4] ROBBINS, Kay; ROBBINS, Steven. UNIX Systems Programming: Communication, Concurrency and Threads. 8th ed., Prentice Hall, 2007.
- [5] GORMAN, Mel; Understanding the Linux Virtual Memory Manager. http://www.informit.com/content/images/0131453483/downloads/gorman_book.pdf
- [6] DOWNEY, Allen B., The Little Book of Semaphores, http://greenteapress.com/semaphores/downey08semaphores.pdf
- [7] Livros de SO Prof. Maziero: http://wiki.inf.ufpr.br/maziero/doku.php?id=socm:start
- [8] Manual de Pthreads (mas você pode usar qualquer que encontrar): https://computing.llnl.gov/tutorials/pthreads/
- [9] Outra manual de Pthreads: http://advancedlinuxprogramming.com/alp-folder/alp-ch04-threads.pdf
Exercícios Memória / Armazenamento
- Explique a diferença entre fragmentação interna e externa.
- Dadas partições de memória de 100KB, 500KB, 200KB, 300KB e 600KB (em ordem), como cada um dos algoritmo: Fist-fit, best-fit e worst-fit, alocariam processos de 212Kb, 417Kb, 112KB e 426KB? Qual dos algoritmos faria o uso mais eficiente de memória.
- Explique os seguintes algoritmos para substituição de páginas (page replacement): FIFO, Optimal e LRU. No caso do LRU, você deve explicar quais são as políticas de aproximação para o LRU.
- Como funciona o mapeamento de arquivos em memória, qual a vantagem de utilizar esse modo de acesso.
- O que é o modo de alocação de memória “Buddy System”. Qual a sua desvantagem?
- O que é o mecanismo de alocação chamado SLAB?
- O que é o Overcommit de memória?
- Qual a relação entre o espaço de endereçamento virtual e utilização da memória física?
- O que significa dizer que a memória virtual de um processo é 50MB, a memória residente 20MB e a memória compartilhada 10MB.
- Quais as vantagens e desvantagens de guardar o nome do programa criador junto aos atributos do arquivo?
- Na semântica de sistema de arquivos do Unix o que acontece quando um arquivo que está aberto é removido?
- Sobre métodos de alocação de espaço, responder:
a) Como funciona a alocação de espaço contígua? Que problemas apresenta?
b) Como funciona a alocação de espaço por encadeamento (linked allocation). Quais os problemas apresentados por este método?
c) Como funciona a FAT (File-Allocation Table) usado pelo MS-DOS, qual a diferença em relação à alocação por encadeamento simples?
d) Mostre como ficaria a tabela FAT para um arquivo composto pelos seguintes blocos: 220, 340, 500, 600.
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?
f) Como funciona a alocação de espaço indexada? Que problemas da alocação usando encadeamento ela tenta resolver?
f) Dentro da alocação indexada quais são os mecanismos usados para guardar os índices?
g) O que são i-nodes? Em qual mecanimos de alocação indexada eles se enquadram? - Considere um sistema com i-nodes com 15 entradas. Nestes i-nodes as 12 primeiras entradas são para alocação direta; a 13 entrada para alocação simples indireta; a 14 para alocação dupla indireta e a 15 para alocação tripla-indireta. Considere ainda que cada bloco tem 512Kb e os endereços 4 bytes. Como ficaria a estrutura de inodes para armazenar um arquivo de 129024 bytes (252 blocos)?
- 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?
- Considere um sistema onde o espaço livre é gerênciado por uma lista de espaço livre. Suponha que o ponteiro para a lista de espaços-livres foi perdido. Esta lista pode ser reconstruída? Explique sua resposta.
- Quais são os métodos para gerênciamento de espaço livre em disco?
- Quais as estapas de um checkagem de consistência de um file system?
- Como funcionam os sistema de arquivos baseados em Journaling? Quais suas vantagem? O que tentam garantir?
- Explique os seguintes algoritmos de escalonamento de requisições de disco: FCSF, SSTF (Shortest-Seek First), SCAN, C-SCAN e LOOK.
- Compare RAID0, RAID1, RAID5 e RAID6.
- Suponha que você possui 4 discos rígidos de 750GB. 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?
~