Вы находитесь на странице: 1из 27

Aula 3

Processo

Significado: pode ser considerado como um programa em execução, ou módulos executáveis,


contendo listas de instruções para o processador.

Criado para a execução de um programa, possui recursos através de espaço de endereçamento


virtual e necessita de recursos para o seu funcionamento.

O processo tem o seu escalonamento e execução. O processo concorre pelo processador e


possui o código a ser executado, sendo uma entidade escalonada e despachada pelo SO.

O processo é detentor de recursos e pode ter uma ou mais tarefas.

Tarefa

http://www.dei.isep.ipp.pt/~orlando/so2/threads.htm

O Windows segue o modelo de tarefas puro (executa varias threads pertencentes a um


processos), enquanto o Linux segue o modelo de processos (uma tarefa n tem de estar associada
a um processo).

Uma tarefa é uma unidade escalonável que possui o código a ser executado e também concorre
pelo processador. Pode-se dizer que uma tarefa/thread é um procedimento que é executado
dentro de um processo de uma forma independente.

Uma thread pode conter um controlo de fluxo independente e ser escalonável, porque mantêm
o seu próprio:

1. Pilha

2. Propriedades de escalonamento

3. Dados específicos da thread

A tarefa tem estados de execução, tais como:


Multitarefa

http://www.training.com.br/lpmaia/multithread.pdf (este link tem imensa informação sobre


toda a matéria de threads e multithreading)

Uma tarefa é uma thread, logo multitarefa é o mesmo que multithreading.

Na multitarefa existem múltiplas tarefas por processo, e passa a existir comutação de tarefas,
enquanto o processo deixa de ser a entidade escalonável. É mais fácil e rápido comutar tarefas
que processos.

Vantagens da multitarefa

Tem estruturas simplificadas de controlo:

• tempo de criação
• tempo de libertação
• comutação
Programas concorrentes que utilizam múltiplos threads são mais rápidos do que implementados
como múltiplos (sub)processos. Como as threads compartilham os recursos do processo, as
operações de criação, troca de contexto e eliminação das threads geram um ganho de
desempenho.

Como todas as threads num processo compartilham o mesmo espaço de endereçamento, a


comunicação entre as threads pode ser feita utilizando o compartilhamento de memória (shared
memory) de forma rápida e eficiente.

Comunicação inter-processo de tarefas pode não envolver o kernel.

Implementação do modelo de tarefas

As threads podem ser divididas em duas categorias: existem as tarefas do utilizador (ou seja, ao
nível do utilizador) puras e tarefas de kernel (ou seja, ao nível do núcleo).

Com as tarefas de utilizador, o kernel não sabe da sua existência e o seu suporte é através de
uma biblioteca de rotinas, que é um suporte interno num dado processo por software e que faz
a gestão interna das mesmas.

As tarefas de kernel são implementadas pelo núcleo do sistema, por chamadas ao sistema que
oferecem todas as funções de gestão e sincronização (o seu trabalho de gestão é efetuado pelo
kernel). O SO sabe da existência de cada thread e pode escaloná-las individualmente. Precisam
da comutação de modo, qualquer aplicação pode ser multitarefa, e a tarefa é a entidade
escalonável.
Vantagens e desvantagens das tarefas de utilizador puras

Vantagens:

Não é necessário efetuar a comutação de modo, evitando entrar em modo kernel.

Escalonamento pode ser específico da aplicação, ou seja, a aplicação controla o escalonamento


das suas tarefas, permite a adequação a aplicação específica e dá-se o isolamento do
escalonador em relação ao SO.

Podem ser executadas em qualquer SO, sendo a sua biblioteca partilhada.

Desvantagens:

Quando uma tarefa efetua uma chamada de sistema pode bloquear todo o processo.

Não tira partido do multiprocessamento, o kernel não sabe da existência de tarefas, comuta
processos, o tempo de alocação do processo mantem-se constante e a alocação de um processo
a um processador não permite execução concorrente de tarefas do mesmo processo.

Tarefas de Kernel

Quanto às tarefas de kernel, o trabalho de gestão é efetuado pelo kernel, que pode ser
considerado como o núcleo do SO. Consiste em programas que executam as atividades básicas,
alocação de recursos e a monitorização dos recursos do computador.

