Você está na página 1de 96

Sistemas Operativos

Organizao do SO:
Elementos: - Hardware CPU, memria, dispositivos de E/S. - Sistema operativo Intermedirio entre utilizadores e hardware. - Programas aplicacionais Compiladores, processadores de texto, bases de dados, jogos, web browsers. - Utilizadores Pessoas, mquinas, outros Computadores

Definio preliminar dum Sistema Operativo:

um programa ou at um conjunto de programas que age como intermedirio entre o utilizador e o hardware ou mquina fsica. Os objectivos dum SO so: Executar programas do utilizador e tornar mais fcil a resoluo de problemas. Tornar fcil o uso da mquina e integre todos os componentes dum sistema de computao Gere Hardware Controla e coordena a utilizao do hardware pelos vrios programas Utilizao eficiente e justa - Disponibiliza ambiente para as aplicaes serem executadas Fornece ambiente de interaco com o utilizador Fornece ambiente para execuo de programas Detecta e trata erros dos programas e/ou utilizadores Proteco entre os vrios utilizadores do sistema

- Estrutura do SO Conceito de Processo (process ou job) Processo um programa em execuo. - Objectivo: Esta noo de processo permite que vrios utilizadores estejam a usar cpias do progama mail, ou que o mesmo utilizador possa invocar cpias do mesmo editor de programas pico. Cada um deles um processo separado apenas as seces de texto so idnticas, as seces de dados e o resto do VAS diferente. Um processo mais do que um programa, pois inclui:

Seco de texto (ou programa) O contedo do contador de programa (PC, program counter) Contedo dos registos do processador A pilha (stack) do processo Seco de dados que contm as variveis globais. Etc...

- Multiprogramao - Um nico utilizador no consegue manter o CPU e os dispositivos de E/S sempre ocupados. - Multiprogramao organiza os jobs de modo a que o CPU tenha sempre um para executar - O sistema mantm em memria alguns dos jobs - Quando o job que est em execuo tem de esperar (por exemplo, por uma operao de E/S), colocado outro job em execuo - Timesharing (multi-tarefa) - Multiprogramao + interaco com o utilizador - O CPU comuta de job frequentemente - Tempos de resposta (< 1 segundo)

- Funcionalidades: Gesto de processos - Processo - Processos de SO Programa em execuo - Processos de utilizadores Programa VS processo - Funes: Precisa de recursos para realizar a sua tarefa - criar, terminar, suspender Cpu, memria, ficheiros, E/S processos Dados de entrada - Quando o processo termina, recursos so libertados. - Sincronizao,
comunicao, escalonamento, ...

Sistema tem vrios processos

Program counter Determina a prxima instruo que ser executada - Tipos de sistemas operativos Sistemas de Tempo Real Estes surgiram para controlar processos industriais e dispositivos militares. Os sistemas de tempo real caracterizam-se por obedecerem a restries de tempo para a execuo de determinadas tarefas. Sistemas Paralelos Estes surgiram como sequncia natural da tentativa de adicionar mais recursos ao sistema nomeadamente mais processadores - duas ou mais CPUs.

Sistemas Distribudos Os SOs distribudos apareceram na sequncia do desenvolvimento dos mecanismos de interligao entre computadores. A carga computacional distribuda por vrios computadores. A computao distribuda, ou sistema distribudo, uma referncia computao paralela e descentralizada, realizada por dois ou mais computadores conectados atravs de uma rede, cujo objectivo concluir uma tarefa em comum. "Coleco de computadores autnomos interligados atravs de uma rede de computadores e equipados com software que permita a partilha dos recursos do sistema: hardware, software e dados" Sistema interactivo - Tempo de resposta ao utilizador Sistema transaccional - Acesso a recursos partilhados Sistema batch - Jobs, submisso de jobs Sistema embebidos ou integrados O sistema embebido pode conter a funcionalidade completa do sistema de diferentes formas atravs de software em execuo em processadores ou em maquinaria especializada. O desenho de sistemas embebidos podem exigir o desenvolvimento de software dependente de hardware e de hardware dependente de software. De forma a ir de encontro a requisitos extremamente exigentes, em termos de fiabilidade e segurana, desempenho, limitaes de consumo energtico e interligao com outros sistemas, incluindo o mundo real, estes interfaces hardwaresoftware necessitam de ser desenhados conjuntamente. - Ambientes computacionais

- Modelo cliente servidor Cliente-servidor um modelo computacional que separa clientes e servidores, sendo interligados entre si geralmente utilizando-se uma rede de computadores. Cada instncia de um cliente pode enviar requisies de dado para algum dos servidores conectados e esperar pela resposta. Por sua vez, algum dos servidores disponveis pode aceitar tais requisies, process-las e retornar o resultado para o cliente. Apesar do conceito ser aplicado em diversos usos e aplicaes, a arquitectura praticamente a mesma. . Modelo distribudo . Terminais so substitudos por PCs . Cliente gera pedidos . Servidor responde a pedidos Servidor de ficheiros

- Modelos peer-to-peer

Peer-to-Peer (do ingls: par-a-par), entre pares, uma arquitectura de sistemas


distribudos caracterizada pela descentralizao das funes na rede, onde cada n realiza tanto funes de servidor quanto de cliente. . Modelo distribudo . No distingue clientes de servidores . Exemplos: Napster e Gnutella - Estruturas do sistema operativo Servios do sistema operativo Interface com o utilizador Interface com o sistema operativo: chamadas ao sistema Desenho e implementao de sistemas operativos Gerao e inicializao do sistema operativo - Servios de um sistema operativo Gesto de processos Comunicao entre processos Gesto de memria Gesto de ficheiros Gesto de dispositivos Entrada/Sada Proteco e segurana Manipulao de informao - Data e hora, n de utilizadores em sesso, etc - Viso do utilizador - Interface para o utilizador Interface linha de comandos, Interface batch, Interface grfica - Execuo de programas Carregar o programa para memria e executar o programa - Operaes de entrada/sada - Manipulao de ficheiros - Comunicao entre processos - Deteco de erros - Gesto de recursos partilhados

- Interface com o utilizador - Interpretador da linha de comandos - Implementado no ncleo ou - Implementado atravs de um programa Exemplo: Unix shells, Bourne shell, C shell, Bourne Again shell, Korn shell - Objectivo: Obtm um comando do utilizador, analisa-o e executa-o - Implementao dos comandos Built-in ou Outros programas adicionais - Interface grfica - batch - Interface do sistema operativo - Chamadas ao sistema operativo (system calls) - Rotinas escritas em C, C++, assembly, - Tipicamente disponveis atravs de uma API Win32 API, POSIX API, Java API Funo que por sua vez invoca a chamada ao sistema operativo.

- Chamadas ao sistema operativo - Processo Invoca uma funo (chamada ao SO) exemplo: open(file, O_RDONLY)) - System call interface -Trata argumentos 1. Registos 2. Memria, pilha - Cada chamada ao SO identificada por um nmero corresponde a um ndice numa tabela

- Executa a instruo TRAP muda para modo ncleo/privilegiado -> interrupo por software ou excepo Modo privilegiado: esta mudana permite que se aceda a zonas de memria e outros componentes que tm elevado nvel de segurana, para que utilizadores comuns no possam aceder a zonas importantes de memria.

- Ncleo - Obtm identificador da chamada e executa o respectivo cdigo - Este cdigo retorna normalmente Muda para modo utilizador - Tipos de chamadas ao sistema operativo Controlo de processos Gesto de ficheiros Gesto de dispositivos Manipulao de informao - Data e hora, nmero de utilizadores em sesso,... - Comunicao entre processos - Troca de mensagens - Memria partilhada - Desenho de Sistemas Operativos - Definio de objectivos Aspectos que influenciam o desenho de um SO Hardware Tipo do sistema: batch, multi-utilizador, tempo-real Requisitos dos utilizadores Amigvel (user-friendly), bom desempenho, fivel, - Requisitos de quem desenvolve o sistema Fcil de desenhar, implementar e manter Flexvel, fivel, eficiente,....

- Estrutura de Sistemas Operativos - Estrutura monoltica . Exemplos: MS-DOS, verses iniciais do Unix - Estrutura em camadas - Microkernels - Mdulos - Mquinas virtuais

Estruturas monolticas: exemplos - MS-DOS - Mximo de funcionalidade no mnimo de espao - No dividido em mdulos As interfaces e os nveis de funcionalidade no esto completamente separados - Consequncias Aplicaes podem aceder a rotinas bsicas de E/S - Restries de hardware Intel 8088 no tem dual mode

Estrutura Monoltica Esta a estrutura dos primeiros sistemas operativos. Esta estrutura constituda, basicamente, por um nico programa dividido em subrotinas. As caractersticas fundamentais deste tipo de estrutura so:

Construo de um programa final, com base nos mdulos compilados separadamente, que se unem atravs de um ligador (linker); Boa definio de parmetros de ligao entre as diferentes rotinas existentes, baixando o nvel de inter-dependncia entre os mdulos dos programas; Falta de proteces e privilgios ao executar as rotinas que permitem manejar diferentes aspectos dos recursos do computador como a memria, o disco, ect.; Geralmente so feitos medida, pelo que so eficientes e rpidos na sua execuo e gesto, mas carecem de flexibilidade para suportar diferentes ambientes de trabalho ou tipos de aplicao (monotarefa).

Estruturas monolticas: exemplos - Verses iniciais do Unix - Kernel Inclui muita funcionalidade num nico nvel - Difcil de implementar e manter

- Estruturas modulares - Camada/mdulo . Concretiza uma componente bem definida do sistema . Entradas . Sadas . Funcionalidades - Vantagens . Desenvolvimento . Manuteno . Flexibilidade

- Estrutura em camadas - O SO est dividido em camadas - A camada mais baixa o hardware - A camada mais alta a interface com os utilizadores - Cada camada utiliza os servios da camada abaixo e fornece servios para a camada acima - Vantagens: . Facilita a construo e debug . Dificuldades: . Definio de cada camada . Eficincia (chamadas sucessivas entre camadas) Conforme foram crescendo as necessidades dos utilizadores e o aperfeioamento dos sistemas, tornou-se necessria uma maior organizao do software do sistema operativo. Ento, desenvolveu-se um SO em que uma parte do sistema continha, por sua vez, outras sub-partes, organizadas em forma de nveis. Ou seja, dividiu-se o SO em pequenos blocos muito bem definidos, com uma interface clara, para permitir a ligao

com outros blocos (da o tal algoritmo de Dijkstra, onde eu posso escolher vrias estradas para chegar ao destino). Resultou ento um SO com uma estrutura hierrquica, ou de nveis. Nveis do SO: Nvel 0 -> Gesto do CPU (alocao dos Processos e multiprogramao) Nvel 1 -> Gesto da memria; Nvel 2 -> Comunicao dos processos do utilizador; Nvel 3 -> Entrada e sada; Nvel 4 -> Programas do utilizador; Nvel 5 -> Operador (utilizador). - Microkernels - Motivao . Aumento da dimenso do ncleo dificulta a sua gesto/manuteno - Soluo . Ncleos pequenos: apenas colocado no ncleo o essencial Gesto de memria, gesto de processos e comunicao entre processos O ncleo suporta a comunicao entre processos atravs de mensagens - Vantagens . Fcil estender o SO: novos servios so adicionados no espao do utilizador, no requerem a alterao do ncleo . Fiabilidade: a maior parte dos servios correm em modo utilizador (vs modo ncleo) - Problemas . Desempenho A comunicao entre processos passa pelo ncleo Estrutura microkernel Trata-se de um tipo de sistema operativo que disponibiliza uma interface a cada processo, mostrando ao utilizador uma mquina idntica ao hardware existente. Tem como objectivo integrar diferentes sistemas operativos (Windows XP, Mac, Linux) dando ao utilizador a sensao de vrias mquinas diferentes. O ncleo destes SO denomina-se monitor virtual e tem por objectivo a multiprogramao. Apresenta aos nveis superiores tanto as mquinas virtuais quanto as que so solicitadas. Estas mquinas no so mais que uma rplica da mquina real em que cada uma executa um S.O. diferente, a mquina estendida do utilizador.

- Monolticas com Mdulos - Utiliza o paradigma orientado a objectos - Cada componente tem uma interface bem definida - Cada componente carregada, quando necessrio mdulos carregados dinamicamente - Mais flexvel que estrutura por camadas - Mais eficiente que microkernel

- Mquinas virtuais - Motivao - Correr vrios sistemas operativos partilhando o mesmo hardware - Mquina virtual . disponibiliza uma interface idntica do hardware - Vantagens . Ambiente de desenvolvimento de SO . Compatibilidade (Mquina virtual do java) . Proteco . Eficincia/produtividade (a) Nonvirtual machine (b) virtual machine Estrutura mquinas-virtuais Este tipo de sistema o mais recente, podendo ser executado na maioria dos computadores. O ncleo kernel tem como misso estabelecer a comunicao entre os clientes e os servidores. Este modelo oferece uma grande flexibilidade aos servios fornecidos ao utilizador final, uma vez que o ncleo serve apenas as funes mais

bsicas.

Estes servidores devem ter mecanismos de segurana e de proteco, que por sua vez sero filtrados pelo ncleo que controla o Hardware. A expresso Micro-kernel, em si, caracteriza os sistemas cujas funcionalidades do sistema saram do Kernel.

-> Mquinas virtuais: exemplos - Mquina virtual do Java - Inclui um carregador de classes e um interpretador de java - Pode ser concretizada Em software Em hardware

- Gerao do sistema operativo - Os sistemas operativos so concretizados de forma a poderem correr em diferentes mquinas. - Assim: . Tm de ser configurados e gerados para uma mquina especfica . Configurao e gerao . Programa system generation SYSGEN . Programa que obtm a informao especfica da mquina Ficheiro Utilizador Determina ele prprio o hardware existente . Usada para (Dimenso vs generalidade): Compilar uma verso especfica do sistema operativo Ou Seleccionar os mdulos utilizados no processo de ligao (link) dos mdulos que constituiro o sistema operativo (o cdigo no recompilado) Ou Seleccionar o cdigo a executar (todo o cdigo faz parte do sistema operativo)

- Inicializar o sistema (booting the system) - Bootstrap program ou bootstrap loader - Pequeno pedao de cdigo - Localiza o ncleo, carrega-o para memria e d incio sua execuo - Este procedimento pode ser feito em duas fases (por exemplo, nos PC) Um bootstrap loader simples carrega um boot program mais complexo a partir do disco, o qual carrega o ncleo - Quando o CPU recebe um evento de reset: - O registo IP (instruction pointer) inicializado com um endereo de memria pr-definido - Neste endereo de memria est o Bootstrap program - Este programa est em ROM (read only memory) (firmware)

PROCESSOS Gesto de processos Processos: conceito Processo: programa em execuo Entidade activa Processo vs programa Processo inclui: - Program counter - Registos - Pilha (temps) - Heap (dinmica) - Cdigo

Cdigo Processo em memria

- Processos: estado - New: processo a ser criado - Running: processo com instrues a serem executadas - Waiting: o processo est espera de um evento (concluso de uma operao de entrada/sada ou recepo de um sinal) - Ready: o processo est a espera que lhe seja atribudo processador - Terminated: o processo terminou a sua execuo Quando um processo entra de novo no processador, o estado de execuo carregado na mesma forma de que foi deixado antes de programa ter sado (coerncia de execuo de processos). Estes estados so guardados no PCB (Process Control Block).

- Bloco de Controlo de Processos (Process Control Block) - PCB: informao associada a cada processo: - Estado do processo - Program counter - Registos, flags - Informao de escalonamento Prioridade ... - Informao de gesto de memria Limites Tabelas de pginas/segmentos - Informao de gesto Tempo de utilizao de CPU Id do processo, id do utilizador - Informao de gesto de entradas/sadas Lista de ficheiros abertos, perifricos em uso - Escalonamento de processos - 1 processador ~ 1 processo em execuo (running) - Comutao de processos . P0 passa de running para waiting ou ready . P1 passa para running . Comutao de contexto (context switch) PCB de P0 guardado PCB de P1 carregado . Durante este tempo o sistema no faz trabalho til . Durao - depende de suporte em hardware

- Filas de processos - Fila ready - Conjunto de processos espera que lhes seja atribudo o processador - Filas de dispositivos - Conjunto de processos espera de uma operao de E/S nesse dispositivo

Fila ready e filas de dispositivos de E/S - Ciclo de vida do processo - Novos processo so colocados na fila ready - O processo espera na fila ready at ser seleccionado para execuo -lhe atribudo processador - O processo pode sair do estado de execuo porque: - Faz um pedido de E/S colocado na fila de E/S do respectivo dispositivo Quando o pedido satisfeito volta para a fila ready - Escalonamento. - Cria um processo filho e fica espera que este termine. - Fica espera de uma interrupo Exemplo: semforos.

- Escalonadores de Processos - Escalonador de curto prazo (escalonador do processador) - Selecciona o prximo processo a ser executado. - executado frequentemente (milisegundos) deve ser rpido. - Escalonador de longo prazo (escalonador de jobs) - Selecciona os processos que devem ser colocados na fila de ready. - Existe em sistemas batch Os processos so guardados em disco at serem seleccionados para serem carregados para memria e passarem para a fila ready. - executado de forma menos frequente (segundos, minutos): pode demorar mais tempo a decidir. - Determina o grau de multiprogramao - Seleco do processo de modo a equilibrar a fila ready com: I/O-bound process: Processos que efectuam muitas E/S. CPU-bound process: Processos que utilizam muito o processador. - Escalonador de mdio prazo - Swapping. - Processos Dependendo do modo como o sistema operativo define um processo podem-se ter as seguintes situaes: - Um processo, ao longo da sua existncia pode executar vrios programas distintos; - Um programa pode ser executado, em simultneo, por vrios processos; - Cada processo tem um espao de memria reservado em exclusivo para si; - Vrios processos podem partilhar a mesma memria; - Vrios processos podem partilhar partes da sua memria; - Criao de processos - Criao de processos. - Inicializao do sistema. - Um processo invoca a chamada ao sistema que cria processos. - Um pedido do utilizador d incio criao de um novo processo. - Em sistemas batch, quando um job carregado para memria, cria-se um processo para o executar.

- Criao de processos -Polticas -Recursos Pai e filho partilham todos os recursos Pai e filho partilham alguns recursos Pai e filho no partilham recursos -Execuo Pai e filho executam-se concorrentemente Pai espera at filho terminar Espao de endereamento O filho uma cpia do pai (mesmo cdigo,dados, ..) O filho carrega outro programa - Terminar processos - Terminar um processo: - Voluntria Executa a sua ltima instruo e pede ao sistema operativo que o remova (exit()). - Involuntria Erros (exemplo: acesso a zonas de memria no vlidas). Outro processo invoca uma chamada ao sistema operativo para terminar o processo. Proteco. Tipicamente o processo pai pode terminar o processo filho: O processo filho reservou demasiados recursos A tarefa que o processo filho est a executar deixou de ser necessria O processo pai est a terminar e o sistema operativo no permite que o processo filho continue em execuo aps o seu pai ter terminado terminao em cascata. - Quando um processo termina - Pode enviar um valor para o processo pai (wait()). - Todos os recursos do processo so libertados (memria, ficheiros abertos, ...). - Em UNIX: quando um processo termina, os seus processos filhos so atribudos ao processo init. Criar e terminar processos em unix - Criar processo: . fork() - Carregar outro programa para ser executado . exec() - Pai espera at o filho terminar . wait()

