SO1 – gestão de memória, endereçamento virtual, memória virtual

#gestão de memória, endereçamento virtual, memória virtual

bibliografia especifica:
fundamentos de sistemas operativos, 4º edição, capítulos 4 e 5
operating systems concepts, capítulos 8 e 9
operating systems – internals and design principles, capitulo 7 e 8

#gestão de memória
os mecanismos de gestão de memória:
determinam a organização da memória do computador
identificam o modo de endereçamento: real ou virtual
qual o tamanho dos blocos (de páginas ou segmentos)
e quais os mecanismos de protecção e validação de endereços
e é da responsabilidade do sistema operativo configurar de forma eficiente esses mecanismos proporcionados pelo hardware

os algoritmos de gestão de memória:
são técnicas para fazer a gestão da memória principal e secundária
e é da responsabilidade do sistema operativo usar de forma eficiente esses mecanismos proporcionados pelo hardware

o sistema de endereçamento real:
os endereços correspondem a posições na memória física
um programa é preparador para correr numa determinada gama de endereços
e todos os programas vão querer usar essa gama (sistemas multi-programados)
para o sistema operativo surge uma fragmentação da memória
para o sistema operativo surge limites ao tamanho dos programas
para o sistema operativo surge dificuldades no isolamento e segurança

o sistema de endereçamento virtual:
surgem os endereços virtuais: que podem não corresponder a um espaço de memória física
o processador traduz esses endereços virtuais como se fosse endereços físicos para os programas (tradução transparente)
os endereços de cada processo são subdivididos em conjuntos de blocos
os endereços virtuais do mesmo bloco têm as mesmas regras de tradução para os endereços reais
os blocos mapeados na memória física podem estar em zonas diferentes, sem a necessidade de manter a mesma ordem
é o sistema operativo que gere as transferências e de forma transparente, entre a zona virtual e física
é o sistema operativo que liberta a memoria física
é o sistema operativo que indica ao processador de que forma é feita a tradução de endereços virtuais para reais

surgem as tabelas de segmentos:
são criadas pelos sistema operativo
servem para traduzir os endereços virtuais para reais, e é feito pelo processador através das tabelas de segmentos

surgem os descritores de segmentos:
são as entradas numa tabela
indicam o tamanho e localização da memória física
indicam o tipo de acesso que é permitido (leitura, escrita, execução)
indicam o estado de presença em memória física (bit “P”)

assim o descritor de segmento (figSO1_07):

P, Prot, Base, Lim
em que:
p, indica se o segmento se encontra na memória principal
Prot, indica o tipo de protecção e privilégios (RWX)
Base, indica o endereço real do segmento de memoria
BTS, endereço base da tabela de segmentos
LTS, tamanho da tabela

vantagens da memoria segmentada:
adequa-se à lógica da divisão dos programas
permite trabalhar de forma eficiente sobre uma zona de memória inteira

desvantagens da memoria segmentada:
pode não ser criado um espaço de endereçamento linear e continuo de forma transparente para o processo
são usados algoritmos de gestão complexos
o mapeamento de segmentos pode gerar fragmentação
falta de eficiência se os blocos transferidos entre a memória principal e secundárias forem grandes.

os endereços de memória virtual:
têm um conjunto de bits que indicam qual o descritor de segmento dentro da tabela
e um conjunto de bits que indica qual o deslocamento dentro desse segmento

vantagens da memoria virtual:
facilidade de implementação de sistemas multi-programados
implementação automática de segurança e isolamento
a partilha de zonas de memória entre processos distintos é simples

a memória paginada:
os blocos têm todos o mesmo tamanho
funciona como a tabela segmentada
ao invés de se usarem tabelas de segmentos surgem as tabelas de páginas
cada entrada na tabela de páginas é um PTE (page table entry)
se o endereçamento for muito grande é ineficaz o uso de memoria paginada, surge como solução o uso de tabelas de páginas (em cascata)

assim o descritor o PTE (figSO1_08):

P, indica se a pagina se encontra em memoria principal
Prot, indica o tipo de protecção (RWX)
R, indica se a pagina foi referida
M, indica se a pagina foi modificada
Base, é o endereço real da pagina em memória
BTP, endereço base da tabela de segmentos
LTP, tamanho da tabela

vantagens da memoria paginada:
transparente para o programador
transparente para o processo
como todas as paginas têm o mesmo tamanho os algoritmos de gestão são mais simples e eficientes
as transferências entre a memoria principal e a secundária são feitas por páginas individuais

desvantagens da memoria paginada:
não se adequa à divisão lógica dos programas
as faltas de páginas representam uma perda de eficiência maior do que as faltas de segmento

a memória segmentada-paginada:
junta o melhor de: memoria segmentada e memória paginada

o endereço virtual da memória segmentada-paginada (figSO1_09):

segmento, que indica o descritor dentro da tabela de segmentos que deve ser usado na tradução do endereço
uma página, contém a informação acerca da tabela de página que deve ser usada na tradução do endereço
e o deslocamento

#algortimos de gestão de memória

os algoritmos de atribuição (alocação)
determinam na memoria física, onde fica mapeado um bloco de memoria virtual

os algoritmos de atribuição (alocação) em memória paginada:
as páginas têm todos o mesmo tamanho
é usada a page-frame que está livre
existe uma estrutura que indica quais as páginas que estão ocupadas
a primeira livre é a escolhida

os algoritmos de atribuição (alocação) em memória segmentada:
cada segmento tem um tamanho diferente
surgem algoritmos para que não ocorram problemas de fragmentação, na atribuição de blocos

algoritmo best-fit
pesquisa a lista à procura do bloco cuja dimensão seja a mais próxima
procura o melhor bloco que se adapte as dimensões necessárias
a lista de blocos está ordenada de forma crescente

algoritmo worst-fit
procura o maior bloco disponivel
quer evitar que surjam blocos pequenos (com o que “sobra”)
blocos grandes são todos ocupados
a lista de blocos está ordenada de forma decrescente

algoritmo first-fit
procura o bloco que satisfaz
a lista de blocos está ordenada por endereço de blocos

algoritmo next-fit
procura o bloco que satisfaz
continua a pesquisa no ponto onde esteve antes

algoritmo buddy
todos os blocos são do tamanho 2^n
usa o método de recursão para encontrar o bloco ideal
leva à reconstrução de blocos maiores

os algoritmos de transferência
determinam a politica quanto à transferência entre a memoria principal e a secundária

os algoritmos de substituição:
determinam qual o bloco de memória física que deve ser retirado para dar lugar a outro

#politicas de transferência
as politicas por transferência podem ser feitas por:
pedido, o sistema operativo ou o processo, determina quando se deve carregar um loco em memória
necessidade, é necessário carregar o bloco para a memória física, pois é necessário aceder a ele
antecipação, através do factor probabilidade o bloco é transferido para a memoria física pois vai ser usado brevemente

a transferência de páginas:
são feitas por necessidade
o processo quando é criado, surgem a inicialização das tabelas de páginas, mas não são colocadas em memória
à medida que um processo vai progredindo, o sistema operativo vai disponibilizar páginas em memoria de forma transparente para o processo

a transferência de segmentos (swapping):
quando o sistema coloca o processo em execução, coloca também em memória os seus segmentos
as transferências de segmentos são feitas por pedido

a substituição de páginas:
a decisão de retirar páginas está relacionado com a sua utilização
idealmente retira-se aquelas que serão necessárias em ultimo lugar
para se ter uma precisão maior pode-se fazer uso de um dos seguintes algoritmos:
FIFO (quando uma página é carregada, vai para o fim da lista, quando se remove, remove-se a que está no inicio, o que pode ser um problema pois pode ser uma que está a ser usada várias vezes)

LRU, last recently used (o tempo a que a página foi acedida, idade da página, significa que está a ser acedida várias vezes)
ainda no LRU:
a página é carregada, o contador fica a zero
quando for acedida, o bit “R” fica a 1
o contador é incrementado, se o bit “R” estiver a zero
o contador passa a zero, se o bit “R” estiver a um
página fica inválida, se o bit “P” atingir o valor máximo, ficando a memória livre

NRU, not recently used (averigua se a pagina foi acedida ou modificada)
ainda no NRU:
quando for acedida, o bit “R” fica a 1
quando for modificada, o bit “M” fica a 1

R e M a 0, sai de memória
R a 0, e M a 1, sai de memória de seguida
R a 1, e M a 0, sai de memória de seguida, se não existir nenhum dos casos anteriores
R a 1, e M a 1, ultima versão a sair nesta ordem

a substituição de segmentos:
normalmente retiram-se segmentos em função do processo a que pertencem, sendo que essa retirada depende:
da importância / prioridade
da sua utilização pelo processador
da sua dimensão (total de segmentos)

O modelo de espaço de trabalho:
é um modelo que está relacionada com a quantidade de páginas que um processo deve ter presente em memória
compensa nunca colocar em memória, mais do que uma determinada percentagem das suas páginas
o espaço criado vai sendo criado à medida que o processo vai decorrendo, sem nunca ultrapassar o valor máximo de trabalho
se atingir o valor máximo, o espaço para outras das suas páginas são retirados a outros processos
se descer a quantidade de páginas para uma valor mínimo, o processo é enviado para memória secundária

Questões:
quais as desvantagens do endereçamento real face ao endereçamento virtual
descreve o mecanismo de tradução de endereço de memória
elabore uma análise comparativa de memoria segmentada e memoria paginada salientando as vantagens e desvantagens de um face ao outro
descreva o conceito de espaço de trabalho e diga como pode ser usado para aumentar o desempenho do seu computador
porque razão o mecanismo de excepções é fundamental para a construção de memória virtual?
como é que se constrói o isolamento entre processos recorrendo à memória segmentada? Em em memória paginada, há alguma diferença significativa?
quais as vantagens de memória segmentada-paginada face à memória segmentada pura e memória paginada pura?
dado este conjunto de páginas e os tempos em que foram acedidos e modificados, diga qual será a primeira a sair de acordo com o algoritmo FIFO/LRU/NRU e porquê?
dada esta tabela de páginas e estas instruções a serem executadas no espaço de endereçamento que lhe corresponde, diga quais irão ser os endereços reais manipulados e se existirá algum comportamento especifico por parte do sistema operativo
dado este processo (código) diga qual acha que será a dimensão (%) do seu espaço de trabalho
dado este cenário de ocupação de memória real em memória segmentada, diga onde irá ser encaixado um novo segmento de tamanho segundo o algoritmo


Capítulo: 4 (mecanismos de gestão de memória) – Fundamentos de Sistemas Operativos, José Alves Marques, Paulo Guedes – 3ª edição – Editorial Presença

Os mecanismos de gestão de memória: determinam a organização da memória do computador. são em geral executados pelo hardware de gestão de memória do processador, devidamente programado pelo sistema operativo
Os algoritmos de gestão de memória: são da exclusiva responsabilidade do do sistema operativo. determinam que decisões devem ser tomadas e quando devem ser tomadas, usando os mecanismos de baixo nível para as levar a cabo.

Processo e espaço de endereçamento
o espaço de endereçamento de um processo é o conjunto de posições de memória que um programa executado por esse processo pode referenciar/aceder. a memória divide-se em memória física e memória secundária, os programas só se executam em memória física, sendo a secundária (discos) para guardar a informação persistente

Endereços reais e virtuais
o endereçamento real tem um relação directa com os endereços da memória física do computador. este tipo de endereçamento tem desvantagens:
a dimensão dos programas é limitada pela dimensão da memória física do computador
um programa só pode funcionar nos endereços físicos para onde foi escrito
a multiprogramação fica bastante dificultada

o endereçamento virtual são endereços gerados pelo programa que são convertidos pelo processador e em tempo de execução em endereços físicos. é função do hardware de gestão de memória e do sistema operativo fazer a transferência entre o endereço virtual e o endereço físico. a palavra referenciada pelo endereço virtual pode estar em memória física ou em memoria secundária. se estiver em memoria física a unidade de gestão de memoria traduz automaticamente o endereço virtual em endereço físico e a palavra é a acedida; mas se a palavra estiver em memória secundárias a unidade de gestão de memoria avisa o sistema operativo para este carregar a palavra em memoria física.

Endereçamento real – sistemas monoprogramados
os computadores eram monoprogramados, e tinham endereçamento real. o principal inconveniente do endereçamento real é o tamanho dos programas ser limitado pela dimensão da memória física do computador. para ultrapassar este problema usa-se a técnica da sobreposição (overlay), o programa é divido numa parte residente que está sempre em memoria, e em overlays, que são módulos independentes uns dos outros e que são carregados em memória a pedido do programa.

