Coder Social home page Coder Social logo

mc504---projeto-2's Introduction

Localização dos arquivos:

mycall.c: linux-3.12/arch/x86/kernel/

ex-mycall: linux-3.12/ (arquivo de teste)

A instalação dos arquivos segue o procedimento descrito na página da discliplina.

Idéia: a idéia principal dessa syscall é fazer com que um processo ganhe prioridade de execução sobre todos os outros e execute por um tempo indeterminado, ou seja, até que complete sua tarefa, seja posto para dormir ou sofra uma interrupção. Isso é feito escalonando-se o processo na política FIFO e atribuíndo-se a ele a prioridade máxima dentre a de todos os outros processos que pertençam a classe de escalonamento Real Time (FIFO ou RR).

Teoria: no sistema dado, exitem duas classes de escalonamento: Completely Fair Schedule Class e RT schedule Class.

Completely Fair Schedule Class: os processos que possuem qualquer uma das seguintes políticas: SCHED_NORMAL, SCHED_OTHER, SCHED_BATCH e SCHED_IDLE pertencem a essa classe de escalonamento. Vale notar que para esses processos, a prioridade não é definida de maneira estática, logo, para cada um desses processos, o sistema operacional calcula a prioridade de execução com base em vários parâmentros e, fazendo uso de uma estrutura de dados do tipo árvore vermelha e preta, organiza a ordem de execução dos mesmos.
A implementação dessa classe encontra-se em /kernel/sched/fair.c

RT schedule Class: os processos que possuem as políticas FIFO ou RR pertencem a essa classe de escalonamento. Tais processos tem prioridade de execução sobre os processos da classe Completly Fair Schedule e possuem prioridade definida (rt_priority) que vai de 1 (menor prioridade) até 99 (maior prioridade).
Processos RR: são escalonados com base na política RR (quantum) e executam até que completem sua tarefa, sejam postos para dormir, sofram uma interrupção ou o seu quantum termine. 
Processos FIFO: são escalonados com base na política FIFO e executam até que completem sua tarefa, sejam postos para dormir ou sofram uma interrupção. Processos desse tipo podem gerar starvation em processos de menor prioridade.
A implementação dessa classe econtra-se em /kernel/sched/rt.c

Implementação: a implementação da idéia consiste em verificar, para todos os processos da classe RT, qual possui a prioridade mais elevada, atribuir uma prioridade maior ou igual ao processo cujo pid fora passado como parâmetro e alterar o tipo de escalonamento desse processos para o tipo FIFO.

Testes: os testes podem ser realizadas da seguinte forma:

1 - Com o comando top verifica-se um possível processo para ser aplicada a syscall.
2 - Com o comando chrt -p {<pid>} verifica-se qual é a política de escalonamento do processo e sua prioridade.
3 - ./ex-mycall {<pid>}
4 - Com o comando top ou chrt -p {<pid>} pode-se verificar a alteração (se houver).

mc504---projeto-2's People

Contributors

henriquelc avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.