- Processos cooperativos - Processos independentes . Processo cuja execuo no afecta nem afectada pela execuo de outro processo. - Processos cooperativos . Processo cuja execuo afecta ou afectada pela execuo de outro processo. - Vantagens Partilha de informao. Desempenho. Modularidade. - Requerem mecanismos de comunicao entre processos (Interprocess communication: IPC): Memria partilhada Troca de mensagens - Troca de mensagens Comunicao entre Processos (IPC, Interprocess Communication)

comunicao entre processos e de sincronizao das suas aces.


Sistemas de mensagens processos comunicam entre si sem recurso a variveis partilhadas. send(message) mensagem de tamanho fixo ou varivel. receive(message).

P e Q pretendem comunicar, preciso: ligao (communication link ) entre eles.


. : . - Duas operaes bsicas: . send(P, message). . receive (Q, message). - Canal de comunicao . Comunicao directa ou indirecta . Comunicao sncrona ou assncrona . Buffering automtico ou explcito

hardware).

- Comunicao directa - Processos tm de se identificar mutuamente de forma explcita . send (P, message) envia mensagem para processo P . receive (Q, message) recebe mensagem do processo Q - Propriedades da ligao . O canal estabelecido automaticamente . O canal associado a um par de processos . Entre cada par de processos existe exactamente um canal . O canal pode ser unidireccional ou bidireccional - Comunicao indirecta - As mensagens so enviadas e recebidas atravs de caixas de correio (mailboxes ou ports) - Cada mailbox tem um id nico. - Processos comunicam atravs de uma mailbox partilhada. - Operaes Criar e destruir mailboxes send (A, mensagem) envia mensagem para mailbox A receive (A, mensagem) recebe mensagem da mailbox A - Propriedades da ligao . O canal estabelecido se os processos partilharem uma mailbox . Um canal pode estar associado a vrios processos . Cada par de processos pode partilhar vrios canais . O canal pode ser unidireccional ou bidireccional - Comunicao sncrona ou assncrona Bloqueante sncrona - Envio bloqueante O emissor bloqueia at a mensagem ser recebida - Recepo bloqueante O receptor bloqueia at haver uma mensagem disponvel No bloqueante assncrona - Envio no bloqueante O emissor envia a mensagem e continua. - Recepo no bloqueante O receptor recebe a mensagem ou NULL (no fica espera de receber uma mensagem) Buffering formas: 1. Capacidade nula 0 mensagens O emissor tem de esperar pelo receptor (rendezvous).

2. Capacidade limitada comprimento finito de n mensagens O emissor tem de esperar se a ligao est saturada. 3. Capacidade ilimitada comprimento infinito O emissor nunca espera. - Comunicao cliente-servidor - Sockets

communication.

endpoint for

161.25.19.8:1625 refere-se ao porto 1625 na mquina (host) 161.25.19.8 -se entre um par de sockets:

- Remote Procedure Calls . Remote procedure call (RPC) uma tecnologia de comunicao inter-processos que permite a um programa causar uma subrotina ou procedimento para executar noutra mquina da rede, sem que haja, explicitamente, um cdigo que defina concretamente esta operao remota. - Remote Method Invocation (Java) . uma RPC orientado a objectos.

THREADS
Thread: - Unidade bsica de utilizao de CPU - Tem um identificador - Usa os registos do Computador - Tem uma pilha Partilha com outras threads: - Cdigo - Dados Definio de Thread: Uma thread pode ser definida com um fluxo independente de instrues que podem ser agendadas para serem executadas pelo SO. A nvel programtico, um procedimento que pode ser executado independentemente do programa fonte. Vantagens de uso de threads: Aumento de desempenho: - Aplicaes com utilizao intensiva de CPU vs aplicaes que realizam muitas entradas/sadas Usufrui das arquitecturas multiprocessador - Aumenta eficincia do uso extensivo do CPU Partilha recursos Rapidez - Mais rpido criar threads que processos Memria Suporte a Multithreading (uso concorrente de vrias threads) Threads de nvel utilizador -Geridas por bibliotecas do utilizador Threads do ncleo -Suportadas pelo ncleo (Grande parte dos SOs recentes) Bibliotecas de Threads -Suportam threads a nvel utilizador / ncleo Nvel Ncleo Nvel Utilizador POSIX(pthread) POSIX(pthread) WIN32 JAVA(sobre WIN32) JAVA(sobre WIN32)

Modelos de Multithreading Threads de Utilizadores VS Threads do Ncleo - Modelo many-to-one: Associam vrias threads do nvel de utilizador a uma thread do nvel ncleo -Modelo one-to-one: Associam cada thread do nvel de utilizador a uma thread do nvel do ncleo -Modelo many-to-many: Associam vrias threads de utilizador a: . igual nmero de threads do nvel de ncleo. . menor nmero de threads do nvel de ncleo. Modelos: Many-to-One: - A gesto de threads efectuada ao nvel do utilizador atravs de bibliotecas: - O kernel ignora a existncia de threads ( tudo uma thread de ncleo) - As bibliotecas gerem o processo de escalonamento de threads para que a kernel thread processe apenas uma thread de utilizador; - A gesto de threads ao nvel do utilizador implica que: Cada processo tem uma tabela de threads (aprx. a tabela de processos do ncleo); Esta tabela contm a informao especfica de cada uma das threads do processo (PC, Stack Pointer, registos, etc); Vantagens Podem ser utilizadas em SOs que no suportam threads; Mais rpido que threads de ncleo (kernel thread); Cada processo pode ter um algoritmo de escalonamento de threads adaptado s suas necessidades; Desvantagens Tratamento de chamadas ao SO bloqueantes - Utilizao apenas de chamadas no-bloqueantes; - Tem de se prever que uma chamada bloqueante Gesto de faltas de pgina pra todo o processo (mesmo que se possa continuar com outra thread) A libertao de CPU tem de ser efectuada pela thread que a est a utilizar. No usufrui das vantagens de multiprocessadores.

One-to-One: Cada thread de utiizador est associada a uma thread de ncleo. A nvel de Ncleo: Mantm uma tabela de threads Cria e destri as threads Quando uma thread bloqueia o ncleo, escalona uma thread de qualquer processo. Vantagens: Tratamento de chamadas ao SO bloqueantes - Utilizao apenas de chamadas no-bloqueantes; - Tem de se prever que uma chamada bloqueante Gesto de faltas de pgina pra todo o processo (mesmo que se possa continuar com outra thread) A libertao de CPU tem de ser efectuada pela thread que a est a utilizar. No usufrui das vantagens de multiprocessadores. Reciclagem de Threads (usar as mesmas threads para realizar vrios processos similares). Desvantagens -Desempenho: -> Criar uma thread de ncleo menos eficiente que criar uma thread de utilizador, pois esta criao e manuteno feita ao nvel do SO. Many-to-Many: Concilia as vantagens das threads de utilizador e as threads de ncleo. Como se tem n -> n, no mximo, de user para kernel threads, pode se ter vrias threads de utilizador a serem processadas por uma nica thread de ncleo. A concorrncia de threads, no modelo many-to-one, virtual, ao nvel de threads de ncleo, pois apenas se processa uma nica thread de ncleo de cada vez, da o modelo one-to-one ser o nico que oferece mais concorrncia, se bem que o programador tem de ter o cuidado de no criar demasiadas threads na mesma aplicao. Neste modelo, o programador pode criar quantas threads de utilizador quanto deseja pois as threads de ncleo correram paralelamente em multiprocessador. Alm disso, existe a mais-valia de as threads de ncleo no bloquearem os processos e permitir escalonamento de threads.

Two-Level Utiliza o modelo de many-to-many threads, mas associa a este a possibilidade de ter uma thread de utilizador e uma thread de ncleo. Problemas relacionados com Threads e Thread Management Semntica das chamadas ao sistema fork e do exec Fork() Duplica um processo, criando um processo filho. O fork duplica apenas a thread que o invoca ou todas as threads do processo ? - Existem ambas funcionalidades. O programa passado como argumento do comando Exec(programa) substitui todo o processo, incluindo as suas threads. Se o o exec invocado aps o fork, desnecessrio duplicar todas as threads pois sero substitudas pelo programa passado como argumento do exec (e por toda as threads que este usa). Caso contrrio, copiam-se todas as threads - Cancelamento de Threads - Cancelar antes de ser completada: -> Se vrias threads fazem, por exemplo, um acesso a uma base de dados, em paralelo, e o trmino de uma thread levar ao cancelamento das restantes, ao serem cancelas, elas libertaro os recursos e terminadas como se tivessem acabado o trabalho que desempenhavam, normalmente. Tipos de Cancelamento: - Assncrono -> Uma thread cancela imediatamente a thread que se pretende cancelar -Diferido -> A thread verifica periodicamente se deve ser cancelada, permitindo que o seu cancelamento seja efectuado sem que haja repercusses indesejadas (como as que podem advir de uma cancelamento assncrono).

- Manipulao de Sinais Definio de sinal: mtodo, em sistemas UNIX, para notificar processos da ocorrncia de um evento. Processamento de Sinais: o sinal gerado, enviado para o processo e tratado por este. Tipos de Sinais: - Sncronos: -> Acesso ilegal a memria ou diviso por 0: . So enviados aos processos geradores de tais sinais - Assncronos -> Comandos mandados plo utilizador e temporizadores: . Gerados a partir de eventos externos ao processo. Manipulao de Sinais: Quando se cria um processo novo a resposta a todos os sinais definidos no sistema a aco por defeito. No entanto o processo, atravs da chamada de servios do sistema, pode apanhar (catch) um determinado sinal e ter uma rotina (handler) para responder a esse sinal, ou simplesmente pode ignor-lo (excepto para os sinais SIGKILL e SIGSTOP). Handler por omisso: Faz o que o sinal foi criado para. Handler definido pelo utilizador: Faz o que o utilizador define, ao usar a rotina Signal. Este handler, ao encontrar o signal desejado, executa uma rotina de tratamento de sinal ( por exemplo signal(SIGINT, sair) ir tratar o sinal SIGINT utilizando o mtodo sair). Processar Sinais em Multithread: Sinais Sncronos Enviar o sinal para a thread qual o sinal se aplica Sinais Assncronos - Comandos enviados plo Utilizador: -> Enviar o sinal para todas as threads - Threads que pretendem bloquear sinais: -> Enviar o sinal para um determinado conjunto de threads - Envio de sinal apenas a uma thread -> Definir uma thread para receber todos os sinais do processo

- Thread Pools: Conceito: Define-se como sendo um arquivo de threads de processos pouco complexos, que em vez de serem terminadas aquando o trmino do processo associado, so guardadas num armazm de threads, para que quando houver um processo que necessite de uma thread, se escolha, de entre as que possam ser compatveis, uma que sirva para executar o processo referido. Vantagens: - Economia. Desempenho, Rapidez: As threads j esto criadas, prontas a utilizar. - Desvantagem: Espao de armazenamento para as threads. - Activaes do Escalonador Comunicao entre kernel / biblioteca de threads Necessita modelo Many-to-Many e Two-Level Eficincia de threads Aquando o escalonamento de threads, faz-se de forma a que haja sempre um nmero eficiente de threads a nvel do ncleo, pondo threads em espera de E/S Upcall Comunicao entre kernel / biblioteca de threads. Quem recebe, fica incumbido de dar o aviso de recebimento de pedido. O upcall enviado quando uma das threads activas est prestes a bloquear, e enviado para que esta seja retirada e substituda por outra thread. - Suporte a Threads POSIX (pthreads) Define a API para criao e sincronizao de threads Apenas especifica comportamentos, no implementaes. Pode ser implementado, quer com user threads, quer com kernel threads. WIN32 Apenas kernel Threads. LINUX Chamadas ao sistemas clone() para clonar o processo que fez a chamada ao sistema. Usa flags para partilha de sistemas de ficheiros, espaos de memria, handlers de sinais, ficheiros abertos.

Java Como corre numa VM, utiliza as threads existentes na biblioteca da mquina que aloja a JVM. Iniciar execuo de uma thread: o O mtodo start cria os recursos do sistema, necessrios execuo da Thread, escalona-a e invoca o mtodo run. o Este mtodo run invocado directamente plo programador. Terminar a execuo de threads: o O mtodo stop da class Thread est omissa / no-implementada. o A thread deve implementar uma forma segura de terminar, para que no haja efeitos adversos inesperados.

ESCALONAMENTO
- Conceito: Escalonamento permite que haja um aproveito eficiente da utilizao do processador, para que este tenha sempre um processo em execuo, para maximizar o desempenho. Para tal, existe uma estrutura que guarda os processo em espera (fila ready) para que, mal um processo acabe de usar o processador, outro entre de seguida. Desta forma tem-se mais rendimento e segue-se o paradigma da multiprogramao. - Ciclos de processamento/entradas e sadas Caracterizao dos ciclos: Ideal: Grande nmero de pequenos bursts de CPU; Pequeno nmero de grandes bursts de CPU; Esta informao til para a escolha do algoritmo de escalonamento.

- Escalonamento CPU fica livre Escalonador de CPU (escalonador de curto tempo) Seleciona um processo da fila de processo ready para colocar em execuo, segundo um algoritmo de escalonamento. O CPU pode efectuar escalonamento nas seguintes situaes: 1. Processo passa de estado em execuo para estado em espera (ex: pedido E/S) 2. Processo passa de estado em execuo para estado ready (ex: ocorre um interrupo) 3. Processo passa de estado em espera para ready (ex: trmino de operao de E/S) 4. Processo termina Escalonamento No Preemptivo . O processo liberta o CPU por iniciativa prpria: Ou porque termina; Ou porque requer operaes E/S

Escalonamento Preemptivo . O processo tem um prazo para terminar o uso de CPU. Se no tiver terminado no tempo limite, passa para fila ready e d o CPU ao prximo processo. o O contexto do processo escalonado guardado no PCB. . Problemas: Partilha de informao mecanismos de sincronizao Timer Dispatcher Definio: Dispatcher um componente que atribui o controlo do CPU ao processo selecionado pelo escalonador (de CPU) Executa as seguintes operaes: . (re-) execut-lo. Este despacho deve ser to rpido quanto possvel. O tempo que decorre entre a paragem de execuo dum processo e o incio doutro designado por latncia de despacho. Critrio de Seleco de Algoritmos de Escalonamento - Utilizao de CPU -> Manter a multiprogramao. -Througput (Dbito) -> Maximizar o n de processos concludos por unidade de tempo. Tempo de Circulao (Turnaround) -> Tempo que decorre entre o instante em que um processo submetido e o instante em que concludo. Tempo de Espera: -> Tempo que o processo esteve na fila de espera. Tempo de Resposta: -> Tempo desde a submisso de um pedido at obteno da primeira resposta - Sistemas interactivos Critrio de Maximizao: Utilizao de CPU, Dbito (Throughput) Critrio de Minimizao: Turnaround, tempo de espera, tempo de resposta Critrios de ptimizao: - Maximizar utilizao de CPU. - Maximizar Throughput. - Minimizar Turnaround time.

- Minimizar tempo de espera - Minimizar tempo de resposta Algoritmos de Escalonamento First-Come, First-Served (FCFS) - Implementao: fila FIFO - Tempo mdio de espera normalmente longo O algoritmo mais simples: processos so seleccionados ou servidos pela ordem de chegada ready queue. Assim que a CPU libertada, o processo cabea (no incio) da ready queue seleccionado e despachado para a CPU. interactivos ou de tempo real. para sistemas

-> Efeito Convoy 1 processo com utilizao intensiva de CPU + vrios processos com utilizao intensiva de E/S Todos os processos esperam que o primeiro liberte o CPU Algoritmo Shortest-Job-First (SJF) Associa a cada processo a dimenso do seu prximo CPU burst Para seleciona o processo com menor CPU burst (em caso de empate usa FCFS) Existem dois esquemas: -Preemptivo: O CPU s ser libertado quando o processo completar o seu CPU burst. Preemtivo: se um novo processo for colocado na fila ready com um CPU burst menor do que o restante tempo do processo em execuo, este substitudo por o Shortest-Remaining-Time-First (SRTF) SJF permite optimizer a media de tempo de espera

Exemplo (SJF -preemptivo) P1 P3 P2 P4

12

16

- Processo p1 - Tempo de chegada: 0.0, burst time:7 - Processo p2 - Tempo de chegada: 2.0, burst time:4 - Processo p3 - Tempo de chegada: 4.0, burst time:1

- Processo p4 - Tempo de chegada: 5.0, burst time:4 - Tempo mdio de espera: (0+6+3+7)/4=4

Vantagens de SJF:

Minimiza o tempo mdio de espera dum dado conjunto de processos.

Desvantagens de SJF:

O problema est em determinar qual o valor do prximo CPU burst de um processo. Forma de calcular o prximo CPU burst: - Por estimativa; - Pelos tamanhos dos bursts anteriores. Escalonamento com Prioridades - A cada processo atribuda uma prioridade, que podem ser internas ou externas. O algoritmo SJF um caso particular do algoritmo de escalanomento por prioridades, em que a prioridade o prximo tempo previsvel de CPU burst. Uma prioridade atribuda a cada processo, e o escalonador atribui a CPU ao processo com maior prioridade (menor inteiro). - preemptivo - no-preemptivo Se dois processos tm a mesma prioridade, o desempate feito recorrendo ao FCFS Problema -> starvation processos de baixa prioridade arriscam-se a nunca executar. Soluo -> envelhecimento (aging) medida que o tempo passa, a prioridade dum Round Robin Utilizado sobretudo em sistemas de time-sharing, o algoritmo round robin similar ao FCFS, mas preemptivo, ou seja, os primeiros a chegar so os primeiros a ter processador, mas existe a possibilidade de escalonamento a uma processo que ocupe muito CPU. Cada processo obtm uma pequena unidade de tempo na CPU (time quantum ou time slice), vulgarmente 10-100 milisegundos. Aps decorrer este tempo, o processo preempcionado e adicionado cauda da fila READY. A fila READY tratada como uma fila circular. - Se h n processos na fila READY e o time quantum q, ento cada processo obtm 1/n do tempo da CPU em fatias de q unidades de tempo duma vez. Nenhum processo espera mais do que (n-1)*q unidades de tempo. - Desempenho . q grande -> FIFO

. q pequeno -> q tem de ser grande relativamente comutao de contexto; caso contrrio, a sobrecarga muito elevada. Filas Multi-Nvel A fila ready dividida em vrias filas - de acordo com a classificao de processos (ex: Fore ou Background) Cada fila tem o seu prprio algoritmo de escalonamento - Foreground -> Round Robin - BackGround -> FCFS Existe ainda escalonamento entre filas - Com prioridades -> Exemplo Foreground com maior prioridade - Cada fila tem uma percentagem de tempo de processador -> Ex: 80% para foreground, 20% para background

Filas multi-nvel com retorno -Os processos podem mudar de fila -> Processos separados de acordo com CPU burst . Se o processo utiliza muito CPU mudado para uma fila de menor prioridade - Exemplo: 3 filas - Fila 0 RR com time slice de 8 milissegundos - Fila 1 RR com time slice de 16 milissegundos - Fila 2 FCFS Novos processos so colocados na fila 0 Depois de serem escalonados se no terminarem nos 8 milissegundos o Mudam para a fila 1 Mesmo esquema para a fila 1

