Você está na página 1de 195

Estrutura do Sistema Operativo

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

Cap 1 Estrutura do sistema operativo

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

Gesto da memria central (primria)


A memria um grande array de words ou bytes cada qual com um endereo especifico. O processador e os dispositivos de I/O armazenam os dados de acesso rpido na memria A memria central voltil Funes do sistema operativo na gesto de memria :
Monitorizar que parte da memria est a ser utilizada e por quem Decidir que processo deve ser carregado quando o existe espao em memria Alocar e desalocar espao em memria de acordo com as necessidades
Cap 1 Estrutura do sistema operativo Sistemas Operativos
Luis Almeida@ipt.pt

Gesto da memria secundria


Uma vez que a memria central (memria primria) voltil e pequena necessrio uma memria secundria por forma a armazenar os dados e os programas de forma permanente Discos rigidos Funes do sistema operativo em conjunto com gestor de disco:
Gesto do espao livre Alocao do espao para armazenamento Escalonador de disco

Cap 1 Estrutura do sistema operativo

Sistemas Operativos
Luis Almeida@ipt.pt

Gesto de I/O

Gesto do sistema ficheiros


Um ficheiro uma coleco de informao relacionada definida pelo seu criador (programas e dados) Funes do sistema operativo na gesto de ficheiros:
criao e eliminao de ficheiros criao e eliminao de directorias primitivas para a manipulao de ficheiros e directorias mapeamento dos ficheiros backups
Sistemas Operativos
Luis Almeida@ipt.pt

O Sistema de I/O :
buffer/cache interface geral de device-driver drivers para dispositivos de hardware especficos

Cap 1 Estrutura do sistema operativo

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

Cap 1 Estrutura do sistema operativo

Sistemas Operativos
Luis Almeida@ipt.pt

Rede (Sistemas Distribudos)

Cap 1 Estrutura do sistema operativo

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.

Cap 1 Estrutura do sistema operativo

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

Estrutura do sistema operativo


Sistemas Monolticos (The Big Mess")
No existe estrutura . S.O. escrito como uma coleco de procedimentos, cada um dos quais pode chamar qualquer outro. Cada procedimento obedece a uma especificao bem definida no que respeita aos parmetros e resultado. No h cdigo escondido. Cada procedimento visvel por todos os outros, no possuindo uma estrutura modular.
Ainda assim pde-se observar alguma estrutura simples -----------> (1) O programa de utilizador interrompe o kernel; (2) o S.O. identifica o nmero do servio requerido; (3) o S.O. enderea e executa procedimento desse servio; (4) devolve o controlo ao programa do utilizador

Cap 1 Estrutura do sistema operativo

Sistemas Operativos
Luis Almeida@ipt.pt

11

Estrutura do sistema operativo


Sistemas Monolticos: Estrutura Bsica
Um programa principal que chama as funes de servio Um conjunto de funes de servio que sustentam as chamadas ao sistema operativo (system call) Um conjunto de funes auxiliares (apoio s funes de servio)

Para cada system call existe uma funo de servio que a trata As funes auxiliares implementam procedimentos necessrios

Cap 1 Estrutura do sistema operativo

Sistemas Operativos
Luis Almeida@ipt.pt

12

Estrutura do sistema operativo


Sistema Dividido em Camadas
O sistema operativo estruturado em camadas hierrquicas. A modularidade pressupe que cada camada apenas use funes e servios de camadas de nveis inferiores
Primeiro exemplo desta abordagem: THE - Technish Hogeschool Eidhoven
Camada 5: Camada 4: Camada 3: Camada 2: Camada 1: Camada 0: Processos do operador do sistema Programa do utilizador Gesto de I/O. Proporciona dispositivos de I/O transparentes e simples s camadas superiores Comunicao entre processos Gesto da memria Escalonamento do processador. Comutar entre processos quando correm interrupes ou timer expira

Hardware
Multics : exemplo da generalizao deste conceito. Organizado como um srie de anis concntricos, onde os interiores tm nveis de privilgios superiores

Cap 1 Estrutura do sistema operativo

Sistemas Operativos
Luis Almeida@ipt.pt

13

Estrutura do sistema operativo


Mquina virtual
Estruturado por camadas lgicas e onde o hardware e o kernel do sistemas operativo encapsulado por forma a ser visto como hardware. Uma mquina virtual proporciona um interface idntico ao do hardware fsico embora mais agradvel de se usar. O Sistema Operativo cria a iluso de mltiplos processos, cada qual executando num processador individual e com memria individual. Os recursos fsicos do computador so partilhado de forma a criar as mquinas virtuais. exemplo: VM/370 da IBM (sistema time-sharing)

Cap 1 Estrutura do sistema operativo

Sistemas Operativos
Luis Almeida@ipt.pt

14

Estrutura do sistema operativo


Cliente/Servidor
Tendncia dos sistemas operativos actuais de mover o mximo de cdigo possvel para camadas superiores Remover cdigo ao sistema operativo por forma a simplificar o kernel

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

Cap 1 Estrutura do sistema operativo

Sistemas Operativos
Luis Almeida@ipt.pt

15

Estrutura do sistema operativo


Cliente Servidor
Diviso lgica do sistema operativo, em unidades pequenas e de fcil utilizao. O kernel gere as comunicaes. Os servidores correm em modo utilizador evitando um crash total do sistema na eventualidade de erro interno ao servidor. Vocacionados para sistemas distribudos (em rede)

Cap 1 Estrutura do sistema operativo

Sistemas Operativos
Luis Almeida@ipt.pt

16

Estruturas do sistema operativos


Projecto e Implementao de S.O.
Objectivos Utilizador - o sistema operativo deve ser fcil de usar e de apreender, fivel, seguro e rpido Sistema - o sistema operativo deve ser fcil de se projectar, implementar e manter, e tambm deve ser flexvel, fivel, sem erros (no o caso de S.O. da Microsoft) e eficiente Filosofia de construo de Sistemas Operativos Mecanismos Polticas

: como fazer algo : decidem o que ser executado

A separao dos mecanismo e das polticas importante pois permite uma maior flexibilizao caso as polticas mudem mais tarde.

Cap 1 Estrutura do sistema operativo

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

Cap 2 Gesto de Processos

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

Cap 2 Gesto de Processos

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

Analogia do cozinheiro confeccionando um bolo


: receita do bolo : cozinheiro : ingredientes : actividade de fabrico do bolo (pasteleiro (- proridade))

Programa Processador Dados de entrada Processo1

Interrupo
Programa Processador Dados de entrada Processo2

: filho fere-se
: livro de primeiros socorros : cozinheiro : medicamentos : actividade de executar o curativo (cuidados mdicos (+ prioridade))

Cap 2 Gesto de Processos

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

(2) Um espao de endereamento (3) Contexto de execuo


Contexto de H/W : informao relativa ao CPU Contexto de S/W: Identificaao de processo e utilizador; prioridade; estado do processo; perifricos utilizados; ficheiros abertos; programa em execuo; directoria; cotas de utilizao, contabilizao da utilizao de recursos;... Cap 2 Gesto de Processos Sistemas Operativos
Luis Almeida@ipt.pt

Processo

Cap 2 Gesto de Processos

Sistemas Operativos
Luis Almeida@ipt.pt

Estados dos Processos


TERMINADO
Estados NOVO : criao do processo EM EXECUO: processo a correr e dispe de todos os recursos BLOQUEADO : processos a espera da disponibizao de recursos (excepto processador) PRONTO : o processo tem todos os recurso e apenas espera vez no processador TERMINADO : o processo concluiu a sua execuo Transies

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

Cap 2 Gesto de Processos

Sistemas Operativos

Bloco de controlo de processos (BCP)


Estado do processo Contador de programa

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

Cap 2 Gesto de Processos

Threads

Um processo e uma famlia de threads Cap 2 Gesto de Processos Sistemas Operativos

Uma aplicao das threads 9


Luis Almeida@ipt.pt

Sistemas Operativos Introduo

Cap 1 - Evoluo histrica

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

Cap 1 - Evoluo histrica

O que um Sistema Operativo?


Um Sistema Operativo um programa que funciona como um intermdiario entre o utilizador e o hardware do computador
Utilizador 1 Utilizador 2 Utilizador 3 Utilizador N

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

Cap 1 - Evoluo histrica

Sistemas Operativos
Luis Almeida@ipt.pt

O que um Sistema Operativo?


Objectivo: Fornecer um ambiente no qual o utilizador possa executar as suas tarefas de um modo conveniente e eficiente.
1-Transformar um conjunto de diversos componentes fisicos numa mquina simples de gerir 2-Gerir o hardware de um modo eficiente, utilizando-o no processamento de um variado tipo de actividades
Cap 1 - Evoluo histrica Sistemas Operativos
Luis Almeida@ipt.pt

Top-Down View Mquina virtual

S.O
Gestor de recursos Bottom-Up View

O que um Sistema Operativo?


S.O. como Mquina Virtual (Top-Down View)
O Utilizador no pretende envolver-se demasiado nos detalhes inerentes s caractersticas da mquina. S.O virtualiza o H/W. A abstraco apresentada ao utilizador pretende-se simples e de fcil compreenso Apresenta ao utilizador um interface que trata de um modo uniforme operaes sobre entidades semelhantes Garantir fiabilidade e segurana

S.O. como Gestor de Recursos (Bottom-up view)


Garantir uma gesto dos recursos Optimizao do desempenho
Cap 1 - Evoluo histrica Sistemas Operativos
Luis Almeida@ipt.pt

O que um Sistema Operativo?


Gestor de Recursos
gere e aloca recursos

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

Cap 1 - Evoluo histrica

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

Network Systems Real Time Systems

memory management protection scheduling files, devices

Contemporary Operating Systems

Evoluo dos sistemas operativos modernos


Cap 1 - Evoluo histrica Sistemas Operativos
Luis Almeida@ipt.pt

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

disco Cap 1 - Evoluo histrica Sistemas Operativos


Luis Almeida@ipt.pt

10

Multiprogramao
Multiprogramao
execuo concorrente de vrios programas vrios programas so mantidos em memria simultaneamente e o CPU multiplexado entre eles

Sistemas interactivos - Tempo partilhado


o programador tem acesso constante mquina multiplexagem entre os vrios utilizadores cada utilizador pensa que detm sempre os recursos Gesto de memria ? Memria virtual: ultrapassa as restries fsicas impostas pela memria
Sistemas Operativos
Luis Almeida@ipt.pt

Cap 1 - Evoluo histrica

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.

Cap 1 - Evoluo histrica

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

Sistemas de tempo real


Um sistema de tempo real deve obedecer a restries de tempo O processamento dever ser feito de acordo com as restries definidadas caso contrario o sistema falha Cap 1 - Evoluo histrica Sistemas Operativos
Luis Almeida@ipt.pt

13

Arquitectura do computador

Cap 1 - Evoluo histrica

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

Renato Panda Sistemas Operativos 2010/2011

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

Unix Systems Programming: Communication, Concurrency, and Threads


Captulo 2 e 3.
2

Renato Panda Sistemas Operativos 2010/2011

Contedos
Processos:
Conceito
O que um processo?

Escalonamento de processos Operaes com processos


Ex.: Criao e terminao.

Comunicao (IPC Inter Process Communication)


3

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Processo em Memria (em Unix)


Seco text (.text)
Cdigo do programa Variveis locais, parmetros, endereos de retorno limitado! Heap contem a memria alocada dinamicamente (ex.: malloc). Data todas as variveis globais/estticas.
Espao de Endereamento 0
5

4GB

Stack contem informao temporria


Processo

.data globais/estticas inicializadas com


valor != 0.

.bss globais/estticas no inicializadas ou


inicializadas 0.

Renato Panda Sistemas Operativos 2010/2011

Pergunta: Para onde vai cada coisa?

Renato Panda Sistemas Operativos 2010/2011

Resposta: Para onde vai cada coisa?


.bbs .bbs .data .bbs .stack .bbs heap .stack E se fosse: 1. char buffer[20] = {0}; 2. char buffer*20+ = tacuara;
7

Renato Panda Sistemas Operativos 2010/2011

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.

Importante: Os processos em Ready e Waiting no consomem CPU!

Renato Panda Sistemas Operativos 2010/2011

Process Control Block (PCB)


O bloco de controlo de processo representa um processo em execuo. Informao de cada processo:
Estado do processo Contador (Program counter) Identificador (PID) Registos do CPU Informao do escalonador de CPU Informao da gesto de memria Lista de ficheiros abertos
9

Renato Panda Sistemas Operativos 2010/2011

PCB: Mudana de Contexto


Quando o CPU troca entre processos necessrio salvar o estado do processo actual e carregar o estado do novo processo mudana de contexto (context switch).

Contexto de um processo representado pelo PCB.

10

Renato Panda Sistemas Operativos 2010/2011

PCB: Filas de processos


O escalonador (scheduler) de processos selecciona o prximo a ser executado de entre os disponveis.
Mas onde so guardados os PCBs?

Processos vo alternando entre vrias listas:


Job queue lista de todos os processos. Ready queue fila de processos em memria, espera para
executar.

Device queues processos em espera por um dispositivo de I/O

11

Renato Panda Sistemas Operativos 2010/2011

PCB: Filas de processos (2)

12

Renato Panda Sistemas Operativos 2010/2011

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

rvore de processos Solaris

13

Renato Panda Sistemas Operativos 2010/2011

Criao de Processos (Unix)


A criao de um novo processo feita atravs da chamada de sistema fork().
Filho herda todas as caractersticas do processo pai.

Depois do fork cada processo ter diferentes variveis e estado.


O contador de instrues (program counter) apontar para a instruo seguinte. Alterar variveis num deles no afectar o outro.
int y = 10; fork(); x = random(); int y = 10; fork(); x = random(); int y = 10; fork(); x = random();

Processo Pai

Processo Pai

Processo Filho
14

Renato Panda Sistemas Operativos 2010/2011

Terminao de Processos (Unix)


Ao terminar, um processo pede ao SO para ser apagado (atravs do exit). mas s realmente terminado depois do pai chamar wait() / waitpid() sobre este.
Permite ao pai receber informao sobre os filhos atravs do wait (ex.: cdigo de sada). Importante: S assim so libertados os recursos ocupados pelo processo!

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

Renato Panda Sistemas Operativos 2010/2011

Terminao de Processos (Unix)


O que acontece se o pai no chamar o wait()?
Ao terminar, o processo filho torna-se um processo Zombie processo que terminou sem que o
pai tenha sido avisado. Ateno: No h libertao dos recursos utilizados!

O que acontece caso o pai termine antes?


O filho torna-se um processo Orfo.
Neste caso os processos so adoptados pelo processo init (pid = 1).
16

Renato Panda Sistemas Operativos 2010/2011

Tornar um processo noutro programa?


Como que a shell se torna noutro programa?
fork + funo exec()!
Funes: exec, execl, execv, execvp, execlp, ()
p = usam environment path v = passagem de parmetros por array. l = passagem de parmetros separados por virgula.

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

Renato Panda Sistemas Operativos 2010/2011

Comunicao entre Processos (IPC)


Por vezes necessrio que diferentes processos trabalhem de forma cooperativa.
Partilhar informao Questes de performance Convenincia

Comunicao entre processos consiste em:


a) b) Passagem de mensagens Memria partilhada