API para tarefas de kernel, como criação, destruição e associação de código.

O kernel tem esta função(gerir as tarefas por processo) em todos os SO, como Windows, Linux,
e Mac OS X.

Qualquer aplicação pode ser multitarefa, e o escalonamento é feito com base na tarefa. Nas
tarefas do kernel, é também necessária a comutação de modo, o que implica a escolha da
próxima tarefa a ter tempo de processador.
Relacionamento Tarefa-Processo

SMP

SMP significa Symmetric Multiprocessing.

No SMP, o kernel pode ser executado em qualquer processador, e cada processador efetua
autoescalonamento, o que é controlado pelo SO.

Multiple Instruction Multiple Data com memória partilhada complica o SO.

Preocupações do SO

Deve manter a visão de máquina virtual, independentemente dos recursos disponíveis.

O suporte a processos ou tarefas simultâneas em concorrência – por exemplo, duas tarefas do


mesmo processo.

Outras preocupações envolvem: escalonamento, sincronização, gestão de memória, e


fiabilidade e tolerância a falhas.

Aproveitamento da capacidade de processamento adicional – overhead de escalonamento e


controlo.
Microkernel

O microkernel é uma arquitectura de núcleo (kernel) de um SO cujas funcionalidades são quase


todas executadas fora do núcleo – ao contrário do que acontece com um núcleo monolítico.

Possui os seguintes serviços essenciais: abstração de processos, tarefas, comunicação


interprocesso, primitivas de gestão de memoria.

Usa interfaces uniformes, possibilita a extensibilidade, é portátil, é fiável na medida que pode
ser testado mais facilmente, suporta sistemas distribuídos, suporte a SO orientado ao objeto.

O microkernel contem sistema de mapeamento de endereços virtual para físico.


Aula 4

Entidades escalonáveis concorrem pelo processador, a sua ordem de execução é imprevisível,


por isso existe a necessidade de sincronizar as EEs que partilhem recursos.

Princípios da concorrência

A execução concorrente de EEs, mono processador e multiprocessador, usam a partilha de


recursos globais como a ordem de leitura/escrita, sendo esta crítica. Existe uma difícil gestão por
parte do SO, na questão do bloqueio versus não bloqueio, podem existir erros de programação
difíceis de detetar.

Recurso partilhado/recurso crítico, pois apenas uma EE o pode usar em cada momento, as
variáveis partilhadas são chin e chout e o código que manipula o recurso corresponde à secção
critica, neste caso é utilizado a exclusão mútua, onde apenas 1 EE pode aceder à secção crítica,
excluindo o acesso a todas as outras.

As EEs não tem conhecimento umas das outras

Estas EEs são independentes, pois não existe a partilha de recursos, neste caso o SO deve de
regular os acessos aos recursos que as EEs estão a competir.

As EEs têm conhecimento parcial

Estas EEs não sabem a identificação umas das outras, sabem que existem mais EEs além dela a
manipular o objecto, neste caso exibem cooperação na partilha do objecto e devem de assegurar
a coerência dos dados, poderão ocorrer problemas de controlo tais como, a exclusão mutua,
deadlock e starvation, e clara consistência de dados.
As EEs tem conhecimento direto umas das outras

Estas EEs estão habilitadas a comunicar umas com as outras, conhecem os seus identificadores
e trabalham juntas numa dada tarefa, exibindo assim cooperação que pode ser além da partilha
de um objecto. A comunicação é uma forma que as EEs tem em se sincronizar, normalmente é
realizada através de mensagens, tais como primitivas de envio/receção (SO ou linguagem de
programação).

Aula 5 – Exclusão Mútua e Sincronização (Continuação)


Abordagem por Hardware

Proteção da memória – temos apenas 1 EE a aceder

• Primeira abordagem: tenta impedir comutação de EE, e portanto não habilita


interrupções
• Segunda abordagem: dá uso a instruções especiais

Não Habilita Interrupções (1ª Abordagem)

Só funciona em máquina uniprocessador


Não habilita as interrupções enquanto a EE está na secção crítica do código

Consequências desta abordagem

Preço elevado devido a:

• Performance
• Eficiência da execução
• Resposta
Não funciona em ambientes multiprocessador, porque se dá um bloqueio em cada processador.