- Parametrizao N de Filas Algoritmos de escalonamento de cada fila Mtodo utilizao para mudar o processo de fila Maior / Menor Prioridade Mtodo para determinar a fila inicial do processo Escalonamento de threads - Escalonamento Local -> Efectuado pla biblioteca de threads - Many to One - Many to Many - Escalonamento Global -> Efectuado pelo ncleo para threads do nvel do ncleo . APENAS usado pelas One-to-One. Escalonamento Mltiplos Processadores - Processadores Homogneos - Assimtrico -> Escalonamento efectuado por um processador Master Server -> Outros processadores apenas executam cdigo do nvel do utilizador -> Simples: apenas um processador acede a dados do sistema -Simtrico -> Uma fila ready comum VS uma fila ready por processador -> Problema . Acesso simultneo a estruturas de dados partilhadas Outras questes: Afinidade (cache, desempenho) Balanceamento de carga (vs afinidade) Processadores Multicore - Multi-Thread -> Execuo das threads intercaladas . Optimizao da utilizao do CPU Utiliza o CPU durante o acesso a memria Ex: Como se utiliza, no SO, processadores lgicos, um sistema dual core, duas threaded, ir ter 4 processadores lgicos.

Avaliao de Algoritmos de Escalonamento Modelos Determinsticos A partir de uma caso exemplificativo, determina o desempenho dde cada algoritmo. Modelos de Filas De Espera De forma geral, quando falamos destes modelos pressupomos um funcionamento em rede. Para tal preciso ter os tempos de chegada dos processos fila. Como este sistema visto como uma rede, cada servidor tem uma lista de processos em espera, assim como uma lista de dispositivos I/O. Em casos de multiprocessadores, apenas um deles fica responsvel por ter a fila de processos. Sabendo a taxa de servio de processos e a taxa de recepo de processos, pode-se calcular media, mnimos e mximos para o tempo de espera. Simuladores Simulao envolve um modelo computacional para sistemas. Este software gera distribuies matemticas / probabilsticas para os bursts de CPU, chegadas, partidas de processos, etc Estas distribuies guiam a simulo levam a uma melhor gesto de algoritmos de escalonamento. Implementao Descreva a melhor forma de usar as simulaes para aumentar o rendimento e eficincia dos algoritmos de escalonamento.

Sincronizao de Processos Problema: - Acesso concorrente a dados partilhados pode resultar em dados incoerentes. Race Condition: Situao em que vrios processos acedem concorrentemente aos mesmos dados e o resultado da execuo depende da ordem pela qual os processos so efectuados. Denomina-se seco crtica a parte de cdigo que pode trazer problemas de incoerncia de dados se houver acessos concorrentes. Soluo Requisitos: - Excluso Mtua * Se um processo est a executar a sua seco crtica -> Nenhum outro processo pode estar a executar a sua seco crtica. - Progresso - Se:

-> No existir nenhum processo a executara sua seco crtica -> Existe algum processo espera de entrar na sua seco crtica.

- Ento -> a seleco do processo que deve comear a execuo da sua parte crtica no pode ser adiada indefinidamente - Espera Ilimitada * Depois de um processo pedir para inicia a sua seco crtica e antes desta entrada lhe ser autorizada, o nmero de vezes que outros processos podem entrar na sua seco crtica tem de ser limitado. Solues para Seces Crticas do SO Soluo de Peterson (sincronizao de software) - Soluo para 2 processos - Instrues atmicas (LOAD E STORE) no podem ser interrompidas - Nem todas as arquitecturas suportam esta implementao. - Os dois processos partilham duas variveis -> int turn : indica qual dos processos pode entrar na seco crtica. -> boolean flag[2] : indica se os processos esto prontos para entrar na seco crtica (flag[i] indica q o processo pode ou no estar apto a entrar).

- Excluso Mtua -> Um processo s entra quando o outro tiver sado (quando a seco est livre). -> No pode haver, simultaneamente, dois processos na seco crtica. - Progresso -> Enquanto ambos os processos no tiverem terminado a sua seco crtica. - Limite de espera -> Eventualmente, um dos processos ter de entrar na seco crtica, o quer implica que o outro processo ter de ceder o espao Sincronizao por Hardware - Uniprocessadores: -> Pode desabilitar interrupes; -> o cdigo que est a ser executado no ser preemptivo -> Normalmente muito ineficiente para todos os processadores - SOs no escalam. - Instrues especficas suportadas pelo Hardware -> Atmicas no podem ser interrompidas. -> Uma instruo para testar memria e atribuir valor ou uma instruo para trocar valor de duas zonas de memria. Instruo Test&Set - Definio: -> Instruo atmica que usa uma varivel lock inicializada a false e que permite apenas que um processo entre na seco crtica se tiver a false. Quando um processo est na seco crtica, esta varivel est a a true, ou seja est bloqueado o acesso seco.

Instruo Swap - Definio: -> Instruo atmica, com uma varivel partilhada lock e uma varivel local key. Se key true, ento troca-se (Swap) os processos e, na seco crtica faz-se lock ao processo que no entrou, e o que entrou fica em true. Anlise de Algoritmos Excluso Mtua Progresso Espera Limitada X Espera Activa X Seces Crticas de mdia / longa durao X

Semforos No tem / requer espera activa - Implementao -> Varivel inteira -> Inicializada ao valor mais conveniente -> Tem associado um fila de espera Apenas pode ser acedido atravs de duas operaes atmicas - Wait (semforo) - Decrementa o valor do semforo - se ficar <0 -> Coloca o processo/thread na fila de espera -> Bloqueia - Post (semforo) - Incrementa o valor do semforo - se ficar <= 0 -> Retira o processo / thread da fila de espera Tipos de Semforos o Counting semaphore (contador) Assume um numero qualquer. o Binary semaphore (mutex) Assegura excluso mtua, pois s permite que um processo na seco crtica. Deadlock & Starvation Definio: Deadlock acontece quando dois ou mais processo esto eternamente espera por um evento que s pode ser gerado por um dos processos que est em espera.

Definio: Starvation o efeito de um processo ficar indefinidamente na fila de espera, pois constantemente escalonado, fazendo com que nunca receba os recursos que necessita, levando o processo a ficar na fila de espera eternamente. Tipicamente, associa-se starvation a modelos LIFO em que o

processo em questo nunca chega a ser processado, pois tem pouca prioridade ou consome muitos recursos e ento decide-se processar processos mais importantes. Monitores Conceito: Um monitor uma ferramenta (software) que garante: excluso mltipla, fazendo com que apenas um processo possa estar activo por cada monitor activo, em cada instante; encapsulamento, pois mantm os dados privados, mas disponibiliza os mtodos para monitorizar; mecanismos adicionais, como variveis condicionais e operaes para parar (suspender) e retomar semforos.

DEADLOCKS Problema Interbloqueio: um conjunto de processos bloqueados, cada um possui um recurso e est espera de um recurso possudo por outro processo do conjunto. Modelo - Recursos disponveis (CPU, memria, E/S) - Instncias (cada recurso x tem um instancia y) - Utilizao de recursos -> Os recursos so utilizados da seguinte forma: . Pedido de Reserva . Utilizao do Recurso . Libertao do Recurso Caracterizao Um deadlock ocorre quando as 4 seguintes condies ocorrem em simultneo: - Excluso mtua -> Apenas um processo de cada vez usa um determinado recurso - Hold and Wait -> Um processo possui pelo menos um recurso e est espera de obter recursos adicionais reservados para outros processos - Sem preempo -> Um recurso s libertado pelo processo que o possui apenas depois deste ter terminado a sua tarefa - Espera circular -> Existe um ciclo de precedncias de recursos, onde cada processo no ciclo est espera do recurso do processo seguinte, e este processo possui um recurso necessrio ao processo antecessor Representao de Reservas de Recursos Grafo Orientado, que contm: - Um Conjunto de vrtices V que inclui . Todos os processos do sistema P={P0,P1,,Pn} . Todos os tipos de recursos do sistema R={R0, R1,,Rm} - Um conjunto de arcos E . Pedido de reserva : arco de Pi -> Rj . Reserva efectuada : arco de Rj -> Pi

Se o grafo no tem ciclos ento no h deadlocks. Seno: - Se cada tipo de recurso tem apenas uma instncia . Ento ciclo implica deadlock - Se o ciclo envolve apenas tipos de recursos com uma instncia . Ento ciclo implica deadlock - Se cada tipo de recurso tem vrias instncia . Varia com o tipo de grafo de recursos/processos

Exemplo de Ciclo sem Deadlock


Embora haja um ciclo P1->R1->P3->R2->P1, como P4 e P2 no fazem parte do ciclo, assim que estes libertem os recursos que esto a utilizar, deixa de haver um deadlock pois h mais recursos do que reservas por parte dos processos no ciclo.

Mtodos para Gerir Deadlocks Garantir que o sistema nunca entra em deadlock - Previnir ou Evitar deadlock Permitir que o Sistema entre em deadlock - Detectar e Recuperar os sistema e a coerncia. Ignorar deadlocks e fingir que no ocorrem - Responsabilidade no Programador, de arranjar mecanismos contornem o problema, ou simplesmente ignorar Preveno de Deadlocks Excluso Mtua o Partilhar os recursos (no haver concorrncia entre processos para o recurso). Ex: recursos apenas para leitura. o Genericamente, no se pode prevenir deadlocks evitando excluso mtua. Hold and Wait o Tem de se garantir que sempre que um processo faa um pedido de reserva de recurso, esse processo no possui outro(s) recurso(s). que

o o o

Requer que um processo reserve todos os recursos de que vai necessitar antes de ter incio a sua execuo. Em alternativa anterior, o processo apenas reserva um recurso se no possuir nenhum recurso. Problema: Baixa a utilizao de recursos, o que diminui a eficincia da multiprogramao e pode levar a starvation de processos.

Sem preempo o Se um processo faz um pedido de reserva de um recurso que no pode ser logo satisfeito, ento este processo liberta todos os recursos que possui. o Em alternativa, quando um processo faz um pedido de reserva de recurso, se este recurso no est disponvel, verifica-se se est reservado para um processo que esteja em espera. Se assim acontecer, o recurso preemptivo, ou seja, pode ser libertado se assim for necessrio. Espera Circular o Define uma ordem total para todos os recursos e requer que os pedidos de reserva sejam efectuados de acordo com esta ordem (definida anteriormente). Evitar Deadlocks Monitorizar o estado do sistema de modo a impedir uma reserva que d origem a um estado de interbloqueio(deadlock). Requerer informao sobre reservas de recursos atempadamente ( priori) o Modelo mais simples requer que cada processo declare o nmero mximo de recursos de cada tipo que ele pode necessitar. o O algoritmo para evitar deadlocks examina dinamicamente o estado de reserva de recursos de modo a evitar espera circular. o Este estado de reserva inclui informao sobre o nmero de recursos disponveis, o nmero de recursos reservados e o nmero mximo de recursos de que o processo pode vir a necessitar. Estado Seguro Quando um processo faz um pedido de reserva, o sistema tem de determinar se essa reserva deixa o sistema num estado seguro. O sistema est num estado seguro se: o Existir uma sequncia <P1,P2,,Pn> de todos os processo tal que para para cada processo Pi, os recursos que Pi necessita possam ser satisfeitos pelos recursos disponveis mais os recursos possudos por todos os Pj, com j menor que i. Assim, se os recursos de que Pi necessita no esto todos disponveis, ento Pi pode esperar at que todos os Pj terminem. Quando Pj termina, Pi pode obter os recursos necessrios, executar a sua tarefa e libertar esses mesmos recursos. Quando Pi termina, d lugar a Pi+1 de executar.

Quando o sistema est seguro, no h deadlocks. Caso contrrio, no h garantias de manter o sistema num estado seguro. Formas de Garantir o Estado Seguro - Grafo de Reserva de Recursos (linha contnua utilizao actual ou futura do recurso; linha tracejada possvel requisio de recurso.) Grafo s/ ciclos Estado Seguro Grafo c/ ciclos Estado no-seguro

No forma ciclo Seguro - Bankers Algorithm

Forma ciclo No-seguro

Vrias instncias de recursos Cada processo tem de indicar mxima utilizao priori Quando um processo faz pedido de reserva, pode esperar. Quando um processo obtm todos os seus recursos, tem de os libertar num perodo finito de tempo, ou seja, no pode ficar indefinidamente com eles. Quando um processo faz um pedido de recurso, o sistema tem de determinar se esta reserva deixa o sistema num estado seguro, seno o processo tem de esperar at que outros libertem recursos, para ento ser processado. Implementao do Algoritmo de Banqueiro (Banker) Existe um certo nmero de processo e recursos disponveis. - Recursos disponveis: available[j] = k . Existem k instncias do recurso j - Nmero mximo de recursos que um processo pode reservar: Max [i, j] = k . O processo i pode reservar, no mximo, k instncias do recurso j - Reserva de recursos para um processo: Allocation [i, j] = k . O processo i tem k instncias do recurso j reservadas. - Recursos necessrios: Need [i, j] = k

. O processo i pode necessitar de mais k instncias do recurso j, para alm das j reservadas.

Algoritmo para determinar se est em estado seguro - Se, para um vector de processos e um vector de recursos, tivermos o vector de processos todos terminados, ento o sistema est num estado seguro. Ou seja, o sistema s est seguro se cada processo utilizar apenas os recursos disponveis libertados pelos processos anteriores. Algoritmo para o pedido de recurso - Um processo faz um pedido de k instncias de um recurso j. Se esse pedido de instncias exceder as instncias que previu utilizar, ento ocorre erro por exceder as instncias previstas. - Se um processo faz um pedido de instncias de recursos superior s instncias disponveis no momento (inferior s instncias totais), ento esse processo espera que os processos activos libertem os seus recursos (e no liberta os seus recursos) - O sistema simula a reserva de recursos, pedida plo processo P. Se, ao simular as reservas de instncias, o sistema ficar seguro, ento os recursos so reservados. Caso contrrio, o processo espera. Deteco de Deadlocks - Recursos com apenas uma instncia Grafo o o o Wait-For Variante do grafo de reserva de recursos Remove-se os ns dos recursos Arco de Pi -> Pj implica que Pi est espera que Pj liberte um recurso que Pi precisa. Se houver um ciclo, neste grafo, ento h deadlock e vice-versa. Para detectar deadlocks O sistema invoca, periodicamente, o algoritmo de pesquisa de ciclos no grafo.

o o

- Recursos com vrias instncias Algoritmo do Banqueiro (adaptado) o Usa as premissas do algoritmo do banqueiro, agora adaptado para esta situao, onde existe apenas recursos disponveis, recursos reservado para processo e pedidos de recursos para um processo. Algoritmo de Deteco de Deadlocks

Semelhante verificao de estado seguro (descrito acima), este algoritmo avalia se os processos no esto a pedir mais recursos que os que solicitaram inicialmente. Se algum processo no avanar devido a pedir demasiados recursos, ento esse processo est em deadlock, o que leva o sistema a ficar no-seguro. Quando usar o algoritmo de deteco de Deadlocks - se ocorrerem frequentemente. deadlocks frequentemente, ento deve ser invocado

- seno, invoca-se quando um pedido no pode ser satisfeito. Recuperar Deadlocks - Manual: Aviso - Automtica: Abortar processos / Preempo de recursos. Abortar Processos: o Abortar todos os processos aquando em deadlock traz custos. o Abortar um processo de cada vez, at o deadlock ficar resolvido implica tempo. Parmetros utilizados para seleccionar o processo a abortar: o Prioridade do processo o Quanto tempo esteve o processo em execuo e quanto tempo falta para terminar o Recursos que o processo utilizou o Recursos que o processo precisa para terminar o Quantos processos so necessrios que terminem o Tipo do processo: interactivo ou batch Preempo de Recursos o Recursos so preemptivos at o deadlock ser resolvido o Seleco do processo vtima Minimizar os custos o Rollback O processo ter de retroceder at um estado seguro e reexecutar-se a partir desse estado. o Starvation O mesmo processo ser sempre seleccionado como vtima

Memria Conceitos Introdutrios Execuo de Programa o Para executar um programa em disco, tem de se carregar esse programa para memria, pois o CPU apenas acede, directamente, a memria e registos. Cache o Memria mais rpida do computador o Encontra-se entre o CPU e a memria principal (RAM) Proteco o Processo do utilizador no pode aceder/modificar cdigo ou dados de outros processos o Registo base + limite o Mdulo ncleo VS Modo utilizador Atribuio de endereos Os endereos podem ser representados de diferentes formas: o Endereos simblicos Ex: count = 0 o Compilador Endereos simblicos em endereos recolocveis (reutilizveis) o Linkage editor / loader atribui a endereos recolocveis, endereos absolutos (simblicos), o que consiste mapear de um espao de endereo para outro. o Carregamento Tempo de Compilao o Em tempo de compilao conhecida a zona de memria onde o processo ser carregado e pode-se gerar um cdigo absoluto para carregamento a partir desse local em diante. Se, em algum momento, a posio de incio muda, necessrio recompilar o cdigo, como acontece no .com do MS-DOS Tempo de Carregamento o Quando no se sabe onde o processo reside na memria, o compilador gera um endereo recolocvel. Se o endereo de incio alterado, apenas necessrio recarregar o cdigo de utilizado para incorporar este valor alterado. Tempo de Execuo o O processo pode ser movido, durante a sua execuo, de um segmento (zona) de memria para outro.

Endereos Lgicos VS Endereos Fsicos

- Conceitos:

- Endereo lgico / virtual: Endereo gerado pelo CPU - Endereo fsico: Espao em memria

- Endereos lgicos calculados em tempo de compilao e de carregamento so idnticos a endereos fsicos - Endereos calculados em tempo de execuo fazem correspondncia entre endereo virtual e endereo fsico - O mapeamento de endereo virtual para fsico feito por hardware, por um dispositivo chamado unidade de manuteno de memria (memory-management unit MMU), e pode ser feito de vrias formas. Carregamento dinmico e Ligao dinmica - Carregamento dinmico (Dynamic loading) . Rotinas so carregas para memria quando necessrias . Utilizao mais eficiente da memria . til quando grande quantidade de cdigo invocada raramente - Ligao dinmica (Dinamic linking) - Em oposio a ligao esttica, onde bibliotecas do sistema so tratadas como um modulo e so combinadas pelo carregador (loader) para um programa em binrio. - Ligao atrasada at tempo de execuo, em vez de atrasar o carregamento. - Devido a esta caracterstica, no necessrio que todos os programas num sistema tenham uma cpia da sua biblioteca de linguagem integrada na imagem de execuo, o que um desperdcio de espao no disco e de memria, sendo que se usa apenas um pequeno trecho de cdigo que indica como localizar a biblioteca necessria ou como carrega-la. Swapping Processo retirado da memria, temporariamente, para um armazenamento secundrio. o Acontece por falta de memria para certo processo e ento troca-se por outro que requeira menos memria, e retoma-se quando houver possibilidade de o processar. Quando retorna memria o lhe atribudo um novo local em memria, que pode no ser o mesmo onde estava antes de sair de execuo, mas o seu contexto carregado (o PCB recuperado). Se ocorrer swapping em tempo de execuo, ento pode haver modificao do local em memria onde o processo colocado. Caso seja em tempo de compilao ou

de carregamento, ento o endereo de memria tem de ser igual antes e depois do swapping. Reserva contgua de memria Traduo de endereos virtuais para endereos fsicos feito pelo MMU Proteco o Registo Base o Registo limite (intervalo de endereos virtuais)