18

Renato Panda Sistemas Operativos 2010/2011

Comunicao entre Processos (IPC)


Mecanismos de IPC:
Sinais Pipes Named Pipes Filas de mensagens Semforos Memria partilhada Ficheiros mapeados em memria (mmap) Sockets Remote Procedure Calls (ex. Java RMI)
19

Renato Panda Sistemas Operativos 2010/2011

IPC: Sinais
Eventos assncronos que as aplicaes podem receber.
Atravs de funes programadas para receber tais eventos.

Vrios sinais distintos: SIGINT, SIGKILL, SIGTERM, SIGUSR1, int sigint_handler()


//...

Exemplos: Ctrl + C envia sinal SIGINT 2 Programa acede a referncia invlida SIGSEGV 9. Ctrl + Z envia sinal SIGTSTP 20
20

Renato Panda Sistemas Operativos 2010/2011

IPC: Sinais Como usar?


Redireccionar o sinal para uma funo:
sighandler_t signal(int numero, sighandler_t funcao);

As constantes SIG_IGN e SIG_DFL permitem ignorar e restaurar um determinado sinal.

Ex: signal(SIGINT, SIG_IGN);

Enviar um sinal para um processo:


int kill(pid_t pid, int sinal);

Bloquear o processo at receber um sinal:


int pause();

Estados possveis para um sinal:


Bloqueado: guardado numa fila at serem desbloqueados. Ignorado: descartado, como se no existisse. Tratado: redireccionado para a funo indicada. Nenhuma das anteriores: Causam a terminao do programa.
21

Renato Panda Sistemas Operativos 2010/2011

IPC: Pipes
Os Pipes permitem a troca de mensagens entre processos.
So unidireccionais Sncronos e limitados
Caso estejam vazios/cheios os processos bloqueiam.

Permitem apenas comunicao entre processos pai e filho.


pipe
Processo Pai Processo Filho

Pergunta: O que acontece quando fazemos ls | more?

22

Renato Panda Sistemas Operativos 2010/2011

IPC: Named Pipes (ou FIFOs)


Ao contrrio dos pipes, podem ser usados entre quaisquer processos.
Embora parea, no so ficheiros!
Identificados por um nome So guardados de forma persistente no sistema de ficheiros. Depois de lida a informao no permanece no named pipe.

Criados atravs do comando mkfifo ou da funo com o mesmo nome.


23

Renato Panda Sistemas Operativos 2010/2011

Ficheiros mapeados em memria


Ideia: Mapear um ficheiro para a memria virtual. Vantagens:
No preciso read() e write(), basta aceder como se se tratasse de outra varivel em memria (arrays). Vrios processos podem mapear o mesmo ficheiro, partilhando a memria.

mmap() cria o mapeamento na memria virtual


Mapeamento mantido depois de usar o fork().
24

Renato Panda Sistemas Operativos 2010/2011

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

Unix: shmget, shmctl, shmat e shmdt

25

Renato Panda Sistemas Operativos 2010/2011

Memria Partilhada: Exemplo


Processo 1
int shmid = shmget(123, 3, IPC_CREAT|0777) char* p = shmat(shmid, NULL, 0); p[0] = 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

Memria (id = 123)


25 52

25 52

25 52

Espao de Endereamento P2

26

Renato Panda Sistemas Operativos 2010/2011

Comunicao por Sockets


Comunicao bidireccional. feita entre dois sockets endpoints para a comunicao. Ligao entre processos na mesma mquina ou mquinas distintas, ligadas em rede. Endereo do Socket = IP + Porto
Ex.: 82.32.4.50:80 = ?
Cliente (IP = 201.23.3.11) socket 201. 23.3.11:1930 Servidor Web (IP = 82.32.4.50) socket 82.32.4.50:80
27

Renato Panda Sistemas Operativos 2010/2011

Remote Procedure Calls (RPCs)


Cliente chama uma funo existente no servidor, fazendo com que este a execute.
Remote Method Invocation (quando orientada a objectos exemplo: Java RMI).

Stubs (cliente e servidor)


Cliente:
Serve de proxy para a funo do servidor. Localiza servidor, converte parmetros e respostas.

Servidor:
Recebe as mensagens, transforma os parmetros (marshalling) . Executa a funo no servidor. Envia a resposta ao cliente.
28

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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

Unix Systems Programming: Communication, Concurrency, and Threads


Captulo 2 e 13. https://computing.llnl.gov/tutorials/pthreads/
2

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Conceito de Thread (e processo)


J sabemos o que um processo
Processo = programa em execuo.

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

Renato Panda Sistemas Operativos 2010/2011

Thread: em que consiste?


Cada thread tem:
Thread ID Contador (Program Counter) Registos Stack Estado (State)

Todas as threads do mesmo processo partilham:


Cdigo (Code section) Dados (Data section variveis globais) Outros recursos do SO (espao de endereamento, sinais, ficheiros abertos, )
5

Renato Panda Sistemas Operativos 2010/2011

Single vs Multi Threaded

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Threads: Vantagens
Muito mais leves que processos
Criao, terminao, mudana de contexto, sincronizao, comunicao

Economia de recursos Escalabilidade


Muito teis em arquitecturas multi-processador e multicore