Instruções Máquina Especiais (2ª Abordagem)

São instruções do processador atómicas, e não podem ser interrompidas

Duas funções efectuadas na mesma instrução: test_and_set, e Exchange.

Vantagens:

Aplicável a qualquer número de EEs, e dá para ambientes mono e multiprocessador


Simples e fácil de implementar
Pode-se utilizar para múltiplas secções críticas, cada uma com uma variável diferente
Desvantagens:

Utilização de busy waiting


Possibilidade de starvation – devido a uma selecção arbitrária e não controlada da próxima
EE a aceder (pois não possui fila)
Possibilidade de Deadlock (inversão de prioridade)

Semáforos

Representam uma comunicação por sinais. Uma EE bloqueia até receber um dado sinal.

Operações sobre um semáforo:


Inicialização
Signal
Wait

Considerações

Weak Semaphore

Não garante imunidade a starvation

Não especifica qual a EE a ser desbloqueada

Strong semaphore

Utilização de fila, nomeadamente FIFO

Não ocorre starvation

Aula 6 – Exclusão Mútua e Sincronização (Conclusão)

Monitores

Porquê? Alguns problemas são complicados de resolver com semáforos

O que são? Módulos de software. Construção baseada numa linguagem de programação


Características

Composição

Um ou mais procedimentos

Sequência de inicialização

Dados locais acessíveis aos procedimentos do monitor

EE

Entra no monitor através da invocação de um dos seus procedimentos

Apenas uma pode residir dentro do monitor (o monitor garante exclusão mútua)

Abordagem de Hoare - Monitor com csignal e cwait

O cwait suspende a execução da EE na condição c, e o monitor fica disponível para outra EE

O csignal resume a execução de uma EE bloqueada na condição c. Se não houver nenhuma, o


sinal é perdido. A EE deixa de ter tempo de execução

Análise:

Produtor e consumidor não têm acesso ao objeto partilhado – buffer faz parte do
monitor

Os monitores são MUITO diferentes dos semáforos

Desvantagens no Monitor de Hoare

Csignal implica perda de tempo de processamento na EE, pois se ainda não terminou o
trabalho, implica 2 comutações adicionais
O escalonamento não é fiável, pois a EE desbloqueada por csignal tem de ser a próxima a
ter o processador

Monitor de Lampson & Redell: cnotify e cbroadcast

O cnotify permite a continuação da execução da EE, notifica a fila correspondente, o EE da fila


deve verificar de novo a condição, e não é dependente de escalonamento – mas os seus
resultados são.

Passagem de Mensagens

Adequação
Sistemas uniprocessador
Sistemas multiprocessador com memória partilhada
Sistemas distribuídos
Primitivas

Send (destination, message)


Receive (source, message)

Sincronização

Receptor não pode receber o que não foi enviado


Send – a EE pode ser bloqueada ou não
Receive – se mensagem recebida, EE continua. Senão, EE bloqueada ou EE não
abandonada, mas abandona tentativa de receção
Teste de chegada – recetor verifica se tem mensagens para si

Endereçamento

Necessidade de especificar as EE

Endereçamento directo
Endereçamento indirecto
Estruturas partilhadas > Mailboxes

Disciplina da Fila

FIFO

• Algoritmo clássico
• Mais simples de todas

Especificação de prioridade

• Base no tipo de mensagem ou designada pelo emissor

Permitir ao recetor inspecionar a fila

Aula 7 – Deadlock

Principios do Deadlock

Definição geral: nenhuma entidade acede ao recurso devido à espera circular


Tipos de recursos

Recursos utilizáveis

Não é gasto com o uso

Utilizável por um processo de cada vez

Processador, canais de E/S, memória

Recursos não utilizáveis

Pode ser criado e consumido

Sinais, interrupções, informações

Condições para ocorrência de deadlock

Necessárias mas não suficientes

 Exclusão mútua

Não pode ser evitada – violação pode ter efeitos desastrosos

Deve ser suportada pelo SO – recursos geridos pelo SO

 Guardar e esperar

Obrigar o processo a requisitar os recursos todos de uma vez só

Ineficiente – processo pode ser atrasado durante muito tempo e o processo