Endereçamento real – sistemas multiprogramados com partições fixas
para permitir a multiprogramação é necessário que vários programas possam coexistir em memória central
a forma mais simples é dividir a memória do computador em partições, carregando cada programa numa delas.

Endereçamento real – sistemas multiprogramados com partições variáveis
neste caso aloca-se uma zona de memória de dimensão suficiente para colocar o programa.
quando um programa se começar a executar, será alocada uma zona de memória para o colocar, ficando a existir duas participações, aquela onde está o programa em execução e a que compreende o restante da memória

endereçamento virtual
o principal objectivo da memória virtual é dissociar os endereços gerados pelo programa dos endereços físicos acedidos na memória da máquina
o mecanismo de tradução de endereços virtuais em endereços virtuais em endereços reais é efectuado pelo hardware, mais precisamente pela unidade de gestão de memoria do processador
as outras componentes do processar só manipulam os endereços virtuais

endereçamento virtual – segmentação
o objectivo da segmentação é a divisão dos programas em segmentos lógicos que reflictam a sua subdivisão funcional. se um endereço for inválido, o hardware interrompe a tradução do endereço e gera uma excepção que será tratada pelo sistema operativo.

endereçamento virtual – paginação
o principal objectivo da arquitectura de memória paginada é oferecer ao programador um espaço de endereçamento (virtual), linear, em geral bastante maior que a dimensão da memória física da máquina. desta forma o programador não precisa de se preocupar com a gestão de memória quando escreve um programa.

endereçamento virtual – paginação – mecanismos de tradução de endereços
a memória é dividida em blocos do mesmo tamanho, chamados páginas, em que cada página contém o número da página e deslocamento, e o deslocamento indica dentro da página.

Capítulo: 5 (algoritmos de gestão de memória) – Fundamentos de Sistemas Operativos, José Alves Marques, Paulo Guedes – 3ª edição – Editorial Presença

os algoritmos de gestão de memória determinam as decisões tomadas pelo SI, e são utilizados para decidir onde se deve colocar um bloco de programa dada a memória livre, quando se transferir uma página ou segmento de memória secundária para a memória principal e vice-versa e quando não existe mais memória livre que bloco retirar para lá colocar outro mais prioritário.

O sistema operativo e em relação à memória tem que ter em conta:
alocação: onde colocar um bloco na memória
transferência: decidir quando transferir um bloco de memória secundária para memória primária e vice-versa
substituição: quando não existe mais memória livre, qual o bloco a retirar de memória para satisfazer o pedido

Alocação de memória
os algoritmos de alocação de memória, decidem, dada a memória livre, onde colocar um bloco de memória de uma determinada dimensão. o sistema operativo faz uso desses algoritmos para:
na criação e terminação de processos
por extensão do espaço de endereçamento

Alocação de memória – Alocação de páginas
como as páginas são todas do mesmo tamanho, no caso da paginação este algoritmo é trivial: aloca-se qualquer página que esteja livre
as páginas livres são mantidas numa lista, geralmente gerida em FIFO, na alocação retira-se a primeira página da lista, na libertação coloca-se a página no fim da lista

Alocação de memória – Alocação de segmentos
a alocação de segmentos é mais complicada pois é necessário analisar a memória livre para encontrar um bloco desocupado com dimensão suficiente para satisfazer o pedido.  mas tem algumas vantagens:
evita que se gerem fragmentos muito pequenos
os blocos devolvidos ficam naturalmente alinhados
os registos da lista livres precisam de menos bits para guardar o endereço e o comprimento dos blocos

Algoritmos de transferência
os algoritmos de transferência determinam quando um bloco de memória deve ser transferido entre memória secundária e memória central, e essa transferência pode ocorrer quando:
a pedido (request): o programa ou o sistema operativo determinam explicitamente quando se deve carregar o bloco em memória
por necessidade (on demand): o bloco é acedido e gera-se uma falta de página ou segmento, sendo necessário carregá-lo em memória
por antecipação: o bloco é carregado em memória pelo sistema operativo pois este considera fortemente provavelmente que ele venha a ser acedido nos próximo instantes

Algoritmos de transferência – transferência de segmentos (swapping)
em sistemas de memória segmentada, um processo é composto por vários segmentos lógicos: código, dados, pilha e dados do sistema operativo respeitantes ao processo.
um segmento é sempre transferido como um todo entre memória e disco, nunca é transferida apenas parte do segmento
a transferência de segmentos (swapping) permite que de uma forma simples e sem hardware sofisticado, se ofereça um ambiente de multiprogramação.

Algoritmos de transferência – transferência de página
o mecanismo normal de transferência de páginas é por necessidade (on demand): uma página é transferida para memória primária quando se dá uma falta nessa página

Algoritmos de substituição
quando a memória física fica cheia, o sistema operativo tem que retirar um bloco de memória primária (enviar para o disco) para arranjar espaço livre

Algoritmos de substituição – de páginas
quando um processo tenta aceder a uma página que não esteja carregada em memória primária, e não haja páginas livres mas modificadas. as páginas livres podem ser reutilizadas em qualquer momento. as páginas livres mas modificadas têm de ser escritas em disco antes de serem reutilizadas.
dado um conjunto de páginas em memória, a escolha óptima é retirar a que for acedida mais tarde no tempo

Algoritmos de substituição – de páginas, menos usada recentemente (LRU)

Algoritmos de substituição – de páginas, FIFO

Análise comparativa da segmentação e paginação
vantagens segmentação:
adapta-se à estrutura lógica do programa
permite a realização de sistemas simples sobre hardware simples
permite realizar eficientemente as operações que agem sobre um segmento inteiro

desvantagens segmentação:
o programador tem de ter sempre algum conhecimento dos segmentos subjacentes
os algoritmos tornam-se bastante complicados em sistemas mais sofisticados
o tempo de transferência de segmentos entre memória central e disco torna-se incomportável para segmentos muito grandes
a dimensão máxima dos segmentos é limitada

vantagens paginação:
o programador não tem que se preocupar com a gestão de memória
os algoritmos de alocação, substituição e transferência são mais simples e eficientes
o tempo de leitura de uma página de disco é razoavelmente pequeno
a dimensão dos programas é virtualmente ilimitada

desvantagens paginação:
o hardware é mais complexo que o de memória segmentada, não permitindo a realização de máquinas de muito baixo custo
operações sobre segmentos lógicos são mais complexas e menos elegantes, pois têm de ser realizadas sobre um conjunto de páginas
o tratamento das faltas de páginas representa uma sobrecarga adicional de processamento

Tags : , ,

SO1 – Escalonamento – Conceitos e Algoritmos

[so1t]

#conceitos de multi-programação

o pseudo-paralelismo:
consistem em ter varias actividades a decorrer ao mesmo tempo
disponivel em sistemas multi-programados (com tempo partilhado ou não)

algoritmos preemptivos:
forçam o processo a deixar o processador não bloqueado
usados em sistemas de tempo partilhado

exemplos de algoritmos preemptivos:
fim de quantum
processo prioritários
processos mais curtos

sistemas preemptivos:
o processo em execução pode ser interrompido e colocar em estado de “executável” pelo sistema operativo
e pode acontecer porque:
um novo processo esta no estado executável
surge uma interrupção que termina um determinado bloqueio
face à imposição do tempo partilhado
exemplo: windowsNT, Unix

desvantagens dos sistemas preemptivos:
maior comutação de processos, menor desempenho global
maior complexidade dos sistemas operativos

algoritmos não preemptivos:
não forçam o processo a sair do processador
exemplo: ms-dos

exemplos de algoritmos não preemptivos:
o programa terminou
o programa pediu acesso a um semáforo que está fechado
o programa requisitou uma operação de E/S demorada

sistemas não preemptivos:
um processo está em estado de execução e ele tem que terminar ou bloquear (por pedido do sistema operativo ou conclusão de operação de E/S)

escalonamento preemptivo:
usado em sistemas de tempo real
em sistemas multi-utilizador
permitem que um processo prioritário reaja a acontecimentos

como funciona o escalonamento preemptivo:
a) um processo prioritário está bloqueado num semáforo
b) é provocado um acontecimento no semáforo
c) o processo prioritário passa a executável
d) o processo em execução é retirado do processador
e) o processo prioritário entra em execução

a acção da preempção implica que o despacho seja chamado na sequência de alterações ao estado do processo e que podem ser:
fim do quantum
sinalização de periféricos
operações de sincronização

as prioridades:
é um atributo dos processos e das threads
um processo pode ser atendido por uma determinada ordem
usada em algoritmos de escalonamento

e as prioridades podem ser:
fixas, associadas à importância de acontecimentos, definidas pelo programador ou utilizador
dinâmicas, associadas ao comportamento do processo no sistema (evitar a monopolização de recursos levando a starvation), e é atribuída pelo escalonamento de acordo com o seu comportamento no sistema

os escalonadores:
longo prazo, admite ou não um processo a execução
médio prazo, determina quando e qual o processo que está no estado executável e que vai obter o processador (swaping)
curto prazo (ou despachos), efectua a comutação entre o processo que está a executar e o próximo (fim do quantum)

no despacho:
tempo de latência = tempo de parar um processo + tempo de recomeçar outro processo

a comutação faz com que:
invoca o despacho
salvaguarda o contexto de software e hardware do processo anterior em execução
recuperar o contexto do software e hardware
salta para a localização onde estava antes dentro do processo que vai para execução

sistema multi-programado simples:
são não preemptivos
executa os processos de forma colaborativa
não forçam os processos a sair do processador
faz uso das interrupções voluntárias (inputs) para executar outro processo pronto no processador

desvantagens:
processo que nunca bloqueiem
não optimiza os tempos de execução

questões:
qual a diferença entre multi-programação simples e multi-programação preemptiva
que tipos de preempção pode haver no escalonamento preemptivo?
como é que um computador só com um processador/núcleo consegue executar vários programas em simultâneo”?
se um programa entrar num ciclo infinito “encalha” a maquina toda? dê a sua resposta no contexto de multi-programação simples e depois multiplicação preemptiva
o que é o pseudo-paralelismo?
quais são as vantagens que a multi-programação preemptiva traz em relação à multi-programação simples?
num cenário real, poderá um sistema preemptivo ter menos performance global em relação a um sistema multi-programado mas não preemptivo? explique
qual destes é mais estável e porquê?: mono-processamento, multi-programação simples, multi-programação preemptiva?
que tipo de prioridades conhece. Para que serve cada tipo. Dê exemplos de aplicação.
Existem vários escalonadores? quais/para quê?

#conceito de estado de processos
em sistemas multi-programados os processo não estão apenas no estado em execução, mas podem estar em: execução, bloqueado não executável, ou executável (à espera de vez no processador)

os processos, num sistema monoprogramado (figSO1_01):

existem dois estados: parado e em execução
o processo quando é criado vai para o estado parado
o processo sai do estado parado (da fila de espera) pelo despacho
o processo quando está no estado de execução e termina, vai para processo termina
o processo quando está no estado de execução e não termina, fica suspenso, e vai para a fila de espera

os processos, num sistema multi-programado:
existem três estados: em execução, bloqueado, e executável (pronto a correr mas à espera do processador)
o processo está em execução: está a ser executado pelo processador
o processo está bloqueado: o processo não precisa do processador, e liberta-o
o processo está executável: o processo está pronto mas entrar em execução, mas o processador está ocupado

se dois processos estiverem prontos para irem para o processador, é o algoritmo de escalonamento que determina quem vai.

os processos, num sistema multi-programado (figSO1_02):

o processo quando é criado vai para o estado executável
o processo sai do estado executável (da fila de espera) pelo despacho
o processo quando está no estado de execução e termina, vai para processo termina
o processo quando está no estado de execução e aguarda um evento, vai para o estado de bloqueado
o processo quando está no estado de bloqueado e acontece um evento, vai para o estado de executável
o processo quando está no estado de execução e é retirado da execução, vai para o estado de executável (timeslice, quantum)

os processos, num sistema multi-programado, modelo completo (figSO1_03):