Capacidade de resposta
Mltiplas tarefas (tasks) em simultneo

Muito mais fcil de implementar do que IPC


Recursos so partilhados entre threads
Ateno: Acessos muitas vezes precisam de ser sincronizados!
8

Renato Panda Sistemas Operativos 2010/2011

Threads: Bloco de Controlo

Renato Panda Sistemas Operativos 2010/2011

Threads

10

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Threads: Exemplo 2
Processador de Texto

12

Renato Panda Sistemas Operativos 2010/2011

Threads: Exemplo 3.1


Servidor Web (single threaded)
web browser HTTP request GET helio_na_praia.jpg HTTP/1.0 HTTP response helio_na_praia.jpg data Kernel Ligao de rede

Kernel Space User Space

Main thread

Processo do Servidor
13

Renato Panda Sistemas Operativos 2010/2011

Threads: Exemplo 3.2


Servidor Web (multi threaded)
web browser HTTP request GET helio_na_praia.jpg HTTP/1.0 HTTP response helio_na_praia.jpg data Kernel Ligao de rede

Kernel Space User Space

Processo do Servidor Worker thread Main thread


14

Renato Panda Sistemas Operativos 2010/2011

User vs. Kernel Threads


User Threads:
Gesto de threads feita por bibliotecas no user space.
POSIX Pthreads Win32 threads Java threads

Kernel Threads:
Suportadas pelo Sistema Operativo
Windows XP Linux Mac OS X
15

Renato Panda Sistemas Operativos 2010/2011

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.

Biblioteca User mode kernel mode


16

Renato Panda Sistemas Operativos 2010/2011

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.

User mode kernel mode

Para quem tiver curiosidade: Modelos N-to-M e 2-level (pag 131 e 132 do livro)
17

Renato Panda Sistemas Operativos 2010/2011

User vs. Kernel: Vantagens e Desvantagens


User Level Threads
Comunicao entre threads rpida (porque?) Criao e terminao de threads rpida. No necessrio suporte pelo SO (ou seja, disponveis em qualquer SO). Quando uma thread bloqueia, todas bloqueiam (ex.: I/O porque?) S possvel fazer uma chamada de sistema de cada vez. Terminar uma thread = terminar todas Escalonamento injusto.
18

Renato Panda Sistemas Operativos 2010/2011

User vs. Kernel: Vantagens e Desvantagens


Kernel Threads
Comunicao entre threads mais lenta (porque?). Criao e terminao de threads lenta. necessrio suporte pelo SO Quando uma thread bloqueia, as outras continuam. Podem ser feitas N chamadas de sistema em simultneo. Terminao de threads independente Escalonamento justo.
19

Renato Panda Sistemas Operativos 2010/2011

User vs. Kernel: Hoje em dia


Kernel Threads
Suportado por (quase) todos os sistemas operativos modernos
Windows XP+, Linux, Solaris (9+), Mac OS X

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.

Linux: Criao de threads feita com clone (system call).


Cria novo processo com endereo de memria partilhado (no fork usado copy-on-write. Linux 2.4 (LinuxThreads) diferente (e tinha vrias limitaes).
20

Renato Panda Sistemas Operativos 2010/2011

PThreads (C)
Criar uma nova thread:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);

Terminar a thread actual:


void pthread_exit(void *value_ptr);

Esperar que determinada thread termine:


int pthread_join(pthread_t thread, void **value_ptr);

Obter identificador da thread:


pthread_t pthread_self(void); Compilar: gcc lpthread -D_REENTRANT -Wall exemplo.c exemplo -o Exemplo!
21

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Threads: Tambm existem problemas


O que acontece ao chamar um fork() numa thread? E um exec()? Terminao de uma thread?
Cancelamento assincrono vs diferido.

O que acontece ao receber um sinal? possvel uma thread ter informao privada?
Maioria das bibliotecas suportam atravs de funes prprias.
24

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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

Foi tambm utilizado material do livro de William Stallings.


Operating Systems: Internals and Design Principles
[William Stallings] Captulo 9: Uniprocessor Scheduling Captulo 10: Multiprocessor and Real-Time Scheduling

Renato Panda Sistemas Operativos 2010/2011

Contedos
CPU Scheduling:
Conceitos bsicos
Escalonamento? O que ? Como? Porque?

Critrios de escalonamento Algoritmos de escalonamento Escalonamento em Linux e Windows

Renato Panda Sistemas Operativos 2010/2011

Escalonamento e CPU Burst


Escalonamento de CPU (CPU Scheduling) a base dos SOs multiprogramados.
Maximizar o uso do CPU

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

Renato Panda Sistemas Operativos 2010/2011

Ciclos de CPU I/O bursts


Sequncia de ciclos CPU / IO Durao dos CPU bursts (histograma)

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.

Renato Panda Sistemas Operativos 2010/2011

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.

Short-term scheduling (ou dispatcher)


Decide o prximo processo a ser executado pelo CPU Quando? Sempre que ocorre um evento (interrupt, system call, )

I/O scheduling
Decide qual dos pedidos de I/O pendentes ser servido por determinado dispositivo

Renato Panda Sistemas Operativos 2010/2011

Tipos de escalonamento

Filas de processos (PCBs) durante o escalonamento Tipos de escalonamento e estados de um processo


7

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Optimizao dos critrios


que critrios usar? Seria ptimo ter:
Utilizao de CPU e throughput mximos Tempos de turnaround, waiting e response mnimos

No possvel ter todos estes critrios em simultneo A escolha vai depender do tipo e objectivo do sistema em causa
10

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Escalonamento: Exemplo
Tabela de processos:
Instante de chegada do processo Tempo mximo que pode demorar
Priority 3 1 1 Deadline 6 3 0

Tempo de processamento (ou Service Time)


Processes Burst Time Arrival Time 5 3 4 0 1 5

P1 P2 P3

Diagrama de Gantt (exemplo usando FCFS):

P1 Waiting Time Finish Time Turnaround Time 0 5 5

P2 4 8 7

P3 3 12 7

Average 2,33 5,67

12

Renato Panda Sistemas Operativos 2010/2011

First Come First Served (FCFS)


FCFS: Os processos so executados por ordem de chegada Processos Burst Time
Algoritmo no-preemptivo
Exemplo 1: Os processos chegam pela ordem P1, P2, P3: P1 0 24 P2 27 P3 30
Waiting Time
P1 6 P2 0 P3 3 Average 3,00 P1 0

P1 P2 P3

24 3 3

Waiting Time
P2 24 P3 27 Average 17,00

Exemplo 2: Os processos chegam pela ordem P2, P3, P1: P2 0 3 P3 6 P1 30

Convoy effect um processo curto atrs de um longo Exemplo: Um processo CPU bound com vrios I/O bound atrs

13

Renato Panda Sistemas Operativos 2010/2011

Shortest Job First / Next (SJF / SJN)


SJF: Prximo processo a executar o com menor tempo de processamento (burst time)
Algoritmo no-preemptivo
P4 0 3 P1 9 P3 16 P2 24
Processos P1 P2 P3 P4 Burst Time 6 8 7 3

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

Renato Panda Sistemas Operativos 2010/2011

Determinar tamanho do prximo CPU Burst?


No possvel mas podemos estimar!
Ideia: deve ser semelhante ao anterior
depois s escolher o processo com o menor tempo estimado

Estimativa feita atravs de mdia mvel, tendo em conta os tempos anteriores:

, 0 1 (normalmente ) tn = durao real do burst n n+1 = valor previsto para o prximo burst (n+1)

15

Renato Panda Sistemas Operativos 2010/2011

Shortest Remaining Time First (SRTF)


Semelhante ao SJF mas agora com preempo
Se chegar um processo com burst time inferior ao processo em execuo, h preempo.
P1 0 1 P2 5 P4 10 P1 17 P3 26
Processos P1 P2 P3 P4 Burst Time 8 4 9 5 Arrival Time 0 1 2 3

Como calcular? Waiting time Finish time Turnaround time

P1 Waiting Time Finish Time Turnaround Time 9 17 17

P2 0 5 4

P3 15 26 24

P4 2 10 7

Average 6,5 15 13

16

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Priority Scheduling

18

Renato Panda Sistemas Operativos 2010/2011

Round Robin (RR)


Cada processo recebe um pequena unidade de tempo do CPU (time quantum normalmente 10 a 100ms)
No fim desse tempo, o processo preemptado e colocado no fim da fila Ready
Novos processos so adicionados ao fim da fila.

Ou seja, com n processos e um time quantum de q:


Cada processo recebe 1/n do tempo do processador, em bocados de q de cada vez Nenhum processo espera mais que (n-1).q

Performance: tamanho do q importante?


q grande = FIFO (ou seja FCFS) q pequeno = grande perda de tempo nas mudanas de contexto (overhead)
20

Renato Panda Sistemas Operativos 2010/2011

Round Robin (RR)


3 processos com time quantum de 4
P1 0 4 P2 7 P3 11 P1 15 P3 17 P1 21 P1 25 P1 29 P1 33
Processos P1 P2 P3 Burst Time 24 3 6

Porque?

O turnaround mdio , por norma, maior que no SJF, no entanto o response time menor.

P1 Waiting Time Finish Time Turnaround Time 9 33 33

P2 4 7 7

P3 11 17 17

Average 8,00 19,00 19,00

21

Renato Panda Sistemas Operativos 2010/2011

Round Robin: Time Quantum


Processos P1 P2 P3 P4 Burst Time 6 3 1 7

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

Renato Panda Sistemas Operativos 2010/2011

Highest Response Ratio Next (HRRN)


Executa o processo com o response ratio (R) mais alto.
Algoritmo no-preemptivo.

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

Renato Panda Sistemas Operativos 2010/2011

Highest Response Ratio Next (HRRN)


Processos P1 P2 P3 P4 P5 Burst Time 3 6 4 5 2 Arrival Time 0 2 4 6 8

P1 Waiting Time Finish Time Turnaround Time 0 3 3

P2 1 9 7

P3 5 13 9

P4 9 15 9

P5 5 20 12

Average 4,00 8,00

24

Renato Panda Sistemas Operativos 2010/2011

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

Os processos ficam sempre na mesma fila

O escalonamento feito entre ambas as filas:


Prioridade fixa exemplo: todos os processos na fila primeiro plano so executados primeiro
Problema: Starvation!

