Table of Contents

Curso sistemas operacionais 2020 PCS3746 prof. Jorge Kinoshita.

Aulas segunda: 14:00-15:40H, sala B2-4 sexta: 10:20-12:00H, sala B2-4

1 Programação aula a aula.

1.1 <2020-05-08 sex> SO1 1.1 O que é um sistema operacional, 1.2 História dos sistemas operacionais

1.1.1 apresentacao dos alunos

via google meet

1.1.2 acertar equipes

realocar os alunos.

1.1.3 como perguntar?

Use sempre o google classroom em https://classroom.google.com/u/0/c/OTkwMjkyNzIxOTla NAO USE EMAIL.

1.1.4 Apresentacao do curso: programacao aula a aula.

1.1.5 Apresentacao do material didatico:

  • livros do Tanenbaum e Silberzchatz.

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. O site http://www.cs.vu.nl/~ast/ é do prof. Tanenbaum.

1.1.6 Criterio de avaliacao.

Avaliacao por aula: Antes do comeco da proxima aula, propor um testinho. Preencha a atividade que lhe serah enviada via google classroom. No comeco da aula que vem (como em todas), aplicaremos os testinhos que voces mesmos fizeram. Segue um video explicando como criar testinhos usando o google form:

A cada aluno vou atribuir uma video-aula que eu gravei. O aluno deve assistir o video e gerar um quiz, ou seja, um teste de multipla escolha, marcado com a resposta correta. Alem disso, anexe no quiz, o video correspondente aa aula para ajudar o seu coleguinha a descobrir a resposta assistindo o video. Esse quiz deve ser enviado um dia antes da aula. Na aula eu passarei os testes. Voces poderao assistir novamente os videos e responder os testes com calma. O prazo de entrega do teste eh no final da aula. Nao colem!

Segue um video que fiz explicando como o aluno deve responder a atividade de gerar um teste:

1.1.7 trabalho em grupo

Pedir para os alunos se dividirem em grupos. Pedir grupos com o minimo de alunos e depois acrescenta. Comentários sobre os projetos da fase 1.

1.1.8 Videos seguindo o indice do livro do Modern Operating Systems: https://www.pearson.com/us/higher-education/program/Tanenbaum-Modern-Operating-Systems-4th-Edition/PGM80736.html?tab=contents .

1.1 WHAT IS AN OPERATING SYSTEM?

-V1: https://www.youtube.com/watch?v=ChKF-RQujU8

1.1.1 The Operating System as an Extended Machine 4

-V2: https://www.youtube.com/watch?v=oZ74db-0eZE

1.1.2 The Operating System as a Resource Manager 5

-V3: https://www.youtube.com/watch?v=S8vWmKziGEI

1.2 HISTORY OF OPERATING SYSTEMS 6

-V4: https://www.youtube.com/watch?v=gQYhCzqGFvg

-V5: https://www.youtube.com/watch?v=RGTPMqIg3zw

1.2.1 The First Generation (1945-55): Vacuum Tubes 7

1.2.2 The Second Generation (1955-65): Transistors and Batch Systems 8

-V6: https://www.youtube.com/watch?v=2RrW0CpT6sM

1.2.3 The Third Generation (1965-1980): ICs and Multiprogramming 9

-V7: https://www.youtube.com/watch?v=xxAg_8-Sn7M

1.2.4 The Fourth Generation (1980-Present): Personal Computers 15

-V8: https://www.youtube.com/watch?v=Q3JrrbFVwqU

1.2.5 The Fifth Generation (1990-Present): Mobile Computers 19

1.2 <2020-05-11 seg> SO2 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.

1.2.1 Videos

1.3 COMPUTER HARDWARE REVIEW 20

-V9: https://www.youtube.com/watch?v=0KONRB6B1RM

1.3.1 Processors 21

-V10: https://www.youtube.com/watch?v=2jyC7wy0h-4

-V11: https://www.youtube.com/watch?v=lZSabVXBubc

-V12: https://www.youtube.com/watch?v=SXH2IBzstTw

1.3.2 Memory 24

-V13: https://www.youtube.com/watch?v=hIBDouQ955o

-V14: https://www.youtube.com/watch?v=hazSJvxIZyU

-V15: https://www.youtube.com/watch?v=qgN7pD2ASXE