Reserva de memria o Conjunto de blocos de memria livres de diferentes dimenses o Conjunto de blocos de memria ocupados Algoritmos de reserva de memria o First-Fit Aloca o primeiro bloco que for grande o suficiente. A procura pode comear quer no incio do conjunto de blocos quer no ltimo local de memria onde esta pesquisa terminou. Esta pesquisa termina assim que se encontra um bloco suficientemente grande. o Best-Fit Aloca o bloco mais pequeno que suficientemente grande para o processo. necessrio, ento, procurar na lista inteira, a no ser que esta esteja ordenada por tamanho. Esta estratgia minimiza a fragmentao, porm os fragmento que ficam so de pequena dimenso. Worst-Fit Aloca o maior bloco. Assim como no best-fit, procura-se na lista inteira por este bloco, a no ser que se tenha uma lista ordenada por tamanho. Esta estratgia cria grande fragmentao, o que pode ser melhor do que uma pequena fragmentao criada pelo best-fit, pois fragmentos grandes tm melhores possibilidades de alocar novos processos, face a fragmentos pequenos.

Processo de Fragmentao

Fragmentao - Fragmentao Externa - O espao total de memria livre existe para satisfazer pedido mas no contguo - Compactao . Efectuado se endereos calculados em tempo de execuo . Apenas possvel se se usar recolocao dinmica . Traz custos, nomeadamente a nvel de memria . Exemplo: First e Best-Fit - Soluo . Compactao . Partir a memria em partes de igual dimenso . Reserva feita em blocos todos da mesma dimenso . Porm, esta soluo traz um problema Fragmentao interna - Fragmentao Interna - Memria reservada pode ser superior necessria, o que leva a que o excedente seja desperdiado Paginao - Memria fsica divida em blocos de dimenso fixa Frames . Dimenses de potncias de 2 . Normalmente, entre 4K e 8K Memria lgica dividida em blocos da mesma dimenso Pginas Mantm lista de frames livres Tabelas de pginas usada para traduzir endereos Fragmentao Interna

- Traduo de Endereos - Endereo lgico de m bits - Espao de endereo lgico de 2 m bits - Pginas de dimenso de 2n bits - Endereo . Nmero de pgina . Deslocamento na pgina (Offset) - Nmero de pgina usado como ndice na tabela de pginas

- Reserva de Frames - Uma vez que o SO gere a memria fsica, ele tem de estar ocorrente dos detalhes de alocao da memria fsica: quais as frames alocadas, quais as frames disponveis, quantas frames existem, etc. Esta informao , geralmente, mantida numa estrutura denominada tabela de frames. A tabela tem uma entrada para cada pgina fsica (frame), indicando quantas e quais as frames que esto a usar o processador ou processadores.

Reserva de Frames - Implementao da Tabela de Frames Em memria o Page-table base register (PTBR) aponta para a tabela de pginas o Page-table length register (PTLR) define a dimenso de pginas o Uma tabela por processo o Quando o processo colocado em execuo os seus registos so repostos do PCB (Process Control Block) o pouco eficiente Hardware o Translation Look-aside Buffers (TLBs) assemelha-se a uma memria tipo cache, mas um dispositivo muito caro. o Acesso rpido o Associativo (pesquisa paralela) o Contm algumas entradas de endereos lgicos, mas no contm todos os existentes, o que supe troca de endereos no dispositivo. Funcionamento do TLB: Quando o CPU gera um endereo lgico, o nmero da pgina apresentado ao TLB. Se o nmero da pgina for encontrado o nmero da frame imediatamente apresentado. Seno, uma referncia para a tabela de pginas gerada e, quando o nmero da frame estiver disponvel, logo possvel carrega-la para memria. E ainda, adicionado ao TLB o nmero da frame e da pgina ao TLB e, se este estiver cheio, trocam-se endereos para colocar estes novos.

- Proteco de memria Bit de Proteco associado a cada entrada da tabela de pginas. Este bit define se a pgina de leitura/escrita ou s leitura. o Vlido: A pgina pertence ao espao de endereamento do processo e o acesso a essa pgina legal. o Invlido: Indica que esta pgina no pertence ao espao de endereamento lgico do processo. Se se tentar aceder a essa pgina ilegalmente, accionada uma trap de SO. - Pginas Partilhadas Cdigo Partilhado o Cdigo reentretante (cdigo que no se auto-modifica) pode ser alterado entre vrios processos. o Vantagens: No h repetio, desnecessria, de cdigo e, portanto, h um aumento na eficincia de acesso a contedos comuns a vrios processos. o As pginas de dados de cada processo so associadas a diferentes frames. - Estrutura da tabela de pginas Paginao Hierrquica o Em ambientes com um grande espao de endereamento lgico, a tabela de pginas tende a tornar-se excessivamente grande. Neste contexto, seria indesejvel alocar contiguamente a tabela de pginas na memria principal. o Soluo: Dividir a pgina em pedaos mais pequenos. Formas: Paginao dois-nveis, onde cada tabela de pginas est tambm paginada. Normalmente, temos o endereo lgico de 32 bits, dividido em 20 bits para o nmero da pgina e 12 bits para o deslocamento dentro da pgina. Como agora a tabela de pginas tambm est paginada, o nmero da pgina dividida, ficando com 10 bits para o nmero da pgina numa tabela exterior, 10 bits para a tabela interior que aponta para a frame e 12 bits para o deslocamento dentro da frame. A pgina exterior tem um nmero de pgina da tabela de pgina desejada, nessa pgina encontra-se o nmero da frame que contm o endereo desejado. Ao somar o deslocamento frame, obtemos o endereo fsico desejado.

Paginao trs-nveis: utiliza-se o mesmo princpio, mas agora para os 4 endereos, em vez dos 3 anteriores. Pagina-se a pgina externa, ficando-se com uma 2 tabela de pginas externa, uma tabela de pginas externa, uma interna e um deslocamento. Apenas se pode usar para registos de 64 bits, a 2 tabela exterior tem 32 bits e aponta para o endereo que deve seguir na tabela exterior, similarmente como se faz em dois nveis.

- Hash Table Page Comuns para endereos superiores a 32 bits Cada entrada na tabela de disperso (hash table) contm uma linked list de elementos que dispersam para o mesmo local. Cada elemento consiste em 3 campos: o nmero da pgina virtual, o nmero da frame e um apontador para o prximo elemento na lista ligada.

Hash Table

- Tabelas de Pginas Invertidas Uma entrada por frame Cada entrada tem informao sobre a respectiva pgina e o processo que a possui Existe apenas uma tabela de pginas por sistema Vantagens o Decrementa a memria necessria para guardar a tabela de pgina Desvantagens o Incrementa o tempo de pesquisa na tabela de pginas Uma tabela invertida tem o mesmo nmero de entradas e de frames. Cada entrada consiste num endereo virtual de uma pgina guardada num local fsico de memria, com a informao acerca da do processo que tem aquela pgina. Cada entrada da tabela de pginas invertida uma par <id-processo, numero-pgina> onde o id do processo assum o papel de identificador de espao de endereamento.

Logical Physical

- Segmentao O espao de endereamento lgico constitudo por um conjunto de segmentos Os segmentos podem ter tamanhos diferentes Cada segmento tem um identificador e um tamanho <segment n, offset> Um endereo constitudo pelo identificador do segmento e o deslocamento no segmento. Segmentao um esquema de manuteno de memria que suporta um ponto de vista de utilizador para memria (o ponto de vista de utilizador um aspecto desordenado dos processos, sem importar os endereos). Normalmente o programa do utilizador compilado e o compilador automaticamente constri segmentos que reflectem o input do programa. Exemplo: o Um compilador cria segmentos separados para: Variveis Globais A pilha de rotinhas, para guardar e rotinas endereos Poro de cdigo de cada procedimento ou funo Variveis locais de cada rotinha ou funo

Tabela de Segmentos: o Base contm o endereo de incio da memria fsica associado ao segmento o Limite define a dimenso do segmento

Memria Partilhada Motivao o Apenas parte do programa precisa de estar em memria num determinado instante, o que traz eficincia ao sistema, pois no tem de manter cpias desnecessrias. o O espao de endereamento lgico pode ser maior que a memria fsica disponvel Vantagens o Um programa pode ser maior o Pode haver mais processos o No fundo, h mais memria para usar - Implementao Demand Paging o As Pginas so carregadas para memria apenas quando so necessrias, em vez de carregar logo que o processo afecto a tal pgina comea a sua tarefa. o Melhora performance VS Swapping o Para determinar se uma pgina est em memria Bit adicional na tabela de pginas Valid- Invalid bit Neste contexto, valid significa que a pgina est acessvel e em memria Invalid significa que ou no existe ( ilegal) ou existe mas est em disco. o Se se tentar aceder a uma pgina com invalid bit, ir dar um erro de falta de pgina. No entanto, esta pgina existe, s no est em memria, por isso este erro enganador. Para corrigir este problema, guarda-se no PCB uma tabela interna do processo, para determinar se a referncia para o endereo de memria do processo vlida ou no. Se for invlida, termina-se o processo. Caso contrrio, traz-se o processo para memria. o Arranja-se uma frame para o processo da lista de frames disponveis e agenda-se uma leitura da pgina pelo disco. o Aps a leitura, muda-se o bit da pgina para se saber que esta est agora em memria. o Retoma-se a instruo que tinha sido interrompida pelo facto de a pgina no estar em memria. Notar que, plo facto de usarmos o PCB para guardar o estado do processo, retomamos exactamente onde tnhamos deixado quando paramos o processamento. , portanto, possvel processar um processo mesmo que partes dele no estejam em memria. o No extremo, possvel executar um processo sem que haja qualquer pgina em memria, pois vai-se carregando medida que necessrio. Esta estratgia denomina-se Pure Demand Paging

- Faltas de Pgina - Se o valid-invalid bit est em invlido, emite-se uma trap ao SO. O tratamento desta trap igual ao procedimento na demand paging. - Substituio de Pginas - Quando no existem frames livres, ocorre substituio de pginas. A sobrealocao manifesta-se no seguinte: Tenta-se executar um processo mas ocorre uma falta de pgina. O hardware emite uma trap ao SO para verificar se o acesso ilegal mesmo ilegal por no haver pgina ou por essa pgina no estar em memria. O disco encontra a pgina em questo mas no pode passa-la para memria pois toda a memria est em uso. A partir daqui h vrias opes para o SO o Terminar o processo do utilizador. Mas isto ser contradizer o paradigma de maximizao de fluxo de informao e eficincia da utilizao do sistema. O sistema poderia trocar um processo em memria e assim libertar as suas frames, fazendo com que houve mais espao para novas pginas. Embora esta opo seja boa, diminui o nvel de multiprogramao, o que diminui a eficincia do sistema. Pode-se usar substituio de pginas. Isto consiste na seguinte abordagem: Se no h frames disponveis, encontra-se uma que no esteja, correntemente, em uso e liberta-se. Pode-se libertar a frame escrevendo os seus contedos para um espao de troca, e trocar a tabela de pginas para indicar que esta pgina j no est em memria. Pode-se, agora, usar a frame para a pgina necessria para continuar a execuo do processo. Esta abordagem pode ser descrita nos seguintes passos: Encontrar a localizao da pgina desejada no disco Encontrar uma frame livre o Caso haja, usa-la Caso no haja frames livres, usar um algoritmo de substituio de pginas para seleccionar uma frame vtima Escrever a pgina associada frame vtima para disco Mudar as tabelas de frame e pgina correctamente, para indicar que se alterou aquela frame e pgina Ler (passar para memria) a pgina desejada para a frame agora livre e mudar as respectivas tabelas de frame e pgina Recomear o processo do utilizador Este processo aumenta o tempo de acesso a memria / disco, o que diminui a eficincia do sistema.

O objectivo , ento, maximizar desempenho e minimizar o tempo de espera e as faltas de pginas Para tal usa-se o modify bit. Cada pgina ou frame tem este bit associado a ela, no hardware. Este bit nas pginas posto pelo hardware sempre que se escreva (modifique) na pgina, informando que esta pgina foi modificada. Aquando a seleco de uma pgina vtima para a substituio de pgina, analisa-se esse bit: Se esse bit estiver a indicar uma modificao, sabemos que esta pgina foi modificada desde que foi lida do disco. Ento sabe-se que preciso p-la em disco, dado que em disco est apenas a pgina antes de sofrer modificao Caso contrrio, quer dizer que a pgina no foi alterada desde que veio de disco e, ento, no preciso voltar a escreve-la para disco pois j l est conforme est na memria. o Esta , portanto, uma boa candidata a ser substituda. Desta estratgia retira-se ainda outra funcionalidade que separar as pginas apenas de leitura das de leitura/escrita: como as de leitura nunca sofrem modificaes, podem ser sempre descartadas para dar espao a pginas de leitura/escrita (ou mesmo s de leitura) Desta forma temos um imenso aumento de eficincia de trocas de pginas, pois no s se ganha tempo ao no ter de copiar pginas para disco desnecessariamente, como ainda disponibiliza um espao virtual de memria que superior memria fsica que existe efectivamente. Persiste, porm, um problema: tem de se definir os algoritmos de alocao de frames e de substituio de pginas.

- Algoritmos de Substituio de Pginas FIFO First In First Out - Pgina a substituir: A mais antiga. . Este algoritmo associa a cada pgina a altura em que esta foi posta em memria. Quando se te de escolher uma para descartar, escolhe-se a mais antiga. . Em vez de se usar o tempo de chegada, pode-se usar uma fila, onde o primeiro que entrou est no topo e a mais recente entrada est na cauda desta fila. Quando se substitui uma pgina, tira-se a que est cabea e insere-se a nova na cauda. . Problemas: - A pgina pode ter entrado h muito tempo e j no ser necessria. No entanto, pode conter uma varivel usada constantemente, que foi inicializada aquando a pgina entrou. - Note-se que, embora a pgina seja substituda, no traz problemas a nvel de desempenho: assim que seja necessrio

usar a tal varivel, ocorre uma falha de pgina, e esta novamente carregada apara memria. A m escolha da pgina a substituir acarreta custos de eficcia, mas no prejudica o desempenho da execuo. - Anomalia de Belady: O aumento de frames aumenta o nmero de falhas de pgina. ptimo (Optimal) - Resultado da descoberta da anomalia de belady, o algoritmo ptimo de substituio de pginas tem o menor rcio de faltas de pginas de todos os algoritmos, e o efeito de belady nunca ocorre. - Conceito Substituir a pgina que no vai ser usada pelo maior perodo de tempo. reference string 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 7 0 7 0 1 2 0 1 2 0 3 0 4 3 2 0 3 2 0 1 7 0 1

Page frames 2 troca com 7, pois o 7 s vai ser usado na referncia 18 1 troca com 3 pois s vai ser usado na referncia 13 - Vantagens: Faltas de pgina. Nmero muito menor que na FIFO. Optimiza para mnimo de faltas de pgina - Desvantagens: Dificuldade em implementar, pois pressupe um conhecimento antecipado da string de referncia LRU - Least-Recently-Used o Usa-se uma aproximao ao optimal, mas em vez de usarmos o quando vai ser utilizado, usamos o h quanto tempo no utilizado. Associa a cada pgina o tempo que passou desde a ltima utilizao. Escolhe para substituir aquela que est h mais tempo sem ser utilizada, de entre as quais esto em memria. Vantagens: Eficincia face FIFO: o facto de se substituir a menos usada diminui as faltas de pgina, pois a menos usada tem menor

o o

probabilidade de ser usada num espao de tempo pequeno, permitindo que outras usadas mais frequentemente sejam passadas para disco. o Desvantagens: Implementao. Este conceito terico pode requerer hardware para ajudar na seleco. Implementaes possveis: Counter relgio lgico Incrementado a cada acesso de memria Problemtico se no se previr o overflow do relgio Stack pilha Sempre que uma pgina for referenciada, posta no topo da pilha. Como tem de ser possvel aceder a meio da pilha, deve ser implementado com uma double-linked list. Cada actualizao da pilha custa um pouco mais, mas no se perde tempo procura da pgina aquando a substituio, pois a ultima recentemente usada est na cauda da lista. Importante frisar que os algoritmos Optimo e LRU no sofrem da anomalia de belady

Variantes do LRU o Reference Bit Cada pgina tem um reference bit, inicializado a 0 Quando a pgina referenciada, este bit passa a 1 Substitui-se o bit que esteja a 0 No se sabe a ordem de uso, mas sabe-se quais so usadas e quais no so, o que chega para decidir quais substituir Algoritmo Second Chance Quando uma pgina seleccionada, verifica-se o reference bit. Se for 0, substitui-se essa pgina. Caso contrrio, passase o reference bit para 0 e renova-se o tempo de chegada para o tempo actual. Assim, como a pgina teve um acesso h pouco tempo, no vai ser substituda at que todas as que sofreram modificaes antes desta sejam substitudas ou lhes seja dada uma segunda oportunidade. Implementao: Um apontador para a pagina que vai ser substituda. Este ponteiro avana para a prxima pgina a ser substituda quando for necessria uma frame. Quando a vtima encontrada, substitui-se e entra para o lugar da pgina substituda. No mximo, d se uma volta inteira fila, dando uma segunda oportunidade a todas as pginas. Se todos os bits esto a 1, ento torna-se numa FIFO.

Algoritmo Second Chance Melhorado Considera-se agora a abordagem do Second Chance, mas usa-se tambm modify bit. Modify bit a 0 significa que no foi alterada desde que veio de disco e reference bit a 0 significa que no foi usada recentemente. Quando ambos os bits esto a 0, significa que no houve acesso ou modificao recentemente boa escolha para substituir. Reference bit a 0, modify a 1 Foi modificada recentemente, o que implica escrev-la para disco antes de substituir Reference bit a 1, modify a 0 Foi utilizada recentemente e pode voltar a s-lo em breve Ambos os bits a 1 Foi utilizada recentemente e j foi modificada desde que veio de disco Significa que se vai ter de copiar para disco se substituda e pode provocar faltas de pgina se tal, pois foi recentemente acedida. Pode ser preciso dar vrias voltas fila para encontrar aquela que traz menos prejuzo eficincia do sistema para trocar, o que se pode manifestar num decrscimo de eficincia.

- Atribuio de frames Numa abordagem Pure Demand Paging, nenhum processo receberia frames. Estas ser-lhes-iam atribudas atravs de faltas de pgina, at que todas as frames necessrias para esse processo fossem atribudas. Quando esse processo terminasse, as frames seriam postas na lista de frames disponveis. Nmero mnimo de frames por processo o Arquitectura 1 instruo pode estar em 2 pginas 2 operando em memria implica duas pginas com esses dois operandos cada uma O nmero de frames mnima por processo difere de arquitectura para arquitectura, mas o mximo de frames no pode exceder as frames totais que existem fisicamente. - Algoritmos de Alocao A forma mais fcil de repartir x frames por y processos atribuir a cada processo x/y frames, e o resto fica na lista de frames disponveis. o Este esquema chama-se Alocao Fixa. Se um processo precisar de mais frames e no houver nenhuma disponvel, processos perdem frames para este. Outra forma distribuir as frames consoante as prioridades e os tamanhos dos processos:

o o o

Processos pequenos recebem frames de acordo com o seu tamanho Processos grandes recebem tantas mais frames quanto possvel Alocao Proporcional