Diviso temporal cada fila recebe uma determinada quantidade de tempo (ex.: fila1 = 80%, fila2 = 20%)
25

Renato Panda Sistemas Operativos 2010/2011

Multilevel Queue

26

Renato Panda Sistemas Operativos 2010/2011

Multilevel Queue: Exemplo

27

Renato Panda Sistemas Operativos 2010/2011

Multilevel Feedback Queue


Baseado no anterior mas os processos podem alternar entre as vrias filas.
Permite implementar Aging e separar processos CPU e I/O bound.
Escalonamento Multilevel feedback definido por:
Nmero de filas e respectivos algoritmos de escalonamento Condies para um processo subir ou descer de fila Mtodo para determinar em que fila entra um determinado processo

usada prioridade fixa e h preempo entre filas!


Processos na RQn executam antes dos da RQn+1
28

Renato Panda Sistemas Operativos 2010/2011

Multilevel Feedback: Exemplo


3 filas diferentes:
Q0 RR com quantum de 8ms Q1 RR com quantum de 16ms Q2 FCFS

Escalonamento:
Processos entram na fila Q0, executados por ordem
Cada processo executado durante (at) 8ms Caso no termine dentro dos 8ms, desce para Q1

A fila Q1 semelhante, usando 16ms


Caso no termine desce at Q2

Processos com CPU burst pequeno (<=8) so prioritrios, sobre processos longos (cpu bound)

29

Renato Panda Sistemas Operativos 2010/2011

Multilevel Feedback: Exemplo


RR(1) : quantum = 1 RR(2) : quantum = 2 FCFS
Processos P1 P2 P3 P4 P5 Burst Time 3 6 4 5 2 Arrival Time 0 2 4 6 8

P1 Waiting Time Finish Time Turnaround Time 0 3 3

P2 9 17 15

P3 10 18 14

P4 9 20 14

P5 4 14 6

Average 6,40 10,40

30

Renato Panda Sistemas Operativos 2010/2011

Algoritmos de Escalonamento
ref: pgina 413 do livro de William Stallings.

31

Renato Panda Sistemas Operativos 2010/2011

Escalonamento: Multi-Processadores?
At agora vimos escalonamento pensando em sistemas com 1 processador (com 1 core)
Vrios processadores = maior complexidade de escalonamento

Duas abordagens distintas:


Multiprocessamento assimtrico
Um processador responsvel pelo escalonamento (master server), outros correm aplicaes do utilizador = menor necessidade da partilha de dados

Multiprocessamento simtrico (SMP)


Cada processador responsvel pelo prprio escalonamento Processos numa fila (Ready) comum OU cada processador tem a sua fila de processos Ready.
Abordagem mais usada (WinXP+, Mac OS X, Linux, )
32

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Multi-Processadores: Load Balancing


Load balancing manter a carga balanceada entre vrios processadores (em SMP)
Normalmente s necessrio caso haja uma fila de processos (ready queue) por cada processador. Porque?

Duas abordagens (load balancing):


Push migration
Uma thread responsvel por verificar (periodicamente) sobrecarga entre CPUs e redistribuir processos

Pull migration
Feita pelo prprio CPU, quando fica idle vai buscar threads em espera (waiting) aos processadores ocupados

No so incompatveis (uso de um no invalida uso do outro)


Linux implementa os dois: push a cada 200 ms / pull sempre que necessrio.
34

Renato Panda Sistemas Operativos 2010/2011

Exemplos de Sistemas Operativos


MS-DOS
No era multitasking = no h escalonamento

Windows 3.x
Escalonamento Cooperativo, sem preempo

Windows 95, 98 e Me
Escalonamento com preempo, no entanto aplicaes 16bits executam sem preempo
35

Renato Panda Sistemas Operativos 2010/2011

Exemplos: Windows XP+


Escalonamento preemptivo com prioridades
Multilevel Feedback Queue

32 nveis de prioridade (e 32 filas), threads divididas em 2 classes:


Varivel (1 a 15) e Tempo real (16 a 31)

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

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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.

Quando fica em espera (wait) a prioridade sobe


subida depende da razo do wait

Janela em 1 plano (foreground) recebe aumento de 3x


38

Renato Panda Sistemas Operativos 2010/2011

Exemplos: Linux (2.5+)


Preemptivo, baseado em prioridades
Fair Preemptive (escalonamento justo)

Prioridade varia entre 0 e 140


0 a 99: real time 100 a 140: nice

Dois algoritmos distintos:


Tempo partilhado (time-sharing) q = 10ms Tempo real (real time) q = 200ms

Filas com maior prioridade tm maior time quantum.


39

Renato Panda Sistemas Operativos 2010/2011

Exemplos: Linux (2.5+)


Escalonamento: (Fair Preemptive)
Usa duas listas Active e Expired 1. Processos na lista Active so executados at gastarem o seu time slice (ou bloquearem) 2. Se tiver gasto o time slice, processo movido para a lista Expired e a prioridade recalculada 3. Quando no existem mais processos na lista Active, esta trocada com a Expired.

40

Renato Panda Sistemas Operativos 2010/2011

Exemplos: Linux (2.5+)


Tamanho do time slice de acordo com a prioridade

Listas Active e Expired ordenadas por prioridade

41

Renato Panda Sistemas Operativos 2010/2011

Exemplos: Linux 2.5 a 2.6.23+


Linux 2.5 a 2.6
Multilevel Feedback Queue
com Round Robin em cada fila

Linux 2.6 a 2.6.23


O(1) scheduler
Escalonamento em tempo constante ordem de complexidade O(1)

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

Renato Panda Sistemas Operativos 2010/2011

CPU Scheduling (TPC )


Exerccio 1:
Tendo em conta a tabela de processos:
1. Apresenta o escalonamento dos processos (diagrama de Gantt) usando os seguintes algoritmos:
a) b) c) d) e) FCFS SJF / SPN SRTF Round Robin (quantum = 1) Prioridade (P1=2, P2=1, P3=5, P4=4, P5=3) i. Preemptivo ii. No preemptivo f) g)
Processos P1 P2 P3 P4 P5 Burst Time 7 5 9 2 4 Arrival Time 0 1 4 5 8

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

Renato Panda Sistemas Operativos 2010/2011

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

Unix Systems Programming: Communication, Concurrency, and Threads


Captulos 12, 13 e 14
2

Renato Panda Sistemas Operativos 2010/2011

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

Deadlocks e Starvation Problemas clssicos de sincronizao


Bounded buffer / Producer Consumer (buffer limitado / produtor consumidor) Readers Writers (leitores escritores) Dining philosophers (jantar dos filsofos) Sleeping barber (barbeiro dorminhoco)
3

Renato Panda Sistemas Operativos 2010/2011

Sincronizao: Condio de corrida

Processo 1:
anunciar_relacao(Hlio, Amlia);

Processo 2:
anunciar_relacao(Antnio, Paula);

O que acontece quando os dois processos executam em simultneo?


4

Renato Panda Sistemas Operativos 2010/2011

Sincronizao: Condio de corrida


Talvez
Hlio esta numa relao com Amlia Antnio esta numa relao com 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

Renato Panda Sistemas Operativos 2010/2011

Sincronizao: Condio de corrida


Exemplo 2
counter uma varivel em memria partilhada, controla o total de alunos na sala. Esto 50 alunos na terica (counter = 50):
Processo 1:
entrar(Hlio);

Processo 2:
sair(Antnio);

O que acontece ao valor de counter quando os processos 1 e 2 executam em simultneo?


6

Renato Panda Sistemas Operativos 2010/2011

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

counter-register2 = counter register2 = register2 - 1 counter = register2


7

Renato Panda Sistemas Operativos 2010/2011

Sistemas Operativos: Exemplo 2


O resultado depende, novamente, da ordem de execuo dos processos:
tempo T0: T1: T2: T3: T4: T5: processo P1 P1 P1 P2 P2 P2 instruo register1 register1 counter = register2 register2 counter = resultado = counter register1 = register1 + 1 register1 register1 counter = = counter register2 = register2 - 1 register2 register2 counter = = 50 = 51 51 = 51 = 50 50

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

Temos, de novo, uma condio de corrida (race condition)


8

Renato Panda Sistemas Operativos 2010/2011

Sistemas Operativos: Exemplo 3


Exemplo 3:
N processos calculam nmeros primos, quando um encontrado o processo invoca save_prime()
primes array de M elementos (bounded buffer) pos posio actual de escrita (pos = 6)
Processo i:
save_prime(313);

Processo j:
save_prime(521);

O que pode acontecer neste caso?


9

Renato Panda Sistemas Operativos 2010/2011

Sistemas Operativos: Exemplo 3


Os dois processos podem escrever os resultados na mesma posio do buffer (entre outras coisas)
O resultado de P1 perdido posio 7 fica vazia pos = 8
tempo T0: T1: T2: T3: processo P1 P2 P2 P1 instruo primes[6] = 313 primes[6] = 521 pos++; pos++: primes 0 17 1 53 2 101 3 137 4 43 5 269 6 313 521 7 8 9

Resultado da concorrncia entre os dois processos pela varivel pos (race condition)
10

Renato Panda Sistemas Operativos 2010/2011

Excluso Mtua e Seces Crticas


Race condition: situao em que vrios processos partilham / manipulam os mesmos dados de forma concorrente. O resultado vai depender da ordem pela qual os acessos so feitos. Em certas partes, os exemplos que vimos devem ser executados apenas por um processo de cada vez excluso mtua. A essas linhas de cdigo d-se o nome de seces crticas
11

Renato Panda Sistemas Operativos 2010/2011

Excluso Mtua e Seces Crticas


Seco crtica! Deve ser executada em excluso mtua.

Esta funo no thread-safe nem reentrant


Thread-Safe: se funcionar correctamente quando executada simultaneamente por vrias threads (sincronizao, muito importante em Java, por exemplo) Reentrant: (reentrncia) se puder ser interrompida a meio da execuo e invocada novamente antes da invocao anterior ter terminado (ex.: atravs de um sinal)
Uma funo pode ser thread-safe e no ser reentrant!
12

Renato Panda Sistemas Operativos 2010/2011

Excluso Mtua: Mecanismos