-V16: https://www.youtube.com/watch?v=htB1YES1AMM

-V17: https://www.youtube.com/watch?v=jiWYKzpQIIM

-V18: https://www.youtube.com/watch?v=EyA-kldFW2Q

1.3.3 Disks 27 1.3.4 I/O Devices 28

-V19: https://www.youtube.com/watch?v=7cyRb2lPxdU

-V20: https://www.youtube.com/watch?v=bY7aX30B5rw

-V21: https://www.youtube.com/watch?v=D4T-lj0mePM

-V22: https://www.youtube.com/watch?v=2FhyIArFDhs

1.3.5 Buses 32

-V23: https://www.youtube.com/watch?v=iqr4PpVMI5E

1.3.6 Booting the Computer 34

1.4 THE OPERATING SYSTEM ZOO 35

-V24: https://www.youtube.com/watch?v=YPTzNeaScJU

1.4.1 Mainframe Operating Systems 35 1.4.2 Server Operating Systems 35 1.4.3 Multiprocessor Operating Systems 36 1.4.4 Personal Computer Operating Systems 36 1.4.5 Handheld Computer Operating Systems 36 1.4.6 Embedded Operating Systems. 37 1.4.7 Sensor-Node Operating Systems 37 1.4.8 Real-Time Operating Systems 37 1.4.9 Smart Card Operating Systems 38

1.3 <2020-05-15 sex> SO3 conceitos de sistema operacional; 1.4 chamadas de sistema

1.5 OPERATING SYSTEM CONCEPTS 38

-V25: https://www.youtube.com/watch?v=4OavacDn6gI

-V26: https://www.youtube.com/watch?v=tv1aEYYQY5I

-V27: https://www.youtube.com/watch?v=ocC7rLBowpY

-V28: https://www.youtube.com/watch?v=wN1wMT_CroI

-V29: https://www.youtube.com/watch?v=GMYWUPWki4A

-V30: https://www.youtube.com/watch?v=u49G8woP4LI

-V31: https://www.youtube.com/watch?v=iPwJM1RWzYQ

-V32: https://www.youtube.com/watch?v=yKgLVglse8I

1.6 SYSTEM CALLS 50

-V33: https://www.youtube.com/watch?v=ju_ZO9adjpg

-V34: https://www.youtube.com/watch?v=twQByH-NMmk

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.

1.4 <2020-05-18 seg> SO4 1.4 chamadas de sistema 1.5 estrutra do sistema operacional.

1.6.1 System Calls for Process Management 53

-V35: https://www.youtube.com/watch?v=8CloXO26d3k

-V39: https://www.youtube.com/watch?v=ULDiwE87Les

-V40: https://www.youtube.com/watch?v=QQNDmdtqxnk

1.6.2 System Calls for File Management 56

-V36: https://www.youtube.com/watch?v=Y1ar6SkDMjQ

-V41: https://www.youtube.com/watch?v=ZrNk9XW4jsg

1.6.3 System Calls for Directory Management 57

-V37: https://www.youtube.com/watch?v=LPb8cdDsviI

-V42: https://www.youtube.com/watch?v=U45bXeiTsXc

1.6.4 Miscellaneous System Calls 59

-V38: https://www.youtube.com/watch?v=xJE2v_J07Gs

1.6.5 The Windows Win32 API 60

-V43: https://www.youtube.com/watch?v=n1WD7-NYpyM

1.7 OPERATING SYSTEM STRUCTURE 62 1.7.1 Monolithic Systems 62

-V44: https://www.youtube.com/watch?v=V2JyLvwmLS8

1.7.2 Layered Systems 63

-V45: https://www.youtube.com/watch?v=rtbbrzzJ0R8

1.7.3 Microkernels 65

-V47: https://www.youtube.com/watch?v=TwiRL3dnoW0

1.7.4 Client-Server Model 68 1.7.5 Virtual Machines 68

-V46: https://www.youtube.com/watch?v=4XAZh2gCKrQ

1.7.6 Exokernels 72

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.

1.5 =============> <2020-05-22 sex> * Feriado: Corpus Crhisti; facultativo; prefeito mudou o dia do feriado

1.6 =============> <2020-05-25 seg> Feriado: Recesso Revolucao Constitucionalista; adiantado.

1.7 <2020-05-29 sex> => Projetos, fase 1, impares : grupos ímpares