A alocao pode variar dependendo do grau de multiprogramao que se pretende. Se se pretender um grau elevado, perdem-se frames para satisfazer os processos a executar. Por outro lado, se o grau de multiprogramao diminui, pode se distribuir as frames pelos processos. Em ambas abordagens, fixa ou proporcional, alta prioridade tratada da mesma forma, se bem que, pela definio, deve-se dar mais frames a altas prioridades para que estes processos acabem mais rpido, em vez de se dar especial ateno em frames para processos com pouca prioridade. - Substituio Global - A frame de substituio escolhida do conjunto de todas as frames - A frame escolhida pode pertencer a outro processo - Substituio Local - A frame de substituio escolhida do conjunto das frames do processo - O nmero de frames do processo mantm-se - Thrashing - Se o nmero de frames alocadas para um processo de baixa prioridade cai para um nmero inferior ao requerido pela arquitectura do computador, a execuo desse processo tem de ser suspensa. Com esta suspenso, as frames afectas a esse processo so libertadas, levando as que as pginas que so copiadas para disco. Este processo de substituir pginas, como visto anteriormente, no traz problemas execuo das tarefas dos processos, pois embora haja falta de pgina, rapidamente se troca um outra pgina em uso para resolver o assunto. - Problema: Ao diminuir-se as frames para o nmero mnimo e indispensvel, estamos a aumentar as faltas de pgina, fazendo com que o mecanismo de troca de pginas esteja sempre em funcionamento, o que leva a um decrscimo de eficincia do sistema. E o sistema tanto menos eficaz quanto mais vezes for preciso trocar de pgina. - Conceito: Um processo est em thrashing se passa mais tempo procura de pginas do que a executar as suas tarefas. Esta elevada actividade de paginao o cerne do thrashing. - Causas: Thrashing resulta em graves problemas de performance de sistema. Imagine-se um panorama como o seguinte: - O SO monitoriza a utilizao do CPU. Se esta utilizao reduzida, aumenta-se o grau de multiprogramao, pondo-se mais um processo a correr. - Se se utilizar um algoritmo de substituio de pgina global, este processo vai comear a sua execuo retirando uma pgina que pertence a um outro processo a correr. Ao retirar essa pgina a um

processo que a estava a utilizar, causa falta de pgina ao outro processo, que por sua vez, vai tirar um frame em uso. - Este efeito de falta de pgina e substituio de pgina causa um efeito em cadeia de faltas de pginas nos processos em execuo, o que acaba por ter de necessitar dos dispositivos de substituio de pginas, para ajudar na substituio. A fila deste dispositivo aumenta e, como todos os processos (ou parte deles) est espera de pgina, diminui-se a quantidade de processo na fila ready do CPU. - Ao diminuirmos a fila ready do CPU, a utilizao deste decresce, e o SO, que monitoriza esta actividade, aumenta o nvel de multiprogramao. Novos processos entram no sistema, e recomea o problema inicial. - Resultado: medida que o nvel de multiprogramao aumenta, h cada vez mais faltas de pgina, cada vez mais thrashing e o desempenho do CPU cai drasticamente.

Utilizao do CPU

Grau de multiprogramao - Resoluo do Problema Modelo Working Set o Modelo de localidade do processo: medida que um processo executa, ele move-se de uma localidade para outra. Uma localidade um conjunto de pginas que so usualmente usadas conjuntamente. As localidades de um processo variam, podendo haver overlap (sobreposio). o O modelo working set baseia-se nesta premissa de localidade. Ele define uma janela de working set, que um parmetro A, e analisa os As mais recentes de cada pgina. O conjunto de pginas com A mais recente referncia um working set. Se uma pgina est em utilizao ento est no working set. Se ela deixa de estar em uso, sai do working set passado certo tempo desde a sua ltima referncia. o O aspecto mais importante do working set o tamanho. O tamanho dado pela soma das pginas nos working sets. Se a necessidade de pginas para certo processo supera o nmero de frames livres, ocorre thrashing. o A utilizao simples: cedem-se frames suficientes para satisfazer o tamanho do working set do processo. Se sobrarem frames, comease outro processo. Caso os working sets faam com que sejam usadas frames a mais, suspende-se um dos processos, escrevem-se

as suas pginas para disco e atribui-se as suas frames a outro processo. Problema: difcil manter a manuteno dos working sets dos processos. A janela de working set dinmica, estando em constante mutao. Resoluo: Usar dois bits para monitorizar a utilizao das pginas: se se usar um timer para verificar quando so feitas, por exemplo, 1000 referncias. Quando o timer avisa, copia-se e limpam-se os reference bits da pgina e avalia-se os dois bits de acesso da pgina para ver se foi acedida nas ultimas 1000 ou 2000 referencias. Se assim foi, um dos bits dever estar activo, indicando que esta pgina est no working set daquele processo.

- Frequncia de falta de pginas - Se ocorre thrashing, sabe-se que a taxa de faltas de pgina est elevada e , portanto, necessrio atribuir mais frames a esse processo - Em analogia, se esta taxa baixa, pode se retirar uma frame deste processo - Pode-se, ento, estabelecer fronteiras superiores e inferiores para a taxa de falta de pginas: . Se excede a fronteira superior, atribui-se mais frames . Se fica inferior fronteira inferior, retiram-se frames - Se for preciso, suspende-se um processo por no haver frames para dar a um processo com muitas faltas de pgina. As suas frames so distribudas pelos restantes processos.

- Memory-Mapped Files - Permite-se que parte do espao de endereamento virtual (lgico) seja logicamente associado a um ficheiro. - Esta tcnica possvel pondo parte de um bloco de disco numa pgina em memria (frame). Quando se usa a pgina, usa-se demand paging, causando falta de pgina. Porm uma parte do ficheiro, do tamanho de uma pgina, est j memria fsica, facilitando a execuo do processo, pois no necessrio usara as chamadas ao SO para ler e escrever. Um acesso memria trata da escrita/leitura. - Vantagens: as partes importantes do ficheiro, aquelas que so mais vezes acedidas, esto em memria, facilitando o seu acesso, escrita e leitura. As

chamadas ao SO so mais dispendiosas e assim ganha-se tempo e poupam-se recursos. Vrios processos podem partilhar aquela parte do ficheiro mapeado. - Desvantagens: Embora no seja muito prejudicial ao desempenho do sistema, as frames associadas a estes ficheiros esto, de facto, afectas a um ficheiro, no podendo ser usadas para processos. Pode diminuir o nvel de multiprogramao, mas os ganhos nos acessos a disco para ler / escrever ficheiros supera estes custos. - Copy-on-Write - Permite que os processos pai e filho partilhem, inicialmente, as mesmas pginas em memria. - Apenas quando h uma escrita na pgina que esta copiada para disco. . Se uma pgina s de leitura, no se perde tempo a copiada para disco depois de utilizar, pois no sofreu alteraes desde que de l veio. . Assim, a partilha de pginas por pais e filhos traz eficcia ao sistema, pois s se copia para disco quando a pgina alterada, e como est partilhada, no se tem cpias desnecessrias de pginas em memria. - Prepaging - Uma caracterstica da pure demand paging a falta de pginas no incio do processo. Isto o resultado de tentar ter a localidade do processo em memria. - Prepaging uma tentativa de evitar que haja um elevado nvel de substituio de pginas . Para tal, a estratgia trazer logo para memria, quando um processo que sofreu substituio recomea, as pginas que ele vai usar, que estavam em disco. . A nica questo se prepaging mais vantajoso que simplemente tratar as faltas de pgina. Pode acontecer que, ao trazer as pginas todas para memria, grande parte delas no voltem a ser usadas. - Tamanho de pginas Diminuir o tamanho de pginas faz com que a tabela de pginas aumente, num espao de memria virtual. Usar pginas grandes causa fragmentao interna, pois h partes de pginas que ficam inutilizadas. Para minimizar a fragmentao interna, deve-se usar pginas pequenas. Para diminuir o tempo de utilizao de I/O deve-se usar pginas grandes. Porm, com pginas pequenas tem-se melhor resoluo, permitindo que haja melhor isolamento da memria efectivamente necessria. Assim uma pgina pequena melhor porque usa menos I/O e aloca menos memria, no total. - Desempenho da TLB (Transfer Look-aside Buffer) - Hit-ratio: percentagem e endereos traduzidos utilizado a TLB em vez de utilizar a tabela de pginas. - Reach

- Quantidade de memria acessel via TLB: tamanho da TLB vezes tamanho da pgina - Idealmente o working set de um processo deve guardado na TLB. Aumentar o reach da TLB pode resolver alguns problemas de resolver os endereos dos processos, porm continua a ser insuficiente para processo que necessitem de uso intensivo de memria. Note-se que a TLB muito cara e necessita de muita energia. - Uma resoluo seria aumentar o tamanho das pginas. Porm isto pode levar a fragmentao interna. - Outra abordagem ter pginas de vrios tamanhos. Mas isto implica que o SO geria esta variedade de tamanho de pginas. - Reserva de memria de ncleo. O ncleo reserva memria para estruturas de diferentes tamanhos o Fragmentao Interna, leva a desperdcio de memria o Alguns blocos de memria tm de ser contguos Para isso, usam-se dispositivos de hardware que interactuam directamente com a memria fsica Estratgias para gerir memria livre para processos ncleo o Sistema Buddy Reserva memria de um bloco de memria constitudo por pginas fisicamente contguas Reserva blocos de memria com dimenses de uma potncia de 2 Exemplo: pedido de 21KB -> prxima potncia de 2 mais prxima de 21: 36KB Problemas: Fragmentao interna, por se dar sempre blocos de potncias de 2 que podem ser muito maiores do que o necessrio.

Slab Allocator Definio: Slab uma ou mais pginas fisicamente contguas Cache constituda por um ou mais slbs Cada tipo de estruturas de dados de ncleo contm uma cache Que contm instncias Quando a cache criada, preenchida com objectos (livres) Vantagens: Sem fragmentao. Bom desempenho

- Interbloqueio de I/O (I/O interlock) - Quando se usa uma demand page, por vezes necessrio que certas pginas fiquem bloqueadas em memria. Por exemplo se usa um controlador de disco (fita magntica), este recebe o nmero de bytes que tem de transferir e o endereo de memria para o buffer. Quando esta transferncia termina, o CPU interrompido.

Neste panorama, tem de ser ter certeza que os seguintes eventos no acontecem: o Um processo pede um acesso de I/O e posto na fila de I/O daquele dispositivo. Entretanto, o CPU recebe outro processo. Estes processos causam faltas de pgina e, usando um algoritmo de substituio de pgina global, acontece que a pgina que continha o buffer de memria do processo para o processo em espera. Quando a fila do dispositivo finalmente chega ao pedido do outro processo, a frame deste est a ser utilizado por outro processo. As solues podem ser: Nunca executar I/O para memria de utilizador. Em vez disso, dados so sempre copiados entre memria de sistema e memria de utilizador. Para escrever para disco, teramos de copiar o bloco para memria de sistema e depois escrever no bloco Outra soluo e usar um lock bit. Cada frame tem um lock bit e se a frame est bloqueada (lock bit activo) no pode sofrer substituio. No entanto, se este lock bit ficar indefinidamente activo, pode fazer com que um processo que no tem grande prioridade no seja substitudo por um com maior prioridade. Outra situao trazer um processo com baixa prioridade para memria e este usar I/O. Ele fica em espera e ainda no foi alterado. Se chega um processo que necessita de uma pgina, e tem grande prioridade, ele vai escolher a pgina do processo com baixa prioridade, desperdiando assim o esforo que foi traze-lo para memria.

INTERFACE DE SISTEMA DE FICHEIROS Conceito de Ficheiro: Ficheiros so mapeados pelo SO e dispositivos fsicos. Estes dispositivos de armazenamento so, normalmente, no-volteis, ou seja, no precisam de energia para guardar os dados neles contidos. Um ficheiro uma coleco de informao relacionada que est gravada num armazenamento secundrio. Para o utilizador, um ficheiro o mais pequeno pedao de informao num armazenamento secundrio lgico, isto , no se pode escrever para o armazenamento secundrio seno por um ficheiro. Genericamente, um ficheiro uma sequncia de bits, bytes, words, . Esta sequncia faz sentido para quem a criou e usa. - Atributos de um Ficheiro Nome: o nome do ficheiro a nica informao guardada em forma compreensvel para humanos. Identificador: Uma etiqueta nica, normalmente um nmero, identifica o ficheiro no sistema de ficheiros. Localizao: Esta informao um apontador para um dispositivo e para a sua localizao nesse dispositivo. Tamanho: O tamanho actual em bits, bytes, ect., e possivelmente o mximo permitido para esse ficheiro. Proteco: Informaes de acesso ao ficheiro: quem pode ler, escrever, executar, Tempo, data e identificao do utilizador: informao que pode ser guardada ara criao, ltima modificao e ltima utilizao. Esta informao pode ser til para proteco, segurana e monitorizao de utilizao. - Operaes de Ficheiros Criao de um ficheiro: A criao dum ficheiro tem dois passos: o 1: encontrar espao no sistema de ficheiros o 2: tem de ser feita uma entrada na directoria para este novo ficheiro Escrever um ficheiro: Faz se um chamada ao sistema especificando quer o nome, que a informao que vai ser escrita no ficheiro. Dado o nome, o sistema de ficheiros procura-o na directoria. Usa-se um ponteiro para se saber a localizao onde a prxima escrita vai ocorrer no ficheiro. Ler um ficheiro: Para ler um ficheiro usa-se uma chamada ao SO para especificar o nome do ficheiro a ler onde, na memria, deve ser posto o prximo bloco. Procura-se pela directoria do ficheiro e usa-se um ponteiro de leitura, similar ao ponteiro de escrita. Para reduzir a complexidade do sistema e aumentara eficincia, usa-se o mesmo ponteiro para leitura e escrita. Reposio de dados no ficheiro: Procura-se na directoria pelo ficheiro. Usase, ento, o apontador de leitura / escrita para reposicionar a escrita /

leitura para o stio desejado. Esta operao no envolve nenhuma operao I/O. Esta operao pode tambm chamar-se de file seek. Apagar um ficheiro: Para apagar um ficheiro, procura-se na directoria pelo ficheiro. Ao encontrar a entrada respectiva na directoria, liberta-se todo o espao em disco que esse ficheiro ocupa, para poder ser reutilizado. A entrada na directoria apagada. Truncar um ficheiro: Se o utilizador pretender apagar alguns ou todos os contedos do ficheiro, mas no querer que o ficheiro seja apagado, truncase o ficheiro. Os atributos permanecem inalterados, excepo do tamanho, que agora passa para 0, para que o espao agora no utilizado seja libertado e usado para outros ficheiros. - Para evitar a constante procura pelos ficheiros, alguns SO requerem quese use a chamada ao SO open(). Como tal sabe-se quais os ficheiros abertos e o sistema pode assim manter uma tabela, a open-file table, que mantm a informao relativa aos ficheiros abertos. Assim qualquer acesso a um ficheiro feito via esta tabela, se bem que para criar e apagar no requer um ficheiro aberto. - Assim, h vrios pedaos de informao que esto associados a um ficheiro: o File Pointer: Em sistemas que no suportam file offset para as operaes read() e write(), preciso manter-se um apontador para o ltimo local de escrita / leitura no ficheiro. Este apontador nico para cada processo a utilizar aquele ficheiro e tem de ser guardado separadamente do resto dos atributos em disco. Contador de Ficheiros Abertos: Quando um ficheiro fechado, a sua entrada na tabela de ficheiros abertos tem de ser reutilizada, para optimizar a eficcia da tabela. Como vrios processos podem ter aberto aquele ficheiro, tem de se esperar que todos eles o fechem antes de se tirar da tabela. Este contador conta quantos processos abriram o ficheiro, e quando chega a 0, retira ento o ficheiro da tabela. Localizao em disco de um ficheiro: A informao necessria para encontrar o ficheiro em disco guardada em memria. Direitos de acesso: Cada processo abre o ficheiro num modo de acesso. Esta informao guardada na tabela do processo para que o sistema possa permitir ou negar pedidos de I/O para este processo.

o o

Tabela por processo: o Contm o File Pointer, as permisses e um apontador para uma tabela global Tabela Global: o Contm a localizao do ficheiro no disco o Dimenso o Contador de Ficheiros Abertos

- Locks de Ficheiros Gerem acessos a ficheiros partilhados por processos o Shared Lock Semelhante ao reader lock pelo que vrios processos podem adquirir este lock concorrentemente o Exclusive Lock Comporta-se como write lock. Apenas um ficheiro pode adquirir este lock, de cada vez. o Alguns sistemas s suportam o exclusive lock. O sistema possibilita a utilizao de mecanismos de file-locking o Obrigatrio: O SO garante a integridade dos locks. (WINDOWS) o Aconselhador: A responsabilidade dos locks do programador. (LINUX) - Tipos de Ficheiros Executvel: pronto para correr um programa em linguagem mquina Objecto: Compilado e em linguagem mquina, mas not-linked. Cdigo-Fonte: Cdigo fonte numa linguagem de programao. Batch Script ou Shell Script: comandos para o interpretador de comandos. Texto: documentos de texto Bibliotecas: bibliotecas de rotinas (mtodos) para programadores. Arquivos: um ficheiro contendo grupos de ficheiros relacionados (pode estar comprimido). O UNIX usa um rudimentar nmero mgico (magic number) guardado no incio de alguns ficheiros para indicar o seu tipo (esta indicao aproximada). Como nem todos os ficheiros tm este magic number, o sistema no se pode s fiar nesta informao. - Estrutura de Ficheiros Desvantagens do SO suportar vrios tipos de ficheiro o Necessita de conter o cdigo necessrio para suportar estas estruturas. o Cada ficheiro tem de ser definido com um dos tipos de ficheiros suportados. o Se um ficheiro requer informaes numa estrutura no suportada, h problemas. Para combater estes problemas, o SO normalmente impe um nmero mnimo de tipos de ficheiros. Esta abordagem usada em UNIX, MS-DOS, etc. o UNIX considera cada ficheiro como uma sequncia de bytes de 8 bits. No h interpretao desses bits pelo SO. Cada aplicao deve incluir o seu prprio cdigo para interpretar um ficheiro de input para a estrutura associada. Porm, todos os SO tm de suportar uma estrutura, que a do ficheiro executvel, para que o sistema seja capaz de carregar e correr os programas.

- Mtodos de Acesso Acesso Sequencial: o Operaes Read / Write: Acedem e avanam o File Pointer. o Uma operao de leitura l a prxima poro do ficheiro e avana automaticamente o file pointer. o Uma operao de escrita escreve um novo pedao de ficheiro no fim deste. Aps esta escrita, o ficheiro tem um novo fim e avana-se o file pointer para esta parte. o Este ficheiro pode ser reset. Alguns sistemas permitem ainda que se salte n registos para a frente ou para trs. Este modelo assemelha se a uma fita, que funciona tanto para acessos sequenciais como para acessos aleatrios. Acesso Directo: o Permite que programas leiam e escrevam registos rapidamente, sem nenhuma ordem aparente. o Este acesso directo baseia-se num modelo de disco, pois o disco permite acessos aleatrios aos contedos do disco o Para acesso directo, o ficheiro visto como uma sequncia numerada de blocos ou registos. Assim, podemos ler o bloco 14, a seguir o bloco 53 e depois escreve no bloco 7. o No h restries na ordem de leitura ou escrita. o Vantagens: vantajoso para acesso a grandes quantidades de informao. Assim, temos a funo read n, em vez de read next, em que se l o bloco n.