Precisamos de mecanismos para resolver o problema das seces crticas, devem garantir:
Excluso Mtua
S um pode estar na seco a cada vez

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

Renato Panda Sistemas Operativos 2010/2011

Excluso Mtua: Mutexes


Precisamos de um mecanismo de excluso mtua mutex (mutual exclusion)
Seco de entrada Seco crtica Seco de sada

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

Renato Panda Sistemas Operativos 2010/2011

Excluso Mtua: Espera activa

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

Renato Panda Sistemas Operativos 2010/2011

Excluso Mtua: Hardware


Desactivar interrupes (interrupts):
Garante excluso mtua, uma vez que desactiva a preempo (instrues CLI e STI asm)

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

Renato Panda Sistemas Operativos 2010/2011

Excluso Mtua: Hardware


Arquitecturas com instrues especiais
Instrues de hardware que permitem efectuar certas aces de forma atmica counter++
INC @counter

Mesmo assim pode no funcionar


if (counter < 60)
MOV CMP JGE R1, @counter R1, 60 FimFuncao

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

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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 servem para contar coisas


Semforos: named e unnamed? 20

Renato Panda Sistemas Operativos 2010/2011

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)

Utilizao um bocado complexa


Soluo: encapsular aces numa biblioteca

Semforos POSIX
Utilizao bastante mais fcil
Funes: sem_init, sem_wait, sem_post, sem_close

Em verses de Linux <2.6 s funcionam com threads!

Java / .NET (normalmente usam-se monitores)


java.util.concurrent.Semaphore System.Threading.Semaphore
21

Renato Panda Sistemas Operativos 2010/2011

Deadlocks e Starvation
Tendo dois semforos Q e S inicializados a 1
Processo 1
wait(S); wait(Q); /* seco crtica */ signal(S); signal(Q);

Processo 2 O que pode correr mal?


wait(Q); wait(S); /* seco crtica */ signal(Q); signal(S);

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

Renato Panda Sistemas Operativos 2010/2011

Sincronizao: Problemas Clssicos


Problemas de sincronizao bem conhecidos, representam alguns dos mais frequentes problemas de controlo de concorrncia (e usados para testar novos mecanismos de sincronizao)
Produtor / Consumidor (tambm conhecido como buffer limitado Bounded Buffer Problem) Leitores e Escritores (Readers and Writers Problem) Jantar dos Filsofos (Dining Philosophers Problems)

Problemas abordados no captulo 6.6 do livro


Vamos estudar alguns destes problemas e solues usando semforos

23

Renato Panda Sistemas Operativos 2010/2011

Problema do Produtor Consumidor


Um produtor (ou mais) produzem dados, colocando-os num buffer finito
Se o buffer estiver cheio, o produtor tem que parar

Um consumidor retira esses dados do buffer


Se no houver dados, o consumidor no pode executar

Deve haver excluso mtua no acesso ao buffer partilhado entre ambos


Como resolver o problema?
24

Renato Panda Sistemas Operativos 2010/2011

Problema do Produtor Consumidor


Quantos semforos precisamos?
mutex garantir excluso mtua no acesso ao buffer partilhado full para contar os espaos ocupados, inicializado a 0 empty para contar espaos livres, inicializado com que valor?
Seco de entrada Seco crtica Seco de sada

Consumidor

read_pos

23 65 12

write_pos

Produtor

Ser mesmo importante?

25

ex

Renato Panda Sistemas Operativos 2010/2011

26

Sistemas Operativos
Deadlocks
2010/2011 Licenciatura em Engenharia Informtica Instituto Politcnico de Tomar Renato Panda renato.panda@ipt.pt

Renato Panda Sistemas Operativos 2010/2011

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

Foi tambm utilizado material do livro de William Stallings.


Operating Systems: Internals and Design Principles
[William Stallings] Captulo 6: Concurrency: Deadlock and Starvation
2

Renato Panda Sistemas Operativos 2010/2011

Contedos
Deadlocks:
O que um deadlock? Caractersticas Grafos de alocao de recursos

Como tratar um deadlock?


Prevenir deadlocks Evitar deadlocks Detectar deadlocks

Como recuperar de deadlock?


3

Renato Panda Sistemas Operativos 2010/2011

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!

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Deadlock: Exemplos (3)


Reutilizveis:
P1 wait(A); wait(B); P2 wait(B); wait(A);

O sistema tem 200KB de espao para alocar:


P1 request(90KB); ... request(60KB); P2 request(70KB); ... request(60KB);

Consumveis:
Funo receive bloqueia espera de uma mensagem
P1 receive(P2); ... send(M1,P2); P2 receive(P1); ... send(M2,P1);
7

Renato Panda Sistemas Operativos 2010/2011

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)

Hold and wait (manter e esperar)


Um processo pode manter certos recursos enquanto espera que outros sejam libertados
8

Renato Panda Sistemas Operativos 2010/2011

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

Espera circular (circular wait)


Ciclo fechado entre processos, em que um processo necessita de recursos mantidos pelo prximo processo na cadeia
9

Renato Panda Sistemas Operativos 2010/2011

Grafos de Alocao de Recursos


Processo: Um tipo de recurso com 3 instncias: P2 requer uma instncia do recurso Rj:
Rj

P2 tm em sua posse uma instncia do recurso Rj:


Rj
10

Renato Panda Sistemas Operativos 2010/2011

Grafos de Alocao de Recursos

a) sem deadlock

b) com deadlock
11

Renato Panda Sistemas Operativos 2010/2011

Grafos de Alocao de Recursos


Como analisar? Grafo sem ciclos = no existe deadlock Se existir um ciclo:
Caso haja apenas uma instncia de cada recurso = deadlock! Se existirem vrias instncias = possibilidade de deadlock
12

Grafo com ciclo mas sem deadlock

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Mtodos para lidar com deadlocks


Deadlock Prevention (preveno de deadlock)
Garantir que o sistema nunca entra num estado de deadlock
Eliminando uma das quatro condies necessrias para haver deadlock

Deadlock Avoidance (evitar deadlocks)


Evitar que deadlocks ocorram de forma dinmica
Fazendo escolhas, de acordo com o estado actual de alocao de recursos

Deadlock Detection (deteco de deadlocks)


Detectar possveis deadlocks no sistema e recuperar destes

Ignorar por completo o problema, fazer de conta que deadlocks no existem


Soluo adoptada por vrios sistemas operativos
15

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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.

Hold and Wait


Obrigar processos a requisitar todos os recursos que necessitam de uma s vez, bloqueando-os enquanto no for possvel satisfazer tais pedidos
Abordagem ineficiente. Porque?
Processo pode ficar bloqueado imenso tempo (ou at starvation), quando pode nem precisar de todos os recursos a curto prazo Recursos alocados podem no ser utilizados na maior parte do tempo, sendo negados a outros processos que podiam executar Nem sempre possvel saber partida todos os recursos necessrios por um processo (programao modular, multithreading, )
17

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Evitar Deadlocks (Avoidance)


Negar a inicializao de processos
No iniciar um processo caso as suas necessidades (por recursos) possam levar a deadlock (Process Initialization Denial)

Negar a alocao de recursos


No permitir a alocao (incremental) de recursos a um processo se essa alocao possa levar a deadlock (Resources Allocation Denial)

Em ambos os casos necessrio saber (previamente) os recursos necessrios por cada processo
19

Renato Panda Sistemas Operativos 2010/2011

Estados: Safe, Unsafe e Deadlock


O sistema pode estar em
Estado seguro (safe state)
No existem deadlocks

Estado inseguro (unsafe state)


Possibilidade de deadlock

Como evitar deadlocks?


Garantir que o sistema nunca entra num estado inseguro
Algoritmo do Banqueiro (Bankers Algorithm)
20

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Algoritmo do Banqueiro

Estar o sistema num estado seguro?


Existe algum processo que possa terminar com os recursos disponveis?
P1? P2? Porque?
22

Renato Panda Sistemas Operativos 2010/2011

Algoritmo do Banqueiro

Processo P2 executado at terminar Recursos ocupados por P2 so ento libertados


23

Renato Panda Sistemas Operativos 2010/2011

Algoritmo do Banqueiro

Processo P1 executa at terminar Recursos ocupados por P1 so libertados


24

Renato Panda Sistemas Operativos 2010/2011

Algoritmo do Banqueiro

P3 executa, P4 pode tambm executar/terminar

Sistema est num estado seguro (safe state)


Sequncia: P2, P1, P3 e P4.
25

Renato Panda Sistemas Operativos 2010/2011

Algoritmo do Banqueiro (2)

E agora? Estado seguro ou inseguro?


Existe algum processo que possa executar at terminar? Caso P1 requisite uma unidade de R1 e R3, deve ser autorizada?
26

Renato Panda Sistemas Operativos 2010/2011

Algoritmo do Banqueiro (2)

O sistema est num estado inseguro (unsafe state)


No podemos garantir que qualquer processo termine com os recursos disponveis Possibilidade de deadlock, pedido de P1 deve ser recusado
27

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Deadlock Avoidance (Evitar Deadlock)


o meio termo entre preveno e deteco de deadlocks
Menos restritivo que a preveno de deadlock Ao contrrio da deteco de deadlocks, no necessria a preempo e restauro (rollback) de processos

Existem restries ao seu uso:


necessrio saber mximo de recursos necessrios por cada processo Processos tm que ser independentes (no pode haver sincronizaes!) Porque? Nmero de recursos no sistema tem de ser fixo Nenhum processo pode terminar sem libertar os recursos
29

Renato Panda Sistemas Operativos 2010/2011

Deteco de Deadlock (Detection)


Recapitulando
Preveno de deadlock = estratgia conservativa
Resolve o problema limitando o acesso aos recursos e impondo restries aos processos

Evitar deadlock = meio termo


Dependendo do estado do sistema determina que pedidos (requests) sero aceites

Deteco de deadlocks = oposto da preveno


No so impostas limitaes aos recursos / processos Pedidos de recursos so sempre aceites Periodicamente o SO verifica se h deadlock aplica um algoritmo para detectar casos de espera circular
30

Renato Panda Sistemas Operativos 2010/2011

Algoritmo de Deteco de Deadlock


No algoritmo so usadas
Matriz de alocao (allocation matrix) A Vector de recursos disponveis (available vector) Matriz de pedido(s) (request matrix) Q
Recursos que esto a ser pedidos por cada processo

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)

