Projeto de execução dinâmica de processos
Sistemas Operacionais – Prof. Edson Ifarraguirre Moreno
Turma: 128, Ciência da Computação
O presente trabalho tem por objetivo explorar temas referentes ao escalonamento e troca
entre processos que utilizam um dado processador. É previsto o desenvolvimento de um
ambiente que empregue diferentes políticas de escalonamento, bem como gerencie a inclusão e
remoção de processos que ocupam o processador. A carga de processos deverá ser feita a partir
de programas que utilizarão uma linguagem assembly hipotética.
Descrição de programas
O usuário deverá ser capaz de descrever pequenos programas a serem executados pelo
ambiente. O ambiente de execução é baseado em acumulador. Assim, para a execução de um
programa, dois registradores estão presentes: (i) o acumulador (acc) onde as operações são
realizadas e (ii) o ponteiro da instrução em execução (pc). A linguagem de programação
hipotética a ser empregada pelo usuário para a programação e que manipula os dois
registradores descritos é apresentada na Tabela 1.
Tabela 1 - Mnemônicos e funções associadas
Mnemônico
ADD op1
Função
acc=acc+(op1)
SUB op1
acc=acc–(op1)
MULT op1
acc=acc*(op1)
DIV op1
acc=acc/(op1)
LOAD op1
acc=(op1)
STORE op1
(op1)=acc
BRPOS op1
se acc > 0 então pc <- op1
BRZERO op1
se acc = 0 então pc <- op1
BRNEG op1
se acc < 0 então pc <- op1
STOP
fim de execução
Cabe destacar que os mnemônicos acima realizam operações com modo de
endereçamento direto e imediato com a memória. Na Tabela 1 as operações indicadas como
(op1) representam o modo direto de endereçamento, ou seja, o conteúdo apontado pela posição
op1 da área de dados tem de ser carregada (e.g. acc=acc+(op1)). Para os mnemônicos referentes
a saltos condicionais, op1 representa a posição da área de código que deve ser assumida por PC.
Assim sendo, descrição dos programas exigirá a definição de uma área de dados e uma área de
código. Um exemplo de programa descrito com a linguagem hipotética é apresentado na Figura.
.code
LOAD 0
SUB 1
BRPOS 1
STOP
.data
10
5
#Define a área de código
# Carrega em acc o conteúdo da posição 0 da área de dados
# Subtrai do acc o conteúdo da posição 1 da área de dados
# Caso o resultado de acc>0 deve voltar a linha 1 de código (SUB 1)
# Sinaliza o fim do programa
#Define o início da área de dados
# conteúdo da posição 0 da área de dados é 10
# conteúdo da posição 1 da área de dados é 5
Figura 1 - Código exemplo.
Durante a execução do programa, ou seja, da presença do processo, deve-se assumir que
cada instrução (Mnemônico) opera em uma unidade de tempo. Uma peculiaridade com relação
as instruções apresentadas na Tabela 1, diz respeito as instruções LOAD e STORE. Estas
instruções serão utilizadas para representar uma requisição de entrada e saída a um dispositivo.
Sendo assim, sempre que usadas, um tempo a ser pré-definido deverá ser adotado para
caracterizar um intervalo em que o processo deverá ficar bloqueado, liberando assim o
processador a ser utilizado por outro processo.
Políticas de escalonamento
Como política de escalonamento entre processos, deve ser possível escolher entre dois
tipos antes do início da operação. As políticas escolhidas para o presente trabalho são: (i) um
algoritmo não preemptivo baseado em prioridade e (ii) Round Robin com quantum definível.
O algoritmo não preemptivo baseado em prioridades, deve garantir que, na presença de
múltiplos processos na lista de prontos para execução, aquele com maior prioridade possa tomar
conta do processador antes. Deve-se assumir 3 níveis de prioridade: baixa prioridade (2),
prioridade média (1) e alta prioridade (0). No momento da carga do programa, deve-se poder
alterar a prioridade, que por padrão deverá ser baixa. Uma vez carregado o programa, este não
pode mais sofrer alteração de prioridade. Neste algoritmo, uma vez que o processo toma conta
do processador, este somente o libera quando do fim de sua execução.
O algoritmo Round Robin terá o comportamento conforme apresentado em sala de aula.
Os processos são armazenados na fila de prontos como em uma fila circula. A ordem do
próximo processo a assumir o processador é dada pela chegada deste na fila de pronto. O tempo
e ocupação de cada processo no processador é um parâmetro que poderá ser definido quando do
início da operação. Uma vez carregado o primeiro programa na lista de pronto, o quantum não
poderá mais ser alterado. Deve-se assumir que, supondo que um processo A venha a ser
removido do processador para que um processo B o ocupe, quando da retomada do processo A,
este deve seguir sua execução do último ponto de parada. O tempo necessário para troca de
contexto deve ser desconsiderada para o presente trabalho.
Interface da aplicação
O ambiente a ser desenvolvido deve permitir definir qual(is) programa(s) será (serão)
carregado(s), o(s) instante(s) de carga (arrival time), e a prioridade quando assim for necessário.
Como resultado da operação com os programas, deve-se permitir avaliar o waiting time, o
processing time e o turnaround time de cada um dos processos executados. Adicionalmente,
deve-se poder observar os processos que estão nos diferentes estados (pronto, executando,
bloqueado, finalizado).
Informações adicionais
Trabalho deverá ser realizado em duplas. Deverá ser entregue o código fonte do
programa desenvolvido bem como um manual do usuário em formato PDF. A data de entrega
está prevista para o dia 11/04/2012, antes do início da aula. As apresentações dos trabalhos
ocorrerão nos dias 11/04/2012 e 16/04/2012. O sorteio dos grupos que apresentarão em cada dia
será feito no dia 11/04/2012 em sala de aula. As apresentações serão feitas pelos alunos a partir
do material postado no moodle.
O trabalho deverá ser entregue no moodle a partir de um arquivo compactado (.zip, .rar
ou .7zip). O nome do arquivo deverá ser tal que contenha o nome e sobrenome de todos
integrantes do grupo. O material postado no moodle é de inteira responsabilidade do aluno. A
presença de arquivos corrompidos, que impeçam a avaliação do trabalho pelo professor será
considerada como a não entrega do trabalho. Também não serão considerados trabalhos com
erro de compilação. Casos onde sejam identificados plágio/cópia receberão nota zero.
Download

Enunciado do TP1