apresentacao em powerpoint relatorio; enviar como atividade do google classroom. apresentacao exportando a tela com o codigo do linux

1.8 <2020-06-01 seg> => Projetos, fase 1, pares - apresentação dos projetos (fase 1) : grupos pares

1.9 <2020-06-05 sex> SO5 2.1 Introducao a processos,

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.

1.9.1 Formulario ao final da aula

Pessoal, vejam os videos em:https://www.youtube.com/watch?v=sj5itP-mmX8&list=PLCZ_OtmdHPmXNQdhkag9q0E-FIK6WURZA

ou se vc. quiser ir relacionando com o livro do Tanenbaum, veja:http://www2.pcs.usp.br/~jkinoshi/2020/so-20.html#org39a30e8

Preencha o formulario a seguir de acordo com os videos:https://docs.google.com/forms/d/e/1FAIpQLSeSF9E7LiiCGtYAh25cy6ospBXzJInQgi3mKC9PlS-9lAVwkA/viewform?usp=sf_link

O prazo se encerra ao final da aula de sexta, 12:00H.O formulario vale como nota de participacao em aula e frequencia.

1.9.2 videos

2.1 PROCESSES 85

-V48: https://www.youtube.com/watch?v=sj5itP-mmX8

2.1.1 The Process Model 86

-V49: https://www.youtube.com/watch?v=iO5EgJlWmTM chaveando processos

2.1.2 Process Creation 88

-V50: https://www.youtube.com/watch?v=WCIKoYvCp28

2.1.3 Process Termination 90

-V51: https://www.youtube.com/watch?v=UgSUCFQmR50

2.1.4 Process Hierarchies 91

-V52: https://www.youtube.com/watch?v=tSnT9SYAb9A

2.1.5 Process States 92

-V53: https://www.youtube.com/watch?v=uZgfu4fGtN0 estados processos

-V54: https://www.youtube.com/watch?v=jziGvoRi3L4 escalonador.

2.1.6 Implementation of Processes 94

-V55: https://www.youtube.com/watch?v=DEbss7xv-Mw

2.1.7 Modeling Multiprogramming 95

-V56: https://www.youtube.com/watch?v=0utwv0WuYuE

2.2 THREADS 97

-V57: https://www.youtube.com/watch?v=EPExwXZ8e38

-V58: https://www.youtube.com/watch?v=QjiciDGmyic

-V59: https://www.youtube.com/watch?v=CEc7g_Yi6Jo thread model 3

2.2.1 Thread Usage 97

-V60: https://www.youtube.com/watch?v=jt6uc6Z28SQ word processor

-V61: https://www.youtube.com/watch?v=VgDsnZv38cM worker thread

2.2.2 The Classical Thread Model 102 2.2.3 POSIX Threads 106 2.2.4 Implementing Threads in User Space 108

-V62: https://www.youtube.com/watch?v=QD_GCqSYDGE threads user space

-V63: https://www.youtube.com/watch?v=kafyPq3uJms threads user space - limitacao

2.2.5 Implementing Threads in the Kernel 111

-V64: https://www.youtube.com/watch?v=Yasqw4H5Lx4 threads kernel

2.2.6 Hybrid Implementations 112 2.2.7 Scheduler Activations 113 2.2.8 Pop-Up Threads 114

-V65: https://www.youtube.com/watch?v=pc_S9XwfwaU pop-up threads

2.2.9 Making Single-Threaded Code Multithreaded 115

-V66: https://www.youtube.com/watch?v=T6PWKcF9gi0 thread ; variaveis locais

1.10 <2020-06-08 seg> SO6 2.2 comunicacao inter processos ateh semaforos;-

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.

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.

2.3 INTERPROCESS COMMUNICATION 119 2.3.1 Race Conditions 119

-V67: https://www.youtube.com/watch?v=aCqYiUkb-U4

2.3.2 Critical Regions 121

-V68: https://www.youtube.com/watch?v=3qel24yJmt4

-V69: https://www.youtube.com/watch?v=Pcna-c4vfR8

2.3.3 Mutual Exclusion with Busy Waiting 121

-V70: https://www.youtube.com/watch?v=2TZsKksMPaM

-V71: https://www.youtube.com/watch?v=slwApmfX96c

