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.