Oui on peut mais ça a quelques conséquences, c'est pour ça que la majorité des Linux et en particulier Android ne le sont pas.
Le patch PREEMPT-RT de Linux permet d'ajouter des contraintes de temps-réel "dures" (Wikipedia explique les différentes notions mieux que moi), mais je ne crois pas qu'il implique des grosses contraintes sur les systèmes (à part de coder des applications qui fonctionnent en conséquence).
La plupart des systèmes sous Linux (Android inclus) n'ont pas besoin de cette notion de temps de réponse borné, car si ça ne marche pas dans un temps X, il n'y a aucun impact (ou au pire un utilisateur un peu énervé).
Un autre projet très intéressant est Xenomai, qui ajoute un noyau à côté de Linux (un co-noyau) qui va dispatcher le temps de calcul pour effectuer du temps-réel. L'avantage c'est que les programmes normaux n'ont aucune modification pour fonctionner, tandis que les applications Xenomai travailleront directement avec le noyau Xenomai. Comme c'est un peu compliqué, je vous laisse aller regarder sur le site si celà vous intéresse.
Sinon niveau langages, généralement ça dépend du projet et du niveau de criticité. Perso j'ai vu beaucoup de C.