Componentes do sistema Servios do sistema operativo Chamadas ao sistema (system call) Programas do sistema Estrutura do sistema operativo Mquinas virtuais Projecto e implementao de S.O.
Sistemas Operativos
Luis Almeida@ipt.pt
Componentes do Sistema
Gesto de processos Gesto da memria central (primria) Gesto da memria secundria Gesto de I/O Gesto de Ficheiros Proteco do sistema Rede Gesto do Interpretador de comandos
Cap 1 Estrutura do sistema operativo Sistemas Operativos
Luis Almeida@ipt.pt
Gesto de processos
Um processo um programa em execuo Um processo para realizar a sua tarefa necessita de certos recursos tais como tempo de CPU, memria, ficheiros, dispositivos de I/O, etc Funes do sistema operativo na gesto de processos: criar e eliminar de processos (ex: fork e kill) suspender e activar de processos garantir os mecanismos de:
sincronizao de processos comunicao entre processos
Cap 1 Estrutura do sistema operativo Sistemas Operativos
Luis Almeida@ipt.pt
Sistemas Operativos
Luis Almeida@ipt.pt
Gesto de I/O
O Sistema de I/O :
buffer/cache interface geral de device-driver drivers para dispositivos de hardware especficos
Proteco do sistema
Mecanismo de proteco para controlar os acessos dos programas, processos e ou utilizadores ao sistema e aos recursos. Funes do sistema operativo na gesto de memria :
distinguir acessos autorizadas e no autorizadas a recursos especificar controlos mecanismos de imposio
Sistemas Operativos
Luis Almeida@ipt.pt
Sistemas Operativos
Luis Almeida@ipt.pt
Interpretador de Comandos
Muitos dos comandos entregues passados ao S.O. so instrues de controlo que lidam com:
gesto e criao de processo, gesto de I/O, gesto da memria central e ou secundria, acessos ao sistema de ficheiros, proteco, rede, etc
O programa que l e interpreta essas instrues de controlo o interpretador de comandos Funo: ler e executar o prximo comando
O interpretador de comandos um programa de aplicao que interage com o S.O.
Sistemas Operativos
Luis Almeida@ipt.pt
Chamadas ao sistema
As chamadas ao sistema (system calls) garantem o interface entre um programa em execuo e o sistema operativo. um programa comunica com o S.O. atravs das chamadas ao sistema biblioteca de procedimentos geralmente disponveis em intrues mquina (assembler) mtodos utilizados na passagem de paramtros passagens de parmetros por registo passagem de parmetros atravs da memria passagem de parmetros por pilha
Cap 1 Estrutura do sistema operativo Sistemas Operativos
Luis Almeida@ipt.pt
10
Sistemas Operativos
Luis Almeida@ipt.pt
11
Para cada system call existe uma funo de servio que a trata As funes auxiliares implementam procedimentos necessrios
Sistemas Operativos
Luis Almeida@ipt.pt
12
Hardware
Multics : exemplo da generalizao deste conceito. Organizado como um srie de anis concntricos, onde os interiores tm nveis de privilgios superiores
Sistemas Operativos
Luis Almeida@ipt.pt
13
Sistemas Operativos
Luis Almeida@ipt.pt
14
Para obter um servio (ex: leitura de um bloco de um ficheiro) o processo cliente envia um pedido ao processo servidor O kernel encarrega-se das comunicaes entre os clientes e os servidores
Sistemas Operativos
Luis Almeida@ipt.pt
15
Sistemas Operativos
Luis Almeida@ipt.pt
16
A separao dos mecanismo e das polticas importante pois permite uma maior flexibilizao caso as polticas mudem mais tarde.
Sistemas Operativos
Luis Almeida@ipt.pt
17
Processos
Conceito de processos Escalonamento de processos Operaes com processos Cooperao entre processos Threads Comunicao entre processos
Sistemas Operativos
Luis Almeida@ipt.pt
Processos
Pseudoparalelismo
P3 P2 P1
tempo de CPU
P3 P2 P1
tempo de CPU
Numa mquina monoprocessador, o paralelismo no podes ser entendido no sentido estrito: em cada instante, apenas um processo executado, contudo considerando um intervalo de tempo suficientemente largo vrios processos executaram e progrediram. conceptualmente cada processo possui um CPU virtual a multiplexagem do processador feita a nvel interno, de acordo com critrios especificados priori (multiprogramao) sistemas com multiplas actividades paralelas so designados por sistemas concorrentes
Sistemas Operativos
Luis Almeida@ipt.pt
Conceito de Processo
Processador Programa Processo
: dispositivo fsico (recurso) : sequncia de instrues sem actividade prpria : entidade activa que executa um conjunto de aces determinado pelo programa
Interrupo
Programa Processador Dados de entrada Processo2
: filho fere-se
: livro de primeiros socorros : cozinheiro : medicamentos : actividade de executar o curativo (cuidados mdicos (+ prioridade))
Sistemas Operativos
Luis Almeida@ipt.pt
Conceito de Processo
Processo - programa em execuo;
o processo progride sequencialmente Processo tem associado um programa, dados de entrada e sada e um estado. O ambiente de execuo de um programa visto como uma mquina virtual define:
(1) Um conjunto de operaes:
Operaoes elementares proporcionadas pelo H/W Operaoes de interaco com outros processos
Processo
Sistemas Operativos
Luis Almeida@ipt.pt
5
EM EXECUAO
1
2
BLOQUEADO
3
PRONTO
0- criao :criao de um novo processo 1- bloqueado :recurso no disponvel->espera 2- escalonamento :o despacho selecciona outro processo para correr 3- preeno :o despacho escolhe um processo para execuo 4- rec_disponvel :recurso disponvel NOVO 5- sai :termina o processo
4 0
6
Luis Almeida@ipt.pt
Sistemas Operativos
Registos do CPU
Informaes do despacho do CPU (escalonador) Informao de gesto da memria Contabilizao de utilizao de recursos Estado dos recursos de I/O
Cap 2 Gesto de Processos Sistemas Operativos
Luis Almeida@ipt.pt
Threads
Uma Thread (lightweiht process) a unidade bsica de utilizao do CPU
Consiste num: contador de programa conjunto de registos espao para stack Uma thread partilha com threads parceiras: zona de cdigo zona de dados recursos do sistema operativo o colectivo conhecido como task O processo clssico (ou heavyweight process) equivalente a uma task composta por uma thread Num sistema de multiplas threaded task, possvel que enquanto um dado servidor de threads est bloqueada, uma segunda thread dessa mesma task esteja em execuo Com a utilizao de threads possvel um mecanismo em que processos sequenciais efectuem chamadas ao sistema de bloqueo e mantenham o funcionamento paralelo. Kernel que suportam threads (Mach, OS/2,NT), Hybridos (Solaris 2) Sistemas Operativos
Luis Almeida@ipt.pt
Threads
Sistemas Operativos
Luis Almeida@ipt.pt
1 Introduo
O que um Sistema Operativo? Evoluo histrica
Batch Multiprogramao Tempo-Partilhado Computadores Pessoais Sistemas Paralelos Sistemas Distribudos Tempo Real
Sistemas Operativos
Luis Almeida@ipt.pt
Hardware: CPU + Memria + dispositivos de E/S Programas de Aplicao: Compiladores, Bases de dados, jogos, outros programas Utilizadores: pessoas, mquinas, outros computadores, Sistema Operativo: Camada de S/W que virtualiza o H/W de base transformando-o numa outra mquina com primitivas prprias
compilador
assembler
editor de texto
base de dados
PROGRAMAS de APLICAO
SISTEMA OPERATIVO
HARDWARE
Sistemas Operativos
Luis Almeida@ipt.pt
S.O
Gestor de recursos Bottom-Up View
Programa de controlo
controla a execuo dos programas do utilizador e as operaes dos dispositivos de entrada e sada, E/S (I/O).
Kernel
o nico programa que est sempre em execuo
Sistemas Operativos
Luis Almeida@ipt.pt
Evoluo histrica
Timesharing Systems Batch Multiprogramming Systems Personal Computers Workstation Systems
memory management protection scheduling client server model protocols system software human computer interface scheduling
Monitor de controlo
Os primeiros sistemas (bare machine, antes de 1950s)
Estrutura Software Permitiam carregar os programs em memria; edit-los; verificar a execuo Segurana Ineficiente uso de recursos Processador inactivo na maior parte do tempo tempos de inicializao do sistema muito elevados Cap 1 - Evoluo histrica Sistemas Operativos
Luis Almeida@ipt.pt
Grandes computadores comandados por consola Utlizador nico Operador/Programador/Utilizador Cartes perfurados Assemblers, compiladores Linkers, loaders bibliotecas com as sub-rotinas mais comuns device drivers (rotinas utilitrias de controlo dos perifricos)
Sistemas Batch
Sistemas de processamento batch
* Ideia: Agrupar um conjunto de jobs e depois submete-los ao sistema (execut-los) * Optimizar a utilizao de recursos, tempo de set-up do sistema, etc. * Job - unidade que combina uma sequncia predefinida de comandos, programas e dados * Durante a execuo do job no necessrio interaco com o utilizador * As operaes de E/S podem prosseguir em paralelo Job n+1 Dados * permite a utilizao de mecanismos de Programa optimizao de gesto da memria Job n * Concorrncia limitada entre programs e tarefas de I/O * Possveis atravs de mecanismos de Computador interrupes
Cap 1 - Evoluo histrica Sistemas Operativos
Luis Almeida@ipt.pt
Spooling
On-line
Leitor de cartes
CPU
Impressora
Off-line
Leitor de cartes o o o o
CPU
Impressora
tape drives
tape drives
tape drives
tape drives
Spooling
Leitor de cartes
CPU E/S
Impressora
10
Multiprogramao
Multiprogramao
execuo concorrente de vrios programas vrios programas so mantidos em memria simultaneamente e o CPU multiplexado entre eles
11
PCs
PCs - personal computer
a diminuio do preo do H/W tornou vivel dedicar um computador a um s utilizador dispositivos de E/S - teclados, ratos, monitores, impressoras,etc alguns conceitos de arquitectura dos mainframes no so vlidos neste tipo de sistemas uma vez que o utilizador nico no h necessidade de esquemas complexos de optimizao da utilizao do CPU, nem de proteces.
Sistemas Operativos
Luis Almeida@ipt.pt
12
Tipos de Sistemas
Sistemas Paralelos
Sistemas com mais do que um CPU e que partilham o bus, relgio, memria (por vezes) e devices de perifricos. Vantagens: maior da capacidade de trabalho em tempos mais curtos; economia (a partilha de alguns recursos pelos CPU pode diminuir custos); aumento da segurana (tolerncia a falhas)
Sistemas Distribudos
A carga computacional distribuda por vrios processadores contudo estes no partilham relgio nem memria. Cada processador tem a sua memria local e comunicam-se atravs de linhas de comunicao. Os processadores podem variar em complexidade e funo. Os sistemas distribudo esto vocacionadaos para trabalhar em rede e sero o futuro Vantagens: partilha de recursos; velocidade de computao, segurana:comunicao
13
Arquitectura do computador
Sistemas Operativos
Luis Almeida@ipt.pt
14
Sistemas Operativos
Processos
2010/2011 Licenciatura em Engenharia Informtica Instituto Politcnico de Tomar Renato Panda renato.panda@ipt.pt
Sistemas Operativos
Grande parte dos slides tm como base o livro da cadeira e respectivo material (Silberschatz, Galvin, Gagne). Operating System Concepts [Silberschatz el al.]
Captulo 3: Processes
Contedos
Processos:
Conceito
O que um processo?
Conceito de Processo
Processo = programa em execuo.
E um programa?
() Powerpoint (1 processo) Skype (1 processo)
Um processo inclui:
Program counter Stack Data section
Programa:
Torna-se um processo quando o executvel carregado para a memria. Um programa pode representar vrios processos!
4
4GB
Estados de um Processo
Ao executar, um processo alterna entre vrios estados:
New durante a criao do processo. Ready espera de ser escalonado. Running em execuo. Waiting/Blocked espero de algum evento. Terminated acabou de executar.
10
11
12
Criao de Processos
O processo pai (parent) cria processos filhos (children), que por sua vez criam novos processos, resultando numa rvore de processos. Partilha de recursos (e execuo) entre processos pai e filhos varia bastante entre sistemas operativos:
Partilha de recursos: Pai e filho partilham recursos. Partilham subconjunto de recursos do pai. No h partilha de recursos Execuo: Ambos executam em simultneo Pai espera que o filho termine
13
Processo Pai
Processo Pai
Processo Filho
14
Pai pode terminar processos filhos (via abort) Porque terminam os processos?
Terminao normal, violao de limites, instrues invlidas, falta de memria, interveno do SO, () Em alguns SOs os filhos so terminados caso o pai termine: terminao em cascata.
15
Funciona atravs da substituio completa da imagem do processo actual pela do novo executvel.
Ou seja, um exec nunca retorna.
Porque? Tudo substitudo (cdigo, stack, etc.)
Cdigo do Programa A
fork()
Cdigo do Programa A
Programa B
Processo Pai
Processo Pai
Cdigo do Programa A
exec()
Cdigo do Programa B
Processo Filho
Processo Filho
17
18
IPC: Sinais
Eventos assncronos que as aplicaes podem receber.
Atravs de funes programadas para receber tais eventos.
Exemplos: Ctrl + C envia sinal SIGINT 2 Programa acede a referncia invlida SIGSEGV 9. Ctrl + Z envia sinal SIGTSTP 20
20
IPC: Pipes
Os Pipes permitem a troca de mensagens entre processos.
So unidireccionais Sncronos e limitados
Caso estejam vazios/cheios os processos bloqueiam.
22
Memria Partilhada
Partilhar um segmento de memria real entre dois processos distintos. Praticamente independente da kernel
Vantagem: Rapidez Desvantagem: Muito mais perigoso (porque?)
Processo 1 User Mode Kernel Mode Processo 2
VS.
Processo 1
Processo 2
25
Processo 2
int shmid = shmget(123, 3, 0777) char* p = shmat(shmid, NULL, 0); p[1] = 52;
shmget: Obter ID (e criar!) do segmento com a chave 123 e tamanho 3 bytes. shmat: Mapear a memria partilhada para o espao de endereamento do processo.
Espao de Endereamento P1
25 52
25 52
Espao de Endereamento P2
26
Servidor:
Recebe as mensagens, transforma os parmetros (marshalling) . Executa a funo no servidor. Envia a resposta ao cliente.
28
Mais Perguntas!
O que um PCB? Que aces so tomadas pela kernel para mudar de contexto entre 2 processos? Quando ocorre um fork, que recursos so partilhados entre pai e filho? (stack? heap?) Indica um problema que pode surgir ao programar uma aplicao utilizando sinais? O que espera activa? Porque razo no deve ser usada? Quais os estados de um processo que no consomem CPU?
29
Sistemas Operativos
Threads
2010/2011 Licenciatura em Engenharia Informtica Instituto Politcnico de Tomar Renato Panda renato.panda@ipt.pt
Sistemas Operativos
Grande parte dos slides tm como base o livro da cadeira e respectivo material (Silberschatz, Galvin, Gagne). Operating System Concepts [Silberschatz el al.]
Captulo 4: Threads
Contedos
Threads:
Conceito
O que e em que consiste uma thread?
Processos single e multi thread Modelos multithread Criao de threads Vantagens e problemas
3
E uma thread?
Unidade bsica de utilizao do CPU. Linha de execuo sequencial dentro de um processo.
Um processo tradicional (heavyweight) tem uma nica thread que controla a execuo single-threaded. Caso um processo tenha vrias threads pode realizar vrias tarefas em simultneo multithreaded.
4
Threads: Porque?
Vrias tarefas de uma aplicao podem ser divididas em threads distintas (e realizadas em simultneo!):
Actualizar o interface grfico Ler / escrever um ficheiro Receber input do utilizador Esperar por uma ligao de rede
Criar e mudar de processo uma tarefa pesada (heavyweight), em contraste com as threads (lightweight)
Threads
Partilham o espao de endereamento Comutao entre threads bastante rpida Comunicao entre threads fcil de implementar (porque?)
7
Threads: Vantagens
Muito mais leves que processos
Criao, terminao, mudana de contexto, sincronizao, comunicao
Capacidade de resposta
Mltiplas tarefas (tasks) em simultneo
Threads
10
Threads: Exemplo
Multiplicao de matrizes: Como funciona? E se existirem 4 cores?
Cada elemento da matriz final pode ser calculado independentemente numa thread diferente!
11
Threads: Exemplo 2
Processador de Texto
12
Main thread
Processo do Servidor
13
Kernel Threads:
Suportadas pelo Sistema Operativo
Windows XP Linux Mac OS X
15
Multithreading: Modelos
N-para-1 (user threads)
Vrias user threads so mapeadas para 1 kernel thread.
So criadas no user space e a kernel no sabe da sua existncia.
Multithreading: Modelos
1-para-1 (kernel threads)
Cada user thread equivale a uma kernel thread.
Threads implementadas pelo SO no kernel space. Kernel responsvel pelo escalonamento de threads.
Para quem tiver curiosidade: Modelos N-to-M e 2-level (pag 131 e 132 do livro)
17
As bibliotecas de threads fornecem ao utilizador uma API para criar e gerir threads.
Estas bibliotecas podem estar no espao do utilizador ou serem directamente suportadas pela kernel. Ateno: Isto no significa que se esteja a usar user-level threads.
Como vimos antes, APIs para chamadas ao sistema.
PThreads (C)
Criar uma nova thread:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);
Java Threads
Threads em java so geridas pela mquina virtual (JVM). Normalmente implementadas usando o modelo fornecido pelo SO do sistema. Podem ser criadas de duas maneiras:
Estendendo a classe Thread (extends) Implementando o interface Runnable (implements)
Exemplo!
22
Threads Pools
Voltando ao Servidor Web (multi threaded)
Criao e destruio de threads demora tempo
Valer ento a pena criar uma nova thread para cada ligao??
web browser HTTP request GET helio_na_praia.jpg HTTP/1.0 HTTP response helio_na_praia.jpg data Processo do Servidor Vantagens: Ligeiramente mais rpido e eficiente Permite controlar o nmero de threads Thread Pool Worker thread User Space Kernel Ligao de rede
Kernel Space
Main thread 23
O que acontece ao receber um sinal? possvel uma thread ter informao privada?
Maioria das bibliotecas suportam atravs de funes prprias.
24
Threads: Percebido?
Dois exemplos em que a utilizao de multithreading tem melhor performance? Indica algumas diferenas (2?) entre user e kernel level threads. mais rpido criar uma thread ou um processo? Porque? Que recursos so necessrios? Que aces so tomadas pela kernel para mudar de contexto entre duas threads? Que recursos so partilhados entre threads do mesmo processo?
Registos? Stack? Heap? Variveis globais?
25
Sistemas Operativos
Escalonamento da CPU
2010/2011 Licenciatura em Engenharia Informtica Instituto Politcnico de Tomar Renato Panda renato.panda@ipt.pt
Sistemas Operativos
Grande parte dos slides tm como base o livro da cadeira e respectivo material (Silberschatz, Galvin, Gagne).
Operating System Concepts [Silberschatz el al.]
Captulo 5: CPU Scheduling
Contedos
CPU Scheduling:
Conceitos bsicos
Escalonamento? O que ? Como? Porque?
Processo em execuo altera entre execuo de CPU e espera por I/O (centenas de vezes!).
Ciclos CPU I/O burst
Importante: Em casos reais o escalonamento lida com vrios processos em simultneo, tendo cada um deles centenas de CPU I/O bursts. Para simplificar, os exemplos que vamos estudar consideram que cada processo tem apenas um CPU burst.
4
Um processo chamado de CPU bound quando faz maioritariamente trabalho computacional. O inverso, usar a maior parte do tempo em operaes de I/O, chamado 5 de I/O bound.
Tipos de escalonamento
Long-term scheduling
Decide que processos podem ser executados Controla o nvel de multiprogramao (mais processos = menos tempo para cada um)
Medium-term scheduling
Decide que processos esto (ou no) na memria principal (swapping) Pode assim gerir o nvel de multiprogramao.
I/O scheduling
Decide qual dos pedidos de I/O pendentes ser servido por determinado dispositivo
Tipos de escalonamento
Dispatcher
Qual o papel do dispatcher? D o controlo do CPU ao processo escolhido pelo escalonador de curto prazo (short-term scheduler)
Mudana de contexto Mudana para o user mode Saltar para a localizao exacta do programa (program counter)
Latncia do Dispatcher tempo gasto para parar um processo e colocar outro em execuo
8
Critrios de escalonamento
Utilizao de CPU
Manter o CPU ocupado o mximo possvel
Throughput
Nmero de processos que completa a execuo por unidade de tempo (ex.: 10/sec, 5/min, 3/hora)
Turnaround time
Tempo que leva a completar um determinado processo
Waiting time
Tempo gasto por um processo em espera (na fila Ready)
Response time
Tempo gasto por um processo desde que foi submetido at que produz a primeira resposta
9
No possvel ter todos estes critrios em simultneo A escolha vai depender do tipo e objectivo do sistema em causa
10
Algoritmos de escalonamento
No Preemptivo (non-preemptive)
Assim que um processo comea a executar (entra no running state e lhe dado o controlo do CPU), este s pra (liberta o CPU) quando terminar ou interromper para I/O (mudando para o waiting state).
Exemplo: Microsoft Windows 3.x
Preemptivo (preemptive)
O SO tem capacidade para interromper um processo em execuo (muda para Ready state) Mais justo, um processo no pode ocupar o CPU por muito tempo
Exemplo: Desde o Windows 95
11
Escalonamento: Exemplo
Tabela de processos:
Instante de chegada do processo Tempo mximo que pode demorar
Priority 3 1 1 Deadline 6 3 0
P1 P2 P3
P2 4 8 7
P3 3 12 7
12
P1 P2 P3
24 3 3
Waiting Time
P2 24 P3 27 Average 17,00
Convoy effect um processo curto atrs de um longo Exemplo: Um processo CPU bound com vrios I/O bound atrs
13
SJF consegue minimizar o waiting time mdio de um conjunto de processos (optimal) Usado por exemplo no long-term scheduler mas como saber quanto tempo um processo vai levar a executar (CPU burst)?
Waiting Time
P1 3 P2 16 P3 9 P4 0 Average 7
14
, 0 1 (normalmente ) tn = durao real do burst n n+1 = valor previsto para o prximo burst (n+1)
15
P2 0 5 4
P3 15 26 24
P4 2 10 7
Average 6,5 15 13
16
Priority Scheduling
Cada processo tem um valor de prioridade associado O CPU alocado ao processo que tiver menor prioridade
Pode ser preemptivo ou no preemptivo
P2 0 1 P5 6 P1 P3 16 P4 18 19
Processos P1 P2 P3 P4 P5 Burst Time 10 1 2 1 5 Waiting Time
P1 6 P2 0 P3 16 P4 18 P5 1 Average 8,2
Problema: Starvation
Processos com baixa prioridade podem nunca executar Soluo: Aging Com o passar do tempo, a prioridade do processo em causa aumenta
Arrival Time 3 1 4 5 2
17
Priority Scheduling
18
Porque?
O turnaround mdio , por norma, maior que no SJF, no entanto o response time menor.
P2 4 7 7
P3 11 17 17
21
A dimenso do time quantum tem uma grande influncia na performance do sistema O turnaround time depende da dimenso do quantum, mas a relao no directa! O time quantum deve ser menor que 80% dos CPU bursts. Porque? Por norma, o turnaround time pode ser melhorado se a maioria dos processos terminar em 1 time quantum
22
Como calcular R?
w = tempo gasto em espera s = tempo de execuo (estimado)
Processos mais curtos so favorecidos (s menor) No entanto o tempo em espera tido em considerao (aging).
23
P2 1 9 7
P3 5 13 9
P4 9 15 9
P5 5 20 12
24
Multilevel Queue
Fila de processos Ready dividida em vrias, cada fila tem o seu algoritmo de escalonamento
Exemplo com 2 filas:
Primeiro plano (aplicaes interactivas) - RR Segundo plano (batch) FCFS
Diviso temporal cada fila recebe uma determinada quantidade de tempo (ex.: fila1 = 80%, fila2 = 20%)
25
Multilevel Queue
26
27
Escalonamento:
Processos entram na fila Q0, executados por ordem
Cada processo executado durante (at) 8ms Caso no termine dentro dos 8ms, desce para Q1
Processos com CPU burst pequeno (<=8) so prioritrios, sobre processos longos (cpu bound)
29
P2 9 17 15
P3 10 18 14
P4 9 20 14
P5 4 14 6
30
Algoritmos de Escalonamento
ref: pgina 413 do livro de William Stallings.
31
Escalonamento: Multi-Processadores?
At agora vimos escalonamento pensando em sistemas com 1 processador (com 1 core)
Vrios processadores = maior complexidade de escalonamento
Multi-Processadores: Afinidade
Melhor desempenho implica que a carga esteja bem distribuda entre processadores Porque? Que acontece se um processo for migrando entre CPUs em vez de executar sempre no CPU0?
Problema: cache vai ter que ser invalidado num CPU e repopulado no outro.
Afinidade do Processador processo ganha afinidade com o processador onde est a executar
Soft affinity migrao pode acontecer Hard affinity afinidade forada
33
Pull migration
Feita pelo prprio CPU, quando fica idle vai buscar threads em espera (waiting) aos processadores ocupados
Windows 3.x
Escalonamento Cooperativo, sem preempo
Windows 95, 98 e Me
Escalonamento com preempo, no entanto aplicaes 16bits executam sem preempo
35
Filas mais prioritrias executadas primeiro Prioridade 0 reservada para a thread responsvel pela gesto de memria. Quando no h threads nas filas executada a thread idle (ou processo inactivo do sistema)
36
Windows XP Prioridades
Processo pode pertencer a 6 classes de prioridade Dentro de cada classe existem 7 nveis de prioridade relativa que uma thread pode ter Classe de prioridade combinada com a prioridade relativa resulta no valor de prioridade.
37
Windows XP Prioridades
Por defeito a prioridade base = normal Cada vez que o quantum expira a prioridade reduzida
mas nunca desce abaixo da prioridade base.
40
41
Linux 2.6.23
Completely Fair Scheduler
Escalonamento completamente justo usa rvores vermelhas e pretas em vez de listas
42
Sistemas Operativos
(mini) Trabalho Terico-Prtico 1
CPU Scheduling - 2010/2011 Entrega: 2 de Maio (1 aula depois da Pscoa, manuscrito!) Licenciatura em Engenharia Informtica Instituto Politcnico de Tomar Renato Panda renato.panda@ipt.pt
HRRN Multilevel Feedback 3 filas: RR(1), RR(3), FCFS h) Multilevel Feedback com Aging 3 filas: RR(1), RR(2), RR(4) Aging processos inactivos por mais de 4 segundos sobem de fila.
2.
Para cada um dos algoritmos anteriores apresenta: Waiting time, Finish time, Turnaround time, Waiting time mdio e Turnaround time mdio. 44
Sistemas Operativos
Sincronizao de Processos e Threads
2010/2011 Licenciatura em Engenharia Informtica Instituto Politcnico de Tomar Renato Panda renato.panda@ipt.pt
Sistemas Operativos
Grande parte dos slides tm como base o livro da cadeira e respectivo material (Silberschatz, Galvin, Gagne).
Operating System Concepts [Silberschatz el al.]
Captulo 6: Process Synchronization
Contedos
Sincronizao de Processos e Threads:
Condio de corrida (race condition) Seces crticas e excluso mtua (mutexes) Mecanismos de sincronizao
Semforos Monitores Variveis de condio
Processo 1:
anunciar_relacao(Hlio, Amlia);
Processo 2:
anunciar_relacao(Antnio, Paula);
ou ento
Hlio esta numa relao com Antnio Amlia esta numa relao com Paula
ou
Antnio Hlio esta numa esta numa relao com relao com PaulaAmlia
ou at ()
Os processos esto numa race condition, o resultado depende do tempo (timming) em que so executados!
5
Processo 2:
sair(Antnio);
Sincronizao: Exemplo 2
O resultado correcto counter == 50 (e o cdigo funciona se
executado separadamente) No entanto, counter pode acabar com 49, 50 ou 51
Porque?
Depende da concorrncia entre os processos ao executarem counter++ e counter-- A compilao resulta em algo como:
counter++
LD ADD SW R1, @counter R1, R1, 1 @counter, R1
Simplificando
counter++
register1 = counter register1 = register1 + 1 counter = register1
ou
tempo T0: T1: T2: T3: T4: T5: processo P1 P1 P2 P2 P1 P2 instruo register1 register1 register2 register2 counter = counter = resultado = counter register1 = register1 + 1 register1 = counter register2 = register2 - 1 register2 register1 counter = register2 counter = = 50 = 51 = 50 = 49 51 49
Processo j:
save_prime(521);
Resultado da concorrncia entre os dois processos pela varivel pos (race condition)
10
Progresso
Se nenhum processo estiver na seco crtica e alguns processos quiserem entrar, esta deciso s deve envolver os processos nas seces de entrada e sada (da seco crtica)
Espera Limitada
Nenhum processo pode esperar indefinidamente por entrar na seco crtica starvation
14
lock permite a uma thread obter o mutex, garantindo que s ela continua. Outras threads que chamem a funo lock ficam bloqueadas (blocked state) unlock avisa que uma thread est a sair da seco crtica, a libertar o mutex. Desbloqueia uma das threads em espera (passa a ready) 15
espera aqui
No soluo!
Consome CPU enquanto espera Com vrios processos, starvation possvel Deadlocks tambm so possveis
Caso um processo termine (crash) ainda na sua seco crtica Preempo de um processo na zona crtica (com baixa prioridade), por um de alta prioridade que est bloqueado
16
Problemas:
Demasiado perigoso para user code, limita o funcionamento do SO No funciona com mltiplos processadores / cores
Chamado de spinlock, por vezes usado em seces crticas (muito pequenas) pelo prprio SO / kernel
17
O compilador pode ter optimizado o if, colocando o counter num registo. Noutro processo o counter incrementado directamente na memria Especialmente relevante com mltiplos processadores
18
Sincronizao: Semforos
Mecanismo de sincronizao que no requer espera activa
Tem um valor associado (contador de acesso controlado) Duas operaes atmicas: wait() e signal()
wait(s)
Se contador > 0, decrementa o contador e continua Se no, bloqueia o processo ou thread
signal(s) ou post(s)
Incrementa o valor do semforo, se houver processos bloqueados, desbloqueia um deles
19
Sincronizao: Semforos
Dois tipos de semforos:
Binrios variam entre 0 e 1 (chamados de mutex locks) Contagem variam entre 0 e N
Ou seja, possvel utilizar tambm como mutex locks
Estrutura de um semforo
contador: processos bloqueados:
2 P3 P1 P6
Semforos: Implementaes
Semforos System V
Funciona com arrays de semforos
semget() criar array de semforos semctl() operaes de controlo (definir valor, destruir) semop() operaes sobre o semforo (wait e signal)
Semforos POSIX
Utilizao bastante mais fcil
Funes: sem_init, sem_wait, sem_post, sem_close
Deadlocks e Starvation
Tendo dois semforos Q e S inicializados a 1
Processo 1
wait(S); wait(Q); /* seco crtica */ signal(S); signal(Q);
Deadlock dois ou mais processos esto bloqueados e impedidos de proceder pois esperam por algo que s um dos processos bloqueados pode fazer. Starvation um processo espera indefinidamente, embora tenha condies para continuar (nunca escolhido pelo escalonador) prioridades, LIFO, Livelock processos que mudam continuamente de estado por aces de outros processos, no fazendo no entanto qualquer trabalho til
22
23
Consumidor
read_pos
23 65 12
write_pos
Produtor
25
ex
26
Sistemas Operativos
Deadlocks
2010/2011 Licenciatura em Engenharia Informtica Instituto Politcnico de Tomar Renato Panda renato.panda@ipt.pt
Sistemas Operativos
Grande parte dos slides tm como base o livro da cadeira e respectivo material (Silberschatz, Galvin, Gagne).
Operating System Concepts [Silberschatz el al.]
Captulo 7: Deadlocks
Contedos
Deadlocks:
O que um deadlock? Caractersticas Grafos de alocao de recursos
Deadlock: O que ?
Bloqueio permanente de um conjunto de processos, em que cada um tem em sua posse recursos necessrios para que os outros avancem
No existe uma soluo eficiente!
Deadlock: Exemplo 2
a b
Ponte apenas com uma faixa, existem 2 seces (a, b) que representam os recursos partilhados Quando h deadlock necessrio que um (ou mais) carro recue para libertar a seco
Preempo de recursos e reverter a situao
Starvation tambm possvel (como?) Grande parte dos SOs no previnem / tratam deadlocks, partem do princpio que nunca acontecem.
5
Deadlocks
Recursos:
Reutilizveis
Utilizados por um processo de cada vez e depois libertados (sem que nada seja consumido/gasto) Ex: CPUs, dispositivos de I/O, semforos, memria, Deadlock: acontece se 2 processos esperam por um recurso que o outro tem em sua posse
Consumveis
Recursos que so criados (produzidos) e destrudos (consumidos) Ex: Sinais, interrupts, mensagens, buffers I/O, Deadlock: pode acontecer se a funo em causa for bloqueante
6
Consumveis:
Funo receive bloqueia espera de uma mensagem
P1 receive(P2); ... send(M1,P2); P2 receive(P1); ... send(M2,P1);
7
Deadlock: Caractersticas
Para que um deadlock possa ocorrer so necessrias 4 condies: Excluso mtua
Apenas um processo pode utilizar um recurso num determinado momento (no h partilha)
Deadlock: Caractersticas
No preempo (non preemption)
Um processo no pode ser forado a libertar um processo em sua posse, apenas este o pode libertar voluntariamente depois de terminar
a) sem deadlock
b) com deadlock
11
Possibilidade vs Existncia
Possibilidade de deadlock quando: Excluso mtua (mutual exclusion) No preempo (non preemption) Manter e esperar (hold and wait) Deadlock existe quando: Excluso mtua No preempo Manter e esperar Espera circular (circular wait) Como lidar com os deadlocks?
14
Preveno de Deadlocks
Desenhar o sistema de forma a que nunca exista a hiptese de deadlock
De forma indirecta
Prevenir a ocorrncia de uma das 3 condies
Excluso mtua No preempo Manter e esperar
De forma directa
Prevenir a ocorrncia de espera circular (4 condio) Como evitar cada uma das 4 condies?
16
Preveno de Deadlocks
Excluso Mtua
De forma geral no pode ser desactivada
Essencial em recursos no partilhveis, nestes casos o SO tem que suportar excluso mtua.
Preveno de Deadlocks
No Preempo
possvel evitar esta condio de vrias formas:
Quando um processo bloqueia (porque?), deve libertar recursos que possui SO pode obrigar um processo a libertar recursos que so necessrios para que outro execute
Algo prtico apenas em recursos cujo estado actual fcil de salvar / restaurar (exemplo?)
Espera Circular
Prevenida executando pedidos de recursos de forma ordenada. Ao requisitar recursos do tipo B, o processo s pode requisitar recursos dos tipos seguintes (C, )
Ineficiente, atrasa processos e recusa recursos de forma desnecessria
18
Em ambos os casos necessrio saber (previamente) os recursos necessrios por cada processo
19
Algoritmo do Banqueiro
Estado do sistema (state) reflecte a alocao (actual) de recursos por parte dos processos (allocation matrix) Estado seguro (safe state) = quando existe pelo menos uma sequncia de alocaes de recursos que no resulta em deadlock.
Estado inseguro o contrrio
Algoritmo do Banqueiro
Processos tm de informar sobre o mximo de recursos que podem necessitar (claim matrix) Ao requisitar recursos, um processo pode ter que esperar Se obtm todos os recursos tem de terminar em temo finito
21
Algoritmo do Banqueiro
Algoritmo do Banqueiro
Algoritmo do Banqueiro
Algoritmo do Banqueiro
Algoritmo do Banqueiro
Como funciona?
A cada pedido de recursos, assumimos que os recursos so alocados e verificamos em que estado fica o sistema:
Se o sistema continuar num estado seguro (safe state), pedido satisfeito Caso contrrio (estado inseguro), processo bloqueado at ser possvel satisfazer o pedido
28
Ideia do algoritmo:
Encontrar processo cujos pedidos (de recursos) possam ser cumpridos com os recursos disponveis Supor que os pedidos so concedidos e que o processo termina, libertando todos os seus recursos Repetir para os outros processos (se possvel)
R1 R2 R3 R4 R5 W =. 0 0 0 0 1
R1 R2 R3 R4 R5 W =. 0 0 0 0 1
3. Procuramos um processo (no marcado) cujos pedidos possam ser satisfeitos com recursos em W. P1? P2?
Processo P3 pode ser satisfeito! Q3k Wk
36
R1 R2 R3 R4 R5 W =. 0 0 0 1 1
R1 R2 R3 R4 R5 W =. 0 0 0 1 1
5. Voltamos a procurar um processo no marcado cujos pedidos possam ser satisfeitos com recursos em W
Processo P1? Processo P2? Nenhum dos dois processos tem uma linha em Q menor ou igual a W, ou seja Qik Wk.
38
R1 R2 R3 R4 R5 W =. 0 0 0 1 1
6. O algoritmo termina
Conclumos que existe deadlock no sistema Processos P1 e P2 esto em deadlock!
39
Recuperao de Deadlocks
O que fazer quando deadlock detectado?
necessria uma estratgia de recuperao
Fazer rollback dos processos para um estado anterior e recomear todos os processos
necessrio que o SO tenha mecanismos para fazer backup, rollback e restart dos processos Nada garante que no voltem a entrar em deadlock
40
A maior parte dos critrios no oferece uma ideia do custo que terminar o processo possa ter para o utilizador, apenas para o sistema operativo. Starvation se o processo escolhido for sempre o mesmo?
42
43
Sistemas Operativos
Memria
2010/2011 Licenciatura em Engenharia Informtica Instituto Politcnico de Tomar Renato Panda renato.panda@ipt.pt
Sistemas Operativos
Estes slides tm como base o livro da cadeira e respectivo material (Silberschatz, Galvin, Gagne). Foi tambm usado o livro de William Stallings
Operating System Concepts [Silberschatz el al.]
Captulo 8: Main Memory
Contedos
Gesto de Memria (Introduo)
Re(a)locao, proteco, partilha,
Address Binding Unidade de Gesto de Memria (MMU) Carregamento e Linkagem (Ligao) Dinmica Swapping Alocao de memria
Particionamento fixo (Fixed partitioning) Particionamento dinmico (Dynamic partitioning) Buddy System
Gesto de Memria
At agora j aprendemos
O que um sistema operativo Como funciona O que so processos e threads
Incluindo comunicao, sincronizao e deadlocks
Para isto preciso ter vrios processos em memria ao mesmo tempo partilhar a memria
Gesto de Memria
A memria uma parte central no funcionamento dos sistemas actuais
A memria no mais que uma tabela de bytes (ou words), cada um com o seu prprio endereo.
Armazena conjuntos de bits (0 e 1s) O CPU obtm da memria as instrues a executar (fetch), estas instrues podem causar novos acessos a endereos especficos.
5
Como funciona?
Gesto de Memria
Exemplo: ciclo de execuo de instruo
Instruo a executar obtida da memria, de acordo com o valor do program counter (PC) Instruo descodificada (opcode) e caso necessrio operands so tambm carregados Depois de executada a instruo, pode ser necessrio guardar resultados na memria
Gesto de Memria
Outros conceitos
Programas tm de ser colocados em memria para serem executados. Porque? O CPU s consegue aceder directamente aos registos e memria principal Acesso aos diferentes tipos de memria feito a diferentes velocidades Ao partilhar memria essencial garantir a sua proteco para o correcto funcionamento de cada aplicao.
7
Gesto de Memria
Em sistemas multiprogramados a memria partilhada entre processos Para o programador por norma impossvel saber para onde ser carregado o seu programa ao ser executado Para que seja possvel fazer swap necessrio permitir que os processos sejam realocados durante a execuo
Address Binding
Ligao de endereos de instrues e dados memria fsica (address binding) pode ocorrer em 3 fases:
Compilao Caso se saiba priori o local da memria a ser usado, possvel gerar endereos absolutos. Necessrio recompilar se o local mudar Carregamento Caso a localizao no seja conhecida na compilao necessrio gerar cdigo realocvel Execuo Caso o processo possa ser movido na memria durante a execuo, a associao desta adiada at execuo deste. Requer suporte de hardware para tal (registos base e limite)
9
10
Carregamento Dinmico
O carregamento dinmico consiste em carregar certas rotinas apenas quando estas so chamadas
Melhora a utilizao de memria, rotinas que nunca so usadas no so carregadas til quando existem quantidades grandes de cdigo que so usadas com pouca frequncia No necessrio suporte especial do SO. Programador responsvel por desenhar a aplicao para tirar partido disto
Em C/C++ (POSIX): Tambm possvel carregar classes dinamicamente em Java:
11
12
Dinmica (.so)
create+verbose+quick append
Carregadas dinamicamente durante a execuo do programa output position independent code Como criar (libexemplo.so.1.0):
produce shared object Compilar: gcc -Wall -fPIC -c file1.c file2.c Criar biblioteca: gcc -shared -Wl,-soname,libexemplo.so.1 -o
13
14
Registo limit
Indica o intervalo a que o processo pode aceder
MMU
Faz a traduo de forma dinmica de endereos lgicos para endereos fsicos
15
16
Swapping
Processo pode ser temporariamente retirado de memria (swap out) para armazenamento secundrio, sendo recuperado mais tarde para continuar a executar (swap in)
Maior parte do tempo de swap usado em transferncia proporcional ao total de memria a permutar
Exemplo: taxa de transferncia = 20 MB/s latncia do disco = 10 ms memria a permutar = 5 MB tempo de swap out = 250 ms swap in/swap out = 520 ms (!!)
17
Tcnicas de Particionamento
Particionamento fixo
Parties de tamanho igual Parties de tamanhos diferentes
Particionamento dinmico
Tamanho das parties varia consoante as necessidades dos processos
Buddy System
Parties com tamanho de 2U
Paginao
Tcnica avanada usando parties fixas (tamanho igual)
Segmentao
Tcnica avanada de particionamento dinmico
Particionamento Fixo
Memria dividida em segmentos fixos, processos so carregados parties de tamanho igual ou superior ao seu. Quando todas as parties esto ocupadas o SO pode fazer swap ao processo de uma delas Vantagens
Fcil de implementar Pouco overhead para o SO
Desvantagens
Uso ineficiente da memria, por mais pequeno que seja o processo sempre usada uma partio inteira fragmentao interna Nmero mximo de processos fixo
Processo
Particionamento Fixo
Como escolher a partio a usar por um novo processo quando h parties de tamanhos diferentes?
Atribuir o processo partio mais pequena onde este caiba Soluo lgica uma vez que reduz a fragmentao interna mas nem sempre a mais vantajosa para o sistema. Se aparecerem vrios processos iguais (ex. 4-8MB) estes vo esperar que a partio adequada fique livre. Podiam ocupar uma partio maior que no esteja a ser utilizada.
20
Particionamento Dinmico
Processos recebem a quantidade exacta de memria que necessitam
Nmero de parties e tamanho varivel
Com o tempo comeam a surgir fragmentos entre os processos, reduzindo a utilizao de memria fragmentao externa necessrio usar compactao, juntando os processos bastante dispendioso Tempo Processamento
Particionamento Dinmico
Que espao atribuir a um novo processo?
First-fit: escolhe o primeiro buraco com tamanho suficiente para o processo Next-fit: semelhante ao First-Fit mas comea a procurar a partir da ltima partio atribuida Best-fit: Procura o espao com tamanho mais semelhante ao do processo Worst-fit: Utiliza o maior espao disponvel
Concluses:
First e Next so rpidos procuram pelo primeiro espao, ambos criam fragmentao externa Best e Worst tm que percorrer a lista completa (a no ser que esteja ordenada). Como a fragmentao destes?
22
Particionamento Dinmico
Alocao de um bloco de 16MB Exerccio:
Qual o resultado dos 4 algoritmos no fim de colocar 3 segmentos com: 3MB, 5MB, 12MB
23
Buddy System
A memria total vista como um bloco de 2U Ao chegar um pedido de tamanho s
Se 2U-1 < s 2U o bloco completo alocado Se no, o bloco dividido em 2 blocos (buddies) com 2U-1 e o procedimento repetido (2U-2,2U-3, ) at ser encontrado um bloco com o tamanho ideal
Ao ficar livre, um bloco pode voltar a ser adicionado aos vizinhos Compromisso entre particionamento fixo e dinmico (fragmentao interna e externa) um sistema bastante rpido, utilizado na alocao de memria da kernel em Unix!
24
Buddy System
Exemplo usando um bloco inicial de 1Mb
25
Buddy System
Representao usando uma arvore binria depois do pedido para libertar B (Release B)
26
Tipos de Endereos
Lgicos
Referncia a um local na memria, independente do sitio onde a informao se encontra colocada na memria necessrio traduzir para endereo fsico
Relativos
Indica a localizao expressa em relao a outro ponto conhecido
Fsicos
O endereo absoluto para um local na memria fsica
At agora assumimos que um processo necessita de uma quantidade fixa de memria, o que nem sempre acontece
28
Paginao (Paging)
Paginao uma forma avanada de particionamento fixo
Memria fsica particionada em blocos de tamanho igual chamados frames (blocos de 2n, normalmente entre 512 e 8192 bytes) Memria lgica dividida em blocos semelhantes chamados pages
29
Paginao (Paging)
Para cada processo o sistema operativo mantm uma tabela de pginas (page table) usada para traduzir os endereos lgicos em fsicos
Para cada pgina do processo, contm a localizao do respectivo frame Endereo formado pelo nmero da pgina (page number) e o respectivo deslocamento (offset) dentro da pgina
30
Exemplo de Paginao
31
Cada entrada na tabela de pginas (page table) chamada de page table entry - PTE
33
34
35
32 bytes
32 bytes = 25 p? d?
36
37
32 bytes
32 bytes
Antes da alocao
Depois da alocao
38
41
= tempo gasto para procurar uma entrada na TLB t = tempo de acesso memria principal = Hit ratio a percentagem de vezes que uma entrada encontrada na TLB (influenciada pelo nmero de entradas da tabela)
TLB Hit TLB Miss
EAT
= (t + ) + (2t + )(1 - ) = 2t - t +
Quanto maior for o menor ser o tempo de acesso hit ratio fundamental, se a pgina procurada estiver sempre na TLB ser preciso apenas um acesso memria
42
Por vezes existe um bit extra para cada PTE que indica se uma pgina est ou no no espao de endereamento do processo valid-invalid bit. Proteco de escrita/leitura tambm possvel
Exemplo: Um sistema com 14 bits para endereamento 214 = 0 a 16383 Um programa s deve usar endereos entre 0 e 10468 Pginas de 2 KB Tentativa de aceder a pginas 6 e 7 so invlidas Problema: Usando a pgina 5 ainda consegue aceder at ao endereo 12.287 por causa da fragmentao interna criada pelas pginas de 2 KB
43
Pginas Partilhadas
Uma das vantagens da paginao a partilha de pginas entre processos
Uma biblioteca com 200 KB de cdigo e 100 KB de dados E se 10 processos usarem essa biblioteca? 3000 KB possvel ter apenas uma cpia do cdigo (reentrant), partilhada entre os processos = 1200 KB
44
Alguns esquemas possveis Paginao hierrquica Tabelas de pginas hashed Tabelas de pginas invertidas
p d 20 4 KB = 212 1M pginas = 2
45
Com dois nveis (tabela est tambm paginada), o page number divide-se em
Page number (p1) 12 bits Page offset (p2) 10 bits page number p1 12 page offset d 10 p2 10
47
2,3,4, N nveis? No adequado, comeam a ser necessrios demasiados acessos memria para traduzir um endereo! Possvel soluo para mais de 32 bits: Hashed page tables
48
49
Segmentao
Abordagem semelhante ao particionamento dinmico
viso da memria mais aproximada do utilizador
50
Segmentao
Programa dividido em diversos segmentos, estes no precisam de ser contguos Cada segmento criado dinamicamente apenas com o tamanho exacto necessrio para o contedo a colocar Fragmentao Interna
No
main libm
stack array
Fragmentao Externa
Sim
user space
Segmentao (Endereamento)
Endereos lgicos constitudos por Tabela de segmentos
Cada entrada contm os registos base e limite para um segmento nmero do segmento segment number deslocamento offset
Registo STBR e indica localizao da tabela na memria (Segment Table Base Register) Registo STLR e indica o nmero de segmentos usados pelo programa (Segment Table Length Register)
52
Exemplo de Segmentao
Espao de endereamento lgico de um programa, a tabela de segmentos correspondentes e a sua posio na memria fsica
53
Segmentao
Vamos supor que so usados 4 bits para o segment number Tamanho mximo de segmentos so 4 KB = 212
55
56
57
Sistemas Operativos
Memria Virtual
2010/2011 Licenciatura em Engenharia Informtica Instituto Politcnico de Tomar Renato Panda renato.panda@ipt.pt
Sistemas Operativos
Estes slides tm como base o livro da cadeira e respectivo material (Silberschatz, Galvin, Gagne). Foi tambm usado o livro de William Stallings
Operating System Concepts [Silberschatz el al.]
Captulo 9: Virtual Memory
Contedos
Memria Virtual
Conceito e benefcios
Page Fault Bits valid/invalid e modified (dirty) Tempo Efectivo de Acesso Poltica de Fetch
Demand Paging Prepaging
Trashing e alocao global/local Poltica de Limpeza Bloquear frames (Frame locking) Page faults e estrutura de um programa
3
Memria Virtual
Existem duas caractersticas fundamentais na paginao e segmentao
Separao entre endereos lgicos e fsicos referncias memria por um processo so feitas a endereos lgicos, traduzidos para endereos fsicos durante a execuo
Permite que um processo ocupe diferentes regies da memria durante a execuo (depois do swap in/out)
Memria Virtual
Assim, um processo pode executar sem que esteja todo em memria ao mesmo tempo!
Ao executar, algumas pginas (ou segmentos) do processo so colocadas em memria (resident set parte do processo que est em memria) Quando feita uma referncia a um endereo que no est na memria principal gerado um interrupt O SO tem ento de trazer o bloco (pgina/segmento) para a memria e reiniciar a instruo em falha
Memria Virtual
Vantagens desta abordagem
Podemos manter mais processos na memria principal
Apenas parte destes carregada Com mais processos em memria provvel que exista sempre algum pronto a executar aumentamos a multiprogramao
Permite ter mais memria lgica do que a memria fsica disponvel memria virtual
Um processo pode ser maior que a memria total do sistema
6
Memria Virtual
Memria virtual maior que memria fsica
Memria Virtual
O uso de memria virtual levanta vrias questes
Poltica de fetch
Quando / como trazer pginas do disco para a memria
Poltica de posicionamento
Onde colocar as novas pginas importante em segmentao, irrelevante em paginao e paginao+segmentao (em que consiste? )
Poltica de substituio
O que fazer quando no h frames livres?
Frame locking Como gerir o conjunto residente (resident set) Poltica de limpeza Controlo de carga
8
Poltica de Fetch
Demand paging trazer a pgina para a memria apenas quando feita uma referncia a esta
Necessrio menos I/O e menos memria Resposta mais rpida Permite ter mais processos em simultneo Muitos page faults quando um processo iniciado
10
Bit vlido/invlido
Como saber se uma pgina (ou segmento) est na memria principal?
Cada PTE tem um bit vlido/invlido associado Frame # valid-invalid bit Inicialmente todos os bits a i v v Durante a traduo do endereo v v caso o bit esteja a i (invlido) i temos um page fault .
i i
11
12
Page Fault
Page fault pgina referenciada no est na memria principal e tem que ser carregada necessrio
Encontrar um frame livre Carregar a pgina para este frame (swap) Reiniciar contedo da tabela com valor do frame Colocar o bit da respectiva pgina a vlido Recomear a instruo que causou o page fault
13
14
Onde p = percentagem de page faults [0, 1] Mem = tempo de acesso memria Overhead = page fault overhead (swap in + swap out + OS overhead)
15
16
Exemplo: Copy-on-Write
Aps a criao do processo filho (fork):
18
A mesma pgina pode ser trazida para memrias vrias vezes Queremos um algoritmo que diminua os page faults
A pgina substituda deve ser a que menos provavelmente ser necessria no futuro como prever o futuro?
19
Com um bit extra (modified/dirty) na respectiva PTE podemos saber se a pgina foi modificada
Apenas as pginas alteradas precisam de ser escritas em disco (swap out)!
Substituio de pginas
1. Encontrar a pgina desejada na memria secundria (disco) 2. Encontrar um frame livre
a) b) c) Caso haja algum, usar o frame livre encontrado Caso contrrio, aplicar um algoritmo de substituio de pginas para escolher um frame alvo frame vtima Se frame vtima tiver sido modificado (modified bit activo), escrever o contedo para o disco
3. Trazer a pgina desejada para o novo frame livre e actualizar as respectivas tabelas de pginas 4. Recomear o processo (ready state)
21
22
Algoritmo: FIFO
Fila simples First In First Out
Pgina que est em memria mais tempo substituda Simples de implementar
15 page faults
9 page faults 25
26
Anomalia de Belady
Em certos casos um nmero de frames maior pode levar ao aumento dos page faults! Exemplo FIFO 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
3 frames 9 page faults
Anomalia de Belady
Exemplo utilizando o algoritmo FIFO
28
Algoritmo Optimal
Pagina substituda a que no ser utilizada durante mais tempo
Como saber? Adivinhar o futuro?
Algoritmo Optimal
Utilizando 3 frames
30
Algoritmo LRU
LRU = Least Recently Used
Substitui a pgina que no tiver sido referenciada durante mais tempo Parecido com o Optimal, mas olhando para o passado Baseia-se no principio da localidade
Principio base para o funcionamento memria virtual e substituio de pginas referncias de dados / instrues tendem a agrupar-se em determinados locais durante certos instantes de tempo
Localidade espacial se acedi a estes dados provvel que aceda a dados prximos Localidade temporal se acedi a estes dados pouco tempo, provvel que volte a aceder em breve
31
Algoritmo LRU
Usando 3 frames
32
Stack
Usar pilha com nmero das pginas. Uma pgina referenciada sobe para o topo, LRU a ltima pgina Problema: Fcil de achar LRU mas overhead na actualizao
Algoritmo: Clock
Aproximao do LRU implementa envelhecimento de pginas
Utiliza use bit (reference bit) para cada pgina, indicando se foi usada desde a ltima substituio
De forma simplificada
Ao carregar uma pgina colocar use bit = 0 Ao ser referenciada colocar use bit = 1 A primeira pgina com o use bit = 0 escolhida para ser substituda
Durante a procura, todas as pginas verificadas que tenham use bit = 1, passam a 0 (aging)
34
35
36
Trashing
Quantas pginas alocar a cada processo?
Se um processo no tiver pginas suficientes, o nmero de page faults vai ser elevado, resultado:
Baixa utilizao do CPU Taxas de I/O elevadas SO pensa que tem que aumentar a multiprogramao adiciona outro processo ao sistema
Thrashing
Quando um processo passa o tempo em swap in/out de pginas sem fazer nada til
37
Poltica de Limpeza
Quando escrever pgina para o disco?
Demand cleaning
Pginas so escritas apenas quando so seleccionadas para serem substitudas
Precleaning
Pginas vo sendo escritas para o disco em conjuntos (batches)
Cenrios:
Pginas da kernel Estruturas de controlo Buffers de I/O (ao usar DMA por exemplo)
40
42
43
Programador
Engenheiro/a de Software
44
Sistemas Operativos
Sistemas de Ficheiros
2010/2011 Licenciatura em Engenharia Informtica Instituto Politcnico de Tomar Renato Panda renato.panda@ipt.pt
Sistemas Operativos
Estes slides tm como base o livro da cadeira e respectivo material (Silberschatz, Galvin, Gagne). Foi tambm usado o livro de William Stallings
Operating System Concepts [Silberschatz el al.]
Captulo 10: File-System Interface Captulo 11: File-System Implementation Captulo 12: Mass-Storage Structure
Contedos
Introduo aos Sistemas de Ficheiros
Conceito de ficheiro, directrio, estrutura, montagem (mount)
Estrutura e Implementao do Sistema de Ficheiros Implementao de Directrios Mtodos de Alocao Gesto de Espao Livre VFS e NFS Eficincia, Performance e Recuperao Disco Rgido
Estrutura Fsica Escalonamento
FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOK
Espao de Swap
RAID
3
Ficheiros
Um ficheiro um tipo de dados abstracto definido / implementado pelo sistema operativo
Uma sequncia de informao lgica
O papel do SO mapear o conceito lgico de ficheiro para os (diferentes) dispositivos de armazenamento fsicos Normalmente ficheiros representam
Dados
Numricos, texto, binrios
Programas
4
Estrutura de um Ficheiro
O conceito de ficheiro bastante geral
Sequencia de bits, bytes, linhas, records
O primeiro mtodo pode ser usado (com caracteres de controlo) para simular os outros 2
5
Atributos de um Ficheiro
Atributos variam entre SOs, por norma consistem em
Nome: informao simblica para o utilizador Identificador: nmero nico que identifica o ficheiro Tipo: usado pelos SOs que suportam diferentes tipos de ficheiros Localizao: ponteiro para a localizao do ficheiro no dispositivo de armazenamento fsico Tamanho: tamanho actual do ficheiro (bytes, words, blocos, ), possivelmente tambm o tamanho mximo Proteco: informao para controlo de acesso ao ficheiro (leitura, escrita, etc.) Datas, users, : data e hora da criao, modificao, ltimo acesso, utilizador que criou o ficheiro e outras hipteses
Informao sobre os ficheiros guardada na estrutura do directrio (tambm ela em memria secundria)
6
Estas podem ser usadas para realizar outras tarefas (copiar, escrever no fim, )
7
Ficheiros Abertos
Em muitas das operaes preciso procurar a informao do ficheiro na estrutura do directrio
Para evitar isto muitos SOs utilizam uma tabela com informao dos ficheiros abertos e necessrio abrir o ficheiro primeiro open()
Tipos de Ficheiros
Por vezes so usadas extenses para identificar o tipo de ficheiros MS-DOS
Ficheiros executveis: .exe, .com, .bat
Mac OS X
Cada ficheiro tem um tipo (ex: TEXT, APPL) O nome do programa criador do ficheiro guardado
UNIX
Permite extension hints mas SO no depende destas Usa magic numbers para identificar alguns ficheiros
9
Estrutura de Directrios
Directrio conjunto de ns contendo informao sobre todos os ficheiros
Tanto a estrutura dos directrios com os ficheiros residem no disco / armazenamento secundrio
Directory
Files
F1
F2
F3
F4 Fn
11
Estrutura do Disco
O disco pode ser dividido em diversas parties
Cada uma pode ser usada em modo raw sem sistema de ficheiros ou formatada com um sistema de ficheiros volume
Vrios discos/parties podem ser combinados por questes de performance ou redundncia Cada volume guarda a informao do sistema de ficheiros na tabela de contedos do volume ou directrio do dispositivo
12
13
Vrias abordagens
Single-level, two-level, rvore, grafos acclicos, grafos
14
15
16
18
Estrutura de directrio
Organiza os ficheiros
21
22
Implementao de Directrios
Directrios contm informao sobre ficheiros
Fornecem um mapeamento entre o nome dos ficheiros e os prprios ficheiros
Tabelas de hash
Procura mais eficiente Tem problemas de colises e o tamanho mximo tem de ser definido
23
Mtodos de Alocao
Quando queremos alocar um novo ficheiro, como so atribudos os blocos? As estratgias mais comuns:
Alocao contgua (contiguous) Alocao ligada/encadeada (linked/chained) Alocao indexada (indexed)
24
Alocao Contgua
Cada ficheiro ocupa um conjunto de blocos contguos no disco Implementao simples
Necessrio apenas bloco inicial e nmero de blocos
Permite acesso aleatrio ao ficheiro (random access) Mas tem vrios problemas
Desperdia espao Fragmentao Ficheiros tm tamanho fixo
25
Alocao Contgua
26
27
Alocao Ligada/Encadeada
Cada ficheiro uma lista ligada de blocos
Blocos podem estar espalhados pelo disco
Bastante simples
Apenas necessrio o endereo do primeiro bloco
No h desperdcio de espao livre Tamanho dos ficheiros no tem de ser fixo Problemas:
No permite acessos aleatrios!
Variao importante: usa uma file allocation table (FAT/FAT32)
Alocao Ligada
29
30
Alocao Indexada
Usada uma tabela de ndices Ponteiros para os blocos so concentrados num bloco ndice (index block inode em Unix)
Desperdcio de um bloco
31
Alocao Indexada
32
e ainda:
10 ponteiros directos 1 ponteiro indirecto 1 ponteiro indirecto duplo 1 ponteiro indirecto triplo
35
Inode
10 ponteiros directos: 10 x 4 KB = primeiros 40 KB 1 ponteiro indirecto: 4 KB / 4 x 4 KB = 4 MB 1 ponteiro ind. duplo: 4 GB seguintes 1 ponteiro ind. triplo: 4 TB seguintes
Total = 4 KB + 4 MB + 4 GB + 4 TB!
36
O que so Directrios?
Os directrios no passam de ficheiros normais, marcados com uma flag especfica (ex. drwx)
Contedo do directrio o conjunto de ponteiros para os seus ficheiros/sub-directrios
O que so? directrio
inodes
37
38
bit[i] = 0 block[i] livre 1 block[i] ocupado
Fcil de implementar e de encontrar o primeiro bloco livre Problemas: Para uso eficiente necessrio que esta estrutura seja mantida em memria Ocupa algum espao desnecessrio com bits ocupados (para um disco de 1TB so necessrios 32 MB)
39
Lista Ligada
Consiste em usar uma lista ligada dos blocos livres
No fcil de encontrar conjunto de blocos contguos, necessrio percorrer a lista No desperdia espao
Recuperao
Por vezes acontecem erros, falhas de energia entre outras coisas
Ocorrem inconsistncias entre a estrutura de directrio e os blocos em disco
Verificao de consistncia comparao entre estruturas e blocos de dados para (tentar) corrigir inconsistncias Sistemas de ficheiros estruturados em logs (ou journaling)
Cada actualizao no sistema de ficheiros uma nova transaco
Todas as transaces so escritas para um log Quando a operao tiver sido efectuada a transaco retirada do log Em caso de crash todas as transaces no log tm de ser efectuadas
41