O escalonador é um componente essencial em sistemas operacionais modernos, responsável por determinar qual processo ou thread será executado pela CPU em um dado momento. Com múltiplos processos competindo por tempo de processamento, o escalonador organiza essa fila, priorizando e distribuindo os recursos de forma eficiente. A maioria dos algoritmos de escalonamento no Linux baseia-se em prioridades para garantir que os processos sejam executados de forma justa e otimizada, proporcionando um uso balanceado e eficaz da CPU e dos dispositivos de entrada e saída (E/S).
- Primeiramente usamos uname para o kernel do sistema:
uname -r
-
Utilizando o comando wget e o link do kernel.org conseguimos o código do kernel:
wget https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/snapshot/linux-5.15.tar.gz
-
Extraia o arquivo .tar:
tar -xzvf linux-5.15.tar.gz
- Instalar a biblioteca curses e algumas outras ferramentas para nos ajudar a compilar :
sudo apt-get install kernel-package libncurses5-dev fakeroot
- Aplicar as mudanças de implementação e criação de novos arquivos:
/include/uapi/linux/sched.h
/kernel/sched.h
/kernel/core.c
/kernel/sched_background.c
/kernel/sched_background.h
- Configure o kernel
Possui duas opções de configurações usando cp /boot/config-$(uname -r) .config que baixa as configurações do kernel atual,
logo se o kernel não for o mesmo, ou caso tenha um kernel especifico,
será necessário modificações, ou usando make defconfig vem configurações padrões, onde drivers e outros utensílios estão
desativados.
Utilize make menuconfig para modificações desejadas, caso não tenha pode pular
- Compile o kernel
make -j$(nproc)
- Instale o kernel
sudo make modules_install
sudo make install
- Atualize o grub e reinicie(segurando shift para selecionar o kernel desejado)
sudo update-grub
sudo reboot
- Verifique a nova versão do kernel
uname -r
- Teste a nova política
Criar dois arquivos teste_background.c e teste_performance.c para os testes.
Após a criação basta usar os comandos:
gcc -o teste_background teste_background.c
sudo ./teste_background
gcc -o teste_performance teste_performance.c
sudo ./teste_performance