pode não ter conhecimento em avanço

 Sem preempção (recurso)

Libertação de todos os recursos alojados quando lhe é negado o próximo

Obrigar um processo a libertar um recurso (ambos os processos devem ter a


mesma prioridade e estes recursos devem ser os de estado fácil de guardar e
repor)

Consequência potencial

 Espera circular

Definição de ordenação linear para os recursos

Processo só pode solicitar recursos do nível seguinte

As 4 constituem condições necessárias e suficientes

Prevenção de Deadlock

Exclusão da possibilidade de deadlock

Método indirecto – não deixar ocorrer uma das primeiras 3 condições

Método directo – não deixar ocorrer a quarta


Evitar o Deadlock

Permite a ocorrência das 3 primeiras condições

Decisão dinâmica – prever se o recurso, uma vez atribuído, pode levar a deadlock

Duas formas básicas de evitar o deadlock – não iniciar o processo e não fornecer o recurso

Detecção de deadlock

Muito liberal

Dá os recursos se eles estiverem libertos

Pode dar origem em mais situações de deadlock

Periodicamente o SO executa um algoritmo para verificar se existe deadlock

Acabar com o Deadlock

Abortar todos os processos que estão em deadlock


Obrigar os processos a regressar ao estado pré-deadlock e reiniciar todos (precisa de
informação para roll-back)
Abortar de forma seletiva os processos até que não haja deadlock
Efetuar preempção sobre os recursos alojados – deve seguir um critério baseado no mínimo
custo, tal como na solução anterior

Starvation

Ocorre quando um processo nunca é executado, por haverem outros com prioridade mais
elevada.

Uma Estratégia Integrada

Agrupar recursos num número de diferentes classes

Utilizar uma estratégia de ordenação linear (evitar espera circular)

Dentro de cada classe, utilizar o algoritmo mais conveniente


Exemplo – 4 classes

Espaço de swap – blocos de memória secundária


Recursos dos processos – dispositivos, por exemplo: drives ou ficheiros
Memória principal
Recursos internos – canais de E/S, por exemplo

Estratégias para cada classe

Espaço de swap – blocos de memória secundária

Alojamento de todo o espaço de uma só vez

Também se pode evitar o deadlock

Recursos dos processos – dispositivos, por exemplo: drives ou ficheiros

Evitar o deadlock

Prevenção através de ordenação dentro da classe

Memória principal

Prevenção através da preempção

Processo normalmente colocado em memória secundária > liberta memória


para outros

Recursos internos – canais de E/S, por exemplo

Prevenção através de ordenamento

Mecanismos de Concorrência do UNIX

Pipes, Mensagens, Memória Partilhada, Semáforos e Sinais

Pipes
Buffer circular

Permite a 2 processos comunicar


FIFO: um coloca, o outro retira

Criação – número fixo de bytes

Processo tenta escrever no pipe – bloqueado se não existe espaço suficiente.


Processo tenta ler do pipe – bloqueado se não existirem dados suficientes.

SO reforça exclusão mútua

Apenas um processo pode aceder ao pipe a cada instante

Tipos de pipe

Named: partilhado por processos não relacionados


Unnamed: partilhado por processos relacionados

• Mensagens

Bloco de texto com um determinado tipo

Chamadas de sistema msgrcv e msgsnd

Mailbox

Emissor especifica tipo de mensagem

Receptor retira (segundo o tipo ou FIFO)

Processo tenta receber (mailbox vazia > suspensão)

Processo tenta enviar (mailbox cheia > suspensão)

Processo tenta receber um dado tipo

Não existem mensagens desse tipo – processo pode prosseguir.


• Memória Partilhada
Forma mais rápida de comunicação em UNIX

Bloco de memória virtual

Acesso através de instruções-máquina – as mesmas que gerem a memória virtual

Níveis de permissão

Leitura
Leitura/Escrita
Exclusão Mútua

Mecanismo não suporta diretamente este conceito

Processos devem observar esta restrição

• Semáforos

Apresentam-se em conjuntos
Generalização das primitivas signal e wait

- Operações de incremento/decremento

- Realização de diversas operações simultaneamente

Kernel efetua as operações de forma atómica

• Sinais

Mecanismo de software

Ocorrência de eventos assíncronos