o processo quando é criado vai para o estado executável
o processo sai do estado executável (da fila de espera) pelo despacho
o processo sai do estado executável pode ser suspenso, vai para o estado de suspenso (fila processos suspensos)
o processo quando está no estado de execução e termina, vai para processo terminado
o processo quando está no estado de execução e aguarda um evento, vai para o estado de bloqueado (fila processos bloqueados)
o processo quando está no estado de bloqueado e acontece um evento, vai para o estado de executável (fila processos executáveis)
o processo quando está no estado de bloqueado e é suspenso, vai para o estado de suspenso (fila processos suspensos)
o processo quando está no estado de suspenso e é des-suspenso, vai para o estado de bloqueado (fila processos bloqueados)
o processo quando está no estado de suspenso e é des-suspenso, vai para o estado de executável (fila processos executáveis)
o processo quando está no estado de execução e auto-suspende-se, vai para o estado de suspenso (fila processos suspensos)
o processo quando está no estado de bloqueado e acontece um evento, vai para o estado de executável (fila processos executáveis)
o processo quando está no estado de execução e é retirado da execução, vai para o estado de executável (timeslice, quantum)(fila processos executáveis)

questões:
descreva o conceito de “estado de um processo” e indique a sua utilidade
quais os estados que conhece e respectivo significado?
que transições de estado podem ocorrer e em que circunstâncias
um processo pode passar directamente de bloqueado para em execução? em que circunstâncias/porquê?
qual diferença entre suspenso e bloqueado?
o que é o escalonamento por níveis e para que serve?

#conceitos gerais usados em escalonamento
a gestão do processador tem que ter em conta:
desempenho
suporte para multi-utilizador
robustez e fiabilidade

na gestão do processador tem que ser ter em conta:
previsibilidade
equilíbrio de recursos (evitar picos de uso dos recursos)
justiça (todos os processos devem ter a mesma utilização dos recursos) e starvation
processos I/O bound (processos que fazem muitas operações de E/S, bloqueando-se) e CPU bound (processos que usam de forma intensiva o processador, nunca se bloqueando)

questões:
o que se entende por conceito de justiça no escalonamento?
no contexto de escalonamento, indique cenários em que a justiça é desejável e cenários em que a justiça não é desejável
o que entende pelo conceito de starvation?
descreva o que entende por processo CPU bound e por processo I/O bound? Explique.
o que entende por equilíbrio de recursos?
qual a relação entre a gestão do processador e a gestão do resto da máquina?

#indicadores de desempenho
aferir como o sistema gere o uso do processador

as métricas que existem acerca do desempenho:
utilização do processador (é a percentagem de tempo que o processador está a ser usado, pouco interessante em sistemas interactivos, mono-utilziador ou sistemas de tempo real)
throughput (quantidade de processos concluídos por unidade de tempo, é interessante se os processos tiverem a mesma carga)
tempo de conclusão (touraround) (intervalo de tempo desde que se cria o processo até ele terminar)
prazos / deadlines (interessa maximizar a percentagem de prazos cumpridos, usado em sistemas de tempo real)
tempo de resposta / latência (tempo que demora a obtenção de uma resposta a uma acção do utilizador, usado em sistemas multi-programados interactivos)
razão da penalização / penalty ratio (é a razão entre o tempo de existência total sobre o tempo que levaria a executar-se se estivesse sozinho no sistema)
tempo de espera (tempo total que um processo esteve no estado executável)
previsibilidade (implementação complexa, o tempo de execução deve ser sempre o mesmo independentemente da carga no processador, necessidade de recorrer a registos de tempos de execução)

assim e acerca da gestão do processador e sendo um objectivo do escalonamento do sistema operativo:
minimizar a latência
maximizar o throughput
maximizar o equilíbrio da utilização dos periféricos
justiça

problemas e dificuldades que podem surgir nesta gestão:
dificuldade de prever o tipo de processos (CPU bound ou I/O bound), ficando os dispositivos de E/S inactivos
uma optimização pode provocar starvation
ocorrência de deadlocks

questões:
explique o que significa e qual o cenário de uso do indicador de desempenho de utilização do processador
explique o que significa e qual o cenário de uso do indicador de desempenho de throughput
explique o que significa e qual o cenário de uso do indicador de desempenho de tempo de conclusão (touraround)
explique o que significa e qual o cenário de uso do indicador de desempenho de prazos / deadlines
explique o que significa e qual o cenário de uso do indicador de desempenho de tempo de resposta / latência
explique o que significa e qual o cenário de uso do indicador de desempenho de tempo de razão da penalização / penalty ratio
explique o que significa e qual o cenário de uso do indicador de desempenho de tempo de espera
explique o que significa e qual o cenário de uso do indicador de desempenho de previsibilidade
dado um cenário com alguns processos e dois algoritmos de escalonamento, calcule cada uma das várias métricas de indicadores explicados e identifique qual o melhor algoritmo
verifique, para um dado cenário, identifique quais os indicadores de desempenho mais adequados e menos adequados. justifique.

#algoritmos de escalonamento
os algoritmos de escalonamento podem ser: não preemptivos e preemptivos

os não preemptivos são:
FCFS (first come first serve)
SPN (shortest process next)
HRRN (highest response ratio)

os preemptivos são:
Round Robin
SRT (shortest remaining time)
FEEDBACK

algortimo FCFS (first come first serve):
algoritmo não preemptivo
os processos são atendidos por ordem de chegada
favorece processos CPU bound
bloqueia os processos I/O bound
adequado para processos que não são interactivos
adequado para processos com a mesma duração de tempo
em arquitecturas de um só processador, deve usar-se com a variante de prioridades

algortimo Round Robin:
algoritmo preemptivo
os processos são atendidos por ordem de chegada
tem por base um quantum, sendo que depois volta para a lista dos executáveis
garantia que todos os processos são atendidos (não vai existir a starvation)
se existir uma variação de tempo nos processos, então este algoritmo é melhor que o FCFS
problema, definir o quantum (muito grande fica como o FCFS, já muito pequeno pode haver a necessidade de mais quantum)
adequado em arquitecturas com sistemas multi-programados

exemplo 1, de um cenário FCFS vs Round Robin (figSO1_04):

três processos, A, B e C, do tipo CPU bound
tempo total, de 18q
duração dos processos: A(12q), B(3q) e C(3q)
ordem de chegada: A, instante 0; B, instante 1; C, instante 2

exemplo 2, de um cenário FCFS vs Round Robin (figSO1_05):

três processos, A, B e C, do tipo CPU bound
tempo total, de 18q
duração dos processos: 6q para todos
ordem de chegada: A, instante 0; B, instante 1; C, instante 2

algortimo SPN (shortest process next):
não é preemptivo
similar ao FCFS, mas o próximo processo a ser executado é aquele que supostamente vai demorar menos tempo a executar
favorece os processos CPU bound
pode levar à starvation dos processos longos
tem um melhor touraround médio
não serve para sistemas multi-programados de tempo partilhado
problema: necessidade de ter um registo estatisito dos tempos dos processos

algoritmo SRT (shortest remaining time):
é preemptivo
similar ao SPN
o próximo processo a ser executado é aquele em que o tempo restante de processamento é menor
não é baseado no quantum
pode existir starvation dos processos longos
menor interactividade do que o RR
menor overhead que o RR
melhor touraround
problema: necessidade de ter um registo dos tempos de execução

algoritmo HRRN (highest response ratio):
eliminar o problema da starvation (que acontece no SPN e SRT)
surge o response ratio (RR)
RR = tempo de espera do processador + tempo de execução esperado / tempo de execução esperado
é escolhido o processo que tiver o maior RR
problema: como saber o tempo de execução de um processo?

algoritmo de FEEDBACK:
é preemptivo
é feita uma análise no passado recente
uso de prioridades dinâmicas (processo curto nunca perde a prioridade, processo longo vai perdendo a prioridade)
quantum variável (uso de diferentes quantums para recuperar processos, se este estiver a ser penalizado)

algoritmo de escalonamento escalável (a escabilidade):
algoritmo não escalável: pequenos aumentos no numero de processos levam a grandes aumentos no custo de execução do escalonador
algoritmo escalável pesado: pequenos aumentos no numero de processos levam a aumentos grandes mas proporcionais no custo de execução do escalonador (comum)
algoritmo escalável leve: pequenos aumentos no numero de processos levam a aumentos pequenos e proporcionais no custo de execução do escalonador (melhor cenário que se consegue)
algoritmo escalável muito bom (mas é fantasia): cada aumento no numero de processos causa pesos de execução cada vez menores

a técnica do escalonamento multi-lista (figSO1_06):

o nível superior é naquele cujos processos vão para execução
periodicamente, ir passando os processos para níveis mais superiores
ou despromovendo os processos do nível superior

problemas com qualquer escalonamento:
tempo de comutação de processos

questões:
explique como funciona um algoritmo
explique quais as vantagens face aos restantes, de um algoritmo
explique quais as desvantagens face aos restantes, de um algoritmo
exemplifique um cenário onde o algoritmo é o mais indicado, de um determinado algoritmo
exemplifique um cenário onde o algoritmo é não é o indicado, de um determinado algoritmo
o que é o escalonamento por níveis (multi-lista) e para que serve?
o que entende pela questão de escabilidade no escalonamento. indique uma forma de lidar com essa questão.

#escalonamento nos sistemas unix, linux, e windows NT

o escalonamento em unix:
round robin, com prioridades dinâmicas
privilegia os processos I/O bound
não pretendente atrasar os processos CPU bound
tem um quantum
a prioridade varia consoante o comportamento recente do processo
escalonamento multi-lista

o escalonamento em linux:
quantum são cerca de um conjunto de 20 notificações do relógio
e o quantum é modificado em cada época para um determinado processo

o escalonamento em windows nt:
o escalonamento é nas thread
round robim, com prioridades fixas e dinâmicas
escalonamento multi-lista
quantum é um conjunto de notificações do relógio

questões:
explique o funcionamento do escalonamento em unix, no linux e no windowsNT. Relacione com os conceitos dados nesta matéria
explique de que forma o windowsNT evita situações de starvation
explique de que forma o linux evita situações de starvation
poder-se-á dizer que os algoritmos de escalonamento do linux e do windowsNT são 100% justos= é isso é bom ou mau= Explique.
explique como são usadas as prioridades do windowsNT
os quantuns no linux têm sempre a mesma duração? porquê?
no contexto de escalonamento, indique uma diferença entre a edição desktop e a edição server do windowsNT. Explique essa diferença.

Outras questões:
descreva o que é um quantum
descreva o que é a preempção
explique o conceito de justiça
descrever o que é o cpu bound e o i/o bound
explicar o que é o tempo de espera, throughput, penalty ratio, conceito de justiça
descrever o modo de funcionamento de cada um dos algoritmos estudados
descrever os objectivos dos escalonamento e duas principais dificuldades na obtenção de uma gestão óptima absoluta
explicar e justificar a influencia de preempção ou ausência dela num sistema
comparação entre dois ou mais algoritmos, vantagens/desvantagens. Para uma determinado cenário, qual é o melhor e porquê?
descrever a influência da optimização de alguns indicadores de desempenho sobre os outros. explicar se é/não é possivel melhorar dois ou mais determinados indicadores e porquê.

Tags : , ,

SO1 – Fundamentos de sincronização, problema de exclusão mútua e semáforos binários

[so1t]

Fundamentos de sincronização, problema de exclusão mútua e semáforos binários

motivos de sincronização:
processos e threads, que querem fazer uso dos mesmos recursos

usar a exclusão mútua:
porque se partilha zona de dados
apenas uma entidade activa deve utilizar o recurso
resolver então o problema de concorrência, do acesso concorrente a dados

surge então a secção critica:
que são o conjunto de operações que deve ser efectuado de forma atómica (invisível)

os semáforos:
são uma solução para garantir o acesso em exclusão mutua a uma secção critica
é um recurso que é controlado pelo sistema operativo
tem a capacidade para ter um “numero de autorizações”
tem na sua estrutura: o numero de autorizações, e a fila de espera (processos bloqueados)
tem como operações: esperar (requisita o recurso, diminui o contador) e assinalar (liberta o recurso, aumenta o contador)
os processos ficam bloqueados se não existirem mais autorizações disponíveis, ficando desbloqueado assim que houver uma autorização livre
este bloqueio ou desbloqueio é sempre transparente para o processo

e relembrar que bloquear um processo:
é retirado de execução
é salvaguardado o seu contexto (software e hardware)
o seu estado passa a bloqueados
fica em fila de espera

e relembrar que desbloquear um processo:
é retirado da fila dos bloqueados
passa para o estado de executável
vai para o fim de lista dos executáveis
é fica em execução quando o despacho o seleccionar

