Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL DOURADOS – MS Novembro 2013 Acadêmico: Fábio Goulart de Matos RGM: 017707 Acadêmico: James Gotardi Castilho RGM: 15756 Sistemas Operacionais e Aplicações – Silberschatz Relatório – Escalonadores de Processos. Introdução Relatório de desenvolvimento dos escalonadores de processo em linguagem C, em ambiente UBUNTU/LINUX. Descreve os procedimentos utilizados, e dificuldades encontradas durante todo o processo de desenvolvimento da aplicação. Desenvolvimento Para cumprir as exigências do projeto foram implementados 4 arquivos: Makefile: contém todos os parâmetros de compilação. Assim basta acessar o terminal no Linux, chamar o diretório onde estão todos os arquivos das instruções e chamar o arquivo Makefile, os resultados serão exibidos na tela. Main.c: contém a chamada dos procedimentos, e alimentação dos dados para o processamento. O modelo de lista de processos passado no enunciado do trabalho foi utilizado para alimentar o arquivo de entrada. Escalonador.h: contém os protótipos das funções e estrutura do processo, que foram implementadas no arquivo escalonador.c. Escalonador.c: contém a implementação dos protótipos declarados no arquivo escalonador.h. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL DOURADOS – MS Novembro 2013 As imagem a seguir ilustram as implementações realizadas, assim como a descrição dos pontos de maior dificuldade no desenvolvimento. Mekifile: Contém os parâmetros de chamada das funções implementadas, além de funções nativas do próprio GCC, que garantem um código limpo e sem warning. Main.c: O enunciado do trabalho pedia uma menu dinâmico, deixando a critério do usuário inserir a quantidade de processos que ele quisesse. Uma das dificuldades foi criar a lista de processos de maneira dinâmica, assim o desenvolvido foi uma aplicação estática apenas com a inserção dos processos passados no enunciado do trabalho. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL DOURADOS – MS Novembro 2013 Escalonador.h: Contém o protótipo das funções implementadas no arquivo escalonador.c: Struct processos: contém os parâmetros que compõe um processo, como identificador, tempo de chegada, pico do processo, prioridade, tempo de execução e tempo de espera. Além de um ponteiro para o próximo processo. Inicializa_processos: função que faz a alocação de memoria para o novo processo, e atribui a ele os valores passados por parâmetro. Listaprocessos: procedimento que mostra na tela os processos declarados no arquivo main.c. FCFS: procedimento que executa os passos realizados no escalonador FCFS. Esse foi o procedimento mais fácil de ser implementado, posto que os processos sejam executados na ordem que vão chegando, ou seja, o primeiro que entra é o primeiro que sai. PRIORIDADE: a implementação desse procedimento tem um grau de dificuldade maior, posto que a lista de processos precisa ser ordenada de forma crescente, assim os elementos UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL DOURADOS – MS Novembro 2013 que estiverem no inicio da lista serão executados primeiro. Esse escalonador necessita de mecanismos que, possibilitem a execução de processo com baixa prioridade, já que o mesmo ordena os processos com maior prioridade deixando os de mais baixa prioridade de lado. Não tivemos resultados negativos nesse procedimento, pois a nossa main.c, não possibilitou uma quantidade elevada de entradas. SJF: com esse procedimento tivemos um problema semelhante ao do escalonador de prioridade, pois o mesmo ordena os processos de acordo com o pico, ou seja, o job de menor tamanho é executado antes dos de maior tamanho. O enunciado do projeto pedia que fosse implementado o escalonador de processos RR, mas não conseguimos fazer a implementação. Constatamos que a maior dificuldade durante o desenvolvimento, não foi entender os passos que cada escalonador toma para ordenar a fila de prontos, mas sim os problemas com as estruturas de ordenação, ou seja, ordenar as lista de processos de acordo com a sua aplicação. A saída dos processos é mostrada na tela e não em arquivo texto como era pedido. Demonstração gráfica O enunciado do projeto pedia uma demonstração gráfica. Dos protótipos implementados, foram selecionados dois: FCFS e PRIORIDADE: Em sala de aula, foi discutida uma vez a real melhoria obtida pelo uso correto do escalonador no sistema operacional em questão, isso é percebido quando a quantidade de processos é muito grande, o que não é o nosso caso, pois temos apenas 5 processos. Analisando o gráfico percebemos que o tempo de espera dos processos é menor no FCFS, mas isso seria diferente se a quantidade de processos fossem maiores. O algoritmo de prioridade executa um maior processamento de dados, assim o tempo de resposta dos processos é mais demorado. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL DOURADOS – MS Novembro 2013 UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL DOURADOS – MS Novembro 2013 Conclusão Durante o desenvolvimento dos algoritmos de escalonamento, diferente do que havíamos imaginado no inicio do projeto, a dificuldade foi a implementação das estruturas de ordenação de listas ligadas, que é exigida pelos algoritmos SJF e PRIORIDADE. Entender os passos realizados pelos escalonadores para criar a lista de prontos foi mais fácil, do que transformar esses passos em algoritmos. Embora o projeto atenda parte do enunciado proposto, conseguimos firmar os conhecimentos obtidos sobre escalonadores. Referência Gagne, A. S. (s.d.). Sistemas Operacionais Concietos e Aplicações. Campus.
Compartilhar