Não possui prioridade, bit único

Sinal enviado – através da tabela do processo a que este se destina

Processo pode responder a um sinal

Realizar uma dada acção

Executar uma função de manipulação


Ignorar o sinal

Mecanismos de Concorrência no Windows 2000

Objetos de Sincronização

• Processo
• Tarefa
• Ficheiro
• Console Input
• File change notification-uma notificação de uma mudança no sistema de
ficheiros, quando tem sinal a mudança ocorre no sistema de ficheiros, uma
tarefa é libertada
• Mutex- suporta a exclusão mutua, quando tem sinal liberta o mutante, uma
tarefa é libertada
• Semáforo- contador que regula acesso a um recurso, quando tem sinal o valor
do semáforo desce até 0, todas as tarefas são libertadas
• Evento- anuncio que um evento de sistema ocorreu, quando tem sinal a tarefa
define o evento, todas as tarefas são libertadas
• Temporizador- contador que regista a passagem de tempo, quando tem sinal o
tempo expira, todas as tarefas são libertadas

Instâncias dos objectos

Com sinal – tarefa é retomada

Sem sinal – tarefa é suspensa

Tarefa invoca um pedido de espera ao Executive

- Através do handle do objecto

- Executive liberta as tarefas quando o objeto passa a ter sinal


Aulas 8-9 – Gestão de Memória

A maneira que a memória é utilizada pelos processos é gerenciada pelo Sistema Operacional,
sua responsabilidade é alocar pedaços da memória para cada processo de acordo com o
tamanho necessário para execução do programa. Existem diversas formas de atribuir pedaços
da memória para um processo, abaixo seguem exemplos:

– Partições Fixas
O modelo de partição fixa divide o espaço da memória em lacunas bem definidas atribuindo um
tamanho específico para cada lacuna. Um processo de 5 kb precisaria de uma lacuna com
tamanho igual ou maior para poder existir.(desvantagem) Contudo esse modelo de partição gera
desperdícios como fragmentação interna e externa. A fragmentação interna ocorre quando o
tamanho do processo é menor que a área alocada, ou seja, uma lacuna com 6kb seja utilizada
para alocar um processo de 5kb desperdiçando memória. Outra maneira de fragmentação é a
externa que ocorre devido a não existência de uma área contígua na memória, ou seja, um
processo qualquer precisa de 5kb porém existem duas lacunas sendo uma de 2kb e uma 3kb,
porém em lugares separados.
– Partições Variáveis
Partições variáveis semelhantemente a partições fixas dividem o espaço da memória em lacunas,
porém quando um processo criado é menor que a lacuna o mesmo é dividido em duas partes
uma sendo a primeira ocupada pelo processo e a segunda com o espaço remanescente. Esse
modo de divisão da memória permite que o processo esteja em um espaço ideal eliminando a
fragmentação interna, contudo a fragmentação externa permanece pois o processo precisa de
uma área contíg0ua.
Partições de Tamanho Fixo - Desvantagens
Se uma partição não chega para o processo, é utilizado o overlaying

Utilização ineficiente da memória, um programa ocupa sempre uma


Partição

• fragmentação interna

• espaço disponível dentro da partição

Algoritmos de Colocação

BEST FIT

Esse mecanismo escolhe a melhor partição (bestfit), ou seja, aquela em que o processo deixa o
menor espaço sem utilização.

Next FIT

Algoritmo para partição dinâmica que inicia a busca a partir da posição da última alocação até
encontrar o primeiro bloco
FIRST FIT

Esse mecanismo escolhe a primeira partição (firstfit) livre, de tamanho suficiente para carregar
o processo.

Aulas 10-11 – Memória Virtual

Paginação:
A paginação é um processo de virtualização que permite que o programa possa ser espalhado
por áreas não contíguas de memória. Com isso, o espaço de endereçamento lógico de um
processo é dividido em páginas lógicas de tamanho fixo e a memória física é dividida em páginas
com tamanho fixo, com tamanho igual ao da página lógica. Nisso, o programa é carregado página
a página, cada página lógica ocupa uma página física e as páginas físicas não são
necessariamente contíguas. O endereço lógico é inicialmente dividido em duas partes: um
número de página lógica e um deslocamento dentro da página. Não existe fragmentação
externa, porém existe fragmentação interna. Além da localização a tabela de páginas armazena
também o bit de validade, “1” se a página está na memória “0” se a página não está na memória.