vantagens dos semáforos:
bloquear o processo não ocupa o processador
é um mecanismo justo
é compatível com politicas de prioridades
elimina a espera activa

a verificar semáforos vs mutex (resolve o problema de exclusão mutua)!!!

questões:
identifique problemas de sincronização (exclusão mútua)
identifique a forma de resolver a novel abstracto com recurso a semáforos/mutexs

Tags : ,

SO1 – conceitos fundamentais de SO

Capítulos: 1, 2 e parte do 3 do livro: Fundamentos de Sistemas Operativos, José Alves Marques, Paulo Guedes – 3ª edição – Editorial Presença
Capitulo 1 do livro: Operating Systems Concepts – 6-º edição – Addison-Wesley

#objectivos, constituição e tipos de sistema operativos
Um sistema operativo é um programa ou conjunto de programas que efectua a gestão de tudo o que há na máquina

Posicionamento do sistema operativo
utilizador
programas utilizador (aplicações, interface utilizador)
sistema operativo (interface com aplicações (API), componentes do S.O, interface com hardware)
hardware

objectivos dos sistemas operativos:
efectuar a gestão da máquina (gestão de recursos da máquina, implementação de politicas de optimização)
virtualizar o hardware
prestação de serviços e ambiente de trabalho
garantir a estabilidade da máquina (recursos)

Posicionamento do sistema operativo (camada mais alta):
utilizador
aplicações e interface utilizador
sistema operativo (API, componentes do SO, interface com hardware)
hardware

Entidades que interagem com o sistema operativo:
utilizador (requer serviços e obtém feedback)
aplicações (requer serviços e recursos, e obtém serviços e recursos, e controlo do comportamento das aplicações)
hardware (faz notificações e recepção de dados, e recebe a configuração do hardware, instruções aos dispositivos, envio de dados)

qualquer programa obtém recursos ou serviços através de chamadas ao sistema. Essas funções acessíveis são a API do sistema
as aplicações devem ter acesso ás funções sem serem obrigadas a conhecer o endereço exacto onde residem
as aplicações não devem poder saltar para locais arbitrários dos códigos das funções de sistema
as aplicações não devem ter a possibilidade de alterar o código das funções

tarefas do sistema operativo:
configurar o hardware no arranque do sistema
controlar o estado do hardware e efectuar a gestão de erros
receber notificaçõs enviadas pelos periféricos (hardware)

os device-drivers, são sub-programas que que executam estas tarefas

Tipos de sistemas operativos:
(relação tempo da maquina e tempo real)
sistema de tempo virtual
sistema de tempo real
(quanto ao numero de processadores)
sistemas paralelos (memoria e relógio partilhado)
sistemas distribuídos (memoria e relógio independentes)

Questões:
o que é um sistema operativo?
que pontos de vista existe, acerca do que é ou deixa de ser um sistema operativo?
que entidades interagem com o sistema operativo=
em que condições um programa pode aceder ao hardware?
o ser humano interage com o sistema operativo? de que forma?
como é que o hardware interage com o sistema operativo?
quais os objectivos principais de um sistema operativo moderno?
o que é um API?
como é que os programas-utilizador utilizam os recursos do sistema operativo?
o que é o isolamento de um processo?
o que é isso de abstrair o hardware? dê exemplos
o que é que impede um programa-utilizador de tornar o controlo da máquina?
que tipos de sistema existem? dê exemplos de aplicação para cada um.

#arquitecturas de sistemas operativos

núcleo do sistema operativo:
conjunto de funcionalidades (camadas) dos sistema onde se incluem as funções mais importantes e mais privilegiadas
deve ser sempre executado no modo mais privilegiado
porquê?
necessidade de executar instruções privilegiadas,
necessidade de protecção quanto a interferências do resto do sistema ou programas utilizador
execução prioritária

funções do núcleo:
gestão de processos (controlo de interrupções, escalonamento, despacho, mecanismos de sincronização)
gestão de memória

os sistemas monolíticos:
não existe um encapsulamento funcional
o sistema operativo é constituído por um conjunto de procedimentos ou funções que se podem chamar uns aos outros
vantagens: mais rápidos
desvantagens: não têm uma estrutura, logo é difícil implementar
desvantagens: dificuldade em isolar responsabilidades no sistema

os sistema em camadas:
as tarefas e responsabilidades do sistema operativo são atribuídas a uma camada especifica

as camadas:
gestão de processos
gestão de memoria
comunicação E/S
sistemas de ficheiros
interface do sistema (funções de sistema e interpretador de comandos)
aplicações

tarefas da camada de processos:
criar a terminar processos
escalonamento e despacho de processos
comutação de processos e tratamento de interrupções
suporte para sincronização de processos

tarefas da camada de memória:
controlo da utilização da memória física e memória virtual

tarefas da camada de comunicação e E/S:
mecanismos de comunicação entre processos
comunicação com o exterior E/S

tarefas da camada de sistemas de ficheiros:
virtualização dos dispositivos de massa

tarefas da camada da interface dos sistema:
serviços proporcionados pelo sistema
interpretador de comandos

vantagens:
protecção, impedir a interferência com outros processo ou com o próprio sistema
se o hardware suportar, cada camada terá o seu próprio modo de execução
actualmente, arquitectura mista, sistemas não monolíticos e poucas camadas

desvantagens:
não é fácil determinar a hierarquia das camadas

arquitectura das máquinas virtuais:
são uma evolução dos sistemas de tempo partilhado

surge o hypervisor:
serve para a funcionalidade de virtualização
é um sistema operativo não genérico
hypervisor tipo 1 (nativo: sistema que faz a gestão do hardware)
hypervisor tipo 2 (hospede: virtualbox)

vantagens:
separação da multiprogramação e do virtualização do hardware
ter várias máquinas numa só
hypervisor tipo 1: melhor gestão do hardware, independentes de um sistema operativo genérico
hypervisor tipo 2: menor investimento, integração com um sistema que já existe

desvantagens:
difícil de implementar em alguns hardwares
hypervisor tipo 1: menor facilidade de interacção por parte dos utilizadores (só através de remote)
hypervisor tipo 2: menor performance, dependência do sistema operativo onde está instalado

arquitectura do cliente/servidor:
divisão lógica do sistema operativo em unidades funcionais
núcleo reduzido e simplificado: micro-kernel
os serviços do sistema são proporcionados por programas
os serviços são solicitados através de mensagens entre processos
o núcleo: faz o escalonamento e despacho; e a gestão da comunicação entre processos
fora do núcleo: fica a gestão a de memoria e a gestão de ficheiros

existem dois modos:
modo de utilizador: aplicações, servidor de display, sistema de ficheiros, etc
modo de núcleo: hardware, e micro-kernel

vantagens:
núcleo simplificado e rápido
sistema mais estável
adaptável a sistemas distribuídos
portabilidade melhorada

desvantagens:
???

Questões:
quais as características de cada arquitectura de sistemas?
quais as vantagens e desvantagens de cada arquitectura de sistemas?
o que é um núcleo? como pode identificar facilmente?
o núcleo corresponde ao sistema operativo? justifique e dê exemplos
quais as arquitecturas de sistemas operativo que conhece? descreva-as detalhadamente e de forma coerente. para cada ima indique uma vantagem e uma desvantagem
qual é o melhor? um sistema monolítico ou um sistema em micro-kernel?
identifique exemplos de aplicação em sistemas de máquinas virtuais.
qual a diferença principal entre um sistema de tempo virtual e um sistema de tempo real?
qual a diferença principal entre um sistema paralelo e um distribuído?
aplicaria um sistema de tempo virtual para controlar o sistema de direcção de um míssil? Porquê?

#implementação de funções sistema e mecanismo de interrupções
o mecanismo de interrupções, serve para notificar de forma assíncrona a ocorrência de situações
as interrupções não são explicitas, podem ocorrer a qualquer momento
o programador nem o compilador sabem que interrupções são usadas em que funções
o uso do mecanismo de interrupções e os privilégios de execução, fazem com que as interrupções sejam usadas com segurança (protecção)

exemplos das situações:
fim de operação de E/S
houve uma tentativa de utilização de um endereço inválido
o processador encontrou uma instrução que não conhece
é preciso ir buscar um bloco de memória ao disco e colocá-lo em memória
é preciso transferir a execução do código de um processo para o código do sistema operativo
terminou o tempo máximo concedido a um processo

mecanismos de interrupções:
interrupções: gerada por periféricos e essencial para operações de E/S
traps: pedidas pelo próprio programa, úteis para chamadas ao sistema
excepções: pedidas pelo processador, essenciais para tratar erros do sistema operativo

como funcionam:
a) um dispositivo (controlador) activa a linha de IRQ
b) o processador interrompe a execução e executa uma rotina de serviço de interrupção (ISR)
o serviço de rotina está numa tabela fixa (e conhecida) na memória, é a tabela de interrupções
e pode existir um esquema de interrupções hierarquizado, inibindo as interrupções de menor prioridade
c) a rotina de serviço de interrupção averigua a causa da interrupção

as traps:
similares as interrupções
são explicitas
uma trap é uma determinada chamada ao sistema

como implementar as chamadas ao sistema com interrupções:
as traps, sabem qual é o endereço da rotina, que está numa tabela e não é conhecido pelo processo, destam forma pode mudar de kernel
as traps, protegem contra saltos indevidos, a trap salta para o endereço que consta na tabela de interrupções. Essa tabela está protegida conta escrita no modo de utilizador
as traps, pode passar do modo de utilizador para modo de núcleo, permitindo assim uma passagem para um modo mais privilegiado

as excepções:
funcionam como as interrupções e as traps
é desencadeada pelo processador

exemplos das situações:
operações inválidas
tentativa de acesso a zonas de memoria de outros processos
falta de página
tentativa de execução de uma instrução privilegiada em modo de utilizador

Questões:
como é que os programas-utilizador encontram as rotinas do sistema operativo?
o que é o modo núcleo? em que difere do modo de utilizador?
é possivel implementar um linux ou windows moderno num 8086? porquê?
o que é uma trap e para que serve?
como é que o sistema detecta que um programa está a tentar usar um endereço inválido?
como é que o controlador dos disco rígido (por exemplo) avisa o sistema que ocorreu um erro?
o que é uma função sistema?
qual a diferença entre uma função sistema e função biblioteca?
dê um exemplo de função de biblioteca
dê um exemplo de função de sistema
o que é a fase de linkagem e que se serve (o que faz)?

#processos e threads
um programa é uma sequência de instruções, é uma entidade passiva
os processos são entidades activas que partilham o processador , que está em execução
o escalonamento é efectuado em termos de processos (o mesmo programa pode estar a ser executado em diferentes processos)
e um processo pode ser dividido em threads

um processo é constituído por regiões (top down):
pilha (colocadas as variáveis locais, a serem executadas pelo processador)
espaço de endereçamento não utilizado
heap (zonas de memória dinâmicas, por exemplo mallocs)
dados inicializados (variáveis estáticas ou locais)
código (instruções que vão ser executadas pelo processador)

o processo pode ser executado em:
modo utilizador (instruções definidas pelo programador)
modo núcleo (a execução decore dentro de funções de sistema invocadas pelo processo)

Questões:
qual a diferença entre processo e programa?
em que circunstâncias pode um processo estar associado a nenhum programa?
um programa pode estar a ser executado em vários processos?
um processo pode estar a executar vários programas?
descreva as zonas de memória típicas de um processo. Para que serve cada uma?
qual a diferença entre processo e thread?
é possivel um processo ter zero threads?
dê um exemplo concreto onde seja útil ter mais que uma thread.


Capítulo: 1 (introdução) – Fundamentos de Sistemas Operativos, José Alves Marques, Paulo Guedes – 3ª edição – Editorial Presença

Os sistemas de tratamento por lotes procuram resolver a principal limitação do desempenho resultante da diferença considerável entre o tempo de execução do processador e das operações de E/S sobre periféricos mecânicos. As operações lentas de E/S foram relegadas para equipamentos auxiliares permitindo que o processador central executasse um fluxo continuo de trabalho.