- Estruturas de Directrios Procurar por um Ficheiro: procurar pelo nome do ficheiro na directoria, procurando todos os que coincidem com o nome que se procura. Criar um ficheiro: Quando se cria um ficheiro, adiciona-se uma nova entrada na tabela da directoria. Apagar um ficheiro: Remove-lo da directoria, retirando-o da directoria. Listar uma directoria: listar os ficheiros numa directoria e os contedos desses ficheiros Renomear um ficheiro: Mudar o nome do ficheiro numa directoria, que representa o contedo de um ficheiro para o utilizador, implica poder mudar a sua posio na estrutura da directoria. Transverse file system: Pode-se querer aceder a todas as directorias e todos os ficheiros numa estrutura de directorias. Para fiabilidade, uma boa ideia guardar os contedos e a estrutura do sistema de ficheiros se tempos a tempos. Esta tcnica permite um backup em caso de falha do sistema. Em adio, como os ficheiros esto em disco, podem ser retirados de memria, se necessrio, para colocar outros mais necessrios na altura. - Directorias Single-Level o Estrutura mais simples. Todos os ficheiros esto contidos na mesma directoria, facilitando o suporte e a compreenso da estrutura.

Limitaes: Quando o tamanho cresce muito ou quando h mais do que um utilizador no sistema. Como temos todos os ficheiros na mesma directoria, os nomes tm de ser nicos.

- Directorias Two-Level o Cada utilizador tem a sua prpria user file directory (UFD). Estas UFDs tm uma estrutura similar mas cada uma lista apenas os ficheiros de um dos utilizadores. Quando um processo de utilizador comea, ou quando o utilizador inicia a sua sesso, procura-se no master file directory (MFD). Esta directoria est indexada pelo nome de utilizador ou pelo nmero da conta, e cada entrada aponta para o UFD daquele utilizador.

- Estrutura em rvore Consiste em estender a estrutura do directrio a uma rvore de tamanho arbitrrio. Esta generalizao permite aos utilizadores criarem os seus subdirectrios e organizar os seus ficheiros. Cada ficheiro no sistema tem um caminho nico. Um directrio (ou subdirectrio) contm um conjunto de ficheiros ou subdirectrios. Um directrio um simples ficheiro, mas tratado de forma especial. Todos os directrios tm o mesmo formato interno. Existe um bit que define se uma entrada de um directrio um ficheiro ou um subdirectrio. Cada processo tem um directrio corrente. O directrio corrente deve contar os ficheiros que o processo est interessado em utilizar. Quando necessrio utilizar um ficheiro que no est no directrio corrente, necessrio que o utilizador indique o caminho. Os caminhos podem ser de dois tipos: absoluto ou relativo. Um caminho absoluto de um ficheiro comea na raiz de segue para baixo at chegar ao ficheiro. Um caminho relativo define um caminho do directrio corrente at ao ficheiro. Quando feito um pedido para apagar um directrio existem dois casos. Ou o directrio est vazio, ou no. Existem sistemas que s apagam um directrio se este estiver vazio, enquanto outros apagam esse directrio e tudo o que ele contm. Com este modelo um utilizador A pode mudar o caminho do seu directrio corrente e aceder a ficheiros do utilizador B. Para aceder a um ficheiro numa estrutura de rvore o caminho pode ser mais longo do que do que o caminho de um modelo de dois nveis.

- Grafos acclicos Existe partilha de dados entre dois ou mais utilizadores. Isto feito atravs de um subdirectrio partilhado. O mesmo ficheiro ou subdirectrio pode estar em dois directrios diferentes. O grafo acclico uma generalizao do esquema de directrios estruturado em rvore. Com a partilha de ficheiros s existe um ficheiro, se um utilizador modifica o ficheiro todos os outros utilizadores que partilham o ficheiro vm logo essas modificaes. Um novo ficheiro criado num subdirectrio ir aparecer imediatamente em todos os subdirectrios partilhados. Uma forma de criar um subdirectrio partilhado ou um ficheiro um directrio denominado link. Um link no mais que um ponteiro para outro ficheiro ou subdirectrio. Quando feita uma referncia ao ficheiro, procura-se no directrio. Se a entrada do directrio corresponde a um link, ento nome do ficheiro real est includo na informao do link. Outra forma de implementar isto ter dois ficheiros iguais, o maior problema deste mtodo manter a coerncia quando o ficheiro modificado. Quando se escolhe este mtodo podemos ter vrios caminhos absolutos. Outro problema envolve apagar ficheiros, pois podem ficar ponteiros para ficheiros que deixaram de existir. Quando esse espao utilizado novamente, h que ter em considerao os ponteiros que continuam a apontar para aquele local. Um sistema que implementa symbolic links, esta situao fcil de tratar. Quando se apaga um link, no necessrio afectar o ficheiro original, apenas o link apagado. Se o ficheiro removido, o espao do ficheiro libertado, deixando apontadores pendentes. Podemos procurar os links e apaga-los, mas a procura pode ser dispendiosa, a menos que se guardem informaes num ficheiro. Ou podemos apaga-los quando for feita uma tentativa de os usar. Outra abordagem deixar o ficheiro at que todos os links sejam apagados, guardando uma lista de todas as referncias do ficheiro. Quando a lista est vazia o ficheiro apagado. Ou ento ter um contador do nmero de links criados e s apagar o ficheiro quando o contador chegar a 0. Esta abordagem utilizada pelos sistemas UNIX para hard links. - Grafos genricos Um dos problemas dos grafos acclicos garantir que no existem ciclos. Se comearmos com um modelo de directrio de dois nveis e permitirmos aos utilizadores criar subdirectrios. Uma das vantagens dos grafos acclicos saber quando no existem

mais referncias para um ficheiro. Pois queremos evitar estar a percorrer seces partilhadas de um grafo acclico duas vezes. Uma soluo para procurar em grafos com ciclos ter um limite de directrios onde procurar durante a pesquisa. Outro problema determinar quando devemos apagar um ficheiro. Neste caso temos de usar um Garbage collection. Mounting de sistemas de ficheiros Para ser acedido um sistema de ficheiros tem de ser mounted previamente. Segue-se o procedimento de mount, dado ao sistema operativo o nome do dispositivo e o mount point localizao dentro da estrutura de ficheiros onde o sistema de ficheiros foi ligado, normalmente um directrio vazio. Caso no seja vazia, os ficheiros que j existiam ficam invisveis. Quando o sistema de ficheiros unmounted os ficheiros passam a poder ser acedidos. De seguida o sistema operativo verifica se o dispositivo tem um sistema de ficheiros vlido. De seguida o sistema anota na sua estrutura de directrio que tem um sistema de ficheiros mount no especificado mount point. Isto permite que o sistema operativo navegue pelos vrios sistemas de ficheiros que esto no seu directrio.

Partilha de ficheiros Existem algumas precaues a ter quando o sistema acomoda vrios utilizadores. Por exemplo, controlo de acesso e proteco. Alguns sistemas utilizaram os conceitos de owner do ficheiro e group. O owner o utilizador que pode mudar os atributos, conceder acesso e quem tem o maior controlo sobre o ficheiro. O atributo do group define um subconjunto de utilizadores que podem aceder ao processo partilhado. Existe uma semntica de coerncia que especifica como mltiplos utilizadores acedem a ficheiros partilhados simultaneamente. A semntica de coerncia est directamente relacionada com a sincronizao de processos. Unix o Escritas em ficheiro aberto so imediatamente visveis pelos outros utilizadores; o Permite a partilha do file pointer; o Uma imagem do ficheiro, acedida como um recurso exclusivo. AFS (Andrew File System)

o Escritas s visveis depois do close() do ficheiro para open() posterior; o Vrias imagens do ficheiro. Partilha de ficheiros remotos Antigamente utilizava-se transferncia de ficheiros manualmente ftp (File Tranfer Protocol) pode ser annimo ou autenticado. O segundo grande mtodo de transferncia de ficheiros utiliza DFS (Distributed File System). Este mtodo j automtico. Em alguns casos, World Wide Web (WWW), muito semelhante ao ftp. Normalmente necessrio um browser para ter acesso a ficheiros remotos. Este mtodo semi-automtico. Modelo cliente-servidor O cliente pode fazer mount de um ou mais sistemas de ficheiros remotos. Um servidor pode servir vrios clientes. Em UNIX utiliza-se Network File System (NFS). As chamadas ao sistema operativo so traduzidas para chamadas remotas. Falhas Os sistemas de ficheiros locais podem falhar por vrias razes. Para implementar uma espcie de recuperao de falhas, utiliza-se um tipo informao de estado. O NFS, no utiliza estas informaes de estado mas em vez disso utiliza protocolos sem estado, apenas as informaes de onde est localizado o ficheiro que necessitamos e a da operao requisitada. Isto mais fcil de implementar mas inseguro. Uma verso posterior do NFS j utiliza estados de informao para haver mais segurana, desempenho e funcionalidade. Proteco Queremos que a informao guardada num sistema computacional seja mantida em segurana e a salvo de acessos indevidos. preciso haver controlo de acesso para haver proteco de ficheiros. Estes diferentes tipos de acesso podem ser controlados: Read; Write; Execute; Append; Delete; List; A abordagem mais comum ao controlo de acesso fazer com que o acesso dependa da identidade do utilizador. A forma mais fcil de o fazer associar a cada directrio ou ficheiro uma lista de controlo de acesso (ACL) que os utilizadores e os tipos de acesso permitidos. Este mtodo tem problemas, pois se quisermos garantir acesso a todos os utilizadores a lista seria enorme. Este problema foi ultrapassado utilizando 3 modos de acesso, so eles:

Owner utilizador que criou o ficheiro; Group conjunto de utilizadores que partilham o ficheiro e tm direitos de acesso semelhantes; Universe todos os outros utilizadores do sistema. Em UNIX, existem 3 modos de acesso: r, w, x. Em Windows, existem 5 modos de acesso: full, modify, read & execute, read,

write.

Implementao do Sistema de Ficheiros


Estrutura
O sistema de ficheiros provm um acesso conveniente e eficaz ao disco permitindo guardar dados, localizar dados e obt-los. Um sistema de ficheiros coloca dois problemas, qual a perspectiva para o utilizador e qual a perspectiva para o sistema. Normalmente constitudo por vrios nveis. Cada camada inferior disponibiliza recursos para as superiores. A perspectiva do utilizador engloba: 1. Definio de ficheiros e atributos; 2. Operaes sobre os ficheiros; 3. Estrutura de directrios. Enquanto que a perspectiva do utilizador engloba: 1. Algoritmos e estruturas de dados para associar o sistema de ficheiros lgico aos dispositivos de memria secundria. O nvel mais baixo desta sucesso de camadas so os dispositivos de hardware. Estes dispositivos so controlados pelos drivers do dispositivo e pelos interrupt handlers. Os drivers servem como tradutores de comandos para instrues de hardware. Isto permite que haja transferncia de informao entre o disco e a memria. O sistema de ficheiros bsico apenas necessita de comandos para leitura e escrita de blocos fsicos. O mdulo de organizao de ficheiros tem noo de ficheiro e dos seus blocos lgicos e dos blocos fsicos. Faz a traduo de endereos de blocos lgicos para endereos de blocos fsicos. Fornece tambm gesto do espao livre, provendo blocos livres quando requisitados pelo mdulo de organizao de ficheiros. O sistema de ficheiros lgico gere os metadados. Gere as estruturas de directrios para fornecer informao sobre um dado nome de um ficheiro. Utiliza File Control Block (FCB) para fazer esta gesto. Um FCB contm informao sobre o ficheiro, que inclui: 1. O dono do ficheiro, grupo; 2. Permisses; 3. Localizao dos contedos ficheiro apontadores para blocos de dados; 4. Datas; 5. Dimenso.

Implementao do sistema de ficheiros


Para criar um ficheiro, uma aplicao faz uma chamada ao sistema de ficheiros lgico. O sistema de ficheiros reserva um novo FCB. actualizado o directrio com o novo FCB e o nome do ficheiro. Para abrir um ficheiro utilizamos a chamada ao sistema de ficheiros lgico, open(). Esta funo recebe como argumento o nome do ficheiro.

Primeiro a chamada procura no system wide open file table para ver se o ficheiro j est aberto por outro processo. Ento criada uma entrada por processo na tabela de ficheiros abertos. Caso o ficheiro no esteja aberto feita a pesquisa do ficheiro na estrutura de directrios e copiado o FCB para a systemwide open-file table tem partes em memria pois aumenta a velocidade. tambm criada uma entrada na tabela de ficheiros abertos do processo. A funo devolve um apontador para a tabela de ficheiros do sistema (system-wide open-file table). Todas as operaes feitas sobre o ficheiro so feitas sobre este apontador em Linux file descriptor, em Windows file handle. Quando um processo fecha um ficheiro, a entrada da tabela de ficheiros do processo removida. E o contador da system-wide open-file table decrementado. Quando todos os utilizadores que abriram o ficheiro o fecharem so actualizados os metadados do ficheiro e removida a entrada da tabela. Sistemas de ficheiros virtuais A maioria dos sistemas utiliza tcnicas orientadas a objectos para simplificar, organizar e modular a implementao. A implementao consiste em 3 grandes camadas. A primeira camada a interface baseada nas operaes open(), read(), write() e close() e nos file descriptors. A segunda camada denominada sistema virtual de ficheiros (VFS), separa as operaes do sistema de ficheiros genrico da implementao. Podem existir diversas implementaes da VFS na mesma mquina, permitindo aceder a vrios tipos de ficheiros. Provm tambm mecanismos para representar unicamente um ficheiro numa rede.

Implementao de directrios
Lista A forma mais fcil de implementar um directrio utilizando uma lista linear de nomes de ficheiros com apontadores para os blocos de dados. Este mtodo simples mas no tem bom desempenho. Para criar um novo ficheiro, tem-se de procurar a lista toda e adicionar uma nova entrada no fim.

Para apagar um ficheiro necessrio procurar o ficheiro pelo nome e libertar o espao que tem reservado. Existem vrias opes para reutilizar a entrada do directrio. Pode-se colocar uma marca na entrada para se saber que no est utilizada ou coloca-la numa lista de entradas de directrios livres. Uma linked list ajudar a melhor o desempenho da remoo. Hash table Outra estrutura para um directrio hash table. A hash table toma um valor gerado atravs do nome do ficheiro e retorna um apontador para o nome do ficheiro na lista (lista igual acima descrita). Sendo assim diminui em muito o tempo de pesquisa no directrio. S necessrio ter cuidado com as colises. Utiliza-se uma hash table chain (trata as colises utilizando linked lists).

Mtodos de reserva
Reserva contgua A reserva contgua requer que cada ficheiro ocupe um conjunto de blocos contguos no disco. Este modelo tem bom desempenho, pois no se perde tempo para a head se reposicionar. O acesso ao ficheiro bastante simples, pois definido pelo endereo do bloco inicial e um tamanho. Contudo este esquema tem alguns problemas, encontrar espao para um ficheiro um deles. O sistema tem de escolher um gestor do espao livre. Existe novamente o problema de como satisfazer um pedido de tamanho n de uma lista de holes. First-fit e o Best-fit so as estratgias mais comuns para encontrar seleccionar um hole. Algumas simulaes mostram que estas duas tcnicas so melhores que o Worst-fit, tanto em termos de tempo como de utilizao de espao. Mas nenhum destes mecanismos o melhor. Pois causam fragmentao externa. Outro problema da reserva contgua saber qual o espao que o ficheiro ir ocupar quando criado. Existem dois casos, subestimar e sobrestimar. Ao subestimar o ficheiro ter menos espao do que precisa e isso poder originar um erro. Ao sobrestimar poder haver desperdcio de espao fragmentao interna. Reserva Ligada A reserva ligada resolve o problema da reserva contgua. Com esta reserva cada ficheiro uma linked list de blocos do disco. O directrio contm um apontador para o primeiro bloco e para o ltimo. Cada bloco que pertence ao ficheiro no final tem um apontador para o bloco seguinte. Com este mtodo no fragmentao externa, pois qualquer bloco satisfaz um pedido e

o tamanho do ficheiro no preciso ser declarado na criao. O maior problema que s pode ser usada, eficientemente, em acessos sequenciais a um ficheiro. Se quisermos o bloco n temos de percorrer todo o ficheiro at l chegar. Os ponteiros tambm utilizam espao que podia ser utilizado para guardar informao. A soluo para este problema juntar vrios blocos clusters. Assim os apontadores ocupam menos espao, pois s existir um apontador no final de cada cluster. Utilizando esta abordagem aumenta a fragmentao interna. Contudo esta tcnica no fornece acesso directo. Reserva ligada variante Uma variante importante da reserva ligada a FAT (File-Allocation Table). simples e bastante eficiente. Uma parte do incio do disco de cada volume utilizada para colocar a tabela. A tabela contm uma entrada para cada bloco do disco e indexada pelo nmero do bloco. O FAT utilizado da mesma forma que uma linked list. A entrada do directrio contm o nmero do primeiro bloco do ficheiro. A entrada da tabela do bloco tem o nmero do bloco seguinte. Esta sequncia continua at se atingir o final do ficheiro posio da tabela com um valor de end-of-file. Um bloco inutilizando tem o valor 0. Para reservar mais um bloco basta apenas procurar o primeiro que a entrada seja 0 e substituir o endereo do bloco que continha o end-of-file pelo endereo do novo bloco. A entrada que continha 0 passa a conter o end-of-file. Reserva indexada A reserva ligada resolve a maioria dos problemas, mas no suporta acesso directo. A reserva indexada resolve o problema colocando todos os apontadores juntos numa zona, o bloco de ndices. Cada ficheiro tem o seu bloco tem o seu prprio bloco de ndices, que consiste num vector de endereos de blocos de disco. Quando o ficheiro criado todos os apontadores esto a colocados a nil. Quando i-simo bloco escrito pela primeira vez, obtido bloco a partir do gestor de espao livre e o seu endereo colocado na i-simo entrada do bloco de ndices. Este mtodo permite acesso directo sem sofrer de fragmentao externa.

Este mtodo utiliza maior espao em disco devido aos apontadores. Mesmo se s precisar de 2 blocos, tem de ser reservado um bloco de ndices. Por isso queremos os blocos de ndices pequenos, mas se so pequenos demais no suportamos ficheiros de grandes dimenses. Existem mecanismos para este propsito: Esquema linked normalmente um bloco de ndices um bloco do disco. Para suportar ficheiros de grandes dimenses podemos ligar vrios blocos de ndices. Por exemplo, um bloco de ndices pode conter 100 apontadores sendo o ltimo um apontador para outro bloco de ndices. Este apontador nil para ficheiros pequenos, mas um endereo de outro bloco de ndices para um ficheiro de grandes dimenses; ndices multi-nvel utiliza-se um bloco de ndices de 1 nvel que aponta para blocos de ndices de 2 nvel que por sua vez apontam para blocos do ficheiro. Podem-se utilizar tantos nveis como quisermos, aumentando o nmero de indireces para cada nvel que se adiciona. Esquema combinado utilizado no UFS (Unix File System). Primeiro coloca-se no inode do ficheiro 15 apontadores. 12 deles para blocos de dados do ficheiro, isto suficiente para ficheiros pequenos blocos directos. Os outros 3 apontadores para blocos indirectos. O primeiro apontador indirecto simples, ou seja, aponta para um bloco de ndices que contm endereos de blocos de dados. O segundo um apontador indirecto duplo que aponta para um bloco de ndices que por sua vez contm apontadores para blocos de ndices. E estes que contm apontadores para os blocos de dados. O 3 apontador segue o mesmo esquema mas indirecto triplo.

Gesto de espao livre