Segmentação:

Técnica de gerência de memória onde programas são divididos em segmentos de tamanhos


variados cada um com seu próprio espaço de endereçamento. Alocação da memória de maneira
não fixa, a alocação depende da lógica do programa. O mapeamento é feito através das tabelas
de mapeamento de segmentos e os endereços são compostos pelo número do segmento e um
deslocamento dentro do segmento. Cada entrada na tabela mantém o endereço físico do
segmento, o tamanho do segmento, se ele está ou não na memória e sua proteção. Para isso
ocorrer sem problemas, o sistema operacional mantém uma tabela com as áreas livres e
ocupadas da memória e somente segmentos referenciados são transferidos para a memória
principal. Nesse modelo diferentemente da Paginação, ocorre fragmentação externa.

Paginação com Segmentação:

Cada segmento é dividido fisicamente em páginas e o endereço é formado pelo número do


segmento, número da página dentro desse segmento e o deslocamento dentro dessa página.

trashing http://memoriavirtualunisc.blogspot.pt/p/trashing.html

Vantagens da segmentação

-A segmentação permite a partilha de segmentos de memória entre processo diferentes de


acordo com as proteções de acesso definidas -Proteção no acesso aos segmentos de memória

- Com memória virtual segmentada, uma estrutura de dados pode ter o seu próprio segmento,
simplificando a manipulação.
Paginação

A memória central é dividida por zonas de pequena dimensão, designadas por molduras ou
páginas físicas, todas do mesmo tamanho.

O espaço de endereçamento do processo é também dividido por zonas de pequena dimensão,


páginas ou páginas virtuais, com o mesmo tamanho das molduras.

Para cada processo, o SO mantém na memória central uma tabela de páginas. Para cada página
virtual, a tabela de páginas indica a moldura onde a página está carregada

Endereço virtual

O endereço virtual contém duas partes:


Prefixo: número de página, que indexa uma tabela de páginas
Deslocamento (“offset”)
Pag # offset

O endereço físico é determinado nos seguintes passos:


1. Recolher número de página.
2. Usar o número de página para indexar a tabela de página, e recolher o endereço base da
moldura.
3. O endereço real é obtido somando o endereço base da moldura com o deslocamento.

Algoritmos de paginação

Algoritmo de substituição de páginas FIFO O FIFO (First-in, First-out) é um algoritmo de


substituição de páginas de baixo custo e de fácil implementação que consiste em substituir a
página que foi carregada há mais tempo na memória (a primeira página a entrar é a primeira a
sair). Esta escolha não leva em consideração se a página está sendo muito utilizada ou não, o
que não é muito adequado pois pode prejudicar o desempenho do sistema. Por este motivo, o
FIFO apresenta uma deficiência denominada anomalia de Belady: a quantidade de falta de
páginas pode aumentar quando o tamanho da memória também aumenta.

Sua principal vantagem é a facilidade de implementação: uma lista de páginas ordenada pela
“idade”. Dessa forma, na ocorrência de uma falta de página a primeira página da lista será
substituída e a nova será acrescentada ao final da lista.
Algoritmo de substituição de páginas LRU

O LRU (Least Recently Used) é um algoritmo de substituição de página que apresenta um bom
desempenho substituindo a página menos recentemente usada. Esta política foi definida
baseada na seguinte observação: se a página está sendo intensamente referenciada pelas
instruções é muito provável que ela seja novamente referenciada pelas instruções seguintes e,
de modo oposto, aquelas que não foram acessadas nas últimas instruções também é provável
que não sejam acessadas nas próximas.

A implementação do LRU também pode ser feita através de uma lista, mantendo as páginas mais
referenciadas no início (cabeça) e a menos referenciadas no final da lista. Portanto, ao substituir
retira-se a página que está no final da lista. O maior problema com esta organização é que a lista
deve ser atualizada a cada nova referência efetuada sobre as páginas, o que torna alto o custo
dessa manutenção.

Algoritmo de substituição de páginas Ótimo

É o que apresenta o melhor desempenho computacional e o que minimiza o número de faltas