Multiprogramação
todos os sistemas anteriores (antes da Multiprogramação) só se tornaram possíveis através da utilização dos mecanismos de interrupção que permitem multiplexar o processador entre diversas actividades executadas concorrentemente. estes sistemas permitem o desenvolvimento de sistemas de tratamento por lotes de grande eficácia.
O sistema multiprogramado permite que diversos programas estejam simultaneamente activos. A multiprogramação só é eficaz se os diversos programas residirem na memória central, pois só assim a mudança de contexto se poderá processar rapidamente. Mas a memória física é limitada e pode ser impossível manter simultaneamente em memória diversos programas com tamanhos variados. a solução passa pela existência de uma hierarquia de memória que permita, quando se torne necessário carregar um novo programa e salvaguardar na memória secundária alguns dos programas bloqueados (é o swapping).
a atribuição cíclica do tempo do processador os vários utilizadores permitiu ultrapassar esta limitação dando a cada programador a ilusão de dispor de uma máquina própria, surgindo os sistemas de tempo partilhado.

Sistemas interactivos
são sistemas onde podem existir vários utilizados que sem quaisquer conhecimentos de especialização conseguem interagir com os sistemas dos computadores.
a multiplexagem entre vários utilizadores impõe a divisão do tempo disponível do processador entre os diferentes utentes, atribuindo-lhes fatias de tempo que permitam dar-lhes a sensação de dispor de uma máquina dedicada.
surge nestes sistemas a necessidade de dar importância: sistemas de ficheiros, a protecção, a linguagem de interacção com o sistema.

Memória virtual
diversos algoritmos foram desenvolvidos com o objectivo de rentabilizar a utilização da memória física disponivel.
com a evolução do hardware de gestão de endereços existiu a possibilidade de trabalhar sobre um espaço de endereçamento virtual de dimensões muito superiores e independentes da memória física existente na máquina.

Tipos de Sistemas Operativos
os sistemas de tempo virtual, o tempo de execução dos programas não tem relação com o tempo cronológico exterior à máquina (os job-shop)
os sistemas de tempo real, os sistemas onde a noção de tempo é relevante, este têm como objectivo conseguir ao fim de um intervalo de tempo limitado e previamente especificado. No sistemas de tempo real podem ser englobados ainda os sistemas transaccionais, onde o tempo de resposta aos pedidos dos utilizadores continua a ser critico, se bem que numa escala mais lata e com muito menor responsabilidade associada.

Arquitectura do Sistema Operativo
existe uma decomposição do sistema em camadas funcionais. cada camada constitui um nível de abstracção que implementa uma máquina virtual com uma interface bem definida. sobre esta máquina pode constituir-se uma outra que utiliza os serviços da camada precedente para implementar o próximo nível de abstracção. Cada camada encapsula a implementação dos níveis inferiores fazendo que seja possivel modifica-los sem afectar as camadas exteriores.

níveis do sistemas operativo

gestão de processos: cada processo pode ser considerado como uma máquina virtual que executa um programa. multiplexa o processador entre os processos activos que se comportam como máquinas executando um programa. a gestão dos processos encarrega-se do tratamento das interrupções, despacho dos processo e da respectiva sincronização
gestão de memória: controla a utilização da memória física, e a sua relação com o espaço de endereçamento virtual onde se desenrola a execução dos processos
comunicação e entradas/saídas: os processos necessitam de comunicar para poderem gerir recursos comuns ou controlar a execução das aplicações
sistema de ficheiros: a gestão de ficheiros é responsável pela implementação eficiente de uma organização lógica que virtualiza os dispositivos de memória de massa
interface de sistema: funções sistema (as funções de sistema constituem a interface dos serviços providenciados pelas camadas internas do sistema operativo. as interfaces às funções são agrupadas em bibliotecas de rotinas que podem ser ligadas com os programas dos utilizadores de forma a permitir-lhes aceder aos mecanismos sistema); interpretador de comandos (a aplicação interpreta um conjunto de comandos que permitem fazer executar as operações mais vulgares de interacção com o sistema)
Os mecanismos de protecção também são presentes em todos os níveis. o sistema tem que garantir que os processos não podem realizar operações que ponham em risco o próprio funcionamento do sistema ou interfiram indevidamente com os objectos pertencentes a outros processos. os mecanismos de protecção podem ser implementados de diversas formas adaptadas ao tipo de informação manipulada em cada nível.

Modelo computacional
o modelo computacional é o conjunto de objectos do sistema operativo e as operações que os permitem manipular. é o conjunto de funções do sistema de que o programador dispõe para o desenvolvimento de aplicações e que lhe possibilitam estender a capacidade das linguagens de programação sequenciais. quando se entra no domínio das aplicações complexas, é necessário utilizar as capacidades oferecidas pelos sistemas operativos para obter o desempenho, a interactividade e o paralelismo de que numerosas aplicações necessitam.

Capítulo: 2 (a gestão dos processos) – Fundamentos de Sistemas Operativos, José Alves Marques, Paulo Guedes – 3ª edição – Editorial Presença

O pseudoparalelismo
os sistemas com múltiplas actividades paralelas são designados por sistemas concorrentes. a concorrência advém da existência de diversos fluxos de actividade que vão disputar acesso aos recursos dos sistema e que são limitados.
a multiplexagem do processador é feita internamente com critérios perfeitamente bem definidos.
um processo é um fluxo de actividade que desde a sua criação se executa continuadamente, excepto quando podemos considerar cada processo como uma máquina virtual que executa um determinado algoritmo definido pelo seu programa
o não determinismo como é feita a multiplexagem do processador é uma característica fundamental a ter em conta na utilização do modelo computacional. um programador que estruture uma aplicação em várias actividades concorrentes não pode assumir uma sequência predeterminada de utilização do processador.

Processador, processo e programa
um processo, é a entidade activa no sistema. executa um conjunto de acções que são determinadas por um programa. um processo pode durante a sua vida executar diversos programas. um processo é uma entidade activa controlada por um programa e que necessita de um processador para pode executar-se. um processo define:
um conjunto de operações: operações elementares (proporcionadas pelo hardware da máquina física. o sistema operativo não pode permitir que os processos interfiram com os seus próprios mecanismos de gestão. as instruções normalmente vedadas aos processos, relacionam.se com as interrupções entradas/saídas e mecanismos de protecção); e operações de interacção com as outras máquinas virtuais (os outros processos existentes no sistema)
um espaço de endereçamento: um processo executa-se dentro de um espaço de endereçamento bem delimitado, evitando que possa interactuar de forma indevida com os outros processos ou com ao próprio sistema operativo. surgem assim os mecanismos de protecção que o sistema operativo implementa. a protecção garante que um processo nunca poderá interferir com outro ou com o próprio sistema sem ser através de mecanismos seguros e fiáveis, controlados pelo próprio sistema.
um processo em cada instante encontra-se numa determinada etapa de execução. associado a cada processo existe um vector de estado ou contexto que mantém toda a informação de que os sistema operativo necessita para poder retomar a execução de um processo interrompido.  No contexto é memorizada a informação relacionada com o processador e com o ambiente de software no qual o processo se executa. a informação relativa ao processador é mantida no contexto, vulgarmente designado de hardware. o contexto de software contém informações que permitem gerir os recursos do sistema e conhecer os atribuídos a um processo e que são: identificação do processo e do utilizador, prioridade, estado do processo, periféricos utilizados, ficheiros abertos, programa em execução, directoria actual e por omissão, cotas de utilização dos recursos, contabilização da utilização dos recursos. O contexto de um processo é uma estrutura de dados, interna ao sistema operativo que mantém todas as informações sobre o estado e ambiente de execução, recursos utilizados e respectiva contabilização. A criação de processos estabelece uma relação hierárquica entre os processos, podendo o processo pai interferir sobre a execução dos seus filhos.
um programa não é mais que uma sequência de instruções sem actividade própria que seja executado em contexto de um processo. uma sequência coerente de instruções. um programa ou partes de um programa podem ser partilhados por diversos processos.

A função dos mecanismos de sincronização
determinadas aplicações só podem ser eficientemente implementadas quando suportadas por diversas actividades independentes. a decomposição do algoritmo em actividades paralelas permite também esperar obter um melhor desempenho global da aplicação. a sincronização da actividade dos processos podem acontecer por:
cooperação entre processos: que resulta da necessidade de interacção entre diversas actividades para executarem uma aplicação comum. por exemplo um processo só poderá prosseguir depois de outro ter executado uma determinada operação.
competição por um recurso: a competição pela obtenção de um recurso único ou limitado impõe também a necessidade de mecanismos de sincronização.
exclusão mutua: é um caso particular da competição por um recurso, o acesso exclusivo a uma estrutura de dados. A manipulação de estruturas de dados partilhadas deve ser realizada de forma atómica. as diferentes variáveis que constituem a estrutura de dados têm de ser actualizadas em conjunto, não se podendo permitir actualizações parciais (secção critica). é assim um caso particular de competição para um recurso único que corresponde ao direito de efectuar a actualização de uma estrutura de dados partilhada.

Semáforos
os semáforos devem ser considerados como parte integrante da camada do núcleo do sistema operativo que multiplexa o processador.
espera activa: o processo que espera a possibilidade de entrar na secção critica detém o recurso único no sistema, o processador, sem o qual não pode ser libertado o trinco. pare evitar esta situação, o processo que espera a libertação de um recurso deve ser bloqueado ficando no sistema memorizada a razão que motivou o bloqueio. o processo permanece nesse estado até que a libertação do recurso lhe permita prosseguir a execução.

espera activa
o semáforo implementa um mecanismos de sincronização sem espera activa. um semáforo é constituído por uma estrutura de dados composta por uma variável de controlo e por uma fila de espera destinada a conter os descritores dos processo bloqueados. os semáforos são facilmente implementados com base no mecanismo de exclusão mutua e numa lista onde são colocados os contextos dos processos bloqueados.
diagrama de estados do processo
estados dos processos:
em execução:
executável: à espera de uma oportunidade de dispor do processador
bloqueado: o processo é retirado da lista dos que concorrem para a obtenção do processador. significa retirar de execução, salvaguardar o seu contexto, marcar o seu estado como bloqueado e colocar o contexto na fila de espera que mantém os descritores dos processo bloqueados no semáforo.
desbloquear: corresponde a retirar o processo da fila de espera do semáforo, modificar o seu estado para executável e transferi-lo para a fila dos processo executáveis. o processo voltará a executar-se quando o despacho o seccionar.
O FIFO é o método mais concorrente para a gestão da fila do semáforo.

Cooperação entre processos
consiste em bloquear um processo P1 até que um processo P2 lhe assinale que uma determinada acção ou acontecimento se produziu. Para isso é necessário que exista num processo activo: bloquear-se à espera de um sinal a ser emitido por outro processo e activar um processo bloqueado.

Sincronização directa
Surge uma nova fila de espera onde o processo pode ser colocado. É usado um par de primitivas (Suspender e Acordar) que actua directamente sobre o processo bloqueando-o numa fila de processos suspensos ou acordando-o.
estado dos processos
Têm de existir mecanismos para evitar que um processo possa arbitrariamente suspender outro sobre o qual não detém qualquer privilégio, permitindo o uso de sincronização directa entre processos relacionados hierarquicamente.

Sincronização indirecta
Tem como vantagem garantir a igualdade de tratamento a todos os processos com os mesmos privilegiados. Surge o conceito de semáforo privado.

Capítulo: 3 (o núcleo do sistema operativo) – Fundamentos de Sistemas Operativos, José Alves Marques, Paulo Guedes – 3ª edição – Editorial Presença

As interrupções
As interrupções permitem desviar assincronamente a execução de um programa para outro. Tem que haver: controlo de aceitação das interrupções (acontecimentos de maior prioridade interrompem os de menor); salvaguarda do contexto (o contexto do programa interrompido deve ser salvaguardada); selecção da rotina de tratamento da interrupção. As interrupções podem ser provocadas pelo hardware; por situações de excepção ou desencadeadas por instruções especiais.

A protecção estabelece-se a dois níveis: o primeiro está relacionado com a possibilidade de impedir aos processos utilizador a execução de instruções que podem afectar o funcionamento global da máquina; o segundo está relacionado com a unidade de gestão de memória, sendo que o espaço de endereçamento dos processos utilizador e dos sistema sejam perfeitamente delimitados, impedindo que os respectivos dados possam ser corrompidos.

O sistema operativo estrutura-se em camadas com as funções necessários ao modelo computacional: gestão de processos, gestão de memória, comunicação de entradas e saídas, sistema de ficheiros, suporte  utilizadores.

A gestão de processos –  executada no núcleo do SO
a gestão de processos activos pode ser: controlo das interrupções, despacho, sheduling e primitivas de sincronização.