-V72: https://www.youtube.com/watch?v=UK6D2OQLmLM

-V73: https://www.youtube.com/watch?v=tMtMr-d3QBs solucao Peterson

-V74: https://www.youtube.com/watch?v=XBJf27Sny4M solucao Peterson casos

-v75: https://youtu.be/1YDKjb_OSbE TSL

2.3.4 Sleep and Wakeup 127

-V76: https://www.youtube.com/watch?v=70nKCN_BQRA

-V77: https://www.youtube.com/watch?v=j3KPgVxddNM

1.11 ============ <2020-06-12 sex> Feriado!?

1.12 <2020-06-15 seg> SO7 2.2 comunicacao inter processos; 2.3 problemas clássicos de CIP (filosofos jantando)

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)

  1. filosofos jantando.

2.3.5 Semaphores 130

-V78: https://www.youtube.com/watch?v=5Z-hxMoxHaY

-V79: https://www.youtube.com/watch?v=dI2NqcP40l4

-V80: https://www.youtube.com/watch?v=-zRXjGtCrqg

2.3.6 Mutexes 132

-V81: https://www.youtube.com/watch?v=gRThjsmcC9U

2.3.7 Monitors 137

-V82: https://www.youtube.com/watch?v=wZFe0Y6kNww

-V83: https://www.youtube.com/watch?v=SeHmrCkbUDQ

-V84: https://www.youtube.com/watch?v=IV1v2mBKkNM

2.3.8 Message Passing 144

-V85: https://www.youtube.com/watch?v=pCJxHAuMN-c

2.3.9 Barriers 146

-V86: https://www.youtube.com/watch?v=jjnjz8f9_bo

2.3.10 Avoiding Locks: Read-Copy-Update 148

2.5 CLASSICAL IPC PROBLEMS 167 2.5.1 The Dining Philosophers Problem 167

-V87: https://www.youtube.com/watch?v=lQw2798Rwy8

-V88: https://www.youtube.com/watch?v=fryUNVjWfr8

-V89: https://www.youtube.com/watch?v=uNDx7ahktoE

1.13 <2020-06-19 sex> SO8 2.3 problemas classicos de CIP (reader/writer) 2.4 agendamento de processo .

  1. 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.

2.5.2 The Readers and Writers Problem 169

-V90: https://www.youtube.com/watch?v=_sK2hjAnlXw

-V91: https://www.youtube.com/watch?v=bFy9zcb8H5s

2.4 SCHEDULING 148

2.4.1 Introduction to Scheduling 149

-V92: https://www.youtube.com/watch?v=Yas1QuYlMyI

-V93: https://www.youtube.com/watch?v=s_4SSHh3b6o

-V94: https://www.youtube.com/watch?v=2QdpcZJX-nE

2.4.2 Scheduling in Batch Systems 156

-V95: https://www.youtube.com/watch?v=FGjYeRb4RiU

2.4.3 Scheduling in Interactive Systems 158

-V96: https://www.youtube.com/watch?v=ZxLCgi7WUog

-V97: https://www.youtube.com/watch?v=3TtAngx5gpI

-V98: https://www.youtube.com/watch?v=kgndNSaFUeo

2.4.4 Scheduling in Real-Time Systems 164 -V99: https://www.youtube.com/watch?v=vcmH887u5dI

2.4.5 Policy Versus Mechanism 165

-V100: https://www.youtube.com/watch?v=9Tji-JYhfzc

2.4.6 Thread Scheduling 165

-V101: https://www.youtube.com/watch?v=TIZCvZV81bs

1.14 <2020-06-22 seg> => Projetos, fase 2, pares

equipes pares

1.15 <2020-06-26 sex> => Projetos, fase 2, impares

equipes ímpares

1.16 <2020-06-29 seg> prova 1

1.17 <2020-07-03 sex> SO9 3.1 Hardware Entrada e Saida 3.2 Software Entrada e Saida

Chapter 12 I/O Systems (segundo 10 edicao do livro do Silberschatz - Operating Systems; em edicoes anteriores era o cap 13). 12.1 Overview 489

-V102: https://youtu.be/gEj7wzRtm8g

-V103: https://youtu.be/mi-urnYfrao

12.2 I/O Hardware 490

-V104:https://youtu.be/buMAeqy6soQ

