URL: https://linuxfr.org/forums/linux-noyau/posts/sched_fifo-et-signal-alarme Title: SCHED_FIFO et signal alarme Authors: cosmoff Date: 2019年01月01日T19:18:48+01:00 License: CC By-SA Tags: Score: 2 Bonjour à tous je dispose d'un processeur quad-core. je veux faire planter mon ordi en infectant a chaque processeur un processus avec une priorité maximale et avec comme politique d'ordonnancement SCHED_FIFO. Donc des que le noyau affecte mon processus a un processeur, le processus ne rend jamais la main. voici mon code: ```C int main(void) { struct sched_param schedParam; schedParam.sched_priority = 99; if ( sched_setscheduler(getpid(), SCHED_FIFO, & schedParam) != 0) { fprintf(stdout, "error scheduler\n"); } //alarm(20); while(1); return 0; } ``` je lance sur un terminal: `sleep 10; tasket -c 0 ./a.out` puis sur un autre `sleep 10; tasket -c 1 ./a.out` puis sur un autre `sleep 10; tasket -c 2 ./a.out` puis sur un autre `sleep 10; tasket -c 3 ./a.out` et au bout de 10 secondes tout les processus sont en RUN sur chacun de mes processeurs et mon ordi plante, je ne peux plus rien faire. Objectif réussi :) Puis dans un second temps je dé-commente //alarm(20); de mon programme. et la au bout de 20 seconde de plantage, le noyau détruit les processus et je peux de nouveau utiliser mon ordinateur sans devoir le redémarrer. Mais l'instruction alarm(20) indique au noyau d'envoyer un signal au processus. Mais comment le noyau peut continuer a faire des choses alors que tous les processeurs sont utilisés et que les processus avec la politique d’ordonnancement que j'ai initialisé, interdit a aucun autre processus de prendre la main y compris le noyau non ?? voila je reconnais que c'est un peu long, et je vous remercie par avance pour vos éclaircissements.

AltStyle によって変換されたページ (->オリジナル) /