Para o sistema saber que blocos livres existem, mantm uma lista de espao livre, que contm todos os blocos do disco que no esto reservados. Vector de bits Normalmente a lista de espao livre implementada como um mapa de bits ou um vector de bits. Cada bloco representado por um bit. Se o bloco est livre o bit est a 1; se o bloco est reservado, o bit est a 0. Este mtodo simples e eficiente para encontrar o primeiro bloco livre. Mas se o vector guardado em memria torna-se ineficiente. Outro inconveniente o espao de memria que ocupa. Linked List Outra abordagem utilizar uma linked list para gerir o espao livre, ligando todos os blocos de disco livres, mantendo um

ponteiro para o primeiro bloco do disco livre. O primeiro bloco do disco livre tem um apontador para o bloco livre seguinte. Este mtodo no eficiente pois percorrer a lista toda requer muito tempo de operaes de E/S.

Grouping Uma variante da abordagem da lista de espao livre que guarda os endereos de n blocos livres no primeiro bloco livre. Os primeiros blocos n 1 esto livres. O ltimo bloco, o bloco n, contm o endereo de mais n blocos livres. Assim a procura de blocos livres mais rpida. Couting Outra abordagem tira a vantagem, de geralmente, vrios blocos contguos serem reservados ou libertados simultaneamente, particularmente quando o espao reservado usando algoritmos de reserva contgua ou clusters. Por isso em vez de mantermos uma lista de n endereos de blocos livres, mantemos o endereo do primeiro e o nmero de blocos livres contguos que se seguem.

Recuperao
Os ficheiros so mantidos tanto em disco como em memria e preciso ter cuidado para que uma falha do sistema no resulte em perda de dados ou incoerncias. A coerncia do sistema de grande importncia, por isso o sistema de ficheiros deve detecta-lo a causa da corrupo e corrigi-la. Para verificar a consistncia utiliza-se um consistency checker compara os dados na estrutura do directrio com a nos blocos de dados e tenta corrigir alguma inconsistncia. No MS-DOS utiliza-se o chkdsk, no Unix utiliza-se o fsck. Esta verificao depende dos algoritmos de reserva e de gesto de espao livre. Em sistemas transaccionais todas as alteraes so registadas num log. Backup e Restore Os discos magnticos por vezes tambm falham e necessrio que os dados so recuperveis. Recuperar de uma perda de um ficheiro, ou de um disco inteiro, pode ser uma questo de restaurar os dados a partir de um backup. Para minimizar as cpias que se tm de fazer, podemos utilizar a informao de cada entrada do directrio. Um escalonamento de backup pode ser o seguinte: 1. Copiar todos os ficheiros do disco full backup; 2. Copia todos os ficheiros que foram alterados desde o ultimo backup incremental backup; 3. Copia todos os ficheiros que foram alterados desde o ultimo backup; 4. ...

Armazenamento
Discos magnticos
Cada prato do disco em uma superfcie plana e os dimetros costumam ser entre 1.8 a 5.25. As duas superfcies do prato esto cobertas com material magntico. A informao armazenada, guardando-a magneticamente nos pratos. A cabea de leitura e de escrita move-se acima de cada uma das superfcies dos pratos. Cada parto dividido logicamente em pistas circulares, que por sua vez esto divididas em sectores. O conjunto de pistas que esto numa dada posio do brao constituem um cilindro. Quando um disco est em funcionamento o motor do disco tem rotaes na ordem das 60 a 200 rotaes por segundo. A taxa de transferncia a taxa com que os dados fluem entre a unidade e o computador. O tempo de posicionamento, dividido em duas partes. Random acess time, consiste no tempo necessrio para mover o brao do disco para o cilindro desejado seek time. Outra parte do tempo denominada por rotational latency o tempo necessrio para que o sector que queremos passe na cabea. Um disco est ligado a um computador por um conjunto de fios denominados I/O bus. Existem vrios tipos de bus disponveis: Enhanced Integrated Drive Electronics (EIDE); Advanced Technology Attachment (ATA); Serial ATA (SATA); Universal Serial Bus (USB); Fiber Channel (FC); Small Computer-Systems Interface (SCSI). A transferncia de dados feita por um bus tratada por processadores especiais denominados controladores. O host controller o controlador no final do bus do computador. O controlador do disco est embutido em cada disco. Para realizar uma operao de E/S o computador lana um comando no host controller e este envia para o controlador do disco.

Tapes magnticas
O acesso mais lento comparado com a memria ou com o disco. Alm dos mais o acesso aleatrio numa tape magntica cerca de 100 mais lento do que a um disco. Este tipo de armazenamento mais utilizado para backup e como um meio de transferir informao entre dois sistemas. A capacidade varia entre os 20GB e os 200GB.

Estrutura do disco
Os discos so acedidos atravs de uma grande vector de blocos lgicos. A correspondncia entre blocos e sectores feita da seguinte forma. O sector 0 o primeiro sector da primeira pista mais distante do centro. De seguida vem o sector 1 que o segundo sector da 1 pista mais distante do centro. O mapeamento feito primeiro pela primeira pista do cilindro e depois pelas outras.

Ligao de discos a computadores


Os discos podem ser acedidos de duas formas. Uma delas atravs de portas de E/S comum em sistemas pequenos. Outra forma atravs de remote host num sistema de ficheiros distribudo. Ligao na mquina local feita atravs das portas de E/S locais. Normalmente para PCs utiliza-se IDE e ATA. Esta arquitectura suporta o mximo de duas unidades por bus. Existe agora um protocolo mais recente, mas semelhante, o SATA. Para workstations e para servers so utilizadas arquitecturas mais sofisticadas como SCSI e FC. Ligao atravs de rede de dados (Network Attached Storage - NSA) Este tipo de mecanismo utilizado para sistemas de armazenamento que so acedidos remotamente atravs de uma rede de dados. Os clientes acedem ao NSA via remoteprocedure-call interface como a NFS dos sistemas Unix. Permite que exista partilha entre vrios computadores numa LAN, contudo tende a ser menos eficiente e a ter menor desempenho que alguns armazenamentos de ligao directa. Ligao atravs de rede especfica (Storage Area Network - SAN) uma rede privada utiliza protocolos de armazenamento em vez de protocolos de rede que liga servidores a unidades de armazenamento. A vantagem deste modelo a sua flexibilidade. As operaes de E/S consomem muita largura banda na rede de dados, o que em situaes de grande afluncia pode implicar latncia. Uma SAN pode alojar vrios hosts e mltiplos vectores de armazenamento. Este mtodo tambm torna possvel que um conjunto de servidores partilhe o mesmo armazenamento e incluir vrias conexes host directas.

Escalonamento do disco
O objectivo ter rpido acesso e uma banda larga do disco. A largura de banda o nmero de bytes a dividir pelo intervalo de tempo entre o 1 pedido e o final da ltima transferncia. Podemos optimizar o tempo de asso e a banda do disco gerindo a ordem com que cada pedido ao disco respondido. O desempenho dos algoritmos depende do nmero e do tipo de pedidos. Algoritmo FCFS A forma mais fcil o primeiro a chegar, ser o primeiro servido. Este algoritmo no fornece o servio mais rpido. Algoritmo SSTF (Shortest-Seek-Time-Fisrt) Este algoritmo serve todos os pedidos perto da posio actual da cabea antes de se mover para outra posio do disco. Este algoritmo selecciona o prximo pedido pelo seek time mais pequeno a partir de posio actual. Aumenta um pouco o desempenho, mas pode causar starvation. Algoritmo SCAN Neste algoritmo o brao do disco comea numa ponta e move-se at outra ponta, servindo pedidos que vo chegando para cada cilindro. Quando chega ao fim, move-se novamente at outra ponta, servindo os pedidos que cheguem. Se um pedido chega ao disco e a cabea est a passar nesse local servido imediatamente. Algoritmo S-SCAN (Circular SCAN) uma variante do SCAN desenvolvida para fornecer um tempo de espera mais uniforme. A cabea move-se de uma ponta at outra, servindo pedidos ao longo do caminho. Quando a cabea seja ao outro lado, volta para trs imediatamente sem servir nenhum pedido. Comea novamente a servir pedidos do princpio. Algoritmo LOOK e C-LOOK Normalmente a cabea s se move at ao pedido final mais longnquo. Quando o serve volta para trs imediatamente e comea do princpio, assim volta ao princpio e no se perde tempo a percorrer o resto do disco.

Gesto do disco
Antes de se poder guardar dados num disco, este tem de ser dividido em sectores que o controlador do disco possa ler e escrever. Este processo denominado formatao de baixo nvel ou formatao fsica. Esta formatao enche o disco com estruturas de dados para cada sector que consiste num header, rea de dados e um trailer. O header e o trailer contm informaes utilizadas pelo controlador do disco, como o nmero do sector, o cdigo de correco de erros (ECC). Antes do sistema operativo poder utilizar o disco, o sistema precisa de gravar as suas prprias estruturas de dados. A primeira fase particionar o disco em um ou mais

grupo de cilindros. O sistema operativo pode tratar cada partio como um disco em separado. A segunda fase formatao lgica, ou criao do sistema de ficheiros. Para aumentar a eficincia, a maioria dos sistemas de ficheiros agrupa vrios blocos em grandes pedaos, denominados clusters. As operaes de E/S do disco so feitas em blocos, mas as do sistema de ficheiros so feitos em clusters assegura-se que as operaes de E/S so mais acesso sequencial do que acesso aleatrio. Alguns sistemas operativos fornecem suporte para ter raw disk. Isto consiste numa partio do disco sem estruturas de dados do sistema de ficheiros. Pode tornar aplicaes mais eficientes deixando-as utilizar este espao do disco. Boot Block 1. O bootstrap est guardado em memria ROM, e um pequeno programa que contm cuja funo apenas trazer para memria o programa inteiro para disco o programa est guardado numa zona fixa do disco denominada boot blocks, caso o disco tenha parties, chama-se boot disk ou system disk. 2. O cdigo na memria ROM so instrues para o controlador do disco carregar em memria o boot block. Utilizando o exemplo do Windows 2000, o cdigo de boot est no primeiro sector do disco Master Boot Record (MBR). O cdigo contido em memria ROM comea por carregar em memria o cdigo contido no MBR. Em adio ao cdigo de boot, o MBR contm a tabela de parties do disco e uma flag que indica qual a partir da qual se efectuar o boot. Blocos estragados Quando um bloco est estragado, dependendo do tipo de disco, o problema tem de ser tratado. No caso de um disco simples com controlador IDE. Os blocos estragados tm de ser tratados manualmente, utilizando por exemplo o comando format em MS-DOS. Pois este comando verifica o disco para descobrir blocos estragados e escreve um valor especial na entrada correspondente da FAT. Os dados guardados nestes blocos perde-se. Quando a discos mais sofisticados, como disco com controlador SCSI, o prprio disco trata dos blocos estragados. Mantendo uma lista de blocos estragados que inicializada durante a formatao de baixo nvel e actualizada ao logo da vida do disco. A formatao de baixo nvel tambm deixa sectores sobresselentes os sectores lgicos, no caso de aparecerem blocos estragados. Este esquema conhecido como sector sparing. Este mtodo pode comprometer as optimizaes feitas aos algoritmos de escalonamento do disco. Por isso os discos fornecem poucos sectores sobresselentes em cada cilindro. Gesto de swap-space Gerir o swap-space mais uma tarefa de baixo nvel. A memria virtual utiliza uma parte do disco como se fosse memria, mas como o disco mais lento que a memria utilizar o disco implica um decrscimo de desempenho. A quantidade de swap-space necessria num sistema pode variar de uns pequenos MB para GB, dependendo da quantidade de memria fsica, da quantidade de memria virtual que suportada, e a forma com que a memria virtual usada.

O swap-space pode ser colocado no sistema de ficheiros ou numa partio de disco separada. Se criado dentro do sistema de ficheiros so necessrias rotinas do sistema de ficheiros para aceder ao swap-space ineficiente. A alternativa criar uma raw partition para o swap-space. Este mtodo utiliza algoritmos optimizados para a velocidade em vez da eficincia de armazenamento.

Estrutura em RAID
O RAID (Redundant Array of Independent Disks) aumenta a capacidade de armazenamento, desempenho e/ou fiabilidade. Os Discos so controlados por um controlador RAID conjunto de discos. Existem 6 nveis de RAID: 1. Raid 0 podem ligar-se dois ou mais discos de forma a criar um nico volume com capacidade igual soma das capacidades individuais de cada um. Este modo de funcionamento o que oferece a performance mais elevada visto que a utilizao de vrios discos permite operaes de leitura e escrita em paralelo. Este modo de funcionamento o mais utilizado em sistemas de pequeno porte e no lhe oferece nenhum tipo de tolerncia a falhas de hardware; 2. RAID 1 so normalmente utilizados apenas dois discos e quando grava dados para um disco criada automaticamente uma cpia no outro. Quando est a ler dados se ocorrer um erro o sistema l automaticamente o backup sendo por isso completamente transparente para o utilizador. Como existe redundncia dos dados, este modo o mais indicado para aplicaes em que a segurana dos dados a preocupao principal; 3. RAID 2 os discos deste tipo de infra-estrutura esto sincronizados: este tipo de RAID permite escritas orientadas ao dgito binrio e guarda dgitos binrios dedicados a deteco/correco de erros, estes dgitos so guardados em todos os discos; 4. RAID 3 tem exactamente as mesmas caractersticas do RAID 2 mas os dgitos so guardados todos num dos discos;

5. RAID 4 os discos esto virtualmente divididos em agregados de k sectores, um dos agregados contm um cdigo de verificao de erros, obtido pelo OU-exclusivo dos vrios sectores;

6. RAID 5 adiciona tolerncia a falhas a sistemas a funcionar em modo RAID 0 pela incluso de informao de paridade em todos os discos (cada disco tem os bits paridade de uma parte das strips). Este sistema tem vantagens em relao ao RAID 1 porque no usa uma unidade apenas para backup dos dados, em vez disso grava apenas informaes que podem ser utilizadas para recuperar os dados em caso de falha.

Armazenamento estvel
Armazenamento a informao de forma a que nunca exista perdas. Para isto deve-se utilizar vrios discos que modos de falha independentes. Quando ocorre uma falha durante a escrita de um bloco, o sistema deve detecta-la e invocar um procedimento de recuperao para restaurar o bloco. Para isso o sistema mantm dois blocos fsicos para cada bloco lgico. Uma operao de output feita da seguinte forma: 1. Escreve-se a informao no primeiro bloco fsico; 2. Quando a primeira escrita termina com sucesso, escreve-se a mesma informao no segundo bloco fsico; 3. Declara-se a operao terminada quando a segunda escrita feita com sucesso. Durante a recuperao cada um dos blocos examinado. Se so ambos iguais e no existem erros, no necessrio fazer mais nada. Se um dos blocos contm erros, ento substitui-se com o contedo do outro bloco. Se nenhum dos blocos contm erros mas o seu contedo diferente, o contedo do segundo disco copiado para o primeiro bloco isto garante sucesso completo ou nenhuma alterao.

Armazenamento tercirio
A principal caracterstica deste tipo de armazenamento o baixo custo. Outra caracterstica importante ser removvel. O sistema operativo suporta dois tipos de abstraco. Uma delas o dispositivo raw (tapes) e outro o sistema de ficheiros (discos). Os dois grandes usos so para backup e para sistemas de ficheiros estendido. Num sistema de ficheiros estendido utiliza-se memria para alm do disco (memria secundria) para armazenar ficheiros pouco usados ou de grandes dimenses. Para utilizar ficheiros que esto em memria terciria primeiro tm de ser trazidos para memria secundria.

Hoje em dia, a gesto de armazenamento hierrquico encontrada em locais onde se encontram grandes quantidades de dados, que so utilizados raramente, esporadicamente ou periodicamente. As 3 caractersticas para avaliar o desempenho deste tipo de armazenamento so: a velocidade, fiabilidade e o custo.

Sistemas de E/S
O propsito destes sistemas gerir as operaes de entrada e sada e os dispositivos de entrada e sada. Como existe uma grande diversidade de dispositivos e das caractersticas destes um problema ter mtodos de controlo para todos. Para resolver o problema formou-se o subsistema de E/S do kernel separado das restantes funcionalidades do kernel. O subsistema de E/S do kernel gere e controla operaes e dispositivos de E/S. Para isso disponibiliza uma interface simples e fcil de utilizar. Esta interface deve ser a mesma para todos os dispositivos, na medida do possvel, seno torna-se complicado ter mecanismos para cada dispositivo.

Hardware E/S
Um dispositivo comunica com sistema computacional enviando sinais atravs de um cabo ou mesmo pelo ar. O dispositivo pode comunicar utilizando pontos de ligao, ports. Se o dispositivo utiliza um conjunto de cabos, a conexo chamada bus conjunto de cabos com um protocolo rgido que especifica o conjunto de mensagens que podem ser enviadas. Um controlador uma coleco de electrnica que opera sobre um port, um bus ou um dispositivo. A comunicao entre um controlador e o CPU feita atravs de registos do controlador para dados e controlo de sinais. O processador comunica com o controlador lendo e escrevendo padres de bits nesses registos. Isto pode ser feito de duas formas: Utilizando instrues de E/S que especificam a transferncia de um byte ou Word para um port de E/S; O controlador pode suportar memory-mapped I/O. Neste caso os registos do controlador podem ser mapeados para o espao de endereamento do processador. Neste caso utiliza as instrues normais de escrita e leitura. Polling O protocolo para interaco entre um host e um controlador pode ser complicado, mas a noo de handshaking simples. O controlador indica o seu estado atravs do busy bit no registo status. O controlador coloca o bit busy a 1 quando ocupado e coloca-o a 0 quando est pronto para aceitar outro comando. O host sinaliza o que deseja via commandready bit no registo command. O host coloca esse bit a 1 quando um comando est disponvel para o controlador executar. Segue um exemplo de um host escrever output atravs de um port: 1. O host l repetidamente o busy bit at que seja 0; 2. O host coloca o bit write do registo comand e escreve o byte no registo dataout; 3. O host coloca o comand-ready bit a 1; 4. Quando o controlador notificado que o command-ready bit est a 1, coloca o busy bit a 1;

5. O controlador l o registo command e v o comando write. Ento l o registo data-out para obter o byte e efectua a operao de E/S para o dispositivo; 6. O controlador coloca o command-ready bit a 0 e retira o error bit do registo status para indicar que a operao de E/S com o dispositivo foi bem sucedida. Por fim coloca o busy bit a 0. Na etapa 1 o host est em espera activa ou polling. Para evitar isso utiliza-se interrupes para avisar o host. Interrupes O mecanismo bsico de interrupes funciona da seguinte forma. O hardware do CPU tem um fio que se chama linha de pedido de interrupo. Esta linha verificada aps cada instruo. Quando o CPU detecta que um controlador lanou um pedido de interrupo, grava o estado em que est e salta para a rotina de tratamento de interrupo que est num endereo de memria fsico. A rotina de tratamento de interrupes determina a causa da interrupo e faz o processamento necessrio e restaura o estado anterior interrupo. O mecanismo de interrupes permite ao processador responder a eventos assncronos. No entanto so necessrias funcionalidades adicionais, tais como: 1. Habilidade de atrasar tratamento de interrupes durante um processamento crtico (instrues atmicas); 2. Enviar a interrupo para o tratamento adequado sem verificar todos os dispositivos para ver qual foi o que lanou a interrupo; 3. necessrio ter um esquema multi-nvel, para que o sistema operativo possa distinguir entre interrupes de alto nvel e de baixo nvel e possa responder com a adequada urgncia. Num computador moderno isto fornecido pelo CPU e pelo hardware controlador de interrupes. Direct Memory Access Para o dispositivo que transfere grandes quantidades de dados desperdcio utilizar o CPU para controlar os status bits e para colocar dados nos registos do controlador, um byte de cada vez estes processos denominam-se programmed I/O (PIO). Muitos computadores evitam sobrecarregar o CPU com PIOs colocando algum desse trabalho em processadores criados para esse propsito, denominados direct-memory-acess (DMA) controller. Para iniciar uma transferncia DMA, o host escreve um bloco de comandos DMA em memria. Esse bloco contm um apontador para a fonte e para o destino da transferncia