-V105: https://youtu.be/nzOK8QxIeP4 controladora

-V106: https://youtu.be/kpffWje7oh8 polling

-V107: https://youtu.be/n-dPB2MUN4k interrupt

-V108: https://youtu.be/oM4YG0tJU4o DMA

12.3 Application I/O Interface 500

-V109: https://youtu.be/uteELgf-nU0 block character devices

-V110: https://youtu.be/LtsX3uLSxIQ network

-V111: https://youtu.be/TwxRNLl5Yts clock timers

-V112: https://youtu.be/8Rz1bA3UEY8 nonblocking system calls

-V113: https://youtu.be/29LCOJITtHg vectored IO

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.

1.18 <2020-07-06 seg> SO10 3.2 Software Entrada e Saida

12.4 Kernel I/O Subsystem 508

-V114: https://youtu.be/CatSR4CeLBs kernel IO susbsystem

-V115: https://youtu.be/cO0M3hzRn9o caching spooling

-V116: https://youtu.be/f0L3BEAIcds error handling

-V117: https://youtu.be/LT3vrJx5rYI protection

-V118: https://youtu.be/qyp3Dw8KRMQ kernel data structures

-V119: https://youtu.be/7Id7JCyJuz0 power management

-V120: https://youtu.be/dwEVopnu8hc power management android

12.5 Transforming I/O Requests to Hardware Operations 516

-V121: https://youtu.be/Q25fM3x5SKo process -> IO

-V122: https://youtu.be/kJPlX83hFPg process -> IO diagrama

12.7 Performance 521

-V123: https://youtu.be/ZT8ct9i6Qz8 desempenho

-V124: https://youtu.be/dgocA8eBwXg desempenho, rede

-V125: https://youtu.be/Lt4QOsjWIw0 como melhorar desempenho

1.19 <2020-07-10 sex> SO11 3.3 impasses

transparencias: Chapter-03.ppt (mos2-ppt.zip)

6 DEADLOCKS 435

-V126: https://youtu.be/Hqg7NnzGLK8 deadlocks

6.1 RESOURCES 436

6.1.1 Preemptable and Nonpreemptable Resources 436 6.1.2 Resource Acquisition 437

-V127: https://youtu.be/zstBDrFNoFU recursos

6.2 INTRODUCTION TO DEADLOCKS 438

-V128: https://youtu.be/lOMEj1QSAq4 introducao deadlock

6.2.1 Conditions for Resource Deadlocks 439

-V129: https://youtu.be/6texTxT_Qn8 4 condicoes

6.2.2 Deadlock Modeling 440

-V130: https://youtu.be/GnCMJ9Dgpu8 modelagem deadlock

-V131: https://youtu.be/j2XLzKytBQg estragegia deadlock

-V132: https://youtu.be/d3a-jRHLB5Y avoid deadlock

6.3 THE OSTRICH ALGORITHM 443

-V133: https://youtu.be/HqlOGIGL-Gs avestruz

6.4 DEADLOCK DETECTION AND RECOVERY 443

6.4.1 Deadlock Detection with One Resource of Each Type 444

-V134: https://youtu.be/8gpXxxvAAiw detecta deadlock um recurso cada tipo

6.4.2 Deadlock Detection with Multiple Resources of Each Type 446

-V135: https://youtu.be/Bo_BRqtTFVs detecta deadlock multiplos recursos de ada tipo

6.4.3 Recovery from Deadlock 448

-V136:https://www.youtube.com/watch?v=Lo-xDfo4ftM recuperacao deadlock processado

6.5 DEADLOCK AVOIDANCE 450 6.5.1 Resource Trajectories 450

-V137: https://youtu.be/k7zsB4Qh0so deadlock avoidance

6.5.2 Safe and Unsafe States 452

-V138: https://youtu.be/Mqyjs9_u4MY estado seguro

6.5.3 The Banker’s Algorithm for a Single Resource 453

-V139: https://youtu.be/TbRIcPqwBFQ algoritmo banqueiro

6.5.4 The Banker’s Algorithm for Multiple Resources 454

-V140: https://youtu.be/y-eOONQaCys algoritmo banqueiro multiplos recursos

-V141: https://youtu.be/bVUNxX7P-EI banqueiro, discussoes

6.6 DEADLOCK PREVENTION 456 6.6.1 Attacking the Mutual-Exclusion Condition 456