A multiplexagem do processador é efectuada conjuntamente por duas entidades funcionais:
gestão do processador , escalonamento: implementa a politica global de gestão e optimiza a utilização de todos os recursos da máquina
e o despacho: tem por função determinar o próximo processo a executar-se e efectuar a comutação do contexto

assim a gestão dos processos tem que ter em conta o seguinte:
multiplexagem do processador:
funções de sincronização:
gestão de interrupções: as interrupções são o mecanismo que permite a comunicação assíncrona entre o processador e o sistema, e sem elas diminuiria a possibilidade de efectuar simultaneamente várias actividades. A mudança de contexto de uma actividade para outra ocorre devido à activação de uma interrupção que retira o controlo do processador ao processo em execução para o transferir para uma rotina de interrupção. As interrupções são globais, não são dirigidas a um determinado processo. As excepções relacionam-se apenas com o processo que as provoca e deverão, portanto, ser tratadas no seu contexto.
O processo tem um contexto de hardware (acumuladores, registo de uso geral, contador de programa, apontador de pilha, registo de estado do processador) e de software (identificador do processo e do utilizador, prioridade, estado do processo, periféricos utilizados, ficheiros abertos, programa em execução, directoria actual, quotas de utilização de recursos, contabilização da utilização dos recursos).
Os contextos dos processos activos são mantidos na Lista dos Processos Executáveis que procura reflectir o algoritmo de selecção do despacho.

Despacho
A rotina de despacho é chamada sempre que o processo actual deve ser comutado ou exista a possibilidade de ser comutado. a comutação de processos é o mecanismo básico para implementação da pseudoconcorrência, o seu funcionamento apenas necessita de uma gestão cuidada das interrupções.

Gestão do processador , escalonamento
o processador é um recurso crítico do sistema pelo que o escalonamento tenta optimizar a sua utilização mantendo-o tanto quanto possivel ocupado.

O escalonamento tem três objectivos:
procurar equilibrar a carga do sistema por forma a dar um serviço relativamente uniforme aos utilizadores interactivos
dotar o sistema de grande reactividade às condições externas
conseguir que o sistema execute determinadas acções em intervalos de tempo pré-determinados

Existem assim os seguintes modos/politicas de gestão do processador:
gestão do tempo partilhado (atribuir um período de tempo predeterminado a cada processo)
gestão do tempo real relaxado (soft real time)
gestão do tempo real estrito (hard real time)
preempção (politica que retira de execução um processo quando outro mais prioritário se tornou executável)
multilista (listas com diferentes prioridades onde os processo são colocados de acordo com o modo como utilizam o processador)
prioridades dinâmicas (modificação da prioridade dos processos em função do modo como utilizam os recursos)
quantum variável (modificação do valor do quantum para permitir reduzir o número de comutações do processador quando são executados processos de processamento intenso)

Tempo de execução partilhado (Tempo partilhado)
Para tornar equitativa a partilha do processador, a maioria dos sistemas apenas permite que o processo em execução utilize durante um intervalo de tempo limitado (time-slice ou quantum).
Surge um algoritmo de gestão que atribui a cada processo um quantum de tempo do processador gerindo circularmente (round robin) a lista dos processos executáveis. Esta solução tem um problema de facilmente conduzir a tempos de resposta elevados em situações de carga intensa, dado o tamanho sempre crescente da lista, e não permite reagir a qualquer acontecimento prioritário.

Multilista
A prioridade do processo varia durante a execução em função do modo como é utilizado o processador.
Um evolução do algoritmo anterior consiste na utilização de várias listas de acordo com o tipo de processo em execução. Assim os sistemas mistos de tempo partilhado e tratamento por lotes conciliam os dois tipos de gestão. O despacho implementa um algoritmo hierárquico seleccionando sempre um processo da lista mais prioritária. A lista mais prioritária corresponde aos processos que utilizam pouco tempo de interactividade (I/O bound). A utilização intensiva do processador conduz o processo para listas menos prioritárias, para onde serão naturalmente relegados os processos não interactivos que utilizam intensivamente o processador (CPU bound). Mas retirar sempre da lista mais prioritária pode conduzir a que os processos menos prioritários nunca tenham hipótese de se executarem (starvation).

Prioridades dinâmicas
A prioridade do processo pode ser alterada dinamicamente em função do comportamento no sistema. Uma optimização possivel em situações de carga é aumentar a duração do quantum, por forma a diminuir o número de comutações de contextos e aumentar a probabilidade de um processo terminar.

Preempção
designa a acção de retirar o processador a um processo em execução devido à existência de outro mais prioritário. isto permite que os processos mais prioritários reajam rapidamente a um acontecimento. a preempção é indispensável nos sistemas de tempo real sendo normalmente implementada nos sistemas multiutilizador. A preempção pode também ser associada ao esquema de partilha de tempo do processador, sendo consideradas várias politicas quanto à forma como o processo é reinserido na lista e ao valor dos seu próximo quantum.

Tempo real
Nos sistemas de tempo real a preempção é fundamental para garantir que um processo com elevada prioridade se execute quando é desbloqueado.

Implementação da Sincronização – secções criticas – inibição das interrupções
A solução mais simples para implementar a exclusão mútua consiste em eliminar a causa do problema impedindo a concorrência, para tal bastando inibir as interrupções durante a sequência de instruções de teste e posicionamento de uma variável partilhada. não havendo interrupções não é possivel dar-se uma troca de contexto de execução. Uma das desvantagens desta solução com a ineficácia da gestão da maquina que resulta da paragem de todas as acções externas susceptíveis de fazerem evoluir o estado do sistema.

Implementação da Sincronização – secções criticas – implementação dos trincos
os trincos podem ser usados para garantir a exclusão mutua.

Tags : , , ,

SO1 – comunicação inter-processos em unix com named pipes (FIFOs)

[so1t]

#comunicação inter-processos em unix com named pipes (FIFOs)

bibliografia especifica:
Begining linux programming: mathew & stones, caps 10,11, e 12

#FIFOs/Named pipes:
é um mecanismo semelhante aos pipes anónimos mas com capacidade de identificação própria (visivel a processos independentes)
utilizam-se normalmente ficheiros
os pipes anónimos têm a desvantagem de não poderem ser utilizado por processos não relacionados entre si
isto acontece porque os identificadores de acesso às extremidades dos pipes são meros handles (índices na tabela de ficheiros abertos) e assim sendo:
os pipes anónimos só fazem sentido no contexto do processo que os criou (ou processos filhos)
os pipes anónimos que também fazem uso de ficheiros, não têm acesso à tabela de ficheiros abertos de outros processos independentes, sendo também o descritor de um pipe criado por um processo distinto e não relacionado não acessível

surgem assim os pipes não anónimos, com nome (ou FIFOs)
são pipes: com um mecanismo de comunicação similar aos pipes, mas existe um nome que por ser utilizado por processos não relacionados para a obtenção de acesso ao FIFO
são pipes: similar ao uso de um ficheiro, em que qualquer processo pode abrir/ler/escrever se souber o seu pathname ( e tiver permissões)

os FIFOs usam as funções de ficheiros:
open (ficheiro que já existe)
write (ficheiro previamente aberto)
read (ficheiro previamente aberto)
mkfifo (cria um FIFO)
unlink (remove um FIFO)
fcntl (manipula as propriedades do FIFO)

#a sincronização
pode ser realizada de duas formas: bloqueante (comportamento síncrono) e não bloqueante (comportamento assíncrono)

FIFO para leitura bloqueado
open(ficheiro, O_RDONLY);
_FIFO fica bloqueado até que alguém o abra para escrita
_o uso do read() com o FIFO vazio bloqueia o processo

FIFO para leitura não bloqueado
open(ficheiro, O_RDONLY | O_NONBLOCK);
_retorna de imediato
_o usod o read() com o FIFO vazio retorna 0

FIFO para escrita bloqueado
open(ficheiro, O_WRONLY);
_FIFO fica bloqueado até que alguém o abra para leitura
_o uso do write() com o FIFO cheio bloqueia até poder escrever todos os dados

FIFO para escrita não bloqueado
open(ficheiro, O_WRONLY | O_NONBLOCK);
_retorna de imediato
_o usod o write() tem que ter em conta o seguinte:
__ bytes a escrever <= PIPE_BUF -> falha
__ bytes a escrever > PIPE_BUF -> escreve o que ainda couber e retornar

#Exemplo de aplicação do FIFO – o dicionário (cliente – servidor)

no cliente:
quando faz um pedido ao servidor tem que enviar sempre o nome do pipe para o qual o servidor deve responder;
deve criar o seu pipe antes de fazer o pedido;
não deve abrir o seu pipe para leitura, pois o servidor ainda não abriu para escrita, nem o conhece;
deve abrir o seu pipe como não bloqueantes e deve logo de seguida alterar para bloqueante (uso do fcntl)

no servidor:
o servidor deve abrir o seu pipe sempre para leitura, mesmo quando todos os clientes sairem (técnica keep-alive)

algoritmo do cliente:
abre o FIFO do servidor para escrita
cria o FIFO para receber a resposta
abre o FIFO das respostas para leitura (como não bloqueante)
muda o FIFO para bloqueante com a função fcntl
repete durante uma certa condição
obtém palavra a traduzir
constrói pergunta = palavra + nome do FIFI para a resposta
fica à espera da resposta (efectua uma leitura no FIFO para a resposta)
fecha o FIFO do servidor
fecha o FIFO para as respostas
remove o FIFO das respostas

algoritmo do servidor:
cria o FIFO do servidor para obter as perguntas
repete durante uma certa condição
obtém a próxima pergunta (efectua leitura do FIFO do servidor)
obtém a tradução da palavra
obtém a identificação do FIFO para a resposta abre o FIFO do cliente que enviou a pergunta
envia a resposta(escreve no FIFO para a resposta)
fecha o FIFO para a resposta
fecha o FIFO do servidor
remove o FIFO do servidor

dict.h

 

 

Tags : , ,

SO1 – Fundamentos de sincronização, problema de exclusão mútua e semáforos binários

Fundamentos de sincronização, problema de exclusão mútua e semáforos binários

motivos de sincronização:
processos e threads, que querem fazer uso dos mesmos recursos

usar a exclusão mútua:
porque se partilha zona de dados
apenas uma entidade activa deve utilizar o recurso
resolver então o problema de concorrência, do acesso concorrente a dados

surge então a secção critica:
que são o conjunto de operações que deve ser efectuado de forma atómica (invisível)

os semáforos:
são uma solução para garantir o acesso em exclusão mutua a uma secção critica
é um recurso que é controlado pelo sistema operativo
tem a capacidade para ter um “numero de autorizações”
tem na sua estrutura: o numero de autorizações, e a fila de espera (processos bloqueados)
tem como operações: esperar (requisita o recurso, diminui o contador) e assinalar (liberta o recurso, aumenta o contador)
os processos ficam bloqueados se não existirem mais autorizações disponíveis, ficando desbloqueado assim que houver uma autorização livre
este bloqueio ou desbloqueio é sempre transparente para o processo

e relembrar que bloquear um processo:
é retirado de execução
é salvaguardado o seu contexto (software e hardware)
o seu estado passa a bloqueados
fica em fila de espera

e relembrar que desbloquear um processo:
é retirado da fila dos bloqueados
passa para o estado de executável
vai para o fim de lista dos executáveis
é fica em execução quando o despacho o seleccionar

vantagens dos semáforos:
bloquear o processo não ocupa o processador
é um mecanismo justo
é compatível com politicas de prioridades
elimina a espera activa

a verificar semáforos vs mutex (resolve o problema de exclusão mutua)!!!

questões:
identifique problemas de sincronização (exclusão mútua)
identifique a forma de resolver a novel abstracto com recurso a semáforos/mutexs

Tags : ,

SO1 – conceitos básicos de Unix

#conceitos básicos de Unix
Cada programa que se executa ocorre no contexto de um processo
Um processo define: zona de memória, prioridade, identificação do utilizador, directoria de trabalho variáveis de ambiente
Um processo é criado sempre por outro processo
O processo filho adquire algumas das características do processo pai: variáveis de ambiente, ficheiros abertos, programa em execução
O processo pai pode controlar várias das características que o processo filho vai ter
As variáveis de ambiente definem aspectos operacionais do ambiente de trabalho do ambiente de execução dos programas e do ambiente do utilizador

Gestão de utilizadores
/etc/passwd
contem a identificação das contas de utilizador
está em formato “clear text”

/etc/group

/etc/shadow
contem a password dos utilizadores, acesso apenas pelo administrador

