J'ai lu un peu sur les discussions et les interruptions. Et il y a des sections qui disent que la programmation parallèle à l'aide de threads est plus simple car nous n'avons pas à nous soucier des interruptions.
Cependant, quel est le mécanisme dans lequel les signaux de la libération du système de blocage appellent sinon une interruption?
Exemple
Je lis un file dans mon thread qui utilise un appel système de blocage pour lire le file à partir du disque.
Pendant ce time, d'autres threads sont en cours d'exécution.
À un moment donné, le file est prêt à être lu sur le disque dur.
En informe-t-il le processeur via une interruption matérielle, de sorte qu'il puisse faire un changement de context dans le thread qui a demandé le file?
Les interruptions sont traitées par le operating system, les threads (ou les process, d'ailleurs) n'en sont même pas conscients.
Dans le scénario que vous peignez:
read()
; le kernel reçoit la requête, réalise que le thread ne fera rien tant que datatables n'arriveront pas (blocage de l'appel), de sorte que le thread est bloqué. Quelque chose comme ça, de toute façon. Non, la CPU n'est pas assignée au thread en attente lorsqu'une interruption arrive pour signaler l'achèvement du transfert. Il pourrait interrompre un autre thread, et l'exécution reprend probablement ce thread (ou peut-être un autre pourrait être sélectionné).