-V142: https://youtu.be/U-71FYdSMZI spooler

6.6.2 Attacking the Hold-and-Wait Condition 456

-V143: https://youtu.be/9X3Gbn3G6v4 ataca hold wait

6.6.3 Attacking the No-Preemption Condition 457

-V144: https://youtu.be/MYpw678a3j8 ataca no preemption

6.6.4 Attacking the Circular Wait Condition 457

-V145: https://youtu.be/FWPV3rYCx_4 ataca espera circular

-V146: https://youtu.be/1p6zD7AMSuE sumario prevencao

6.7 OTHER ISSUES 458 6.7.1 Two-Phase Locking 458 6.7.2 Communication Deadlocks 459xv 6.7.3 Livelock 461 6.7.4 Starvation 463 6.8 RESEARCH ON DEADLOCKS 464 6.9 SUMMARY 464

1.20 <2020-07-13 seg> => Projetos, fase 3, impares

equipes ímpares

1.21 <2020-07-17 sex> => Projetos , fase 3, pares

equipes pares

1.22 <2020-07-20 seg> SO12 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.

3 MEMORY Mnagement 181

-V147: https://youtu.be/eLlveLm6ivA gerenciamento memoria

-V148: https://youtu.be/zZd580zSJbE intro memoria

3.1 NO MEMORY ABSTRACTION 182

-V149: https://youtu.be/1hgo2E0u4lM monoprogramacao

3.2 A MEMORY ABSTRACTION: ADDRESS SPACES 185 3.2.1 The Notion of an Address Space 185

-V150: https://youtu.be/qAAYj2JA_dY particoes fixas

-V151: https://youtu.be/BpdGCte2mGA modelagem uso memoria

-V152: https://youtu.be/2DVS7-nZXF0 realocacao protecao

-V153: https://youtu.be/_9Rspx36EoY gerenciamento memoria minix

3.2.2 Swapping 187

-V154: https://youtu.be/5WEksIY1XAs swapping

-V155: https://youtu.be/Rg-qeAUFdCE swapping crescimento

3.2.3 Managing Free Memory 190

-V156: https://youtu.be/DdzDk7RZpTA memoria livre

-V157: https://youtu.be/-i9uaIvQoGI memoria livre

1.23 <2020-07-24 sex> SO13 4.3 memória virtual

Playlist: https://www.youtube.com/watch?v=z_ZWvjWKTrA&list=PLCZ_OtmdHPmV_67AKwtFe5ZCD6Ood0GfG

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.

3.3 VIRTUAL MEMORY 194

3.3.1 Paging 195

-v158-memoria-virtual.mp4 https://youtu.be/ypnWMVY1yiw

3.3.2 Page Tables 198

-v159-tabela-paginas.mp4 https://youtu.be/obc9ZN2PKFM

-v160-memoria-virtual-assembly.mp4 https://youtu.be/lnTFp8RlMfg

-v161-tab-pags-fora-mmu.mp4 https://youtu.be/hdhLAqiRLMg

-v164-entrada-tab-pg.mp4 https://youtu.be/ZI8c3Vyg1-s

3.3.3 Speeding Up Paging 201

-v165-tlb.mp4 https://youtu.be/vcfxKnF0l6g

-v166-tlb-pid.mp4 https://youtu.be/NPGrgVwI2nI

3.3.4 Page Tables for Large Memories 205

-v162-tab-pgs-grande.mp4 https://youtu.be/z11Fb9VFttU

-v163-tab-pgs-2-niveis.mp4 https://youtu.be/T0b-5JpPSk8

-v167-tab-pgs-invertida.mp4 https://youtu.be/z_ZWvjWKTrA

1.24 <2020-07-27 seg> SO14 4.4 algoritmo de troca de paginas.

transparencias - chapter 04 (mos2-ppt.zip); 12-20 (troca otimo), 32 (comparar FIFO com otimo).

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.

3.4 PAGE REPLACEMENT ALGORITHMS 209

-v168-page-replacement.mp4 https://youtu.be/pKmW56fyPdo

3.4.1 The Optimal Page Replacement Algorithm 209

Eh possivel dar a anomalia de Belady usando o algoritmo otimo? Fazer uma simulacao.

3.4.2 The Not Recently Used Page Replacement Algorithm 210