Algoritmo s determina se existe deadlock!


No previne deadlocks, isto depende de como os recursos forem concedidos
31

Renato Panda Sistemas Operativos 2010/2011

Algoritmo de Deteco de Deadlock


Algoritmo:
1. Marcar todos os processos que tenham apenas zeros na matriz de alocao. 2. Inicializar um vector W igual ao vector de recursos disponveis. 3. Escolher um processo i, no marcado, cujos pedidos possam ser satisfeitos com os recursos disponveis. Ou seja, Qik Wk, para 1 < k < m
a) b) Se tal processo i no existir, algoritmo termina Se existir, marcar processo i e adicionar os seus recursos alocados ao vector W. Isto , Wk = Wk + Aik, para 1 < k < m. Repetir passo 3.

Existe deadlock quando h processos no marcados


Processos no marcados esto em deadlock
32

Renato Panda Sistemas Operativos 2010/2011

Algoritmo de Deteco de Deadlock

Existe algum processo em deadlock?


Temos de aplicar o algoritmo de deteco de deadlock
33

Renato Panda Sistemas Operativos 2010/2011

Algoritmo de Deteco de Deadlock

1. Marcamos o processo P4. Porque?


No tem qualquer recurso alocado!
34

Renato Panda Sistemas Operativos 2010/2011

Algoritmo de Deteco de Deadlock

R1 R2 R3 R4 R5 W =. 0 0 0 0 1

2. Inicializamos o vector W com valores iguais aos do vector de recursos disponveis


W = [0 0 0 0 1]
35

Renato Panda Sistemas Operativos 2010/2011

Algoritmo de Deteco de Deadlock

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

Renato Panda Sistemas Operativos 2010/2011

Algoritmo de Deteco de Deadlock

R1 R2 R3 R4 R5 W =. 0 0 0 1 1

4. Sendo assim marcamos P3 e libertamos os seus recursos para o vector W


4. W = W + A3 W = W + [0 0 0 1 0] W = [0 0 0 1 1]
37

Renato Panda Sistemas Operativos 2010/2011

Algoritmo de Deteco de Deadlock

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

Renato Panda Sistemas Operativos 2010/2011

Algoritmo de Deteco de Deadlock

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

Renato Panda Sistemas Operativos 2010/2011

Recuperao de Deadlocks
O que fazer quando deadlock detectado?
necessria uma estratgia de recuperao

Existem vrias hipteses


Abortar todos os processos em deadlock
uma das solues mais comuns nos SOs

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

Renato Panda Sistemas Operativos 2010/2011

Recuperao de Deadlocks (2)


Existem vrias hipteses
Abortar processos sucessivamente at que o deadlock desaparea Preempo de recursos (retirar recursos aos processos em deadlock) at que o deadlock desaparea
preciso fazer rollback aos processos que sofreram preempo para que adquiram de novo os recursos

Que critrios de seleco usar nestes casos?


O objectivo minimizar o custo da operao
41

Renato Panda Sistemas Operativos 2010/2011

Recuperao de Deadlocks (3)


Pode ser escolhido o processo que at ao momento
Consumiu menos tempo de CPU Produziu menos output Precise de mais tempo para terminar (estimado) Tenha menos recursos alocados Tenha a prioridade mais baixa Que precise de mais recursos Minimize o nmero de processos a terminar

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

Renato Panda Sistemas Operativos 2010/2011

Deadlock: Sumrio das Estratgias

43

Sistemas Operativos
Memria
2010/2011 Licenciatura em Engenharia Informtica Instituto Politcnico de Tomar Renato Panda renato.panda@ipt.pt

Renato Panda Sistemas Operativos 2010/2011

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

Operating Systems: Internals and Design Principles [William Stallings]


Captulo 6: Memory Management

Renato Panda Sistemas Operativos 2010/2011

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

Paginao (Paging) Segmentao (Segmentation)


3

Renato Panda Sistemas Operativos 2010/2011

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

Como partilhado o CPU entre processos


Porque?
Aumentar a utilizao do CPU Diminuir o tempo de resposta (interactividade)

Para isto preciso ter vrios processos em memria ao mesmo tempo partilhar a memria

Nesta aula vamos perceber


Como gerida a memria gesto de memria
4

Renato Panda Sistemas Operativos 2010/2011

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?

Renato Panda Sistemas Operativos 2010/2011

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

Partilhar a memria levanta alguns problemas iniciais


Suporte por hardware Questes de endereamento (address binding) lgico vs fsico Carregamento e ligao dinmicos de cdigo, bibliotecas partilhadas

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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

Como fazer ento o endereamento?


8

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Memory Management Unit (MMU)


A MMU (hardware) faz a traduo entre endereos lgicos (ou virtuais) e endereos fsicos O conceito de endereo lgico uma das bases de qualquer gestor de memria decente.
Endereo lgico gerado pelo CPU Endereo fsico endereo visto pela MMU Relocao dinmica Programador no sabe onde vai ser colocado o programa Processo pode ser colocado em disco e trazido de novo para a memria num local diferente Referncias de memria no cdigo tm de ser traduzidas para endereos fsicos

10

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Ligao Dinmica (Dynamic Linking)


Consiste em carregar as subrotinas de (por exemplo) uma biblioteca usada por um programa durante o carregamento ou execuo, em vez de as ligar durante a compilao includo um stub para cada chamada a uma funo da biblioteca pedao de cdigo que localiza / carrega a biblioteca na /para memria, substituindo-se depois pelo endereo da rotina chamada (ver p281 cap8.5.1) Conhecido tambm como bibliotecas partilhadas shared libraries
Windows = Dynamic-link Library (DLL) Unix = Dynamic Shared Object (DSO)

12

Renato Panda Sistemas Operativos 2010/2011

Ligao Dinmica (Linux)


Em Linux C/C++ podem ser criados 2 tipos de bibliotecas
Estticas (.a) Em Windows/Visual C++ (.lib)
A biblioteca (objecto) ligada (linked) durante a compilao e torna-se parte do programa show warnings compile+assemble, do not link Como criar (libexemplo.a):
Compilar: gcc Wall c file1.c file2.c Criar biblioteca: ar -cvq libexemplo.a file1.o
file2.o

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

libexemplo.so.1.0 file1.o file2.o

Opcional: mover (para /usr/lib) e criar links simblicos

pass options to linker

13

Renato Panda Sistemas Operativos 2010/2011

Ligao Dinmica (Linux)


Ligao (linking) feita com a flag -l do compilador
Por conveno as bibliotecas tm o prefixo lib gcc src-file.c -lm lpthread [-static]
Ligao com as bibliotecas math e thread
/usr/lib/libm.a ou /usr/lib/libm.so /usr/lib/libpthread.a ou /usr/lib/libpthread.so

Comando ldd lista as dependencias:

14

Renato Panda Sistemas Operativos 2010/2011

Alocao Contigua (e Proteco)


Normalmente com 2 parties
SO colocado no incio da memria (low memory) Restantes processos ficam na 2 partio (high memory)
Os registos base + limit so usados para proteger a memria dos vrios processos
Registo base
Contm o endereo fsico mais baixo a que o programa pode aceder

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

Renato Panda Sistemas Operativos 2010/2011

Proteco de Memria (Hardware)

16

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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

Memria Virtual (prximo captulo)


18

Renato Panda Sistemas Operativos 2010/2011

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

Parties de tamanhos diferentes reduzem a fragmentao interna


19

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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

Como distribuir os processos pelos espaos?


Tempo 21

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Buddy System
Exemplo usando um bloco inicial de 1Mb

25

Renato Panda Sistemas Operativos 2010/2011

Buddy System
Representao usando uma arvore binria depois do pedido para libertar B (Release B)

26

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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

O espao de endereamento lgico de um processo no precisa de ser contguo


Quaisquer frames livres podem ser alocados a um processo necessrio manter uma lista de todos os frames livres Para executar um programa que ocupe n pginas s temos que encontrar n frames livres e carregar o programa

29

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Exemplo de Paginao

Page table de cada um dos processos no instante (f)

31

Renato Panda Sistemas Operativos 2010/2011

Paginao: Traduo de Endereos


O endereo lgico gerado pelo CPU (n bits) dividido em:
Page number (p) serve de ndice na tabela de pginas, esta contm o endereo base (incio) de cada pgina na memria fsica Page offset (d) indica o deslocamento dentro da pgina, combinado com o endereo base resulta no endereo na memria fsica
page number p m-n m bits page offset d n

Exemplo de endereamento lgico de 2m bits


Tamanho das pginas = 2n Total de pginas = 2m-n
32

Renato Panda Sistemas Operativos 2010/2011

Paginao: Traduo de Endereos


page number page offset (deslocamento)

page number serve de ndice na page table

Cada entrada na tabela de pginas (page table) chamada de page table entry - PTE

33

Renato Panda Sistemas Operativos 2010/2011

Memria Lgica e Fsica

34

Renato Panda Sistemas Operativos 2010/2011

Exemplo de Paginao (2)


O sistema tem
32 bytes de memria fsica Pginas de 4 bytes 4 bytes

35

32 bytes

Qual o nmero mximo de pginas?

Renato Panda Sistemas Operativos 2010/2011

Exemplo de Paginao (2)


O sistema tem
32 bytes de memria fsica Pginas de 4 bytes 4 bytes

32 bytes = 25 p? d?

36

Renato Panda Sistemas Operativos 2010/2011

Exemplo de Paginao (2)


O sistema tem
32 bytes de memria fsica Pginas de 4 bytes 4 bytes

32 bytes = 25 p 8 pginas = 23 d 4 bytes = 22

37

32 bytes

Qual o nmero mximo de pginas?

32 bytes

Qual o nmero mximo de pginas?

Renato Panda Sistemas Operativos 2010/2011

Frames livres (free frames)

Antes da alocao

Depois da alocao
38

Renato Panda Sistemas Operativos 2010/2011

Implementao das Page Tables


Como implementada a tabela de pginas? Tabela de pginas mantida na memria principal 2 registos so fundamentais
PTBR (Page table base register)
Aponta para a tabela de pginas

PTLR (Page table length register)


Indica o tamanho da tabela de pginas

Esta soluo cria um novo problema