de páginas. No entanto, sua implementação é praticamente impossível. A ideia do algoritmo é
retirar da memória a página que vai demorar mais tempo para ser referenciada novamente. Para
isso, o algoritmo precisaria saber, antecipadamente, todos os acessos à memória realizados pela
aplicação, o que é impossível em um caso real. Por estes motivos, o algoritmo ótimo só é
utilizado em simulações para se estabelecer o valor ótimo e analisar a eficiência de outras
propostas elaboradas.

Algoritmo de substituição de páginas CLOCK

Este algoritmo mantém todas as páginas em uma lista circular (em forma de relógio). A ordem
mantida segue a sequência em que elas foram carregadas em memória. Além disso, é adicionado
um bit de uso que indica se a página foi referenciada novamente depois de ter sido carregada.
Ao precisar substituir uma página o algoritmo verifica se a página mais antiga está com o bit
zerado (o que significa que a página não foi mais referenciada) para ser substituída. Se ela não
estiver o bit é zerado e a próxima página da fila mais antiga será verificada. Esse processo
continua até que uma página antiga com o bit zerado seja encontrada para ser substituída.
Aula 12 – Escalonamento em Sistemas Uniprocessador

Escalonamento de longo prazo

Determina quais os programas a serem admitidos para processamento que podem ser:

- Processos admitidos em memoria são adicionados à fila para o escalonador de curto


prazo, este escalonamento faz a invocação do escalonador que suspende o processo atual e
seleciona um novo para execução, permitindo a possibilidade de preempção do processo atual,
os seus eventos são interrupções ao nível do relógio e E/S, chamadas de sistema e sinais sendo
os seus critérios orientados ao utilizados ou ao sistema.

- Processos admitidos são suspenso são adicionados à fila para o escalonador de medio
prazo, este escalonamento faz parte da função de swapping tipicamente depende da
multiprogramação desejada.

E ainda existe um nível de multiprogramação.

Escalonador de longo prazo

A sua decisão é com base no nível de multiprogramação, baseada na admissão de processos,


quando o processo é terminado fica a decisão sobre a adição de 1 ou mais, a decisão é feita com
base na FIFO ou mecanismos do sistema como a prioridade, tempo de execução esperado.

O longo prazo em sistemas de partilha de tempo, exige um nível de saturação, este quando
atingido os pedidos são recusados, quando não atingidos o pedido é aceite.

Escalonamento em sistemas uniprocessador


Este tipo de escalonamento tem como algoritmos:

FCFS - não preemptivo, semelhante à politica FIFO(first in first out) e colocando os


processos na fila de espera e atendendo os mesmos por ordem de chegada.

RR - é preemptivo orientado ao time slice, a sua fila de espera dos processos vai sendo
rodada, entrando o novo processo na fila esta é rodada

SPN -não preemptivo, favorecendo o processo que demora menos tempo a ser
executado

SRT - é preemptivo, quando um processo novo chega a fila este seleciona o que demora
menos tempo para terminar

HRRN -não preemtivo, usa a maximização da equação R=(w+s)/s, sendo w o numero de


slots em espera e s o numero de slots necessários

Feedback - penaliza os processos que tiveram mais tempo de processador e favorece os


processo que precisam de menos recursos, logo os mais curtos, verifica o tempo gasto
pelos processos até à altura e faz o escalonamento com base no time quantum.
Aula 13 – Gestão de E/S e Escalonamento de Disco

E/S

Tem como categorias:

- Interação com o utilizador

- Interno

- Comunicação

Os seus pontos relevantes são:

- Ritmo de transmissão

- Aplicação

- Complexidade do controlo

- Unidade de transferência

- Representação dos dados

- Condições de erro

Escalonamento de disco

O disco físico possui numero de pistas, uma posição inicial do braço e direção inicial de
deslocamento do braço. As suas tarefas é designado a indicação dos pedidos a satisfazer e tem
como simplificações a não consideração da cabeça e o sector.

Possui como algoritmos:

• FIFO: em que os pedidos são satisfeitos por ordem de chegada o sentido de


deslocamento inicial é irrelevante.

• LIFO: em que os pedidos são satisfeitos pela ordem inversa de chegada o sentido de
deslocamento inicial é irrelevante.

