/escalonador-de-processos

Repositório criado com o objetivo de armazenar os códigos do escalonador de processos, trabalho feito para a disciplina TCC00316 em 2024.1.

Primary LanguageC

Escalonador de Processos - Sistemas Operacionais


Seja um sistema operacional que possui um escalonador de processos e considera um número limitado de recursos disponíveis, sendo que quatro desses recursos são CPUs. Neste sistema, todas as CPUs compartilham a memória principal (RAM).
O sistema possui os seguintes recursos:
  • quatro CPUs;
  • quatro discos;
  • 32gb de memória RAM.

Escalonador de curto prazo:

Os processos que são submetidos vão ser escalonados de acordo com a seguinte politica feedback considerando as seguintes características:
  • Quatro filas de processos prontos que são manipuladas de acordo com a especificação do feedback;
  • O quantum definido é de 3 unidades de tempo (defina sua unidade de tempo).
Processos de usuários podem usar qualquer um dos recursos, mas o sistema é notificado de que recursos o processo vai precisar no momento de sua submissão. O despachante assegura que cada recursos solicitado está apenas disponível para o processo requisitante durante toda a sua execução.

Alocação de memória:

A imagem do processo deve ser toda carregada para memória quando disponível. Quando o processo terminar, aquele espaço de memória deve ser liberado. Deve ser proposto uma forma de gerenciar essa memória, alocando o espaço nela e não simplesmente contabilizando a memória alocada.

Processos:

Processos no sistema em questão são criados pelo despachante. Mensagens devem ser apresentadas nas seguintes situações:
  • Uma mensagem que mostra a identificação do processo a ser criado;
  • Uma mensagem relata quando um processo muda de estado. Exemplo "Processo #id de: estado-atual para novo-estado", onde #id é a identificação do processo.
  • Todo processo ao ser executado passa por três fases:
    • fase 1 de CPU;
    • fase de I/O;
    • fase 2 de CPU.
OBS: o percentual de CPU e da I/O será dado no arquivo de entrada que simula a criação (com características) dos processos a serem executadas (dado abaixo).

Filas:

De acordo com o estado do processo ao longo de sua vida no sistema, o processo pode estar em algum tipo de fila. É necessário definir as filas tanto para implementar a política de escalonamento, como para manipular a espera por eventos que venham a ocorrer.

Entrada do simulador:

Uma lista de processos e seus eventos descreve informações sobre os processos a serem executados pelo sistema. A lista deve estar contida em um arquivo de texto que serve como entrada para o seu sistema. Cada linha da lista descreve um processo com os seguintes dados, delimitados por vírgula + espaço:
(Momento Chegada), (duração de CPU fase 1), (duração de I/O), (duração de CPU fase 2), (#Mbytes), (#disco)

Como executar o código?

Linux (Ubuntu 23 ou 22.04 LTS):

  1. Clonar o repositório "https://github.com/amandazirpolo/escalonador-de-processos.git"
  2. Abrir a pasta codes no repositório
  3. Caso não tenha o Python instalado, instale as bibliotecas que estamos usando:
    1. sudo apt install pip
    2. .sudo apt-get install python3.dev
    3. pip install -r requirements.txt
  4. find /usr/include -name Python.h para achar o diretório Python.h no seu computador
  5. gcc -I/usr/include/python3.x -o main main.c -lpython.3x para compilar (X é a versão do Python no seu computador)
  6. ./main para rodar o código

Windows (10 ou 11):

OBS: é necessário ter instalado o Python para todos os usuários do sistema por meio do site oficial.
  1. Clonar o repositório "https://github.com/amandazirpolo/escalonador-de-processos.git"
  2. Abrir a pasta codes no repositório
  3. cl /I C:\Python3X\include main.c /link /LIBPATH:C:\Python3X\libs python3X.lib para compilar (X é a versão do Python no seu computador)
  4. main.exe para rodar o código

Ferramentas utilizadas no desenvolvimento:


Alunos:


Nome GitHub Email
Amanda S. Zírpolo https://github.com/amandazirpolo amandazirpolo@id.uff.br
Gabriel J. Panza https://github.com/Gabriel-Panza/Gabriel-Panza gabrieljp@id.uff.br
Gustavo C. M. de Medeiros https://github.com/GusMedeiros gustavomedeiros@id.uff.br
João Vitor de Santana https://github.com/Jvssaa santanajoao@id.uff.br
João Vitor de Moraes https://github.com/JohKemPo/JohKemPo joaovitormoraes@id.uff.br



Universidade Federal Fluminense, 2024