-v171-NRU.mp4 https://youtu.be/mzU7K8uPdHA

3.4.3 The First-In, First-Out (FIFO) Page Replacement Algorithm 211

-v169-FIFO-anomalia-Belady.mp4.07 https://youtu.be/RtHQqfXIaow

-v170-troca-otimo.mp4 https://youtu.be/Xq2S4uZ3WAg

3.4.4 The Second-Chance Page Replacement Algorithm 211

-v172-second-chance.mp4 https://youtu.be/MfCP1hYNkak

3.4.5 The Clock Page Replacement Algorithm 212

-v173-clock.mp4 https://youtu.be/Qh1dmMeMcc0

3.4.6 The Least Recently Used (LRU) Page Replacement Algorithm 213

-v174-lru.mp4 https://youtu.be/bfDfbo9KR1k

3.4.7 Simulating LRU in Software 214

-v175-NFU.mp4 https://youtu.be/6jCNsjX3mfI

-v176-agind.mp4 https://youtu.be/418Mm_q7H-8

3.4.8 The Working Set Page Replacement Algorithm 215

-v177-working-set.mp4 https://www.youtube.com/watch?v=GNbTd4DlVDs

3.4.9 The WSClock Page Replacement Algorithm 219

-v178-wsclock.mp4 https://youtu.be/zsNOeNzj0o8

3.4.10 Summary of Page Replacement Algorithms 221

-v179-troca-pgs-revisao.mp4 https://youtu.be/5dYWbtFpUxg

1.25 <2020-07-31 sex>) SO15 4.5 questões para sistemas de paginação. 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.

3.5 DESIGN ISSUES FOR PAGING SYSTEMS 222 3.5.1 Local versus Global Allocation Policies 222

-v180-global-local.mp4 https://youtu.be/aRhRs2eqaPA

3.5.2 Load Control 225

-v181-load-control.mp4 https://youtu.be/SOsQ3GK8-yw

3.5.3 Page Size 225

-v182-page-size.mp4 https://youtu.be/fAWTI0x_LLU

-v183-exercicio.mp4 https://youtu.be/pm3syKG4670

3.5.4 Separate Instruction and Data Spaces 227

-v184-separar-espaco-codigo-instrucoes.mp4 https://youtu.be/is2_wpcMBBA

3.5.5 Shared Pages 228

-v185-shared-pages.mp4 https://youtu.be/tQqdQjSGnPM

-v186-copy-on-write.mp4 https://youtu.be/LB2lxUrLs3M

=============> pulei v187, v188

3.5.6 Shared Libraries 229

-v189-shared-libraries.mp4 https://youtu.be/FapiVsW9NA8

3.5.7 Mapped Files 231 3.5.8 Cleaning Policy 232

-v190-politica-limpeza.mp4 https://youtu.be/eTUhf1t2Uh8

3.5.9 Virtual Memory Interface 232

3.6 IMPLEMENTATION ISSUES 233 3.6.1 Operating System Involvement with Paging 233

-v191-topicos-implementacao.mp4 https://youtu.be/1vgER7tpgBI

3.6.2 Page Fault Handling 234

-v192-implementacao-page-fault-handler.mp4 https://youtu.be/B3MkX1YdNfA

3.6.3 Instruction Backup 235 3.6.4 Locking Pages in Memory 236

-v193-lock-page.mp4 https://youtu.be/4dw4pgV65jg

3.6.5 Backing Store 237

-v194-swap-estatico-dinamico.mp4 https://youtu.be/YK6meHaFC8c

3.6.6 Separation of Policy and Mechanism 239

-v195-mecanismo-politica.mp4 https://youtu.be/FcnzoJg1Ros

3.7 SEGMENTATION 240

-v196-segmentacao.mp4 https://youtu.be/N2iIBSn0BDw

-v197-segmentacao-paginacao.mp4 https://youtu.be/RdV2KT6_OiY

3.7.1 Implementation of Pure Segmentation 243

-v198-segmentacao-pura.mp4 https://youtu.be/D6buFu-z1IU

3.7.2 Segmentation with Paging: MULTICS 243

-v199-sementacao-multics.mp4 https://youtu.be/L4o14ttD1UQ

-v200-end-virtual-multics.mp4 https://youtu.be/c-XF-Lo8KIk

