Le probleme le plus grand la dedans est la définition de "n'est pas utilisé".
C'est un peu l'idée des programme comme folding@home qui se reveille apres un certain d'inactivité de l'utilisateur. Cependant, cette définition n'est pas suffisante. Parceque l'on peut avoir des programmes qui tournent en arriere plan et qui consomme des ressources.
Pour bien faire les choses, il ne faudrait pas que ce soit le programme qui choisisse de travailler ou non, mais le systeme d'exploitation (ou assimilé) qui le reveil quand il faut.
En fait, ta question rejoint le probleme de restreindre une application a ne pas utiliser plus de x% de la bande passante disque dur, ou x% de la bande passante réseau.
Bien que tout cela soit facil a faire en théorie, c'est super difficile a faire en pratique car il faut aller modifier les couches basses du système d'exploitation pour monitorer ce genre de chose.
C'est probablement impossible a faire sous windows (pas d'access au code source noyaux) et difficile a faire sous linux (le code est vraiment complique). Cependant, linus nous a promis qu'il le ferait...
Je ne sais pas ce qu'il en est avec un BSD.