Para obter dados ou instrues so agora necessrios dois acessos memria!
Um para a tabela de pginas e outro para os dados/instrues
39

Renato Panda Sistemas Operativos 2010/2011

TLB: Translation Look-aside Buffer


O problema dos dois acessos memria pode ser resolvido por hardware usando um cache que permite pesquisas rpidas
Translation Look-aside buffer (TLB) ou memria associativa
TLB permite traduzir rapidamente os endereos Se pagina p estiver na TLB, obtemos logo o frame number correspondente Caso contrrio necessrio consultar a tabela de pginas
Page number Frame number

A capacidade da TLB baixa por norma 64 a 1024 entradas


40

Renato Panda Sistemas Operativos 2010/2011

TLB Hit & Miss

41

Renato Panda Sistemas Operativos 2010/2011

Tempo Mdio de Acesso Memria


O tempo mdio (efectivo) de acesso memria Effective (Memory) Access Time (EAT) est dependente da taxa de acertos na TLB (TLB Hits)

= 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

Renato Panda Sistemas Operativos 2010/2011

Proteco (Valid/Invalid Bit)


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

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Estrutura da Tabela de Pginas


Grande parte dos sistemas actuais suportam um grande espao de endereamento lgico 232 a 264
A tabela torna-se demasiado grande para ser alocada de forma contigua na memria principal

Imaginando 32 bits de endereamento lgico, com pginas de 4 KB (12 bits)


A tabela ter 1 milho de entradas Se cada entrada (PTE) ocupar 4 bytes cada processo pode precisar de at 4 MB de memria fsica para a sua tabela de pginas
endereamento de 232

Alguns esquemas possveis Paginao hierrquica Tabelas de pginas hashed Tabelas de pginas invertidas

p d 20 4 KB = 212 1M pginas = 2

45

Renato Panda Sistemas Operativos 2010/2011

Tabelas de Pginas Hierrquicas


Conceito base dividir espao de endereamento lgico em vrias tabelas de pginas

Exemplo: tabela de pginas com 2 nveis (two-level page table)


46

Renato Panda Sistemas Operativos 2010/2011

Two-level? Como funciona?


Tendo um sistema de 32 bits com pginas de 1 KB. O endereo lgico divide-se em:
Page number 22 bits page offset (deslocamento) 10 bits

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

Renato Panda Sistemas Operativos 2010/2011

Two level? 64 bits?


Com 64 bits so necessrios pelo menos 3 nveis
Two level paging:

Three level paging

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

Continua a ser demasiado grande

48

Renato Panda Sistemas Operativos 2010/2011

Hashed e Inverted Page Tables


Abordagens mais comuns para sistemas com mais de 32 bits Quem quiser aprender um pouco mais sobre isto = subcaptulos 8.5.2 e 8.5.3 do livro
Pouco mais de 1 pgina!

49

Renato Panda Sistemas Operativos 2010/2011

Segmentao
Abordagem semelhante ao particionamento dinmico
viso da memria mais aproximada do utilizador

Um programa consiste num conjunto de segmentos distintos


main, funes, mtodos, objectos, stack, etc.

50

Renato Panda Sistemas Operativos 2010/2011

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 stack array libm

main libm

stack array

Fragmentao Externa
Sim

Segmentao est cada vez mais em desuso hoje em dia

user space

physical memory space


51

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Exemplo de Segmentao

Espao de endereamento lgico de um programa, a tabela de segmentos correspondentes e a sua posio na memria fsica
53

Renato Panda Sistemas Operativos 2010/2011

Reviso: Paging / Segmentation


Exemplo
Endereos de 16 bits Paginao:
pginas de 1 KB = 210 Programa pode ter no mximo 26 (64) pginas de 1 KB

Segmentao
Vamos supor que so usados 4 bits para o segment number Tamanho mximo de segmentos so 4 KB = 212

Endereo relativo 1502, em binrio = 0000010111011110


54

Renato Panda Sistemas Operativos 2010/2011

Reviso: Paging / Segmentation


Exemplo

55

Renato Panda Sistemas Operativos 2010/2011

Reviso: Paging / Segmentation


Paginao

56

Renato Panda Sistemas Operativos 2010/2011

Reviso: Paging / Segmentation


Segmentao

57

Sistemas Operativos
Memria Virtual
2010/2011 Licenciatura em Engenharia Informtica Instituto Politcnico de Tomar Renato Panda renato.panda@ipt.pt

Renato Panda Sistemas Operativos 2010/2011

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

Operating Systems: Internals and Design Principles [William Stallings]


Captulo 8: Virtual Memory

Renato Panda Sistemas Operativos 2010/2011

Contedos
Memria Virtual
Conceito e benefcios

Page Fault Bits valid/invalid e modified (dirty) Tempo Efectivo de Acesso Poltica de Fetch
Demand Paging Prepaging

Poltica de Posicionamento e Substituio Algoritmos de Substituio de Pginas


FIFO, LRU, Optimal e Clock (2nd chance)

Trashing e alocao global/local Poltica de Limpeza Bloquear frames (Frame locking) Page faults e estrutura de um programa
3

Renato Panda Sistemas Operativos 2010/2011

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)

Processos divididos em pginas/segmentos que no precisam de ser contguas

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Memria Virtual
Memria virtual maior que memria fsica

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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

Pre-paging trazer mais pginas do que as necessrias


Eficiente se as pginas estiverem de forma sequencial em disco (explora as caractersticas deste tipo de HW) Usa mais memria do que o necessrio
9

Renato Panda Sistemas Operativos 2010/2011

Pre-paging (pginas contguas)

10

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Exemplo de bit vlido/invlido

12

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Exemplo de Page Fault

14

Renato Panda Sistemas Operativos 2010/2011

Tempo de acesso (Demand Paging)


O tempo efectivo de accesso (EAT) ao usar demand paging dado por:

Onde p = percentagem de page faults [0, 1] Mem = tempo de acesso memria Overhead = page fault overhead (swap in + swap out + OS overhead)
15

Renato Panda Sistemas Operativos 2010/2011

Exemplo (EAT / demand paging)


Acesso memria = 200 nanossegundos overhead mdio (page fault) = 8 milissegundos
EAT = (1 p) x 200 + p x 8.000.000 = 200 + p x 7.999.800
Em 1000 acessos sem page faults, EAT = 200 ns Se um acesso em 1000 causar um page fault, EAT = 8.200 ns Um atraso superior a 40 vezes!

16

Renato Panda Sistemas Operativos 2010/2011

Criao de processos (COW)


A memria virtual oferece alguns benefcios na criao de processos:
Copy on Write (COW)
Aps a criao de processos (fork), processo pai e filho partilham as mesmas pginas na memria fsica Estas so copiadas apenas se forem modificadas por algum deles Permite uma criao de processos mais eficiente

Memory Mapped Files (MMAP)


17

Renato Panda Sistemas Operativos 2010/2011

Exemplo: Copy-on-Write
Aps a criao do processo filho (fork):

Processo 1 modifica a pgina C:

18

Renato Panda Sistemas Operativos 2010/2011

Poltica de substituio de pginas


O que fazer quando no existem frames livres?
necessrio substituir um dos frames existentes (swap out)

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

Renato Panda Sistemas Operativos 2010/2011

Poltica de substituio de pginas


Substituir uma pgina implica o swap out do contedo actual
Ser que isto sempre necessrio?

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)!

A substituio no ocorre apenas quando no h frames livres


Para evitar que um processo use demasiada memria, este pode ter de substituir pginas suas
20

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Exemplo: Substituio de Pginas

22

Renato Panda Sistemas Operativos 2010/2011

Algoritmos de Substituio de Pginas


O objectivo de qualquer algoritmo de substituio de pginas obter o nmero mnimo de page faults Como utilizar?
Algoritmos so avaliados usando um conjunto de referncias de memria, medindo os page faults
Por exemplo: 1, 4, 3, 1, 3, 6, 4, 5, 2, 3, 1,

Quatro algoritmos comuns


FIFO, LRU, Optimal e Clock
23

Renato Panda Sistemas Operativos 2010/2011

Algoritmo: FIFO
Fila simples First In First Out
Pgina que est em memria mais tempo substituda Simples de implementar

Sofre de alguns problemas


Por vezes as pginas que esto em memria mais tempo podem ser frequentemente utilizadas Anomalia de Belady
Detalhes daqui a pouco
24

Renato Panda Sistemas Operativos 2010/2011

Algoritmo: FIFO (Exemplos)


Usando 3 frames (3 pginas podem estar em memria ao mesmo tempo)

15 page faults

9 page faults 25

Renato Panda Sistemas Operativos 2010/2011

Frames Disponveis vs Page Faults


Como bvio, o nmero de page faults diminui quando o nmero de frames disponveis aumenta

26

Renato Panda Sistemas Operativos 2010/2011

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

4 frames 10 page faults


27

Renato Panda Sistemas Operativos 2010/2011

Anomalia de Belady
Exemplo utilizando o algoritmo FIFO

28

Renato Panda Sistemas Operativos 2010/2011

Algoritmo Optimal
Pagina substituda a que no ser utilizada durante mais tempo
Como saber? Adivinhar o futuro?

Difcil / impossvel de implementar


Normalmente usado em estudos como comparao Indica o mnimo de page faults possvel No sofre da anomalia de Belady
29

Renato Panda Sistemas Operativos 2010/2011

Algoritmo Optimal
Utilizando 3 frames

30

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Algoritmo LRU
Usando 3 frames

32

Renato Panda Sistemas Operativos 2010/2011

Algoritmo LRU: Implementao?


Necessrio marcar referencias s pginas
Como implementar?
Contador
Cada PTE tem um contador, quando a pgina referenciada actualiza-se o contador Problema: necessrio percorrer tabela inteira (todas as PTEs) para escolher uma pgina vtima

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

Na prtica LRU pouco usado aproximaes


Falta de suporte por hardware!
33

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Algoritmo: Clock (Exemplo)


Pgina 727 vai ser colocada em memria

35

Renato Panda Sistemas Operativos 2010/2011

Algoritmo Clock (Exemplo 2)


Usando 3 frames

Comparao dos algoritmos de substituio de pginas

36

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Trashing e Alocao Global/Local

Que pginas pode substituir um processo?


Alocao global processo escolhe frame da lista de todos os frames, pode tirar frames de outros processos Alocao local processo s pode escolher frames do conjunto que lhe foi alocado
38