e um contador do nmero de bytes a serem transferidos. O CPU coloca o endereo deste bloco de comandos no controlador de DMA e ele comea o seu trabalho. O controlador de DMA opera directamente no bus de memria.

Interface para aplicaes de E/S


Podemo-nos abstrair dos detalhes diferentes entre dois dispositivos de E/S identificando alguns tpicos genricos. Para cada tipo genrico acedido atravs de um conjunto de funes standard interface. As diferenas so encapsuladas em mdulos do kernel denominados device drivers que internamente so feitos para um dispositivo em especifico mas seguem uma interface standard. Os novos dispositivos so desenvolvidos tendo em considerao as interfaces de controlador que j existem, ou fazem device drivers para servirem de interface ao novo hardware para os sistemas operativos mais populares. E/S bloqueantes e no bloqueantes Outro aspecto da interface de chamadas ao sistema relacionado com a escolha entre operaes de E/S bloqueantes ou no bloqueantes. Quando uma aplicao executa uma operao de E/S bloqueante, a execuo da aplicao suspensa. As operaes efectuadas pelos dispositivos de E/S normalmente so assncronos, utilizam um intervalo tempo imprevisvel. A maioria dos sistemas utiliza este mtodos, pois fcil de utilizar. Alguns dos processos do utilizador precisam de utilizar operaes de E/S no bloqueantes. Um dos exemplos o input colocado no teclado durante a execuo de um programa. Uma das formas das aplicaes sobreporem execuo com operaes de E/S utilizar mltiplas threads. Algumas das threads fazem as operaes de E/S bloqueantes enquanto que outras continuam a executar. Existem sistemas fornecem outro sistema operaes de E/S no bloqueantes. A chamada no bloqueante no para a execuo por uma extenso de tempo, ao invs disso retorna rapidamente um valor que indica o nmero de bytes transferidos. Uma alternativa s chamadas no bloqueantes so as chamadas assncronas. Uma chamada assncrona retorna imediatamente sem esperar pelo fim da operao de E/S, a aplicao continua a executar o seu cdigo. O final da operao de E/S terminado no tempo futuro e a aplicao alertada atravs de uma varivel em memria, ou atravs de um sinal, ou por uma interrupo de software, ou mesmo por uma rotina invocada assincronamente.

Subsistema de E/S do kernel


Todos os servios que vamos tratar de seguida so fornecidos pelo subsistema de E/S do kernel. tambm responsvel por proteger-se de processos com erros e utilizadores maliciosos.

Escalonamento Escalonar um conjunto de pedidos de operaes de E/S significa determinar uma boa ordem para os executar. Escalonar aumenta o desempenho do sistema, faz uma distribuio justa dos dispositivos pelos processos e reduz o tempo mdio de espera para que uma operao de E/S termine. Os sistemas operativos implementam o escalonamento mantendo uma fila de espera de pedidos por cada dispositivo. Por exemplo uma aplicao pode receber um servio fraco, ou pode ser dada uma alta prioridade para pedidos urgentes. Buffering Um buffer uma memria que guarda dados que esto a ser transferidos entre dois dispositivos ou entre um dispositivo e um programa. Utilizam-se buffer por 3 razes: 1. Diferena de velocidade entre o produtor e o consumidor dos dados; 2. Fornecer adaptao para dispositivos que tm diferentes tamanhos de transferncias; 3. Suportar semntica da cpia para aplicaes de E/S. Caching uma regio de memria rpida que guarda cpia de dados. Aceder a uma cpia em cache mais eficiente que aceder ao original. A diferena entre buffer e cache que o buffer pode conter uma cpia nica de um item de dados, enquanto que a cache contm sempre cpias de itens de dados. Spooling um buffer que guarda output para um dispositivo, que no pode aceitar vrios fluxos de dados intervalados. Por exemplo uma impressora s pode servir um processo de cada vez, mas vrias aplicaes podem desejar os seus servios sem que haja mistura do seu output. O sistema operativo resolve este problema interceptando todo o output que tem como alvo a impressora. O output de cada aplicao colocado num ficheiro separado. Quando uma aplicao termina a impresso, colocado na impressora o output de outra aplicao, corresponde ao prximo elemento na fila do sistema de spooling. O spooling uma forma que o sistema utiliza para coordenar output concorrente. Este mecanismo suportado por um processo ou uma thread do kernel. Reserva de dispositivos Outra forma de coordenar output concorrente utilizar a reserva de dispositivos. Alguns sistemas operativos fornecem suporte acesso exclusivo a dispositivos, possibilitando que um processo reserve um dispositivo parado e liberta-lo quando no necessita mais dele. A reserva dos dispositivos feita atravs de chamadas ao sistema. Alguns sistemas operativos s permitem que exista um ficheiro de cada vez a ser tratado por esses dispositivos. Tratamento de erros A chamada ao sistema operativo retorna um valor, indicando se houve erro ou se a operao foi concluda com sucesso.

Proteco Esta rea est relacionada com os erros que podem existir no computador. Um programa do utilizador pode acidentalmente tentar aceder a operaes de E/S ilegais. Existem vrios mecanismos para assegurar que esses erros no acontecem no sistema. Para evitar que utilizadores acedam a operaes de E/S ilegais, tornamo-las operaes privilegiadas. Assim os utilizadores no podem aceder directamente s operaes de E/S, devem aceder a partir do sistema operativo. Quando o utilizador invoca uma chamada ao sistema para realizar uma operao de E/S, o sistema verifica se a chamada valida e se for faz o pedido da operao. O sistema deve ainda proteger os ports de E/S e memory-mapped. Estruturas de dados do kernel O kernel necessita de guardar informao sobre o estado de uso dos componentes de E/S. Para isso so implementadas diversas estruturas como a tabela de ficheiros abertos, ligaes de rede, etc..

Pedidos de E/S
Nos sistemas operativos mais modernos podemos introduzir novos dispositivos e novos drivers sem ter que recompilar todo o kernel. Durante o tempo do boot o sistema tem a capacidade de examina os buses do hardware para determinar que dispositivos esto presentes. Feito isso so carregados os drivers necessrios, estes podem ser carregados imediatamente ou na primeira vez que requisitada uma operao de E/S. De seguida descrito um ciclo de vida de um pedido bloqueante de leitura: 1. Um processo emite uma chamada ao sistema bloqueante para ler um ficheiro j aberto; 2. O cdigo da chamada ao sistema verifica se os parmetros esto correctos. No caso de existir input se os dados j esto disponveis os dados resultantes da operao so retornados ao processo e a operao de E/S dada por terminada; 3. Caso contrrio, deve ser feita uma operao de E/S deve ser feita. O processo removido da fila de execuo e colocado na fila de espera do dispositivo, e o pedido da operao de E/S escalonado; 4. O driver do dispositivo reserva um espao no buffer do kernel para receber os dados e escalonar a operao de E/S. Eventualmente, o driver envia comandos para o controlador do dispositivo escrevendo nos registos do controlador do dispositivo;

5. O controlador do dispositivo comanda o hardware do dispositivo para realizar a transferncia de dados; 6. O driver pode fazer polling pelo estado ou pelos dados, ou ter colocado o DMA a transferir para a memria do kernel. Vamos assumir que a transferncia feita pelo DMA e lanada uma interrupo assim que a transferncia concluda; 7. O handler da interrupo recebe a interrupo e sinaliza o driver do dispositivo; 8. O driver do dispositivo recebe o sinal e determina que a operao de E/S foi realizada com sucesso, actualiza o estado do pedido e sinaliza o subsistema de E/S do kernel que o pedido foi concludo. 9. O kernel transfere os dados ou retorna os cdigos do espao de endereamento do processo que fez o requisito e move o processo para a fila ready; 10. Movendo o processo para a fila ready desbloqueia o processo. Quando lhe for atribudo novamente o CPU o processo continua a execuo a partir da chamada ao sistema.

Desempenho
E/S o factor mais importante no desempenho de um sistema. feito um grande nmero de pedidos ao CPU para executar cdigo de drivers de dispositivo e para escalonar justamente e eficientemente processos quando estes bloqueiam e desbloqueiam. As constantes trocas de contexto fadigam o CPU e o hardware de cache. Os princpios para melhorar o desempenho das E/S so: 1. Reduzir o nmero de trocas de contexto; 2. Reduzir o nmero de cpias dos dados enquanto esto a ser transferidos entre o dispositivos e aplicaes; 3. Reduzir o nmero de interrupes utilizando transferncias de volumes de dados maiores, controladores mais inteligentes e polling; 4. Aumentar a concorrncia utilizando intensivamente controladores de DMA ou utilizar canais para aliviar o CPU das cpias de dados simples; 5. Mover primitivas de processamento para o hardware, para permitir que possam operar nos controladores de dispositivos concorrentemente com o CPU e as operaes do bus; 6. Equilibrar o CPU, o subsistema de memria, bus, e o desempenho de E/S para no sobre carregar nenhum dessas reas, pois implicar a paragem noutras.

Proteco
- Objectivo Proteger a integridade do sistema. Concebido para que utilizadores possam partilhar, com segurana, espao lgico comum, como directorias de ficheiros, ou partilhar espaos fsicos, como memria. Proteco aumenta a fiabilidade de um sistema que possua recursos partilhados. - Razes e Motivaes Prevenir violaes intencionais de restries de acessos, por parte de um utilizador. Num ponto de vista mais abrangente, a necessidade de garantir que cada componente de programa, activo no sistema, usa somente os recursos do sistema de acordo com as polticas respectivas. A proteco pode aumentar a fiabilidade de um sistema ao detectar erros latentes em interfaces entre componente e subsistemas. Deteco atempada destes erros pode prevenir efeitos nocivos num sistema funcional, causados por um subsistema problemtico. Desta forma, recursos desprotegidos no tm forma de se proteger contra utilizadores maliciosos ou incompetentes. Um sistema protegido distingue acessos autorizados e no-autorizados a partes delicadas do sistema, bem como acessos a recursos. - Princpios de Proteco Um dos principais princpios de proteco, fundamental e j fortemente testado, o princpio do menor privilgio. Este guia da proteco dita que programas, utilizadores e sistemas tenham apenas privilgios suficientes para realizar as suas tarefas. Veja-se o seguinte exemplo: Existe uma porta com uma fechadura. A porta faz a ligao entre a rea pblica e a rea privada. Se se passar da rea privada para a rea pblica, passando a segurana que a porta oferece, os riscos so mnimos, pois estamos a passar para um ambiente comum. Porm, se a porta com a fechadura for deixada merc de, por exemplo, arrombamento, a rea privada fica seriamente comprometida, pois a porta j no oferece proteco a agentes desconhecidos / indesejados. Um SO seguindo este paradigma de proteco implementa caractersticas, programas, chamadas ao sistema e estrutura de dados para que a falha de um componente resulte no mnimo prejuzo. Por exemplo, a falha de um componente de sistema no deve ser caso para comprometer a estabilidade do sistema. Este tipo de SO deve disponibilizar chamadas ao sistema e servios que permitam que aplicaes sejam escritas com controlos de acesso minuciosos e deve prover-se de mecanismos que habilitem privilgios quando necessrios e os desabilitem quando desnecessrios.

- Domnios de Proteco Um computador uma coleco de processo e objectos, quer objectos de hardware (CPU, memria, discos, ect.) quer objectos de software (Ficheiros, programas, ect.). Caractersticas de utilizao devem ser bem definidas, como o facto de, por exemplo, ser-se apenas possvel escrever / ler em discos e memria, mas ser apenas possvel ler de CD-ROM e DVD-ROM. Um processo deve ser apenas autorizado a aceder a recursos para os quais ele tem autorizao. Alm disso, a qualquer momento, um processo deve ser capaz de aceder apenas aqueles recursos que precisa, no momento, para concluir a sua tarefa. Este requerimento designa-se por princpio need-to-know e til para limitar a quantidade de danos que um processo defeituoso pode causar ao sistema. - Estrutura do Domnio Para facilitar este esquema, um processo opera num domnio de proteco, que especifica os recursos que um processo pode aceder. Este domnio define um conjunto de objectos e tipos de operaes que podem ser invocadas sobre um objecto. Esta habilidade de executar uma operao sobre um objecto designa-se de direito de acesso. A associao entre processo e o seu domnio pode ser esttica, se um conjunto de recursos disponveis para o processo estiver fixo ao longo do decorrer do processo, ou dinmico, caso possa alterar a dados pontos da sua execuo. Previsivelmente, mais difcil proteger domnios dinmicos do que domnios estticos. Se a associao dinmica, existe um mecanismo disponvel para permitir troca de domnios, permitindo um processo trocar de um domnio para o outro, bem como poder alterar o contedo de um domnio. Se no se conseguir trocar o contedo de um domnio, pode-se disponibilizar o mesmo efeito criando um novo domnio com o contedo alterado e mudarmo-nos para esse domnio quando se quer alterar o contedo deste. - Exemplos de domnios de proteco: - Modo utilizador - Modo ncleo / priviligiado Uma forma de implementarmos esta troca de domnios acrescentar um bit que distinga um utilizador de um ncleo, como por exemplo, o setuid bit. - Matriz de Acessos As linhas representam domnios. As colunas representam objectos. Permisses o Permisso de administrador o Propagao de permisses o Troca de domnio de proteco

O problema de garantir que nenhuma informao inicialmente contida num objecto possa migrar para fora do seu ambiente de execuo chama-se problema de limitao (confinement problem) A matriz em si pode ser implementada de vrias formas: o Uma matriz de domnios e objectos. o Uma matriz de domnios, objectos e domnios para o qual se pode trocar. o Uma matriz de acessos com direitos de proprietrio. o Uma matriz de acessos com direitos de cpia.

Tabela 1 - exemplo de matriz de acessos, com domnios e objectos

- Controlos de Acesso Controlo de Acesso Role-Based o Um privilgio o direito de executar uma chamada ao sistema ou o uso de uma opo entre essas chamadas ao sistema. Estes privilgios podem ser assinalados para um processo, limitando-os, exactamente, ao acesso que eles precisam para desempenhar o seu trabalho. Privilgios e programas tambm podem ser designado para papis (roles). Utilizadores so designados a papis e podem ter papis baseados em passwords para os papis. Desta forma, um utilizador pode tomar parte de um papel que habilite um privilgio, permitindo que o utilizador corra um programa para concretizar uma tarefa especfica. Esta implementao de privilgios diminui o risco de segurana associado a super-utilizadores e programas setuid.

- Revogao de permisses(direitos de acesso) Num sistema de proteco dinmico, podemos, por vezes, necessitar de revogar os direitos de acesso a um objecto partilhado por diferentes utilizadores. Acerca dessa revogao, podem-se levantar as seguintes questes: o A revogao ocorre imediatamente ou adiada? Se assim for, podemos saber quando vai tomar lugar essa revogao? (Imediata VS Adiada) o Quando um direito de acesso revogado a um objecto, isso acta todos os utilizadores que tm direitos de acesso a esse objecto ou pode-se especificar um grupo selecto se utilizadores cujos direitos de acesso devero ser revogados? (Selectivo VS Geral) o Pode um subconjunto de direitos de acesso associado a um objecto ser revogado ou tem de se revogar todos os direitos de acesso para aquele objecto? (Particular VS Total) o Pode-se revogar um acesso permanentemente (nunca mais ter esse direito de acesso) ou pode-se re-obter um acesso depois de ter sido revogado? (Temporrio VS Permanente) Com uma lista de acessos, a revogao simples: procura-se na lista por qualquer direito de acesso para se revogar e retiram-se dessa lista. Revogao Imediata, mas pode ter qualquer uma das outras caractersticas. Capacidades, no entanto, representam um problema de revogao mais complicado, uma vez que as capacidades so distribudas pelo sistema. Para as revogar, preciso primeiro encontr-las. Esquemas que implementam revogao de capacidades incluem o seguinte: o Reaquisio: Periodicamente, capacidades so eliminadas de certo domnio. Se um processo quiser usar uma capacidade, ter de tentar adquirir essa capacidade. Se tiver sido revogado de ter tal capacidade, no vai conseguir readquiri-la. o Back-Pointers: Uma lista de apontadores mantida com cada objecto, apontando para todas as capacidades associadas a ele. Quando se requer revogao, segue-se os apontadores, mudando as capacidades como for necessrio. No entanto trabalhoso de implementar. o Indirection: As capacidades apontam, indirectamente, para os objectos. Cada capacidade aponta para um entrada nica numa tabela global, que, por sua vez, aponta para um objecto. Implementa-se revogao, procurando na tabela global pela entrada desejada e apagando-a. Assim, se se tenta aceder a essa capacidade encontra-se um erro. No permite revogao selectiva o Chaves: Uma chave um padro nico de bits que pode ser associado com uma capacidade. A chave definida quando a capacidade criada e no pode ser inspeccionada ou modificada pelo processo que tenha essa capacidade. Uma chave mestra (master key) est associada com cada objecto. Esta pode ser definida ou substituda com um set-key operation. Quando uma capacidade criada, o valor corrente da mater key associado a ela. Quando essa capacidade usada, a chave e a master key so comparadas. Se houver

coincidncia, a operao permitida, caso contrrio, gera-se uma excepo de condio. A revogao substitui a master key com um novo valor, invalidando todas as capacidades prvias deste objecto. Este esquema no permite revogao selectiva. Uma capacidade apenas vlida se a sua chave coincidir com alguma chave da tabela global. - Linguagens de Controlo de Acesso Os mecanismos de proteco so, muitas vezes, demasiados complexos para se deixarem, somente, ao cargo sistema para gerir, pelo que, ou se usa hardware para ajudar na tarefa ou aceitamos que quem desenha o sistema pode comprometer os objectivos da proteco. Estes objectivos so tanto mais difceis de atingir quanto mais restrio houver em termos de mecanismos de suporte providenciados pelo sistema ou ambientes de proteco grandes demais para garantir grande eficincia operacional. medida que se avana na complexidade dos sistemas, as medidas de proteco ficam mais refinadas. Como tal, proteco no deve ser deixada apenas ao cuidado de quem desenha o sistema, mas tambm deve ser disponibilizada como um a ferramenta para quem desenha aplicaes para esse sistema, para que tambm a aplicao possa estar salvaguardada da influncia dos erros. - Vigia baseada no Compilador (Compiler-Based Enforcement) o Especificar o controlo de acesso desejado para um recurso partilhado fazer uma afirmao declarativa acerca desse recurso. Esta afirmao pode ser integrada numa linguagem por extenso da sua propriedade de escrita. Quando declarada a proteco, juntamente com a escrita de dados, quem desenha o subsistema pode especificar os seus requerimentos para proteco, assim como a necessidade de usar outros recursos num sistema. Esta abordagem traz os seguintes benefcios: Proteco necessita apenas de ser declarada, em vez de ter de ser programada como uma sequncia de chamadas a procedimentos de um SO. Pode ser declarada independentemente das propriedades disponibilizadas pelo SO. Os meios de vigia no precisam de ser fornecidos por quem desenha um subsistema. Uma notao declarativa natural pois os privilgios de acesso so proximamente relacionados com os conceitos lingusticos de um tipo de dados.