/etc/gshadow

comandos especiais para lidar com execução privilegiada temporária:
setuid, set user ide upon execution
setgig
sudo

Tags : ,

List of Rom Websites

Encontrei esta lista de locais onde se podem encontrar Roms:
https://www.youtube.com/channel/UCOu56sNffE5cmwpd2ylExGQ
https://archive.org/
https://the-eye.eu/
https://www.romulation.net/
https://www.ziperto.com/
http://daroms.com/
http://www.portalroms.com/
https://romsmania.cc/
https://emulator.games/
https://easyroms.com/
https://nblog.org/
https://www.pleasuredome.org.uk/index.php
https://vimm.net/
https://www.doperoms.com/
https://www.zophar.net/pdroms.html

Tags :

Tags :

Catita :)

+infos(a loja): LINK

Tags :

Game Software Engineer em Lisboa

A malta do Doppio anda à procura de um Game Software Engineer para os escritórios de Lisboa.

Da descrição da proposta consta:

“As a Game Software Engineer in our small team, your role is to:

  • Help us build great games from concept to development to launch to live service

  • Help us build our tools and platform

In this role, you will:

  • Prototype and implement voice-first game concepts on our target platforms

  • Work closely with game designers to translate ideas into code

  • Design, monitor and maintain our live services, ensuring our games are available to players 24/7/365

The following technical skills are essential for this role:

  • 3+ years server-side programming experience, particularly in Node.js/JavaScript and/or Java

  • Experience designing and deploying applications on NoSQL databases, particularly MongoDB and AWS DynamoDB

  • Experience with programming tools to create, read, and manipulate data in JSON and XML formats

These other skills are desirable for this role:

  • Experience working with live service monitoring and maintenance, particularly with services deployed in the AWS cloud

  • Prior experience or a strong interest in working in the games industry

  • Familiarity with the Speech Synthesis Markup Language (SSML), particularly the dialects used by Amazon Alexa, AWS Polly, Actions on Google (AoG), and Google Cloud Text-to-Speech

  • Experience working with AWS S3 and Git/GitHub


+infos(oficial): https://doppio.games/careers/game-software-engineer

Tags : ,

Encontrei :)

Finalmente encontrei cá em Portugal quem faça um Arcade Stick para dois players e com botões de pinball machine ;) É feita em Barcelos para todo o país pela arcadebox.pt :)


agora é só juntar uns euros :P

+infos(página oficial): LINK

+infos(rede social): LINK

Tags : , ,

Campanha: 2D Game DEV Bundle

da lista constam:
Game Character Sprite 20
BG Platformer Tilesets 01
10 Game Backgrounds
Cute Animals Pack
Explosives Pack
Water and Fluids Tiles
Chests n’ Keys
Platformer Game Tile Set 13
18 Amazing Sprite Effects for Your Game
Soldiers Pack
Platformer Tile Set Game BG 12
Sprite Sheet Animation
10 Game Vector Backgrounds
Animated Soldier 2
Platformer Game Tile Set 2
32×32 Gameboy Pack 5
Cyberpunk Platformer Tileset
Cyberpunk Character Sprites Set
Platformer Assets Pack 3

até final do dia 13 de agosto e por +-23 euros

+infos(campanha): LINK

Tags : ,

The Unity Game Engine and the Circuits of Cultural Software e Graduate Skills and Game-Based Learning

Gostava de ter acesso a este livro “The Unity Game Engine and the Circuits of Cultural Software” de Nicoll, Benjamin e Keogh, Brendan

Videogames were once made with a vast range of tools and technologies, but in recent years a small number of commercially available ‘game engines’ have reached an unprecedented level of dominance in the global videogame industry. In particular, the Unity game engine has penetrated all scales of videogame development, from the large studio to the hobbyist bedroom, such that over half of all new videogames are reportedly being made with Unity. This book provides an urgently needed critical analysis of Unity as ‘cultural software’ that facilitates particular production workflows, design methodologies, and software literacies. Building on long-standing methods in media and cultural studies, and drawing on interviews with a range of videogame developers, Benjamin Nicoll and Brendan Keogh argue that Unity deploys a discourse of democratization to draw users into its ‘circuits of cultural software’. For scholars of media production, software culture, and platform studies, this book provides a framework and language to better articulate the increasingly dominant role of software tools in cultural production. For videogame developers, educators, and students, it provides critical and historical grounding for a tool that is widely used yet rarely analysed from a cultural angle.”

+infos(oficial): LINK

E a este livro “Graduate Skills and Game-Based Learning – Using Video Games for Employability in Higher Education” por Matthew Barr.

Graduate Skills and Game-Based Learning offers us a new tool for the heart and soul of graduate education, a tool for experimentation, risk-taking, creativity, and using failure as a form of learning. These are just the bits where we need the most help.

+infos(oficial): LINK

Tags : , , , ,

How Over 25 People Got Scammed Into Working At A Nonexistent Game Company por Cecilia D’Anastasio

Brooke Holden had all but given up on breaking into the video game business.

She had gone to university in the United Kingdom to study game development, but realized partway through her degree that she hated coding. Holden had also come across horror stories about labor conditions in the game industry, where employees regularly work 60- to 80-hour weeks, and thought to herself, no way, not me. But one year into a job as an office manager, Holden, 26, was still dreaming about getting into games, maybe applying for some sort of team management position.

“Professionally inexperienced but passionate team manager looking for a hobby project to help support and manage,” she posted to a subreddit for assembling game dev teams. It was just a lark, yet a half dozen replies accumulated under the post. One in particular stood out, from an account with an active Reddit history on developer recruitment boards. The poster’s name was “Kova,” and he told Holden that his small team of three developers had recently ballooned into a 48-member operation that needed a manager “on everyone’s ass.”

Holden was exhilarated. On June 22, 2019, she signed a contract with Kova’s company Drakore Studios, accepting the position of junior production manager at $13 per hour.

There was just one problem: Drakore Studios didn’t actually exist.

Over the course of a month and a half, “Kova,” real name Rana Mahal, convinced at least 25 people to join a game studio that was not a registered company, and develop a video game to which he did not own the rights, in exchange for no pay. Six of them came forward to tell their story to Kotaku.

The story they told was one of deceit, exploitation, incompetence, and hope, and one fueled by gamers’ desperation to participate in an industry that has stoked their imagination, lifted their mood and forged friendships since childhood. It was a story of a boss who constantly told aspiring developers that their paychecks were on the way and that investors were just about to sink tons of cash into the company’s coffers, and that his high-placed friends at major game development studios were advising him throughout the process. The reality was quite different, and when Drakore unraveled, it unraveled fast.

“People shouldn’t have gotten into game dev stuff with me,” Mahal told Kotaku via a Discord voice call. “We didn’t maliciously intend for this to happen. Do a piece warning other devs about things that can happen. I made some mistakes.”

“This was my first ‘job’ in the games industry,” Brooke Holden said. “I just had no idea how standard it was.”

Talking over the position with Drakore, Holden learned that she would facilitate the team developing a game called Zeal. This part, at least, was true: Zeal was an Early Access game that had been released on Steam by a team called Lycanic Studios in September 2018.

Lycanic was a team of two developers, Mert Dinçer and Tim Popov. They’d been grinding away at Zeal for two years, but it hadn’t taken off. Zeal strove to replicate the thrill of player-versus-player encounters in massively multiplayer online role-playing games like World of Warcraft. Dinçer and Popov imagined a game that would be competitive, customizable, tightly-designed, and itch-scratching. Lycanic attempted to raise funds for the game on Kickstarter, but canceled it after it only accrued a fraction of its goal. Still, there were specks of light: Its nearly 300 Steam reviews were “mostly positive.” A couple of big Twitch streamers even gave it a go, including Chance “Sodapoppin” Morris, who has 2.5 million followers.

“We didn’t have a marketing budget,” said Dinçer. “We were just indie developers trying to fulfill our passion. We thought the idea of the game was good, and if the implementation was good enough, people would be interested—publishers, investors, et cetera. But we had no network or connections.”

Mahal, who was active in an MMORPG Discord group, heard about Zeal from a fan of the game in that server. Straightaway, Dinçer said, Mahal offered to combine forces. “He wanted to buy our company and dissolve it,” Dinçer said. “It felt good.”

Holden said Mahal told her that his family, or a family connection, had invested $25,000 in his studio, and more money was coming from other investors. Holden dedicated herself to assembling and managing the team, which turned out to be comprised of around 25 people, not 48. There were 2-D artists, 3-D artists, designers, marketers, and even interns, all of whom she diligently helped manage for 60 hours a week on top of her part-time office manager job. There was the Croatian developer who goes by PD, a tech lead designing Zeal’s roadmap. There was Brandon Murphy, father of four from Virginia who had recently been laid off from PlayStation after spending seven years there as a regional sales rep. There was the concept artist Júlia Caroline Santana. And then, of course, there were the original developers of Zeal, Dinçer and Popov.

The studio was also developing an MMO called AetherBound. “There was a fair amount of concept art” for that game, Holden said, but little else. Zeal’s publication would help give their studio some legitimacy first. Mahal told Holden that his background included a stint for Amazon Game Studios as a junior art director. While he was there, he said, he was contracted out to Bioware to help with Dragon Age Inquisition. He said that he had studied under Mike Laidlaw, then the senior creative director of the Dragon Age franchise, who he said was now coaching him on Drakore Studios’ projects.

“I have no recollection of anyone by that name, so I find it hard to imagine I was coaching them in any capacity,” Laidlaw told Kotaku via email. Amazon Game Studios did not return Kotaku’s request to confirm Mahal’s employment there.

After some light research, Dinçer and Popov agreed with each other that they had some reservations about this guy. There just wasn’t enough of a paper trail on him. But what did they have to lose? “Even if there was a slight chance of this guy being legit and getting marketing people, I thought it was worth the shot,” Dinçer said. “The situation with our game was already rock bottom.”

Lycanic signed a contract with Drakore stating that it would turn over their rights to Zeal to Mahal’s company in exchange for an upfront payment of $7000, plus the promise of salaried positions and revenue sharing, and remain with the project as its lead developers. Soon enough, Zeal had a full game development team behind it. Brooke Holden and Brandon Murphy wrote a pitch deck with 21 slides in orange and pink and sent it out to 32 game publishers. Some of them, like Devolver and Team17, sent back responses.

Sometimes when Mahal would convey feedback on Zeal, he’d frame it as second-hand expertise from his contacts at the big game publishers: his buddy at Riot Games thought Zeal was doing cosmetics all wrong, or his friend at a big publisher was on the brink of investing, but wanted a class system, not a character system.

“I sat with my wife and was like, ‘Look. That’s one month. We have enough money in the bank where I can sit here for one month and put all of my effort into Zeal.’”
Dinçer began to suspect that Mahal was masking his own opinions as those of his (possibly imaginary) friends. Other things he told his staff struck them as fishy, too. Mahal said someone at Epic Games offered him $2 million for the MMORPG AetherBound. (An Epic Games representative told Kotaku via email that there is “no truth” to that statement.) Mahal began asking his staff whether they could design an Auto Chess-style game, and ship it in a couple of months. There was even talk of moving all the studio’s employees to Canada, which was particularly enticing to some of them because of the promise of free healthcare.

All the while, Drakore Studios’ employees pressed Mahal to show them Drakore Studios’ paperwork, which no one had yet seen. Why wasn’t Drakore registered in Canada? More importantly: When would the first paycheck come through?

All throughout these six weeks, none of the people Kotaku spoke with was paid, or knew anyone else who said they had ever received money in exchange for their services to Drakore. Most of them said they expected that at least a few paychecks were coming.

“He said they had a $25,000 investment, which would last until the end of August,” said Holden. When she pressed him, she said, Mahal replied that Drakore had already “burnt through that $25,000,” and that unless he could drum up more funding, nobody was going to get paid. Staffers Kotaku spoke with said they were working between 20 to 60 hours a week for Drakore Studios between mid-June and mid-July.

Brandon Murphy, who had been laid off in early June by PlayStation and had four kids to feed, said he was told he’d be paid by July 11. Murphy said he had turned down six job offers in favor of Drakore. “I sat with my wife and was like, ‘Look. That’s one month. We have enough money in the bank where I can sit here for one month and put all of my effort into Zeal. The money is coming in one month.” When July 11 arrived, no money arrived with it.