• SSTF: atende o pedido mais próximo da pista actual o sentido de deslocamento inicial é
irrelevante

• SCAN: em que atende os pedidos numa direção segundo SSTF até ao ultimo pedido,
começa baseado no sentido inicial de deslocamento se possível e ao usar o SSTF satisfaz
o pedido mais próximo, o sentido inicial neste caso já é relevante, inverte o sentido e
atende todos os restantes pedidos segundo o SSTF, pedidos adicionais são aceites
quando chegam.
• C-SCAN: em que atende os pedidos numa direção segundo o SSTF até ao ultimo pedido,
começa baseado no sentido inicial de deslocamento se possível e ao usar o SSTF satisfaz
o pedido mais próximo, neste caso o sentido inicial também é relevante, desloca-se para
o sentido oposto, mas não atende pedidos no sentido de deslocamento inverso ao inicial
retomando o processamento no sentido inicial, pedidos adicionais são aceites quando
chegam.

• F-SCAN: em que atende os pedidos numa direção segundo o SSTF até ao ultimo pedido,
começa baseado no sentido inicial de deslocamento se possível e o SSTF satisfaz o
pedido mais próximo, o seu sentido inicial é relevante, inverte o sentido e atende todos
os restantes pedidos segundo SSTF, pedidos adicionais são aceites depois de satisfeitos
todos os anteriores.

• N-Step-SCAN: existe a divisão do conjunto de pedidos em filas de N elementos segundo


a ordem de chegada, o sentido inicial é relevante, as suas filas são escalonadas segundo
SCAN favorecendo o sentido de deslocamento anterior na transição entre filas.
Aula 14 – Gestão de Ficheiros

O ficheiro tem uma coleção de registos que possuem campos, é tratado como uma entidade
única, referenciado pelo nome, e pode-se fazer operações tais como a sua criação, manipulação
e remoção, também possuem permissões de acesso.

Sistema de gestão de ficheiros

Faz parte do software do sistema, fornecendo serviços a aplicações e utilizadores, acesso aos
ficheiros efetuado através do gestor, e tem como vantagens o SO controlar mais facilmente o
recurso ficheiro e as aplicações possuírem forma uniforma de acesso, sem necessidade de
software adicional.

Organizações internas do ficheiro

• Ficheiro pilha: stack file, mais simples de todos, os registos são colocados à medida
que são introduzidos, o registo consiste num burst de dados, ou seja a sua acumulação
e armazenamento, e a sua pesquisa de registo é uma busca exaustiva, pois o ficheiro
não tem uma estrutura ordenada.

• Ficheiro sequencial: forma mais comum de organização, usa uma formatação fixa para
os registos a ordem é determinada por campo chave, o seu armazenamento do valor
dos campos, possui tamanho e nome sendo os atributos do próprio ficheiro, a sua
procura é até ser encontrado o registo pretendido, pois a ordenação de registos facilita
o acesso.

• Ficheiro sequencial indexado: utiliza as características do ficheiro sequencial, permite


a adição de um sistema de indexação e ficheiro de overflow. O ficheiro de indexação é
um si um ficheiro sequencial, possui campos chave do registo e ponteiro,
possibilitando diversos níveis de indexação.

• Ficheiro indexado: alargamento do processamento a n campos, utiliza diversos


indexes, os registos apenas são acessíveis através de indexes, existindo índice
exaustivo e parcial, a sua flexibilidade é nos registos de tamanho variável.

• Ficheiro directo ou hashed: abandono total do conceito de ficheiro sequencial, possui


um acesso directo a um registo, logo o seu acesso directo ao bloco respectivo em
disco.
Aula 15 – Sistemas Operativos Embutidos

Sistema operativo embutido

O sistema embutido é uma combinação de hardware e software projectado para uma


determinada função ou objectivo. Normalmente os sistemas embutidos são parte de um sistema
complexo.

Características:

• Comutador de processos é muito rápido


• Ocupa pouco espaço
• Resposta a interrupções externas quase instantâneas
• Resposta em tempo real
• Time-outs e alarmes especiais
• Facilidade em interligar sensores e outros equipamentos específicos
• Gestão de memoria especifica

Вам также может понравиться