-v201-tlb-multics.mp4 https://youtu.be/EYjszYjHMPo

3.7.3 Segmentation with Paging: The Intel x86 247

1.26 <2020-08-03 seg> => Projetos, fase 4, pares

equipes pares

1.27 <2020-08-07 sex> => Projetos, fase 4, impares

equipes impares.

1.28 <2020-08-10 seg> SO16 5.1 arquivos 5.2 diretórios

1.28.1 SO-16

playlist: https://www.youtube.com/watch?v=NXWsyRqCt8g&list=PLCZ_OtmdHPmU_l4NqKO1FQGQK_oA018md 4.1 FILES 265

4.1.1 File Naming 265

4.1.2 File Structure 267

4.1.3 File Types 268 4.1.4 File Access 269

4.1.5 File Attributes 271

4.1.6 File Operations 271

4.1.7 An Example Program Using File-System Calls 273

4.2 DIRECTORIES 276 4.2.1 Single-Level Directory Systems 276 4.2.2 Hierarchical Directory Systems 276

4.2.3 Path Names 277

4.2.4 Directory Operations 280

4.3 FILE-SYSTEM IMPLEMENTATION 281 4.3.1 File-System Layout 281

4.3.2 Implementing Files 282

1.29 <2020-08-14 sex> SO17 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).

frisar inodes. transparencias Chapter06 - Qual o tamanho maximo do arquivo? transparencia de i-node no unix.

1.29.1 SO-17

playlist: https://www.youtube.com/watch?v=ZZtQx-GRy7Y&list=PLCZ_OtmdHPmX77b44dATY9o8WHk9LpsAb 4.3.3 Implementing Directories 287

4.3.4 Shared Files 290

4.3.5 Log-Structured File Systems 293 4.3.6 Journaling File Systems 294 4.3.7 Virtual File Systems 296 4.4 FILE-SYSTEM MANAGEMENT AND OPTIMIZATION 299 4.4.1 Disk-Space Management 299

4.4.2 File-System Backups 306

4.4.3 File-System Consistency 312

4.4.4 File-System Performance 314

4.4.5 Defragmenting Disks 319 4.5 EXAMPLE FILE SYSTEMS 320 4.5.1 The MS-DOS File System 320 4.5.2 The UNIX V7 File System 323 4.5.3 CD-ROM File Systems 325 4.6 RESEARCH ON FILE SYSTEMS 331 4.7 SUMMARY 332

1.30 <2020-08-17 seg> prova 2

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. Estarei apresentando as aulas segundo os topicos de:

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/

3 Criterio de Avaliação:

O aluno deve ter mais que media 5 nas provas e nos trabalhos.

  • Nota final = ( 3*P + 2*T + A)/6
  • P = (P1+ P2)/2 = media de provas
  • T - Trabalhos de SO em 5 fases = (F1+F2+F3+F4+F5)/5
  • A - participacao em aula e trabalho para a proxima aula:
  • - (5.0) assistir videos, fazer testinho para a proxima aula
  • - (5.0) resolver testinhos no comeco da aula.

Deve-se ter no minimo 5 na media das provas P1 e P2. Deve-se ter no minimo 5 no projeto P.

Caso nao tenha, a nota a ser lançada eh a menor delas. Se (P1+P2)/2 < 5 => final = (P1+P2)/2

4 Frequencia:

Os testinhos feitos em aula valerao tambem como frequencia.

5 Grupos para os projetos.

Dividam-se em: 10 grupos de 4 alunos

6 Criterios de avaliacao do projeto.

7 Criterios de avaliacao do projeto.

  • tempo: 20 minutos por equipe, com 5 minutos para perguntas.
  • usar powerpoint para explicar o que foi feito.
  • apresentar o sistema rodando (muito importante!!!)
  • entregar um relatorio em pdf. A entrega serah feita atraves do retorno da atividade. Caso o relatorio nao seja entregue, a nota serah zero. O dia de entrega do relatorio eh ateh o dia da apresentacao da ultima equipe.
  • embora o relatorio seja feito em equipe, cada aluno individualmente deve entregar o relatorio.
  • a apresentacao de 20 minutos serah no google meet.

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.

8 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

Veja o video onde explico o que quero da fase 1 em:

Author: jk

Created: 2020-07-30 qui 18:11

Validate