Mahal told Kotaku that the $25,000 did exist, but did not show any records to prove it. “Let’s say I took the $25,000 and blew it on drugs and never paid out a single person,” he said. “I made it clear to everyone I spoke to that there’s a real chance we don’t get funding.” When asked why he said staffers would receive payment July 11, Mahal said that “there was an investor I was talking to who was possibly going to pan out.”

In an effort to drum up investor interest in Zeal, Mahal contacted Jonathan McKay, who runs the Canada-based studio Skymarch Entertainment. “He wanted me to help raise money for him,” McKay told Kotaku over a Discord voice call. “He said he had a background art directing and had been in the industry for a while. Everyone likes to throw out these buzzy companies they worked for, which mean nothing to me.”

McKay, who said he has helped other aspiring studio leads raise money and “find the right connections to make their dreams a reality,” thought Zeal looked cool, but he wanted to do some research into Drakore Studios, and asked to talk to some of Mahal’s employees. Mahal introduced McKay to Brooke Holden.

Holden had become increasingly suspicious of her boss over the last month. She still had not seen a penny in payment, and the stories Mahal was telling her, which she was sharing with the rest of Drakore Studios’ staff, were increasingly unbelievable—enthused investors in high places, around-the-corner pay-offs. Speaking to McKay, she started telling him about her role in the studio and its goings-on around Zeal. Soon, the conversation shifted, and Holden says that McKay’s voice dropped into a “very serious tone.”

“It’s going to be very hard for me to find you investments,” McKay told Holden.

“Why?” Holden said.

“First off: The company is not real.”

“Stupidity is what I chalk it up to,” Rana Mahal told Kotaku. “I was just thinking, ‘Okay, things will work out.’ Counting your chickens before they hatch.”

Drakore Studios, Ltd., the legal entity that had signed the deal with Lycanic to acquire the rights to Zeal, was never registered in Canada or any other country. Mahal’s explanation for this was that his family’s Canada-based accountant, on whom he was relying to do the requisite paperwork, had taken a long vacation to India after he filed the incorporation documents. The accountant returned, he said, to find that the paperwork had not been accepted in the interim.

“We were fucked from day 1.”
Over the course of her call with McKay, Holden not only found out once and for all that Drakore was not a registered company, but also that Mahal did not actually hold the rights to Zeal, the game they had all been developing full-time over the last month. In the contract between Lycanic and Drakore, reviewed by Kotaku, Mahal cites the sale of Zeal to the “active legal entity named ‘Drakore Studios Ltd., organized and existing under the laws of province [sic] of Ontario, Canada.” It says Mahal would buy out Mert Dinçer and Tim Popov’s shares in Lycanic, although all parties agree that no money was ever exchanged.

“He had the wool pulled over all these guys,” said McKay. “The lying, the deceit—he definitely was crooked to all the people he was dealing with.”

Holden began comparing notes with her colleagues. Dinçer and Popov confirmed to her that Drakore did not actually own the rights to the Zeal IP, which left her shocked.

After taking some time to collect themselves, the team hatched a plan of action. They needed to come up with a way forward, or at least, a way to stop Drakore’s momentum, fueled by the labor of its increasingly suspicious employees. On July 23, the motley crew of amateur game developers who made up the phony studio locked their leader out of everything: the Google Drive, the social media accounts, the email domain. Murphy, who had shared his personal information with Mahal as part of his job application, put a fraud alert on his social security number.

Once this was done, Holden posted the damning news in Drakore Studios’ Slack.

“There are some facts that have VERY recently come to light that none of us had been made aware of,” she wrote. “Firstly, as far as we can tell, Drakore Studios has never existed. Several of us have been asking for the business number for MONTHS and have received nothing. Not only that but Drakore at no point, actually owned Zeal, the IP still lies with Mert and Tim, something that I personally had been led to believe otherwise so I apologise if I passed along that (or any other) misinformation. These two facts combine to make us absolutely UNFUNDABLE. No publisher or investor in their right mind would invest in a company that both doesn’t technically exist, or hold the IP rights to the game they are trying to sell. We were fucked from day 1.”

Holden went on to say that Dinçer and Popov had decided to leave Drakore and take Zeal with them. “None of this is their fault,” she wrote; “they were told half stories and misinformation too. I hate to say this, but I HIGHLY doubt that ANY of us will see a penny from Drakore. There never was any money that I can find any evidence of. Just promises.”

In his conversation with Kotaku, Mahal said that he did intend to take over Lycanic Studios and argues that he did “temporarily” have the rights to Zeal according to the contract. He also pushed back on the idea that Drakore was a “scam.”

“It’s funny that some people are like, ‘You made a scam,’” he said. “I’m like, ‘Okay, great scam, where I work 80 to 100 hours a week for no money. Best scam ever.” But the fact remains that Mahal, by most accounts, told employees that he owned the rights to a game he didn’t own the rights to and that he would be able to pay them for their work when he didn’t yet have the funds. Mahal told Kotaku that he still intends to pay his employees for their work, although he is not currently receiving regular paychecks anymore from his family’s construction company, where he works. He maintained that his deal with Lycanic was “definitely” a “helping-them-out thing.”

Several times throughout the interview, Mahal failed to come up with evidence for claims that he had made to his staff about his background, investors, and company. At one point, he said, “I do have those contacts, but I’m not gonna name anybody. You can say I lied about it if you want to.”

Lycanic hopes that in the end, the experience with Drakore will turn out well for Zeal. “At the end of the day, this is not a loss for us. This is a win for us,” said Dinçer. “We know tons of people who want to work with us and not ask for money from us until the time the game starts making money.”

Another former Drakore employee, game developer PD, said the experience has not soured him on making games. “It’s still what I’m most excited to work on,” he said. “It’s almost not work.”

Brooke Holden hasn’t given up on the dream, either. She is staying on with Lycanic Studios while still working at her part-time office job. Brandon Murphy has taken another unpaid gig, this time as president of the esports team Slate Gaming.

“Nobody’s getting paid there,” Murphy said. “But the difference is, we all know.”

+infos(fonte): LINK

Tags : ,

Cecilia D’Anastasio, uma repórter no mundo dos videojogos


Vi esta referência a este video “The Dark Side of the Video Game Industry | Patriot Act with Hasan Minhaj | Netflix” de um “comediante/show/serious talking” de alguém que fala um pouco da industria no mercado dos videojogos, recomendo a audição do mesmo, e a reflexão sobre:

game workers united

+infos(GMU oficial): https://www.gameworkersunite.org/

E recomendo a leitura (a quem interessar) desta repórter/escritora de nome Cecilia D’Anastasio. Ela em feito um conjunto de textos que aborda por um lado as mulheres no mundo de desenvolvimento de videojogos e também tem outras abordagens (textos) mais de reflexão sobre o que se tem passado nesta industria, que como as outras, tem os seus grandes problemas.

+infos(pagina oficial): http://www.cecianasta.com/articles

+infos(aceerca da Cecilia D’Anastasio): LINK

Tags : , ,

CPCRetroDev Game Creation Contest (em Espanha)

CPC RETRODEV 2019

Parece que existe um concurso anual na Universidade de Alicante relacionado com a criação de videojogos retro. Não percebi ainda se o propósito é apenas de usar uma única plataforma ou se todos os anos eles alteram o formato.

O concurso teve inicio do final de julho/2019 e termina no final de outubro/2019 e está aberta a todos os que querem participar :), sendo que o objetivo deste ano é o de programar para o Amstrad CPC 464. Podem ser usadas por exemplos, as seguintes ferramentas:
CPCtelera game engine
8 Bits de Poder (8BP)
CPCRSLib library
cpcitor’s cpc-dev-toolchain

Os prémios são repartidos pelas seguintes categorias:
Special mentions:
150 € – Gominolas for the best music
150 € – Carlos Abril for the most entertaining game
150 € – Pablo Ariza for Artificial Intelligence and technical accomplishments
150 € – Arcade Vintage for the best arcade game

PRO Category:
300 € – Best game
220 € – Second place
150 € – Third place
100 € – Fourth place
70 € – Fifth place

Categoría UA:
135 € – Best game created by a Universidad de Alicante student
75 € – Second Best game created by a Universidad de Alicante student

+infos(oficial): http://cpcretrodev.byterealms.com/contest-en/cpc-retrodev-2019/

+infos(fonte vintageisthenewold.com): LINK

Tags : ,

DiGRA (Digital Games Research Association)

“DiGRA is the association for academics and professionals who research digital games and associated phenomena. It encourages high-quality research on games, and promotes collaboration and dissemination of work by its members.”

encontrei esta associação que reúne investigadores acerca de jogos :) .. vamos lá ver no que eles partilham ;)

+infos(oficial): http://www.digra.org/

+infos(biblioteca aberta): http://www.digra.org/digital-library/

Tags : , ,

Livros :)

Retro Gaming: A Byte-sized History of Video Games – From Atari to Zelda, por Mike Diver
+infos(loja): LINK

A Brief History Of Video Games: From Atari to Virtual Reality (Brief Histories), por Rich Stanton
+infos(loja): LINK

Games, Design and Play: A Detailed Approach to Iterative Game Design por Colleen Macklin
+infos(loja): LINK

Indie Games : The Complete Introduction to Indie Gaming, por Mike Diver
+infos(loja): LINK

Tags : ,

Mais uma daquelas páginas que é para ser consultada de forma regular :) O espaço gamefromscratch.com apresenta noticias bem como o acesso a vários recursos como é o caso de referências para cursos online acerca de gameEngines :)

+infos(oficial): https://www.gamefromscratch.com/

Business of Indie Games, vídeos para aprender

Encontrei este canal no youtube que fala acerca do negócio dos Indie Games.. são entrevistadas várias pessoas que falam da sua experiência nestas áreas :) aparecem também alguns especialistas que referem umas coisas catitas.

“A channel dedicated to helping indie devs and small to mid size game dev studios master the business side of making video games. Bringing together top game developers to talk about the mistakes they’ve made, their triumphs and what they’ve learned. Focusing on how to create a hit game, get it funded and developed and then discovered.”

+infos(Business of Indie Games): LINK

Tags : , , ,

Humble learn game development bundle (uma campanha)

A malta do Humble Bundle tem a decorrer uma Bundle de vários cursos acerca do desenvolvimento de videojogos. Por 30 euros têm acesso a 8 cursos online da malta do GameDev.tv

A lista do pack completo é constituído por:
How to Get A Job in the Video Game Industry
Finish It! Motivation and Processes for Game & App Development
Blender Environment Artist
Git Smart: Learn Git The Fun Way With Unity Games
Complete C# Unity Developer 3D
RPG Core Combat Creator
Complete C# Unity Developer 2D
Learn Unity 3D Game Kit – Make Games Without Coding

+infos(a campanha): LINK

Tags : , ,

Um portal de ligação de Indie GameDevs

O develteam.com é um portal onde se podem encontrar uma série de referências acerca da malta que faz do desenvolvimento de videojogos independente um modo de vida. Podemos ter acesso e procurar/encontrar profissionais para determinadas tarefas ou até mesmo referências como é o caso do audio, gráficos entre outros que fazem parte das stuffs necessárias para esse desenvolvimento.

É mais um portal que junta uma comunidade :)

+infos(oficial): https://www.develteam.com/

ZX Spectrum what else :)

Mais um daqueles portais catitas acerca do mundo ZX Spectrum :) o worldofspectrum.org Apesar de não ser actualizado à muito tempo tem uns links interessantes e ainda a funcionar, como é o caso do acesso a roms :)

+infos(mundo spectrum): http://worldofspectrum.org/

E existe uma malta por aí que ainda deve ter uns ZX Spectrum por casa e que nada podem fazer com eles, já que precisam de umas Tvs especificas ou então aquelas cassetes já não funcionam como deve ser :) Uma malta da Holanda desenvolveu uma peça catita que permite ligar o ZX Spectrum a qualquer monitor que tenha uma entrada HDMI.

A peça em causa é a ZX-HD HDMI INTERFACE e que faz uso de um Raspberry Pi Zero para fazer a comutação para HDMI :) O preço da mesma ronda os 70 euros, mas depois é necessário adquirir também o Raspberry Pi que são mais 20 euros e pagar os portes :)

É interessante esta peça já que permite e sem andar a soldar coisas fazer uso sem mais demora do ZX Spectrum (ZX Spectrum 16K, 48K, 48K+, 128K, +2, +2A, +2B, +3)

+infos(oficial): https://www.bytedelight.com/

+infos (a ZX-HD): LINK

Tags : ,