Renato Panda Sistemas Operativos 2010/2011

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)

Melhor abordagem usa duas listas


Modificadas escritas periodicamente para o disco No Modificadas substitudas ou reutilizadas se referenciadas de novo enquanto esto na lista para serem substitudas
39

Renato Panda Sistemas Operativos 2010/2011

Bloquear Frames (I/O!)


Por vezes preciso impedir que certas frames sejam substitudas
usando um lock bit que fica associado a cada frame

Cenrios:
Pginas da kernel Estruturas de controlo Buffers de I/O (ao usar DMA por exemplo)
40

Renato Panda Sistemas Operativos 2010/2011

Tamanho das Pginas


O tamanho de cada pgina influencia
Nvel de fragmentao interna Quantidade de pginas necessrias por processo Tamanho da tabela de pginas Overhead com I/O (pginas maiores = melhor) Principio da localidade (pginas menores = melhor)
Pginas menores permitem ter mais pginas em memria, com o tempo as pginas em memria vo conter pores do processo mais relevantes (localidade) Com pginas maiores, nmero de pginas na memria diminui. Para alm disto, vo conter referncias menos relevantes e aumentar os page faults
41

Renato Panda Sistemas Operativos 2010/2011

Page Faults e Estrutura do Programa


Sistema com pginas de 512 bytes, inteiro = 4 bytes Cada linha guardada numa pgina Existem menos de 128 frames (ex: cache de 127 pginas)
int table[][] = new int[128][128];
Programa 1 for (j = 0; j <128; j++) for (i = 0; i < 128; i++) table[i][j] = 0; Programa 2 for (i = 0; i <128; i++) for (j = 0; j < 128; j++) table[i][j] = 0; Quantos page faults?

42

Renato Panda Sistemas Operativos 2010/2011

Page Faults e Estrutura do Programa


Temos os 2 programas seguintes Sistema com pginas de 512 bytes, inteiro = 4 bytes Cada linha guardada numa pgina, cache de 127 pginas
int table[][] = new int[128][128];
Programa 1 for (j = 0; j <128; j++) for (i = 0; i < 128; i++) table[i][j] = 0; Programa 2 for (i = 0; i <128; i++) for (j = 0; j < 128; j++) table[i][j] = 0;

128 x 128 = 16,384 page faults

128 page faults

43

Renato Panda Sistemas Operativos 2010/2011

Page Faults e Estrutura do Programa


Diferena entre programa 1 e programa 2 = diferena entre um simples programador e um engenheiro de software

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

Renato Panda Sistemas Operativos 2010/2011

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

Operating Systems: Internals and Design Principles [William Stallings]


Captulo 11: I/O Management and Disk Scheduling Captulo 12: File Management

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Estrutura de um Ficheiro
O conceito de ficheiro bastante geral
Sequencia de bits, bytes, linhas, records

Estrutura depende do tipo de ficheiro


Nenhuma (sequncia de bytes) Registos simples (linhas de tamanho fixo/varivel) Complexas (objectos, documentos formatados, imagens, )

O primeiro mtodo pode ser usado (com caracteres de controlo) para simular os outros 2
5

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Operaes sobre Ficheiros


Algumas operaes bsicas sobre os ficheiros:
Criar novo ficheiro (create) Escrever (write) Ler (read) Reposicionar dentro do ficheiro (repositioning ou seek)
Reposiciona o ponteiro da localizao actual

Apagar (delete) Truncar (truncate)


Apagar o contedo do ficheiro, mantendo os seus atributos

Estas podem ser usadas para realizar outras tarefas (copiar, escrever no fim, )
7

Renato Panda Sistemas Operativos 2010/2011

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()

Para gerir os ficheiros abertos necessrio


Ponteiro para a posio actual de leitura/escrita no ficheiro (para cada processo) Contador nmero de vezes que o ficheiro foi aberto Localizao do ficheiro no dispositivo Permisses para cada processo
8

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Exemplo: Ficheiros de ndice/Relativos

Exemplo da estrutura de um ficheiro de modo a evitar a pesquisa sequencial num ficheiro


10

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Exemplo: Sistema de Ficheiros

13

Renato Panda Sistemas Operativos 2010/2011

Operaes sobre Directrios


Vrios tipos de operaes
Procurar, apagar, criar, listar, renomear ficheiros

Queremos organizar directrios para obter


Eficincia
Procurar ficheiros de forma rpida

Organizao ao agrupar ficheiros Possibilidade de ter ficheiros com nomes iguais

Vrias abordagens
Single-level, two-level, rvore, grafos acclicos, grafos
14

Renato Panda Sistemas Operativos 2010/2011

Directrios usando Grafos

15

Renato Panda Sistemas Operativos 2010/2011

Mount do Sistema de Ficheiros


Antes de ser acedido um sistema de ficheiros tem que ser montado
a) sistema existente b) sistema de ficheiros no montado (unmounted)
Mount Point

16

Renato Panda Sistemas Operativos 2010/2011

Mount do Sistema de Ficheiros


Em Linux o sistema de ficheiros pode ser montado em qualquer ponto do sistema (mounting point)
Em Windows 95-XP os mounts s podiam ser feitos na raiz, associados a uma letra (ex: C:\) Nas verses mais recentes pode ser feito em qualquer zona da rvore de directrios
17

Renato Panda Sistemas Operativos 2010/2011

Mais conceitos bsicos


Quem ainda tiver dvidas sobre conceitos base dos sistemas de ficheiros devem ler o captulo 10 do livro da cadeira

... agora comea a parte a srio

18

Renato Panda Sistemas Operativos 2010/2011

Estrutura do Sistema de Ficheiros


J sabemos que um ficheiro
A unidade de armazenamento lgica Coleco de informao relacionada

Sistema de ficheiros (file system) reside no armazenamento secundrio


Permite armazenar / ler informao de forma eficiente

File control block (FCB)


Estrutura de armazenamento que guarda informao sobre um ficheiro, entre elas a lista de blocos (sectores) que constituem o ficheiro

Device driver (controlador do dispositivo)


Controla o funcionamento do dispositivo fsico
19

Renato Panda Sistemas Operativos 2010/2011

Sistema de Ficheiros: Implementao


O sistema de ficheiros organizado em camadas (layers) Constitudo por
Boot control block
Contm informao necessria pelo sistema para iniciar o SO a partir deste volume

Volume control block


Informao sobre o volume

Estrutura de directrio
Organiza os ficheiros

File control blocks (FCB)


Um por ficheiro com detalhes deste
20

Renato Panda Sistemas Operativos 2010/2011

Abrir e Ler um Ficheiro


Algumas estruturas do sistema de ficheiros (como a tabela de ficheiros abertos) so mantidas em memria pelo sistema operativo

21

Renato Panda Sistemas Operativos 2010/2011

Virtual File Systems (VFS)


A organizao por camadas permite ter um sistema de ficheiros virtual por cima dos sistemas de ficheiros reais
Permite usar as mesmas funes (syscal) para sistemas de ficheiros diferentes

22

Renato Panda Sistemas Operativos 2010/2011

Implementao de Directrios
Directrios contm informao sobre ficheiros
Fornecem um mapeamento entre o nome dos ficheiros e os prprios ficheiros

A estrutura usada pode variar


Lista simples (linear) de nomes dos ficheiros com ponteiros para os blocos de dados
Fcil de implementar Pouco eficiente

Tabelas de hash
Procura mais eficiente Tem problemas de colises e o tamanho mximo tem de ser definido
23

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Alocao Contgua

26

Renato Panda Sistemas Operativos 2010/2011

Alocao Contgua (Compactao)

27

Renato Panda Sistemas Operativos 2010/2011

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)

Ponteiros tambm ocupam espao Menos seguro se um bloco for perdido


28

Renato Panda Sistemas Operativos 2010/2011

Alocao Ligada

29

Renato Panda Sistemas Operativos 2010/2011

Alocao Ligada (Consolidao)

30

Renato Panda Sistemas Operativos 2010/2011

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

Permite acesso aleatrio / directo

31

Renato Panda Sistemas Operativos 2010/2011

Alocao Indexada

32

Renato Panda Sistemas Operativos 2010/2011

Alocao Indexada - Inodes


Se cada bloco ocupar 4 KB e cada ponteiro para um bloco / entrada no ndice ocupar 32 bits Quantos ponteiros cabem num bloco ndice?
4 KB (tamanho do bloco) / 4 (tamanho do ponteiro) = 1024

Qual o tamanho mximo de um ficheiro?


1024 (ponteiros) x 4 KB (tamanho do bloco) = 4 MB!

Talvez nem sempre seja suficiente!


33

Renato Panda Sistemas Operativos 2010/2011

Alocao Indexada Inodes


Existe um inode por ficheiro
Contm informao do ficheiro

e ainda:
10 ponteiros directos 1 ponteiro indirecto 1 ponteiro indirecto duplo 1 ponteiro indirecto triplo

Estes valores variam consoante o sistema de ficheiros


Exemplo: ext3 = 12,1,1,1 com endereos de 32 bits
34

Renato Panda Sistemas Operativos 2010/2011

Inode Unix UFS

35

Renato Panda Sistemas Operativos 2010/2011

Alocao Indexada inodes


Quanto pode ocupar agora um ficheiro?
Blocos de 4KB, ponteiro de 32 bits

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

Renato Panda Sistemas Operativos 2010/2011

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

Renato Panda Sistemas Operativos 2010/2011

Gesto de Espao Livre


Para alocar novos ficheiros necessrio saber que blocos esto disponveis Mtodos mais comuns:
Bit vector ou bit map
Cada bloco representado por um bit

Lista ligada de blocos livres


Existem duas modificaes extra
Grouping Counting

38

Renato Panda Sistemas Operativos 2010/2011

Bit-Vector (ou Bit-Map)


usada uma string de bits em que cada um dos bits representa um bloco
0 1 2 n-1


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

Renato Panda Sistemas Operativos 2010/2011

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

Existem algumas optimizaes:


Grouping: agrupar N blocos livres, primeiro dos blocos guarda o endereo dos N-1 seguintes Counting: guarda o endereo de conjuntos de blocos, em vez de bloco a bloco
40

Renato Panda Sistemas Operativos 2010/2011

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