Um Sistema Operacional de Tempo Real (RTOS da sigla em inglês Real Time Operating System) é um sistema operacional destinado à execução de múltiplas tarefas onde o tempo de resposta a um evento (externo ou interno) é pré-definido; não importando, como é comum pensar-se, se a velocidade de resposta é elevada ou não. Esse tempo de resposta é chamado de prazo da tarefa e a perda de um prazo, isto é, o não cumprimento de uma tarefa dentro do prazo esperado, caracteriza uma falha do sistema. Outra característica dos sistemas de tempo real é a sua interação com o meio ao redor. Os STR tem que reagir, dentro de um prazo pré-definido, a um estímulo do meio. Por exemplo, em um hospital, o sistema que monitora os batimentos cardíacos de um paciente deve avisar os médicos caso haja alteração nos batimentos. Outro aspecto importante dos STR é a previsibilidade. O sistema é considerado previsível quando podemos antecipar seu comportamento independentemente de falhas, sobrecargas e variações de hardware.
Um RTOS facilita a concepção de um sistema em tempo real, mas não garante que o resultado final seja um sistema de tempo real, para tal é necessário que o programa nele implementado tenha sido corretamente desenvolvido. Um RTOS não tem que ter necessariamente um elevado débito nas saídas, ou um elevado número de saídas, no entanto, tem que garantir que certas tarefas sejam executadas em um determinado intervalo de tempo. Um RTOS é mais eficaz e é mais valorizado pela forma previsível e rápida na resposta a um evento, do que pela quantidade de dados que processa. Os fatores chave em um STR são, então, fornecer latências de interrupções e de alternância de tarefas mínimas.
Para criar um kernel RT (Real Time) é necessario baixar o kernel principal e o patch do kernet rt.$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.12.tar.bz2">http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.12.tar.bz2
$ wget http://www.kernel.org/pub/linux/kernel/projects/rt/patch-2.6.31.12-rt21.bz2">http://www.kernel.org/pub/linux/kernel/projects/rt/patch-2.6.31.12-rt21.bz2
# yum install gcc ncurses ncurses-devel kernel-devel -y
# cd /usr/src/kernels
#cp /< diretorio onde voce baixou seu kernel>/linux-2.6.31.12.tar.bz2 .
#cp /< diretorio onde voce baixou seu patch>/patch-2.6.31.12-rt21.bz2 .
# tar -jxvf linux-2.6.31.12.tar.bz2
# cd linux-2.6.31.12
# bzcat ../patch-2.6.31.12-rt21.bz2 | patch -p1
# make oldconfig
# make menunconfig
# make bzImage && make modules && make modules_install
# cp arch/x86-64/boot/bzImage /boot/vmlinuz-2.6.31.12-rt
# cp System.map /boot/System.map-2.6.31.12-rt
# cp .config /boot/config-2.6.31.12-rt
# cd /boot
# mkinitrd initramfs-2.6.31.12-rt21.img 2.6.31.12-rt21
# cd grub
# gedit menu.lst
Copie uma linha do arquivo e altere os dados para o seu novo kernel, como no exemplo: Copie o do seu arquivo e não este, pois as informações do HD são diferentes.
title Fedora (2.6.31.12-rt)
root (hd0,2)
kernel /vmlinuz-2.6.31.12-rt ro root=/dev/mapper/vg_lcad12-lv_root nomodeset rhgb quiet
initrd /initramfs-2.6.31.12-rt21.img