Vue normale

À partir d’avant-hierWayToLearnX

Exercice Corrigé Ordonnancement Des Processus – Partie 1

Par :Thomas
24 octobre 2024 à 11:50

L‘ordonnancement du processus est à la base des systèmes d’exploitation multiprogrammés. En répartissant l’unité centrale entre les processus, le système d’exploitation peut rendre l’ordinateur plus productif. Dans ce chapitre, nous présentons des exercices corrigés sur les concepts de base de l’ordonnancement, l’idée d’allocation de ressources et discutons en détail de l’ordonnancement de l’unité centrale. FCFS, SJF, Round-Robin, Priorité et les autres algorithmes d’ordonnancement devraient être familiers à vous.

 

Exercice 1: Stratégies d’ordonnancement

1.1) Expliquez pourquoi certains systèmes d’exploitation ont un ou plusieurs processus inactifs.

Les processus inactifs, souvent appelés « processus zombie » ou « processus idle », sont présents dans de nombreux systèmes d’exploitation pour plusieurs raisons.

Si aucun processus n’est dans l’état « prêt », le processus inactif du système se voit attribuer l’unité centrale. Le processus inactif du système est toujours actif mais avec la priorité la plus basse, permet au planificateur de garantir qu’il y a toujours un processus prêt à s’exécuter, même lorsque aucun autre processus n’est disponible. Cela évite des situations où l’unité centrale (UC) serait inoccupée. En créant un processus inactif pour chaque cœur de processeur, les systèmes d’exploitation modernes assurent une gestion efficace des ressources et optimisent l’utilisation de l’UC.

En résumé, les processus inactifs sont essentiels pour la performance, la réactivité et l’efficacité des systèmes d’exploitation.

1.2) Expliquez la différence entre l’ordonnancement préemptif et l’ordonnancement non préemptif.

Ordonnancement préemptif: Permet à un processus en cours d’exécution d’être interrompu pour donner la priorité à un autre processus. Utilisé dans les systèmes multitâches pour assurer une réactivité élevée. Par exemple, un processus avec une priorité plus élevée peut prendre le contrôle du CPU à tout moment.

Ordonnancement non préemptif: Un processus en cours d’exécution doit se terminer ou libérer le CPU volontairement avant qu’un autre processus puisse être exécuté. Utilisé dans des systèmes où la prévisibilité est essentielle, comme certains systèmes embarqués.

En résumé, l’ordonnancement préemptif permet des interruptions pour un meilleur contrôle, tandis que l’ordonnancement non préemptif laisse les processus terminer leur exécution sans interruption.

1.3) Citez un inconvénient de l’ordonnancement préemptif.

Un inconvénient de l’ordonnancement préemptif est l’augmentation de l’overhead du système. Les interruptions fréquentes pour passer d’un processus à un autre peuvent entraîner un coût en termes de temps de gestion et de ressources, ce qui peut nuire à la performance globale, surtout si les processus sont courts et que le temps de commutation devient significatif par rapport à leur temps d’exécution.

1.4) Citez un inconvénient de l’ordonnancement non préemptif.

Un inconvénient de l’ordonnancement non préemptif est le risque de starvation. Si un processus à faible priorité est bloqué par des processus à priorité plus élevée, il peut ne jamais obtenir l’accès au CPU, entraînant des délais d’exécution imprévus et une mauvaise réactivité du système.

1.5) Expliquer comment fonctionne l’ordonnancement par queues à plusieurs niveaux (Multilevel Queues).

Il fonctionne avec plusieurs files d’attente. Chaque file d’attente a une priorité différente ou un multiplex temporel. Chaque nouveau processus est inséré dans la file d’attente supérieure, ce qui lui confère la priorité la plus élevée. Pour chaque file d’attente, le système Round Robin est utilisé. Si un processus abandonne volontairement l’unité centrale, il est réinséré dans la même file d’attente. Si un processus a utilisé toute sa tranche de temps, il est inséré dans la file d’attente immédiatement inférieure, avec une priorité plus faible.

1.6) Décrivez ce que signifie « Partage équitable » (fair share).

Une méthode d’ordonnancement est équitable lorsque chaque processus se voit attribuer l’unité centrale à un moment donné.

1.7) Laquelle des méthodes suivantes est la méthode d’ordonnancement équitable ?

A Ordonnancement en fonction des priorités

B Premier arrivé, premier servi (First Come First Served)

C Round Robin avec quantum de temps

D Ordonnancement EDF (Earliest Deadline First: Échéance la plus proche d’abord)

E Partage équitable

C, E

Les méthodes d’ordonnancement équitables sont les suivantes:

  • C. Round Robin avec quantum de temps: Cette méthode alloue des tranches de temps égales à chaque tâche, ce qui favorise l’équité.
  • E. Partage équitable: Cette méthode vise à garantir que tous les utilisateurs ou toutes les tâches reçoivent une part équitable des ressources.

 

1.8) Laquelle des méthodes suivantes est la méthode d’ordonnancement préemptif ?

A Premier arrivé, premier servi

B Round Robin avec quantum de temps

C Partage équitable

D Ordonnancement par queues à plusieurs niveaux (Multilevel Queues)

B, D

Les méthodes d’ordonnancement préemptif sont les suivantes:

  • Round Robin avec quantum de temps: Cette méthode permet aux tâches d’être préemptées après l’expiration de leur tranche de temps, ce qui garantit la réactivité.
  • Multilevel Queues: Cette méthode peut également préempter des tâches en fonction de leur priorité et de leur comportement, ce qui permet des ajustements dynamiques.

 

1.9) Laquelle des méthodes suivantes est la méthode d’ordonnancement non-préemptif ?

A Premier arrivé, premier servi

B Round Robin avec quantum de temps

C Partage équitable

D Ordonnancement par queues à plusieurs niveaux (Multilevel Queues)

A, C

Les méthodes non préemptives sont les suivantes:

  • Premier arrivé, premier servi: Une fois qu’une tâche commence à s’exécuter, elle est exécutée jusqu’à son terme.
  • Partage équitable: Typiquement non préemptive, car elle se concentre sur la distribution des ressources sans interrompre les tâches en cours.

 

 
Exercice 2: Ordonnancement
+-----------+-----------+----------+
| Processus | Temps CPU | Priorité |
+-----------+-----------+----------+
|     A     |    5 ms   |    15    |
+-----------+-----------+----------+
|     B     |   10 ms   |     5    |
+-----------+-----------+----------+
|     C     |    3 ms   |     4    |
+-----------+-----------+----------+
|     D     |    9 ms   |    12    |
+-----------+-----------+----------+
|     E     |    8 ms   |     7    |
+-----------+-----------+----------+

Cinq processus doivent être traités sur un seul système CPU/core. Tous les processus se trouvent au point temporel 0, dans l’état « prêt ». Les priorités élevées sont caractérisées par des valeurs élevées.

2.1) Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle) pour Round Robin (quantum de temps q = 1 ms), FCFS et l’ordonnancement par priorités.

La colonne Priorité du tableau n’est pertinente que pour l’ordonnancement par priorités (Priority-Driven Scheduling) et non pour Round Robin ou FCFS.

2.2) Calculez les durées d’exécution moyennes et les temps d’attente moyens des processus.

  • Round Robin (RR): Chaque processus reçoit un quantum de temps fixe (q = 1 ms). Si le processus n’a pas terminé à la fin de son quantum, il est préempté et remis à la fin de la file d’attente. Ce cycle continue jusqu’à ce que tous les processus soient terminés.
  • First Come First Served (FCFS): Les processus sont exécutés dans l’ordre de leur arrivée. Le premier processus dans la file d’attente est servi jusqu’à sa terminaison, puis le suivant est exécuté.
  • Priority-Driven Scheduling: Chaque processus se voit attribuer une priorité. Les processus avec une priorité plus élevée sont exécutés avant ceux avec une priorité plus basse. Si un processus de priorité plus élevée arrive, il peut préempter le processus en cours.

Le temps CPU est le temps dont le processus a besoin pour accéder au CPU afin de terminer son exécution.

Durée d’exécution = durée de vie = période de temps entre la création et la fin d’un processus = (temps CPU + temps d’attente).

+------------------------------------------+----+----+----+----+----+
| Durée d'exécution                        |  A |  B |  C |  D |  E |
+------------------------------------------+----+----+----+----+----+
| Round Robin                              | 20 | 32 | 13 | 25 | 30 |
+------------------------------------------+----+----+----+----+----+
| FCFS(First Come First Served)            | 5  | 15 | 18 | 24 | 32 |
+------------------------------------------+----+----+----+----+----+
| Ordonnancement par priorités             | 5  | 29 | 32 | 11 | 19 |
+------------------------------------------+----+----+----+----+----+
RR   (20 + 32 + 13 + 25 + 30) / 5  = 24   ms
FCFS (5 + 15 + 18 + 24 + 32)  / 5  = 18,8 ms
PS   (5 + 29 + 32 + 11 + 19)  / 5  = 19,2 ms

Temps d’attente = temps pendant lequel un processus est dans l’état prêt.

Temps d’attente = temps d’exécution – temps CPU.

+------------------------------------------+----+----+----+----+----+
| Temps d'attente                          |  A |  B |  C |  D |  E |
+------------------------------------------+----+----+----+----+----+
| Round Robin                              | 15 | 22 | 10 | 19 | 22 |
+------------------------------------------+----+----+----+----+----+
| FCFS(First Come First Served)            | 0  | 5  | 15 | 18 | 24 |
+------------------------------------------+----+----+----+----+----+
| Ordonnancement en fonction des priorités | 0  | 19 | 29 | 5  | 11 |
+------------------------------------------+----+----+----+----+----+
RR   (15 + 22 + 10 + 19 + 22) / 5 = 17,6 ms
FCFS (0 + 5 + 15 + 18 + 24)   / 5 = 12,4 ms
PS   (0 + 19 + 29 + 5 + 11)   / 5 = 12,8 ms
 

L’article Exercice Corrigé Ordonnancement Des Processus – Partie 1 est apparu en premier sur WayToLearnX.

Exercice Corrigé Ordonnancement Des Processus – Partie 2

Par :Thomas
24 octobre 2024 à 23:34

L‘ordonnancement du processus est à la base des systèmes d’exploitation multiprogrammés. En répartissant l’unité centrale entre les processus, le système d’exploitation peut rendre l’ordinateur plus productif. Dans ce chapitre, nous présentons des exercices corrigés sur les concepts de base de l’ordonnancement, l’idée d’allocation de ressources et discutons en détail de l’ordonnancement de l’unité centrale. FCFS, SJF, Round-Robin, Priorité et les autres algorithmes d’ordonnancement devraient être familiers à vous.

 

Exercice 1: First Come First Serve (FCFS)

Rappel: Dans l’ordonnancement FCFS

  • Le processus qui arrive en premier dans la file d’attente est le premier à se voir attribuer l’unité centrale.
  • En cas d’égalité, le processus dont l’identifiant est le plus petit est exécuté en premier.
  • L’ordonnancement est toujours non préemptif par nature.
  • Les jobs sont exécutés selon le principe du premier arrivé, premier servi.
  • Il s’agit d’un algorithme d’ordonnancement préemptif et non préemptif.
  • Facile à comprendre et à implémenter.
  • Son implantation est basée sur la file d’attente FIFO.
  • Peu performant car le temps d’attente moyen est élevé.

1.1) Considérons les processus suivants avec un temps de rafale (temps d’exécution de l’unité centrale). Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle) pour FCFS, et calculez le temps d’attente moyen et le temps moyen de rotation.

+-----------------+-----------------+------------------------------------------+
| ID du processus | Temps d'arrivée | Temps de rafale/temps d'exécution du CPU |
+-----------------+-----------------+------------------------------------------+
| P1              | 0               | 2                                        |
+-----------------+-----------------+------------------------------------------+
| P2              | 1               | 3                                        |
+-----------------+-----------------+------------------------------------------+
| P3              | 2               | 5                                        |
+-----------------+-----------------+------------------------------------------+
| P4              | 3               | 4                                        |
+-----------------+-----------------+------------------------------------------+
| P5              | 4               | 6                                        |
+-----------------+-----------------+------------------------------------------+

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps d’attente = Temps de rotation – Temps de rafale


 

Temps moyen de rotation = 2+4+8+11+16/5 = 41/5 = 8.2 
Temps moyen d'attente   = 0+1+3+7+10/5  = 21/5 = 4.2 

1.2) Considérons les processus suivants P1, P2, P3 arrive pour être exécuté dans le même ordre, avec un temps d’arrivée de 0 avec un temps de rafale (temps d’exécution de l’unité centrale). Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle) pour FCFS, et calculez le temps d’attente moyen et le temps moyen de rotation.

+-----------------+-----------------+-----------------+
| ID du processus | Temps d'arrivée | Temps de rafale |
+-----------------+-----------------+-----------------+
| P1              | 0               | 24              |
+-----------------+-----------------+-----------------+
| P2              | 0               | 3               |
+-----------------+-----------------+-----------------+
| P3              | 0               | 5               |
+-----------------+-----------------+-----------------+

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps d’attente = Temps de rotation – Temps de rafale

+-----------+-----------------+-------------------+
| Processus | Temps d'attente | Temps de rotation |
+-----------+-----------------+-------------------+
| P1        | 0               | 24                |
+-----------+-----------------+-------------------+
| P2        | 24              | 27                |
+-----------+-----------------+-------------------+
| P3        | 27              | 30                |
+-----------+-----------------+-------------------+
Temps d'attente total = 0 + 24 + 27 = 51 ms
Temps moyen d'attente = (Temps d'attente total) / (Nombre total de processus) 
                      = 51 / 3 
                      = 17 ms
					  
Temps de rotation total = 24 + 27 + 30 = 81 ms
Temps moyen de rotation = (Temps de rotation total) / (Nombre total de processus) 
                        = 81 / 3 
                        = 27 ms
						
Débit = 3 jobs/30 sec = 0.1 jobs/sec

1.3) Considérons les processus suivants P1, P2, P3, P4 arrive pour être exécuté dans le même ordre, avec un temps de rafale (temps d’exécution de l’unité centrale). Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle) pour FCFS, et calculez le temps d’attente moyen et le temps moyen de rotation.

+-----------------+-----------------+-----------------+
| ID du processus | Temps d'arrivée | Temps de rafale |
+-----------------+-----------------+-----------------+
| P1              | 0               | 8               |
+-----------------+-----------------+-----------------+
| P2              | 1               | 4               |
+-----------------+-----------------+-----------------+
| P3              | 2               | 9               |
+-----------------+-----------------+-----------------+
| P4              | 3               | 5               |
+-----------------+-----------------+-----------------+

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps d’attente = Temps de rotation – Temps de rafale

+-----------+-----------------+-------------------+
| Processus | Temps d'attente | Temps de rotation |
+-----------+-----------------+-------------------+
| P1        | 0               | 8 – 0 = 8         |
+-----------+-----------------+-------------------+
| P2        | 8 – 1 = 7       | 12 – 1 = 11       |
+-----------+-----------------+-------------------+
| P3        | 12 – 2 = 10     | 21 – 2 = 19       |
+-----------+-----------------+-------------------+
| P4        | 21 – 3 = 18     | 26 – 3 = 23       |
+-----------+-----------------+-------------------+
Temps d'attente total = 0 + 7 + 10 + 18 = 35 ms
Temps moyen d'attente = (Temps d'attente total) / (Nombre total de processus) 
                      = 35 / 4
                      = 8.75 ms
					  
Temps de rotation total = 8 + 11 + 19 + 23 = 61 ms
Temps moyen de rotation = (Temps de rotation total) / (Nombre total de processus) 
                        = 61 / 4
                        = 15.25 ms
						
Débit = 4 jobs/26 sec = 0.15385 jobs/sec
 
Exercice 2: Shortest Job First (SJF)

Rappel: Dans l’ordonnancement SJF

  • Les processus qui ont le temps d’exécution le plus court sont ordonnancés en premier.
  • Si deux processus ont le même temps de rafale, l’algorithme FCFS est utilisé pour les départager.
  • Il s’agit d’un algorithme d’ordonnancement non préemptif et préemptif.
  • La meilleure approche pour minimiser le temps d’attente.
  • Facile à mettre en œuvre dans les systèmes de traitement par lots où le temps CPU nécessaire est connu à l’avance.
  • Impossible à mettre en œuvre dans les systèmes interactifs où le temps CPU requis n’est pas connu.
  • Le processeur doit connaître à l’avance la durée du processus.
  • Le mode préemptif de SJF est appelé SRTF.

2.1) Considérons les processus suivants P1, P2, P3, P4, P5 arrive pour être exécuté, avec un temps de rafale (temps d’exécution de l’unité centrale). Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle) pour la politique d’ordonnancement SJF non préemptive, et calculez le temps d’attente moyen et le temps moyen de rotation.

+-----------------+-----------------+-----------------+
| ID du processus | Temps d'arrivée | Temps de rafale |
+-----------------+-----------------+-----------------+
| P1              | 3               | 1               |
+-----------------+-----------------+-----------------+
| P2              | 1               | 4               |
+-----------------+-----------------+-----------------+
| P3              | 4               | 2               |
+-----------------+-----------------+-----------------+
| P4              | 0               | 6               |
+-----------------+-----------------+-----------------+
| P5              | 2               | 3               |
+-----------------+-----------------+-----------------+

Maintenant, on sait que:

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps d’attente = Temps de rotation – Temps de rafale

+-----------+-----------------+-------------------+
| Processus | Temps d'attente | Temps de rotation |
+-----------+-----------------+-------------------+
| P1        | 4 – 1 = 3       | 7 – 3 = 4         |
+-----------+-----------------+-------------------+
| P2        | 15 – 4 = 11     | 16 – 1 = 15       |
+-----------+-----------------+-------------------+
| P3        | 5 – 2 = 3       | 9 – 4 = 5         |
+-----------+-----------------+-------------------+
| P4        | 6 – 6 = 0       | 6 – 0 = 6         |
+-----------+-----------------+-------------------+
| P5        | 10 – 3 = 7      | 12 – 2 = 10       |
+-----------+-----------------+-------------------+
Temps moyen d'attente = (Temps d'attente total) / (Nombre total de processus) 
                      = (3 + 11 + 3 + 0 + 7) / 5 
                      = 24 / 5
                      = 4.8 unités
					  
Temps moyen de rotation = (Temps de rotation total) / (Nombre total de processus) 
                        = (4 + 15 + 5 + 6 + 10) / 5 
                        = 40 / 5
                        = 8 unités

2.2) Considérons les processus suivants P1, P2, P3, P4, P5 arrive pour être exécuté, avec un temps de rafale (temps d’exécution de l’unité centrale). Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle) pour la politique d’ordonnancement SJF préemptive, et calculez le temps d’attente moyen et le temps moyen de rotation.

+-----------------+-----------------+-----------------+
| ID du processus | Temps d'arrivée | Temps de rafale |
+-----------------+-----------------+-----------------+
| P1              | 3               | 1               |
+-----------------+-----------------+-----------------+
| P2              | 1               | 4               |
+-----------------+-----------------+-----------------+
| P3              | 4               | 2               |
+-----------------+-----------------+-----------------+
| P4              | 0               | 6               |
+-----------------+-----------------+-----------------+
| P5              | 2               | 3               |
+-----------------+-----------------+-----------------+

Maintenant, on sait que:

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps d’attente = Temps de rotation – Temps de rafale

+-----------+-----------------+-------------------+
| Processus | Temps d'attente | Temps de rotation |
+-----------+-----------------+-------------------+
| P1        | 1 – 1 = 0       | 4 – 3 = 1         |
+-----------+-----------------+-------------------+
| P2        | 5 – 4 = 1       | 6 – 1 = 5         |
+-----------+-----------------+-------------------+
| P3        | 4 – 2 = 2       | 8 – 4 = 4         |
+-----------+-----------------+-------------------+
| P4        | 16 – 6 = 10     | 16 – 0 = 16       |
+-----------+-----------------+-------------------+
| P5        | 9 – 3 = 6       | 11 – 2 = 9        |
+-----------+-----------------+-------------------+
Temps moyen d'attente = (Temps d'attente total) / (Nombre total de processus) 
                      = (0 + 1 + 2 + 10 + 6) / 5 
                      = 19 / 5
                      = 3.8 unités
					  
Temps moyen de rotation = (Temps de rotation total) / (Nombre total de processus) 
                        = (1 + 5 + 4 + 16 + 9) / 5
                        = 35 / 5
                        = 7 unités

2.3) Considérons les processus suivants P1, P2, P3, P4, P5, P6 arrive pour être exécuté, avec un temps de rafale (temps d’exécution de l’unité centrale). Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle) pour la politique d’ordonnancement SRTF (Shortest Remaining Time First), et calculez le temps d’attente moyen et le temps moyen de rotation.

+-----------------+-----------------+-----------------+
| ID du processus | Temps d'arrivée | Temps de rafale |
+-----------------+-----------------+-----------------+
| P1              | 0               | 7               |
+-----------------+-----------------+-----------------+
| P2              | 1               | 5               |
+-----------------+-----------------+-----------------+
| P3              | 2               | 3               |
+-----------------+-----------------+-----------------+
| P4              | 3               | 1               |
+-----------------+-----------------+-----------------+
| P5              | 4               | 2               |
+-----------------+-----------------+-----------------+
| P6              | 5               | 1               |
+-----------------+-----------------+-----------------+

Maintenant, on sait que:

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps d’attente = Temps de rotation – Temps de rafale

+-----------+-----------------+-------------------+
| Processus | Temps d'attente | Temps de rotation |
+-----------+-----------------+-------------------+
| P1        | 19 – 7 = 12     | 19 – 0 = 19       |
+-----------+-----------------+-------------------+
| P2        | 12 – 5 = 7      | 13 – 1 = 12       |
+-----------+-----------------+-------------------+
| P3        | 4 – 3 = 1       | 6 – 2 = 4         |
+-----------+-----------------+-------------------+
| P4        | 1 – 1 = 0       | 4 – 3 = 1         |
+-----------+-----------------+-------------------+
| P5        | 5 – 2 = 3       | 9 – 4 = 5         |
+-----------+-----------------+-------------------+
| P6        | 2 – 1 = 1       | 7 – 5 = 2         |
+-----------+-----------------+-------------------+
Temps moyen d'attente = (Temps d'attente total) / (Nombre total de processus) 
                      = (12 + 7 + 1 + 0 + 3 + 1) / 6
                      = 24 / 6
                      = 4 unités
					  
Temps moyen de rotation = (Temps de rotation total) / (Nombre total de processus) 
                        = (19 + 12 + 4 + 1 + 5 + 2) / 6
                        = 43 / 6
                        = 7.17 unités

2.4) Considérons les processus suivants P1, P2, P3 arrive pour être exécuté, avec un temps de rafale (temps d’exécution de l’unité centrale). Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle) pour la politique d’ordonnancement SRTF (Shortest Remaining Time First), et calculez le temps d’attente moyen et le temps moyen de rotation.

+-----------------+-----------------+-----------------+
| ID du processus | Temps d'arrivée | Temps de rafale |
+-----------------+-----------------+-----------------+
| P1              | 0               | 9               |
+-----------------+-----------------+-----------------+
| P2              | 1               | 4               |
+-----------------+-----------------+-----------------+
| P3              | 2               | 9               |
+-----------------+-----------------+-----------------+

Maintenant, on sait que:

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps d’attente = Temps de rotation – Temps de rafale

+-----------+-----------------+-------------------+
| Processus | Temps d'attente | Temps de rotation |
+-----------+-----------------+-------------------+
| P1        | 13 – 9 = 4      | 13 – 0 = 13       |
+-----------+-----------------+-------------------+
| P2        | 4 – 4 = 0       | 5 – 1 = 4         |
+-----------+-----------------+-------------------+
| P3        | 20 – 9 = 11     | 22- 2 = 20        |
+-----------+-----------------+-------------------+
Temps moyen d'attente = (Temps d'attente total) / (Nombre total de processus) 
                      = (4 + 0 + 11) / 3
                      = 15 / 3
                      = 5 unités
					  
Temps moyen de rotation = (Temps de rotation total) / (Nombre total de processus) 
                        = (13 + 4 + 20) / 3
                        = 37 / 3
                        = 12.33 unités

2.5) Considérons les processus suivants P1, P2, P3, P4 arrive pour être exécuté, avec un temps de rafale (temps d’exécution de l’unité centrale). Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle) pour la politique d’ordonnancement SRTF (Shortest Remaining Time First), et calculez le temps d’attente du processus P2.

+-----------------+-----------------+-----------------+
| ID du processus | Temps d'arrivée | Temps de rafale |
+-----------------+-----------------+-----------------+
| P1              | 0               | 20              |
+-----------------+-----------------+-----------------+
| P2              | 15              | 25              |
+-----------------+-----------------+-----------------+
| P3              | 30              | 10              |
+-----------------+-----------------+-----------------+
| P4              | 45              | 15              |
+-----------------+-----------------+-----------------+

Maintenant, on sait que:

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps d’attente = Temps de rotation – Temps de rafale

Donc:

Temps moyen d’attente du processus P2 = 55 – 15 = 40 unités

Temps moyen de rotation du processus P2 = 40 – 25 = 15 unités

 

L’article Exercice Corrigé Ordonnancement Des Processus – Partie 2 est apparu en premier sur WayToLearnX.

Exercice Corrigé Ordonnancement Des Processus – Partie 3

Par :Thomas
26 octobre 2024 à 06:39

L‘ordonnancement du processus est à la base des systèmes d’exploitation multiprogrammés. En répartissant l’unité centrale entre les processus, le système d’exploitation peut rendre l’ordinateur plus productif. Dans ce chapitre, nous présentons des exercices corrigés sur les concepts de base de l’ordonnancement, l’idée d’allocation de ressources et discutons en détail de l’ordonnancement de l’unité centrale. FCFS, SJF, Round-Robin, Priorité et les autres algorithmes d’ordonnancement devraient être familiers à vous.

 

Exercice 1: Ordonnancement Round Robin

Rappel: Dans l’ordonnancement Round Robin

  • L’unité centrale est attribuée au processus sur la base de la méthode FCFS pour une durée déterminée.
  • Cette durée fixe est appelée « time quantum » ou « time slice ».
  • À l’expiration du quantum de temps, le processus en cours est préempté et envoyé dans la file d’attente des processus prêts.
  • Le processeur est alors attribué au processus suivant.
  • Il s’agit toujours d’un processus préemptif par nature.

1.1) Considérons les 5 processus suivants avec un temps de rafale (temps d’exécution de l’unité centrale). Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle) en utilisant l’algorithme d’ordonnancement Round Robin avec un quantum de temps = 2 unités, et calculez le temps d’attente moyen et le temps moyen de rotation.

+-----------------+-----------------+------------------------------------------+
| ID du processus | Temps d'arrivée | Temps de rafale/temps d'exécution du CPU |
+-----------------+-----------------+------------------------------------------+
| P1              | 0               | 5                                        |
+-----------------+-----------------+------------------------------------------+
| P2              | 1               | 3                                        |
+-----------------+-----------------+------------------------------------------+
| P3              | 2               | 1                                        |
+-----------------+-----------------+------------------------------------------+
| P4              | 3               | 2                                        |
+-----------------+-----------------+------------------------------------------+
| P5              | 4               | 3                                        |
+-----------------+-----------------+------------------------------------------+

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps d’attente = Temps de rotation – Temps de rafale

+-----------+-----------------+-------------------+
| Processus | Temps d'attente | Temps de rotation |
+-----------+-----------------+-------------------+
| P1        | 13 – 5 = 8      | 13 – 0 = 13       |
+-----------+-----------------+-------------------+
| P2        | 11 – 3 = 8      | 12 – 1 = 11       |
+-----------+-----------------+-------------------+
| P3        | 3 – 1 = 2       | 5 – 2 = 3         |
+-----------+-----------------+-------------------+
| P4        | 6 – 2 = 4       | 9 – 3 = 6         |
+-----------+-----------------+-------------------+
| P5        | 10 – 3 = 7      | 14 – 4 = 10       |
+-----------+-----------------+-------------------+
Temps moyen d'attente = (Temps d'attente total) / (Nombre total de processus) 
                      = (8 + 8 + 2 + 4 + 7) / 5 
                      = 29 / 5
                      = 5.8 unités
					  
Temps moyen de rotation = (Temps de rotation total) / (Nombre total de processus) 
                        = (13 + 11 + 3 + 6 + 10) / 5 
                        = 43 / 5
                        = 8.6 unités

1.2) Considérons les 6 processus suivants avec un temps de rafale (temps d’exécution de l’unité centrale). Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle) en utilisant l’algorithme d’ordonnancement Round Robin avec un quantum de temps = 2 unités, et calculez le temps d’attente moyen et le temps moyen de rotation.

+-----------------+-----------------+-----------------+
| ID du processus | Temps d'arrivée | Temps de rafale |
+-----------------+-----------------+-----------------+
| P1              | 0               | 4               |
+-----------------+-----------------+-----------------+
| P2              | 1               | 5               |
+-----------------+-----------------+-----------------+
| P3              | 2               | 2               |
+-----------------+-----------------+-----------------+
| P4              | 3               | 1               |
+-----------------+-----------------+-----------------+
| P5              | 4               | 6               |
+-----------------+-----------------+-----------------+
| P6              | 6               | 3               |
+-----------------+-----------------+-----------------+

Maintenant, on sait que:

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps d’attente = Temps de rotation – Temps de rafale

+-----------+-----------------+-------------------+
| Processus | Temps d'attente | Temps de rotation |
+-----------+-----------------+-------------------+
| P1        | 8 – 4 = 4       | 8 – 0 = 8         |
+-----------+-----------------+-------------------+
| P2        | 17 – 5 = 12     | 18 – 1 = 17       |
+-----------+-----------------+-------------------+
| P3        | 4 – 2 = 2       | 6 – 2 = 4         |
+-----------+-----------------+-------------------+
| P4        | 6 – 1 = 5       | 9 – 3 = 6         |
+-----------+-----------------+-------------------+
| P5        | 17 – 6 = 11     | 21 – 4 = 17       |
+-----------+-----------------+-------------------+
| P6        | 13 – 3 = 10     | 19 – 6 = 13       |
+-----------+-----------------+-------------------+
Temps moyen d'attente = (Temps d'attente total) / (Nombre total de processus) 
                      = (4 + 12 + 2 + 5 + 11 + 10) / 6
                      = 44 / 6
                      = 7.33 unités
					  
Temps moyen de rotation = (Temps de rotation total) / (Nombre total de processus) 
                        = (8 + 17 + 4 + 6 + 17 + 13) / 6
                        = 65 / 6
                        = 10.84 unités

1.3) Considérons les 6 processus suivants avec un temps de rafale (temps d’exécution de l’unité centrale). Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle) en utilisant l’algorithme d’ordonnancement Round Robin avec un quantum de temps = 3 unités, et calculez le temps d’attente moyen et le temps moyen de rotation.

+-----------------+-----------------+-----------------+
| ID du processus | Temps d'arrivée | Temps de rafale |
+-----------------+-----------------+-----------------+
| P1              | 5               | 5               |
+-----------------+-----------------+-----------------+
| P2              | 4               | 6               |
+-----------------+-----------------+-----------------+
| P3              | 3               | 7               |
+-----------------+-----------------+-----------------+
| P4              | 1               | 9               |
+-----------------+-----------------+-----------------+
| P5              | 2               | 2               |
+-----------------+-----------------+-----------------+
| P6              | 6               | 3               |
+-----------------+-----------------+-----------------+

Maintenant, on sait que:

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps d’attente = Temps de rotation – Temps de rafale

+-----------+-----------------+-------------------+
| Processus | Temps d'attente | Temps de rotation |
+-----------+-----------------+-------------------+
| P1        | 27 – 5 = 22     | 32 – 5 = 27       |
+-----------+-----------------+-------------------+
| P2        | 23 – 6 = 17     | 27 – 4 = 23       |
+-----------+-----------------+-------------------+
| P3        | 30 – 7 = 23     | 33 – 3 = 30       |
+-----------+-----------------+-------------------+
| P4        | 29 – 9 = 20     | 30 – 1 = 29       |
+-----------+-----------------+-------------------+
| P5        | 4 – 2 = 2       | 6 – 2 = 4         |
+-----------+-----------------+-------------------+
| P6        | 15 – 3 = 12     | 21 – 6 = 15       |
+-----------+-----------------+-------------------+
Temps moyen d'attente = (Temps d'attente total) / (Nombre total de processus) 
                      = (22 + 17 + 23 + 20 + 2 + 12) / 6
                      = 96 / 6
                      = 16 unités
					  
Temps moyen de rotation = (Temps de rotation total) / (Nombre total de processus) 
                        = (27 + 23 + 30 + 29 + 4 + 15) / 6 
                        = 128 / 6
                        = 21.33 unités
 
Exercice 2: Ordonnancement par priorité (Priority Scheduling)

Rappel: Dans l’ordonnancement par priorité

  • Parmi tous les processus disponibles, l’unité centrale est attribuée au processus ayant la priorité la plus élevée.
  • En cas d’égalité, le processus est départagé par l’ordonnancement FCFS.
  • L’ordonnancement par priorité peut être utilisé en mode préemptif ou non préemptif.
  • Le temps d’attente pour le processus ayant la priorité la plus élevée sera toujours nul en mode préemptif.
  • Le temps d’attente pour le processus ayant la priorité la plus élevée peut ne pas être nul en mode non préemptif.

L’ordonnancement par priorité en mode préemptif et non préemptif se comporte exactement de la même manière dans les conditions suivantes:

  • L’heure d’arrivée de tous les processus est la même
  • Tous les processus deviennent disponibles

Avantages:

  • Il prend en compte la priorité des processus et permet aux processus importants de s’exécuter en premier.
  • L’ordonnancement par priorité en mode préemptif est le mieux adapté aux systèmes d’exploitation en temps réel.

Inconvénients:

  • Les processus moins prioritaires risquent d’être affamés par l’unité centrale.
  • Il n’y a aucune idée du temps de réponse et du temps d’attente.

2.1) Considérons les 5 processus suivants avec un temps de rafale (temps d’exécution de l’unité centrale). Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle) en utilisant l’algorithme d’ordonnancement par priorité non préemptive, et calculez le temps d’attente moyen et le temps moyen de rotation. (Le chiffre le plus élevé correspond à une priorité plus importante).

+-----------+-----------------+-----------------+----------+
| Processus | Temps d'arrivée | Temps de rafale | Priorité |
+-----------+-----------------+-----------------+----------+
| P1        | 0               | 4               | 2        |
+-----------+-----------------+-----------------+----------+
| P2        | 1               | 3               | 3        |
+-----------+-----------------+-----------------+----------+
| P3        | 2               | 1               | 4        |
+-----------+-----------------+-----------------+----------+
| P4        | 3               | 5               | 5        |
+-----------+-----------------+-----------------+----------+
| P5        | 4               | 2               | 5        |
+-----------+-----------------+-----------------+----------+

Maintenant, on sait que:

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps d’attente = Temps de rotation – Temps de rafale

+-----------+-----------------+-------------------+
| Processus | Temps d'attente | Temps de rotation |
+-----------+-----------------+-------------------+
| P1        | 4 – 4 = 0       | 4 – 0 = 4         |
+-----------+-----------------+-------------------+
| P2        | 14 – 3 = 11     | 15 – 1 = 14       |
+-----------+-----------------+-------------------+
| P3        | 10 – 1 = 9      | 12 – 2 = 10       |
+-----------+-----------------+-------------------+
| P4        | 6 – 5 = 1       | 9 – 3 = 6         |
+-----------+-----------------+-------------------+
| P5        | 7 – 2 = 5       | 11 – 4 = 7        |
+-----------+-----------------+-------------------+
Temps moyen d'attente = (Temps d'attente total) / (Nombre total de processus) 
                      = (0 + 11 + 9 + 1 + 5) / 5
                      = 26 / 5
                      = 5.2 unités
					  
Temps moyen de rotation = (Temps de rotation total) / (Nombre total de processus) 
                        = (4 + 14 + 10 + 6 + 7) / 5
                        = 41 / 5
                        = 8.2 unités

2.2) Considérons les 5 processus suivants avec un temps de rafale (temps d’exécution de l’unité centrale). Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle) en utilisant l’algorithme d’ordonnancement par priorité préemptive, et calculez le temps d’attente moyen et le temps moyen de rotation. (Le chiffre le plus élevé correspond à une priorité plus importante).

+-----------+-----------------+-----------------+----------+
| Processus | Temps d'arrivée | Temps de rafale | Priorité |
+-----------+-----------------+-----------------+----------+
| P1        | 0               | 4               | 2        |
+-----------+-----------------+-----------------+----------+
| P2        | 1               | 3               | 3        |
+-----------+-----------------+-----------------+----------+
| P3        | 2               | 1               | 4        |
+-----------+-----------------+-----------------+----------+
| P4        | 3               | 5               | 5        |
+-----------+-----------------+-----------------+----------+
| P5        | 4               | 2               | 5        |
+-----------+-----------------+-----------------+----------+

Maintenant, on sait que:

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps d’attente = Temps de rotation – Temps de rafale

+-----------+-----------------+-------------------+
| Processus | Temps d'attente | Temps de rotation |
+-----------+-----------------+-------------------+
| P1        | 15 – 4 = 11     | 15 – 0 = 15       |
+-----------+-----------------+-------------------+
| P2        | 11 – 3 = 8      | 12 – 1 = 11       |
+-----------+-----------------+-------------------+
| P3        | 1 – 1 = 0       | 3 – 2 = 1         |
+-----------+-----------------+-------------------+
| P4        | 5 – 5 = 0       | 8 – 3 = 5         |
+-----------+-----------------+-------------------+
| P5        | 6 – 2 = 4       | 10 – 4 = 6        |
+-----------+-----------------+-------------------+
Temps moyen d'attente = (Temps d'attente total) / (Nombre total de processus) 
                      = (11 + 8 + 0 + 0 + 4) / 5
                      = 23 / 5
                      = 4.6 unités
					  
Temps moyen de rotation = (Temps de rotation total) / (Nombre total de processus) 
                        = (15 + 11 + 1 + 5 + 6) / 5
                        = 38 / 5
                        = 7.6 unités
 

L’article Exercice Corrigé Ordonnancement Des Processus – Partie 3 est apparu en premier sur WayToLearnX.

Exercice Corrigé Ordonnancement Des Processus – Partie 4

Par :Thomas
26 octobre 2024 à 15:10

L‘ordonnancement du processus est à la base des systèmes d’exploitation multiprogrammés. En répartissant l’unité centrale entre les processus, le système d’exploitation peut rendre l’ordinateur plus productif. Dans ce chapitre, nous présentons des exercices corrigés sur les concepts de base de l’ordonnancement, l’idée d’allocation de ressources et discutons en détail de l’ordonnancement de l’unité centrale. FCFS, SJF, Round-Robin, Priorité et les autres algorithmes d’ordonnancement devraient être familiers à vous.

 

Exercice 1: Pourcentage d’inactivité du CPU

Considérons trois processus, arrivant tous au temps zéro, avec un temps d’exécution total de 10, 20 et 30 unités respectivement. Chaque processus passe les premiers 20 % de son temps d’exécution à faire des E/S, les 70 % suivants à faire des calculs et les derniers 10 % à refaire des E/S. Le système d’exploitation utilise un algorithme d’ordonnancement basé sur l’algorithme d’ordonnancement Shortest Remaining Time First (SRTF) et planifie un nouveau processus soit lorsque le processus en cours est bloqué sur les E/S, soit lorsque le processus en cours termine sa rafale de calcul. Supposons que toutes les opérations d’E/S puissent se chevaucher autant que possible. Quel est le pourcentage d’inactivité de l’unité centrale (CPU) ?

A 0%

B 10.6%

C 30.0%

D 89.4%

B

D’après la question, nous avons:

Rafale = Temps d’exécution

+--------------+------------------+------------+------------+------------+
|              | Totale du Rafale | Rafale E/S | Rafale CPU | Rafale E/S |
+--------------+------------------+------------+------------+------------+
| Processus P1 | 10               | 2          | 7          | 1          |
+--------------+------------------+------------+------------+------------+
| Processus P2 | 20               | 4          | 14         | 2          |
+--------------+------------------+------------+------------+------------+
| Processus P3 | 30               | 6          | 21         | 3          |
+--------------+------------------+------------+------------+------------+

L’algorithme d’ordonnancement utilisé est celui du SRTF « plus court temps restant en premier ».


Pourcentage de temps d’inactivité de l’unité centrale (CPU)
= (5 / 47) x 100
= 10.638%
L’option correcte est donc (B).

 

 
Exercice 2: SRTF « plus court temps restant en premier »

Considérons les 4 processus suivants avec un temps de rafale (temps d’exécution). Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle) en utilisant l’algorithme d’ordonnancement SRTF « plus court temps restant en premier », et calculez le temps d’attente moyen et le temps moyen de rotation.

+-----------+-----------------+--------------------------------------+
| Processus | Temps d'arrivée |           Temps de rafale            |
|           |                 |------------+------------+------------+
|           |                 | Rafale E/S | Rafale CPU | Rafale E/S |
+-----------+-----------------+------------+------------+------------+
| P1        | 0               | 3          | 2          | 2          |
+-----------+-----------------+------------+------------+------------+
| P2        | 0               | 2          | 4          | 1          |
+-----------+-----------------+------------+------------+------------+
| P3        | 2               | 1          | 3          | 2          |
+-----------+-----------------+------------+------------+------------+
| P4        | 5               | 2          | 2          | 1          |
+-----------+-----------------+------------+------------+------------+

Maintenant, on sait que:

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps d’attente = Temps de rotation – Temps de rafale

+-----------+-----------------+-------------------+
| Processus | Temps d'attente | Temps de rotation |
+-----------+-----------------+-------------------+
| P1        | 11 – (3+2) = 6  | 11 – 0 = 11       |
+-----------+-----------------+-------------------+
| P2        | 7 – (2+1) = 4   | 7 – 0 = 7         |
+-----------+-----------------+-------------------+
| P3        | 7 – (1+2) = 4   | 9 – 2 = 7         |
+-----------+-----------------+-------------------+
| P4        | 11 – (2+1) = 8  | 16 – 5 = 11       |
+-----------+-----------------+-------------------+
Temps moyen d'attente = (Temps d'attente total) / (Nombre total de processus) 
                      = (6 + 4 + 4 + 8) / 4
                      = 22 / 4
                      = 5.5 unités
					  
Temps moyen de rotation = (Temps de rotation total) / (Nombre total de processus) 
                        = (11 + 7 + 7 + 11) / 4
                        = 36 / 4
                        = 9 unités
 
Exercice 3: Ordonnancement par priorité (Priority Scheduling)

Considérons les 3 processus suivants avec un temps de rafale (temps d’exécution). Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle) en utilisant l’algorithme d’ordonnancement par priorité, et calculez le temps d’attente moyen et le temps moyen de rotation. (Un chiffre plus bas signifie une priorité plus élevée).

+-----------+-----------+----------+--------------------------------------+
| Processus | Temps     | Priorité |            Temps de rafale           |
|           | d'arrivée |          |------------+------------+------------+
|           |           |          | Rafale E/S | Rafale CPU | Rafale E/S |
+-----------+-----------+----------+--------------------------------------+
| P1        | 0         | 2        | 1          | 5          | 3          |
+-----------+-----------+----------+--------------------------------------+
| P2        | 2         | 3        | 3          | 3          | 1          |
+-----------+-----------+----------+--------------------------------------+
| P3        | 3         | 1        | 2          | 3          | 1          |
+-----------+-----------+----------+------------+------------+------------+

Maintenant, on sait que:

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps d’attente = Temps de rotation – Temps de rafale

+-----------+-----------------+-------------------+
| Processus | Temps d'attente | Temps de rotation |
+-----------+-----------------+-------------------+
| P1        | 10 – (1+3) = 6  | 10 – 0 = 10       |
+-----------+-----------------+-------------------+
| P2        | 13 – (3+1) = 9  | 15 – 2 = 13       |
+-----------+-----------------+-------------------+
| P3        | 6 – (2+1) = 3   | 9 – 3 = 6         |
+-----------+-----------------+-------------------+
Temps moyen d'attente = (Temps d'attente total) / (Nombre total de processus) 
                      = (6 + 9 + 3) / 3
                      = 18 / 3
                      = 6 unités
					  
Temps moyen de rotation = (Temps de rotation total) / (Nombre total de processus) 
                        = (10 + 13 + 6) / 3
                        = 29 / 3
                        = 9.67 unités
 
Exercice 4:

Un algorithme d’ordonnancement du CPU détermine l’ordre d’exécution des processus programmés. Étant donné que n processus doivent être ordonnancés sur un processeur, combien y a-t-il d’ordonnances différentes possibles ? Donnez une formule en fonction de n.

Pour n processus, le nombre d’ordonnances différentes possibles est donné par la formule:

n! (n factorial = n * n – 1 * n – 2 * … * 2 * 1)

Cela signifie que pour chaque processus, vous pouvez le placer dans une position de la file d’attente, et en répétant cela pour tous les processus, vous obtenez toutes les permutations possibles.

 
Exercice 5:

Considérons les 6 processus suivants avec un temps de rafale (temps d’exécution). Dessinez l’ordre d’exécution des processus à l’aide d’un diagramme de Gantt (ligne temporelle). Si la politique d’ordonnancement du CPU est First Come First Serve (FCFS) et qu’il y a une unité du temps d’attente pour le changement de contexte dans l’ordonnancement des processus, déterminez l’efficacité de l’algorithme.

+-----------------+-----------------+-----------------+
| ID du processus | Temps d'arrivée | Temps de rafale |
+-----------------+-----------------+-----------------+
| P1              | 0               | 3               |
+-----------------+-----------------+-----------------+
| P2              | 1               | 2               |
+-----------------+-----------------+-----------------+
| P3              | 2               | 1               |
+-----------------+-----------------+-----------------+
| P4              | 3               | 4               |
+-----------------+-----------------+-----------------+
| P5              | 4               | 5               |
+-----------------+-----------------+-----------------+
| P6              | 5               | 2               |
+-----------------+-----------------+-----------------+

Ici, δ représente le temps d’attente pour le changement de contexte.

Maintenant,
Temps inutile / Temps perdu = 6 x δ = 6 x 1 = 6 unités
Temps total = 23 unités
Temps utile = 23 unités – 6 unités = 17 unités

Efficacité (η)
= Temps utile / Total Total
= 17 unités / 23 unités
= 0.7391
= 73.91%

 

L’article Exercice Corrigé Ordonnancement Des Processus – Partie 4 est apparu en premier sur WayToLearnX.

Exercice Corrigé Ordonnancement Des Processus – Partie 5

Par :Thomas
26 octobre 2024 à 18:46

L‘ordonnancement du processus est à la base des systèmes d’exploitation multiprogrammés. En répartissant l’unité centrale entre les processus, le système d’exploitation peut rendre l’ordinateur plus productif. Dans ce chapitre, nous présentons des exercices corrigés sur les concepts de base de l’ordonnancement, l’idée d’allocation de ressources et discutons en détail de l’ordonnancement de l’unité centrale. FCFS, SJF, Round-Robin, Priorité et les autres algorithmes d’ordonnancement devraient être familiers à vous.

 

Exercice 1:

Considérons les processus suivants, la durée du temps d’utilisation du CPU (temps de rafale) étant exprimée en millisecondes:

+-----------+-----------------+----------+
| Processus | Temps de rafale | Priorité |
+-----------+-----------------+----------+
| P1        | 10              | 3        |
+-----------+-----------------+----------+
| P2        | 1               | 1        |
+-----------+-----------------+----------+
| P3        | 2               | 3        |
+-----------+-----------------+----------+
| P4        | 1               | 4        |
+-----------+-----------------+----------+
| P5        | 5               | 2        |
+-----------+-----------------+----------+

On suppose que les processus sont arrivés dans l’ordre P1, P2, P3, P4, P5, tous au temps 0.

A. Dessinez quatre diagrammes de Gantt illustrant l’exécution de ces processus en utilisant l’ordonnancement FCFS, SJF, par priorité non préemptive (un numéro de priorité plus petit implique une priorité plus élevée), et RR – Round Robin (quantum = 1).

Les quatre diagrammes de Gantt sont:

B. Quel est le temps d’exécution (ou temps de rotation) de chaque processus pour chacun des algorithmes d’ordonnancement de la question A ?

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

+-----------+--------+--------+---------+--------------+
| Processus |  FCFS  |   RR   |   SJF   | Par priorité |
+-----------+--------+--------+---------+--------------+
| P1        | 10     | 19     | 19      | 16           |
+-----------+--------+--------+---------+--------------+
| P2        | 11     | 2      | 1       | 1            |
+-----------+--------+--------+---------+--------------+
| P3        | 13     | 7      | 4       | 18           |
+-----------+--------+--------+---------+--------------+
| P4        | 14     | 4      | 2       | 19           |
+-----------+--------+--------+---------+--------------+
| P5        | 19     | 14     | 9       |  6           |
+-----------+--------+--------+---------+--------------+

C. Quel est le temps d’attente de chaque processus pour chacun des algorithmes d’ordonnancement de la question A ?

Temps d’attente = Temps de rotation – Temps de rafale

+-----------+--------+--------+---------+--------------+
| Processus |  FCFS  |   RR   |   SJF   | Par priorité |
+-----------+--------+--------+---------+--------------+
| P1        | 0      | 9      | 9       | 6            |
+-----------+--------+--------+---------+--------------+
| P2        | 10     | 1      | 0       | 0            |
+-----------+--------+--------+---------+--------------+
| P3        | 11     | 5      | 2       | 16           |
+-----------+--------+--------+---------+--------------+
| P4        | 13     | 3      | 1       | 18           |
+-----------+--------+--------+---------+--------------+
| P5        | 14     | 9      | 4       |  1           |
+-----------+--------+--------+---------+--------------+

D. Lequel des ordonnancements de la question A permet d’obtenir le temps d’attente moyen le plus court (sur l’ensemble des processus) ?

SJF (hortest Job First).
 
Exercice 2:

Supposons que les processus suivants arrivent pour être exécutés aux moments indiqués. Chaque processus s’exécutera pendant la durée indiquée. Pour répondre aux questions, utilisez un ordonnancement non préemptif et basez toutes vos décisions sur les informations dont vous disposez.

+-----------------+-----------------+-----------------+
| ID du processus | Temps d'arrivée | Temps de rafale |
+-----------------+-----------------+-----------------+
| P1              | 0.0             | 8               |
+-----------------+-----------------+-----------------+
| P2              | 0.4             | 4               |
+-----------------+-----------------+-----------------+
| P3              | 1.0             | 1               |
+-----------------+-----------------+-----------------+

A. Quel est le délai d’exécution moyen (ou temps moyen de rotation) de ces processus avec l’algorithme d’ordonnancement FCFS ?

On sait que:

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps moyen de rotation = (Temps de rotation total) / (Nombre total de processus)

Temps moyen de rotation = 10.53 unités

B. Quel est le délai d’exécution moyen (ou temps moyen de rotation) de ces processus avec l’algorithme d’ordonnancement SJF ?

On sait que:

Temps de rotation = Temps fin d’exécution – Temps d’arrivée

Temps moyen de rotation = (Temps de rotation total) / (Nombre total de processus)

Temps moyen de rotation = 9.53 unités

C. L’algorithme SJF est censé améliorer les performances, mais remarquez que nous avons choisi d’exécuter le processus P1 au temps 0 parce que nous ne savions pas que deux processus plus courts arriveraient bientôt. Calculez le délai d’exécution moyen (ou temps moyen de rotation) si l’unité centrale est laissée inactive pendant la première unité, puis si l’ordonnancement SJF est utilisé. N’oubliez pas que les processus P1 et P2 sont en attente pendant cette période d’inactivité, et que leur temps d’attente peut donc augmenter.

Temps moyen de rotation = 6.86 unités
 
Exercice 3:

Considérons l’algorithme d’ordonnancement par priorité préemptive suivant, basé sur des priorités changeant dynamiquement. Les numéros de priorité les plus grands impliquent une priorité plus élevée. Lorsqu’un processus est en attente de l’unité centrale (dans la file d’attente des processus prêts mais non en cours d’exécution), sa priorité change à un taux α ; lorsqu’il est en cours d’exécution, sa priorité change à un taux β. Tous les processus reçoivent une priorité de 0 lorsqu’ils entrent dans la file d’attente. Les paramètres α et β peuvent être définis de manière à obtenir de nombreux algorithmes d’ordonnancement différents.

A. Quel est l’algorithme qui résulte de β > α > 0 ?

B. Quel est l’algorithme qui résulte de α < β < 0 ?

A. Quand β > α > 0

Dans ce cas, la priorité d’un processus en cours d’exécution augmente plus rapidement (β) que celle d’un processus en attente (α). Étant donné que les processus en cours d’exécution gagnent de la priorité plus rapidement, ils tendent à préempter les processus en attente qui n’ont pas été exécutés. Par conséquent, cette configuration favorise les processus qui utilisent activement le CPU, leur permettant de continuer à s’exécuter sans être interrompus tant qu’ils sont en cours d’exécution. Cela conduit à un comportement similaire à l’Ordonnancement Premier Arrivé, Premier Servi (First-Come, First-Served – FCFS), car une fois qu’un processus commence à s’exécuter, il est moins susceptible d’être préempté par d’autres en attente dans la file d’attente.

B. Quand α < β < 0

Dans ce scénario, les deux taux sont négatifs, ce qui signifie qu’au fil du temps, les priorités des processus en attente et en cours d’exécution diminuent. Cependant, comme β (le taux pour les processus en cours d’exécution) est moins négatif que α (le taux pour les processus en attente), les processus en cours d’exécution perdent de la priorité plus lentement que ceux en attente. En conséquence, les processus en cours d’exécution sont susceptibles de conserver leur priorité plus élevée pendant un certain temps, tandis que les processus en attente diminueront leur priorité plus rapidement. Ce comportement ressemble à un ordonnancement Dernier Entré, Premier Sorti (Last-In, First-Out – LIFO), car les processus les plus récents en attente seront priorisés par rapport aux processus plus anciens, ce qui conduit à une situation où les processus ajoutés le plus récemment sont plus susceptibles d’être programmés ensuite.

Résumé

  • A. β > α > 0 → FCFS
  • B. α < β < 0 → LIFO
 
Exercice 4:

Supposons qu’un algorithme d’ordonnancement (au niveau de l’ordonnancement CPU à court terme) favorise les processus qui ont utilisé le moins de temps processeur récemment. Pourquoi cet algorithme favorise-t-il les programmes liés aux E/S tout en ne laissant pas les programmes liés aux CPU dans un état de starvation permanent ?

L’algorithme d’ordonnancement qui favorise les processus ayant utilisé le moins de temps processeur récemment va privilégier les programmes liés aux E/S pour plusieurs raisons, tout en évitant de rendre les programmes liés aux CPU définitivement affamés.

Favoriser les programmes liés aux E/S

  • Courtes périodes d’utilisation du CPU: Les programmes liés aux E/S nécessitent généralement moins de temps CPU et passent plus de temps en attente d’opérations d’entrée/sortie. Ils ont donc des périodes d’utilisation du CPU relativement courtes, ce qui les rend plus susceptibles d’avoir moins de temps CPU accumulé.
  • Utilisation récente du CPU: L’algorithme favorise les processus ayant utilisé le moins de temps CPU récemment. Comme les programmes liés aux E/S utilisent le CPU pendant des périodes plus courtes, ils auront souvent une priorité plus élevée dans la file d’attente des processus.

Prévention de la starvation des programmes liés aux CPU

  • Changement de contexte fréquent: Les programmes liés aux E/S libèrent régulièrement le CPU pour effectuer leurs opérations d’E/S. Cela crée des occasions pour le planificateur d’allouer du temps CPU aux processus liés aux CPU.
  • Mécanismes d’équité: La plupart des algorithmes d’ordonnancement modernes intègrent des mécanismes pour garantir que tous les processus, y compris ceux liés aux CPU, reçoivent du temps CPU. Même s’ils consomment plus de temps CPU, ils ne seront pas définitivement affamés, car les programmes liés aux E/S cèdent souvent le CPU.

Conclusion

En résumé, cet algorithme d’ordonnancement favorise les programmes liés aux E/S en raison de leur utilisation courte du CPU tout en s’assurant que les programmes liés aux CPU continuent de recevoir du temps CPU périodiquement, évitant ainsi la starvation.

 
Exercice 5:

Expliquez les différences dans le degré de discrimination des algorithmes d’ordonnancement suivants en faveur des processus courts :

A. FCFS
B. RR
C. Queues multiples à rétroaction (Multilevel Feedback Queues)

Voici une explication des différences dans le degré de discrimination des algorithmes d’ordonnancement en faveur des processus courts:

A. FCFS (First-Come, First-Served)

  • Discrimination: FCFS désavantage les jobs courts.
  • Raison: Les jobs courts qui arrivent après des jobs longs doivent attendre que ces derniers soient terminés, ce qui entraîne des temps d’attente plus longs pour les jobs courts.

B. RR (Round Robin)

  • Discrimination: RR traite tous les jobs de manière égale.
  • Raison: Chaque travail reçoit des tranches de temps CPU égales. Cependant, les jobs courts peuvent quitter le système plus rapidement, car ils sont susceptibles de terminer leur exécution pendant leur première ou deuxième tranche de temps, surtout s’ils arrivent tôt dans le cycle.

C. Multilevel Feedback Queues

  • Discrimination: Les files d’attente à rétroaction multiple favorisent également les jobs courts.
  • Raison: Cet algorithme fonctionne de manière similaire à RR, mais il utilise plusieurs niveaux de priorité. Les jobs qui utilisent moins de temps CPU peuvent être déplacés vers des niveaux de priorité plus élevés, leur permettant d’obtenir plus de temps CPU et de terminer plus rapidement.

Résumé:

  • FCFS: Désavantage les jobs courts.
  • RR: Traite tous les jobs également, mais permet aux jobs courts de partir plus rapidement.
  • Multilevel Feedback Queues: Favorise activement les jobs courts en leur donnant une meilleure priorité.
 
Exercice 6:

Les questions suivantes se réfèrent à l’ordonnanceur Round Robin basé sur Java.

A. S’il y a actuellement un thread T1 dans la file d’attente de l’ordonnanceur avec une priorité de 4 et un autre thread T2 avec une priorité de 2, est-il possible pour le thread T2 de s’exécuter pendant le quantum de temps de T1 ? Expliquez.

B. Expliquez ce qui se passe si la méthode stop() du thread en cours d’exécution est invoquée pendant son quantum de temps.

C. Expliquez ce qui se passe si l’ordonnanceur sélectionne un thread à exécuter dont la méthode suspend() a été invoquée.

A. Est-il possible que le thread T2 s’exécute pendant le quantum de temps de T1 ? Expliquez.

Oui, si le thread T1 se bloque pour une raison quelconque (comme une opération d’E/S), la JVM programmera un autre thread. Dans ce cas, ce serait le thread T2.

B. Que se passe-t-il si le thread actuellement en cours d’exécution a sa méthode stop() invoquée pendant son quantum de temps ?

Le reste de son quantum de temps sera partagé par tous les autres threads dans la file d’attente en utilisant l’algorithme d’ordonnancement par défaut de la JVM.

C. Que se passe-t-il si le planificateur sélectionne un thread à exécuter qui a eu sa méthode suspend() invoquée ?

Le reste de son quantum de temps sera également partagé par tous les autres threads dans la file d’attente en utilisant l’algorithme d’ordonnancement par défaut de la JVM.

 
Exercice 7:

Le planificateur UNIX traditionnel impose une relation inverse entre les numéros de priorité et les priorités : plus le numéro est élevé, plus la priorité est faible. Le planificateur recalcule les priorités des processus une fois par seconde en utilisant la fonction suivante :

Priorité = (utilisation récente du CPU / 2) + base

base = 60 et l’utilisation récente du CPU fait référence à une valeur indiquant à quelle fréquence un processus a utilisé le CPU depuis que les priorités ont été recalculées. Supposons que l’utilisation récente du CPU pour le processus P1 est de 40, pour le processus P2 est de 18, et pour le processus P3 est de 10.

A. Quelles seront les nouvelles priorités pour ces trois processus lorsque les priorités seront recalculées ?

B. Sur la base de ces informations, le planificateur UNIX traditionnel augmente-t-il ou abaisse-t-il la priorité relative d’un processus liés aux CPU ?

Réponse:
A. Les priorités assignées aux processus sont respectivement 80, 69 et 65.
B. Le planificateur abaisse la priorité relative des processus liés aux CPU.

Explication:
 
Calcul des Priorités:

 
Interprétation des Résultats:

Les valeurs des priorités calculées (80, 69, 65) signifient que P1 a la priorité la plus faible (80) et P3 la plus élevée (65).

Dans le contexte du planificateur UNIX, un numéro de priorité plus élevé indique une priorité plus faible. Ainsi, P1, qui est probablement un processus liés aux CPU avec une utilisation élevée, a une priorité plus basse.

Conclusion:

Le planificateur UNIX traditionnel abaisse donc la priorité relative des processus liés aux CPU, car une utilisation intensive du CPU (comme pour P1) conduit à une augmentation du numéro de priorité (donc une diminution de la priorité). Cela encourage le système à donner plus de temps à des processus moins gourmands en CPU.

 

L’article Exercice Corrigé Ordonnancement Des Processus – Partie 5 est apparu en premier sur WayToLearnX.

Exercice Corrigé Système d’Exploitation Linux – Partie 1

Par :Thomas
19 octobre 2024 à 00:06

Les exercices pratiques sur les systèmes d’exploitation comportent des exercices théoriques et pratiques. Pour résoudre les exercices pratiques, vous avez besoin d’un shell UNIX. Un shell très populaire est Bash. Le terminal Apple Mac OS X est suffisant pour la plupart des exercices pratiques. L’invite de commande Windows et Windows PowerShell ne sont pas suffisants pour les exercices.

Pour vous préparer, l’idéal est d’installer sur votre système le système d’exploitation Linux. Une installation dans une machine virtuelle est suffisante. Les distributions faciles à utiliser sont, par exemple, Debian, Ubuntu et CentOS. VirtualBox est une solution de virtualisation gratuite.

Vous pouvez également travailler avec un système vivant sur CD, DVD ou lecteur de mémoire flash USB. Dans ce cas, aucune installation locale n’est nécessaire.

 
 

Exercice 1: Traitement par lots

1.1) Décrivez l’objectif du traitement par lots.

Dans un système d’exploitation, le traitement par lots vise à maximiser l’utilisation de l’unité centrale (CPU) en:

  • Exécutant des tâches en parallèle pour éviter les temps d’inactivité.
  • Organisant les tâches dans des files d’attente pour une exécution optimisée.
  • Allocant dynamiquement les ressources selon les besoins des tâches.
  • Minimisant les changements de contexte pour réduire les interruptions.

Cela permet à l’UC de rester occupée et d’améliorer l’efficacité globale.

1.2) Décrivez pourquoi le traitement par lots provoque un effet d’accélération lorsque plusieurs tâches sont exécutées.

Le traitement par lots provoque un effet d’accélération en:

  • Réduisant les frais généraux grâce à moins de transitions entre les tâches.
  • Optimisant les ressources par le partage de mémoire entre tâches similaires.
  • Planifiant intelligemment pour maximiser l’utilisation du CPU.
  • Minimisant les temps d’inactivité, gardant le CPU active.
  • Améliorant l’efficacité du cache en traitant des données similaires ensemble.

Ces éléments contribuent à une exécution plus rapide des tâches.

1.3) Nommez les conditions préalables qui doivent être remplies pour le traitement par lots avant que l’exécution d’une tâche ne puisse commencer.

Pour que le traitement par lots commence, chaque programme doit être fourni complètement, incluant toutes les données d’entrée nécessaires. Cela garantit que toutes les informations requises sont disponibles pour une exécution fluide et efficace des tâches.

1.4) Citez des tâches pour lesquelles le traitement par lots est bien adapté.

Le traitement par lots est bien adapté à l’exécution de tâches routinières, car il permet de gérer efficacement des opérations répétitives et prévisibles, optimisant ainsi le temps et les ressources nécessaires. Exemple:

  • Sauvegarde de données: Création de sauvegardes régulières de systèmes ou de bases de données.
  • Traitement de données massives: Analyse de grandes quantités de données, comme dans le big data.
  • Mise à jour de bases de données: Exécution de mises à jour régulières sur des ensembles de données.

1.5) Le traitement par lots est toujours ____________

A interactif

B non interactif

B
Le traitement par lots est généralement non interactif, ce qui signifie que les tâches sont exécutées sans intervention de l’utilisateur pendant le processus. Cela permet d’automatiser des opérations répétitives et de traiter des volumes importants de données sans nécessiter d’interaction en temps réel.

 

1.6) Citez une application du mode batch, qui est encore populaire aujourd’hui.

une application populaire du mode batch est l’utilisation de fichiers batch et de shell scripts pour automatiser des tâches dans les systèmes d’exploitation. Ces scripts permettent d’exécuter des commandes ou des programmes en série, facilitant ainsi la gestion des tâches répétitives, comme la sauvegarde de fichiers, la mise à jour de logiciels ou le déploiement d’applications.

1.7) Décrire ce qu’est le spooling.

Le spooling (Simultaneous Peripheral Operations On-Line) est un processus qui gère les opérations d’entrée/sortie en les déchargeant dans des fichiers temporaires ou des files d’attente. Cela permet au processeur de continuer à travailler sur d’autres tâches sans attendre la fin de l’opération I/O, optimisant ainsi l’utilisation des ressources. Un exemple courant est l’impression, où les documents sont d’abord mis en file d’attente avant d’être imprimés.

 
Exercice 2: Temps partagé

2.1) Décrire l’objectif du partage du temps (time sharing) dans les systèmes d’exploitation.

L’objectif du partage du temps dans les systèmes d’exploitation est de permettre à plusieurs utilisateurs ou tâches de partager efficacement les ressources d’un ordinateur, en donnant à chacun un accès équitable et interactif au processeur.

2.2) Décrire comment le partage du temps répartit le temps de calcul entre les processus.

Le partage du temps répartit le temps de calcul entre les processus en utilisant plusieurs techniques:

  • Tranches de temps: Chaque processus se voit attribuer une période fixe, appelée tranche de temps, durant laquelle il peut s’exécuter. Une fois la tranche écoulée, le système d’exploitation suspend le processus et passe au suivant.
  • Planification des processus: Un algorithme de planification détermine l’ordre d’exécution des processus, souvent en fonction de critères tels que la priorité ou le temps d’attente.
  • Changement de contexte: Lorsque le système d’exploitation passe d’un processus à un autre, il effectue un changement de contexte, sauvegardant l’état du processus en cours et chargeant l’état du prochain processus à exécuter.
  • Équité: Les processus sont généralement traités de manière équitable, permettant à chacun d’accéder au processeur sans être bloqué indéfiniment.

Grâce à ces mécanismes, le partage du temps permet une utilisation efficace du processeur et garantit que plusieurs processus peuvent s’exécuter de manière fluide et simultanée.

2.3) Donnez le nom du programme quasi-parallèle ou de l’exécution du processus.

Multitâche ou Multitasking. Cela désigne la capacité d’un système d’exploitation à exécuter plusieurs processus simultanément ou à les faire passer rapidement d’un état à un autre, donnant l’illusion d’une exécution quasi-parallèle.

2.4) Décrire l’objectif de l’exécution du programme ou du processus quasi-parallèle.

L’objectif de l’exécution quasi-parallèle (multitâche) est de maximiser l’utilisation des ressources système, améliorer la réactivité et l’efficacité, et permettre aux utilisateurs d’interagir avec plusieurs applications simultanément sans délai. Cela facilite également la gestion de tâches de fond sans interrompre les activités en cours.

2.5) Décrire ce qu’est l’ordonnancement (scheduling).

L’ordonnancement (scheduling) est le processus par lequel un système d’exploitation détermine l’ordre et la durée d’exécution des processus sur le processeur. Il optimise l’utilisation des ressources, gère les priorités, utilise différents algorithmes (comme FIFO et Round Robin) et vise à assurer équité et réactivité pour les tâches.

2.6) Décrire ce qu’est le swapping.

Le swapping est un processus dans les systèmes d’exploitation où des segments de mémoire (processus ou pages) sont temporairement déplacés entre la mémoire principale et le stockage secondaire (comme un disque) pour libérer de l’espace mémoire. Cela permet de gérer efficacement la mémoire en exécutant plus de processus que ce que la RAM peut contenir simultanément. Le swapping aide à maintenir les performances du système lorsque la mémoire est saturée.

2.7) Décrire comment fonctionne la protection de la mémoire.

La protection de la mémoire empêche les processus d’accéder à la mémoire des autres ou du système d’exploitation. Elle fonctionne par:

  • Segmentation et pagination: Division de la mémoire en segments ou pages pour chaque processus.
  • Table des pages: Mapping des adresses virtuelles aux adresses physiques.
  • Registres de protection: Définition des limites d’accès en mémoire pour chaque processus.
  • Gestion des exceptions: Déclenchement d’une erreur si un accès non autorisé est tenté.
  • Isolation des processus: Chaque processus fonctionne dans son propre espace mémoire.

Cela assure la sécurité et la stabilité du système.

2.8) Décrire le but de la protection de la mémoire.

Le but de la protection de la mémoire est de garantir la sécurité et la stabilité du système en empêchant les processus d’accéder à la mémoire d’autres processus ou du système d’exploitation. Cela protège contre les erreurs et les comportements malveillants, assurant l’intégrité des données et l’isolation des processus.

 
Exercice 3: Fichiers et répertoires

3.1) Créez un répertoire MyRep dans votre répertoire personnel.

$ mkdir ~/MyRep

La commande mkdir (make directory) est utilisée dans les systèmes d’exploitation de type Unix/Linux et Windows pour créer un nouveau répertoire (dossier).

3.2) Naviguez jusqu’au répertoire MyRep et créez à l’intérieur un fichier vide portant le nom File1.txt. N’utilisez pas d’éditeur pour créer le fichier, mais une ligne de commande.

$ cd ~/MyRep && touch File1.txt
  • cd ~/MyRep: Change le répertoire courant vers « MyRep » dans le répertoire personnel.
  • &&: Exécute la prochaine commande seulement si la première réussit.
  • touch File1.txt: Crée un fichier vide nommé « File1.txt » dans « MyRep ».

Si « MyRep » n’existe pas, le fichier ne sera pas créé.

3.3) Vérifiez la taille du fichier File1.txt.

$ ls -lh File1.txt
  • ls: Commande de base pour lister le contenu d’un répertoire.
  • -l: Affiche les détails en format long (permissions, propriétaire, taille, date de modification, etc.).
  • -h: Rend la taille des fichiers lisible par l’homme (par exemple, 1K, 234M, 2G).

3.4) Modifiez l’heure de modification du fichier File1.txt pour qu’elle corresponde à votre date de naissance.

$ touch -t XXXXYYZZAABB File1.txt
  • XXXX spécifie l’année.
  • YY spécifie le mois.
  • ZZ spécifie le jour du mois.
  • AA spécifie l’heure.
  • BB spécifie les minutes.

3.5) Créez un nouveau fichier dans l’interpréteur de commandes File2.txt et insérez dans le nouveau fichier un texte dont le contenu ne se limite pas à une seule ligne. N’utilisez pas d’éditeur pour insérer le texte dans le fichier, mais une ligne de commande.

$ echo -e "Ligne1\nLigne2" > File2.txt
  • echo -e: Affiche une chaîne de texte et active l’interprétation des caractères spéciaux grâce à -e.
  • \n: Représente un saut de ligne.
  • "Ligne1\nLigne2": La chaîne affichée contiendra « Ligne1 » sur une ligne et « Ligne2 » sur la ligne suivante.
  • >: Redirige la sortie de la commande vers un fichier.
  • File2.txt: Nom du fichier où le texte sera enregistré. Si le fichier existe, il sera écrasé.

3.6) Affichez la première ligne du fichier File2.txt dans l’interpréteur de commandes.

$ head -n 1 File2.txt
  • head: Affiche les premières lignes d’un fichier.
  • -n 1: Spécifie que l’on veut afficher seulement la première ligne.
  • File2.txt: Nom du fichier dont on souhaite afficher le contenu.

3.7) Ajoutez le contenu de File2.txt à File1.txt. N’utilisez pas d’éditeur, mais une commande en ligne.

$ cat File2.txt >> File1.txt
  • cat File2.txt: Lit et affiche le contenu du fichier « File2.txt ».
  • >>: Redirige la sortie vers un fichier, en ajoutant le contenu à la fin de celui-ci, sans écraser son contenu existant.
  • File1.txt: Nom du fichier cible où le contenu sera ajouté.

3.8) Créez dans votre répertoire personnel un répertoire portant le nom cours_university.

$ mkdir ~/cours_university

La commande mkdir (make directory) est utilisée dans les systèmes d’exploitation de type Unix/Linux et Windows pour créer un nouveau répertoire (dossier).

3.9) Copiez les fichiers File1.txt et File2.txt du répertoire MyRep dans le répertoire cours_university.

$ cp ~/MyRep/* ~/cours_university
  • cp: Commande utilisée pour copier des fichiers ou des répertoires.
  • ~/MyRep/*: Sélectionne tous les fichiers et répertoires dans le répertoire « MyRep » situé dans le répertoire personnel de l’utilisateur.
  • ~/cours_university: Destination où les fichiers seront copiés, qui est le répertoire « cours_university » dans le répertoire personnel.

3.10) Effacer le répertoire MyRep.

$ rm -rf ~/MyRep
  • rm: Commande utilisée pour supprimer des fichiers ou des répertoires.
  • -r: Indique une suppression récursive, permettant de supprimer des répertoires et leur contenu (fichiers et sous-répertoires).
  • -f: Force la suppression sans demander de confirmation, même si le fichier ou le répertoire est protégé en écriture.
  • ~/MyRep: Chemin vers le répertoire « MyRep » situé dans le répertoire personnel de l’utilisateur.
 

L’article Exercice Corrigé Système d’Exploitation Linux – Partie 1 est apparu en premier sur WayToLearnX.

Exercice Corrigé Système d’Exploitation Linux – Partie 2

Par :Thomas
19 octobre 2024 à 16:56

Les exercices pratiques sur les systèmes d’exploitation comportent des exercices théoriques et pratiques. Pour résoudre les exercices pratiques, vous avez besoin d’un shell UNIX. Un shell très populaire est Bash. Le terminal Apple Mac OS X est suffisant pour la plupart des exercices pratiques. L’invite de commande Windows et Windows PowerShell ne sont pas suffisants pour les exercices.

Pour vous préparer, l’idéal est d’installer sur votre système le système d’exploitation Linux. Une installation dans une machine virtuelle est suffisante. Les distributions faciles à utiliser sont, par exemple, Debian, Ubuntu et CentOS. VirtualBox est une solution de virtualisation gratuite.

Vous pouvez également travailler avec un système vivant sur CD, DVD ou lecteur de mémoire flash USB. Dans ce cas, aucune installation locale n’est nécessaire.

 
 

Exercice 1: Classifications des systèmes d’exploitation

1.1) À chaque instant, un seul programme peut être exécuté. Quel est le terme technique pour ce mode de fonctionnement ?

Le terme technique pour ce mode de fonctionnement est « singletasking« . Cela signifie qu’à chaque instant, un seul programme peut être exécuté, contrairement au multitâche où plusieurs programmes peuvent fonctionner simultanément.

1.2) Quelle est la différence entre les systèmes d’exploitation 8 bits, 16 bits, 32 bits et 64 bits ?

Le numéro du bit indique la longueur de l’adresse mémoire avec laquelle le système d’exploitation fonctionne en interne. La différence entre les systèmes d’exploitation 8 bits, 16 bits, 32 bits et 64 bits se résume ainsi:

  • 8 bits: Peut adresser jusqu’à 256 octets. Très ancien (ex.: certains ordinateurs personnels).
  • 16 bits: Peut adresser jusqu’à 65 536 octets (64 Ko). Ex.: MS-DOS.
  • 32 bits: Peut adresser jusqu’à 4 Go de RAM. Ex.: Windows XP, certaines versions de Linux.
  • 64 bits: Peut adresser jusqu’à 16 exaoctets de RAM. Ex.: Windows 10, macOS modernes.

Plus le nombre de bits est élevé, plus le système peut traiter de données et gérer de mémoire.

1.3) Quels sont les critères essentiels des systèmes d’exploitation en temps réel ?

Dans les systèmes d’exploitation en temps réel, le temps de réponse (ou latence courte) et le respect des délais sont cruciaux. Cela signifie que le système doit:

  • Réagir rapidement aux événements, minimisant le temps entre la détection d’un événement et la réponse.
  • Respecter les délais fixés pour chaque tâche, garantissant que les opérations critiques soient exécutées dans un temps prédéfini.

Ces caractéristiques sont essentielles pour garantir le bon fonctionnement d’applications où la temporisation est vitale, comme dans les systèmes de contrôle industriels ou les applications médicales.

1.4) Citez les deux types de systèmes d’exploitation en temps réel.

Les deux types de systèmes d’exploitation en temps réel sont:

  • Systèmes d’exploitation en temps réel dur: Ces systèmes garantissent que les délais sont strictement respectés. Toute tâche doit être terminée dans un délai prédéfini, sinon le système peut échouer. Ils sont utilisés dans des applications critiques, comme le contrôle de processus industriels ou les systèmes embarqués.
  • Systèmes d’exploitation en temps réel souple: Ces systèmes offrent une certaine flexibilité dans le respect des délais. Bien que le temps de réponse soit important, un léger dépassement des délais n’entraîne pas nécessairement une défaillance. Ils sont souvent utilisés dans des applications moins critiques, comme le traitement multimédia.

Ces distinctions permettent de choisir le type de système en fonction des exigences de l’application.

1.5) Citez quatre domaines d’application typiques des systèmes d’exploitation en temps réel et classez chaque domaine d’application dans l’une des catégories de la réponse ci-dessus.

Voici quatre domaines d’application typiques des systèmes d’exploitation en temps réel, classés en fonction des catégories mentionnées:

1. Systèmes d’exploitation en temps réel dur:

  • Contrôle industriel: Utilisé dans les systèmes de contrôle de processus, comme les usines automatisées.
  • Aérospatial: Systèmes de contrôle de vol dans les avions ou les satellites, où la sécurité est critique.

2. Systèmes d’exploitation en temps réel souple:

  • Traitement multimédia: Applications de vidéo et de son en temps réel, comme la diffusion en direct.
  • Jeux vidéo: Systèmes de jeu interactifs qui nécessitent des réponses rapides mais peuvent tolérer de légers délais.

Ces domaines illustrent comment les systèmes en temps réel sont adaptés à des besoins spécifiques en fonction de la criticité des délais.

1.6) Décrire la structure d’un nano-noyau (ou nanokernel).

Un nano-noyau (ou nanokernel) a une structure minimale et modulaire:

  • Noyau minimal: Contient uniquement les fonctions essentielles (gestion de la mémoire, des interruptions).
  • Modularité: Les services supplémentaires (systèmes de fichiers, gestion des périphériques) sont implémentés en tant que modules externes.
  • Communication inter-processus (IPC): Utilise des mécanismes d’IPC pour permettre la communication entre modules et applications.
  • Gestion des ressources: Alloue et libère les ressources de manière sécurisée.

1.7) Décrire la structure d’un noyau monolithique.

Un noyau monolithique est un type de noyau d’un système d’exploitation où toutes les fonctionnalités essentielles sont intégrées dans un seul binaire. Un noyau monolithique a la structure suivante:

  • Code unique: Tout le code (gestion de la mémoire, des processus, des périphériques) est intégré dans un seul binaire.
  • Accès direct: Modules peuvent accéder directement aux ressources matérielles, offrant de bonnes performances.
  • Gestion des processus et de la mémoire: Inclut des fonctions pour la planification, la synchronisation et la gestion de la mémoire.
  • Pilotes inclus: Les pilotes de périphériques sont souvent intégrés, augmentant la taille du noyau.

1.8) Décrire la structure d’un micro-noyau.

Un micro-noyau a une structure minimaliste et modulaire:

  • Fonctionnalités essentielles: Ne contient que la gestion de la mémoire, des processus et la communication inter-processus (IPC).
  • Modularité: Services supplémentaires (systèmes de fichiers, pilotes) fonctionnent en espace utilisateur.
  • IPC: Utilise des mécanismes efficaces pour échanger des messages entre le micro-noyau et les services externes.

1.9) Décrire la structure d’un noyau hybride.

Un noyau hybride combine des éléments des noyaux monolithiques et des micro-noyaux. Voici ses principales caractéristiques:

  • Architecture mixte: Intègre des fonctionnalités essentielles dans le noyau (comme la gestion de la mémoire et des processus), tout en permettant des modules externes pour d’autres services (comme les pilotes).
  • Flexibilité: Les composants critiques fonctionnent dans le noyau pour de meilleures performances, tandis que les services moins critiques peuvent être exécutés en espace utilisateur.
  • Communication: Utilise des mécanismes d’IPC, mais peut également permettre des appels directs pour les composants noyau.

1.10) Linux implémente un _______________.

A noyau monolithique

B micro-noyau

C noyau hybride

A

Linux implémente un noyau monolithique:

  • Intégration: Toutes les fonctions essentielles (gestion des processus, mémoire, pilotes) sont dans un seul binaire.
  • Accès direct: Les modules du noyau accèdent directement au matériel, offrant de bonnes performances.
  • Modularité: Permet le chargement dynamique de modules pour une certaine flexibilité.

 

1.11) MacOS X implémente un _______________.

A noyau monolithique

B micro-noyau

C noyau hybride

C

MacOS X implémente un noyau hybride, appelé XNU (X is Not Unix). Voici ses principales caractéristiques:

  • Architecture mixte: Combine des éléments d’un noyau monolithique et d’un micro-noyau, intégrant des fonctionnalités essentielles tout en permettant des modules externes.
  • Micro-noyau Mach: Utilise le micro-noyau Mach pour la gestion des processus et de la mémoire, tandis que les services comme les pilotes de périphériques sont intégrés dans le noyau.
  • Performances optimisées: Les composants critiques fonctionnent dans le noyau pour des performances élevées, tandis que d’autres services peuvent s’exécuter en espace utilisateur.

 

1.12) Windows NT4/Vista/XP/7/8/10 implémente un _______________.

A noyau monolithique

B micro-noyau

C noyau hybride

C

Les systèmes d’exploitation Windows NT (y compris NT4, XP, Vista, 7, 8 et 10) implémentent un noyau hybride. Voici ses principales caractéristiques:

  • Architecture mixte: Combine des éléments d’un noyau monolithique et d’un micro-noyau, intégrant des fonctionnalités essentielles tout en permettant l’exécution de certains services en espace utilisateur.
  • Noyau NT: Le noyau NT gère les processus, la mémoire, et les pilotes, tout en utilisant des modules pour des fonctionnalités supplémentaires.
  • Performances et modularité: Les composants critiques fonctionnent dans le noyau pour des performances optimales, tandis que d’autres services peuvent être modulaires et s’exécuter en espace utilisateur.

 

1.13) Citez un avantage et un inconvénient des noyaux monolithiques.

Avantages:
  • Moins de changements de contexte ⇒ meilleures performances
  • Stabilité accrue

Inconvénients:

  • Les composants bloqués ne peuvent pas être démarrés séparément dans le noyau et peuvent entraîner le blocage de l’ensemble du système.
  • Les extensions du noyau entraînent un effort de développement important, car pour chaque compilation de l’extension, le noyau complet doit être recompilé.

1.14) Citez un avantage et un inconvénient des micro-noyaux.

Avantages:
  • Les composants peuvent être échangés facilement
  • Meilleure stabilité et sécurité en théorie, car moins de fonctions s’exécutent en mode noyau.

Inconvénients:

  • Ralentissement en raison d’un plus grand nombre de changements de contexte
  • Le développement d’un nouveau (micro)noyau est une tâche complexe.

1.15) Citez un avantage et un inconvénient des noyaux hybrides.

Avantages:
  • Meilleures performances qu’avec les micro-noyaux (parce qu’il y a moins de changements de contexte)
  • La stabilité est (théoriquement) meilleure qu’avec les noyaux monolithiques.

Inconvénients:

  • Le développement d’un nouveau noyau (hybride) est une tâche complexe.
 
Exercice 2: Commandes de base de Linux/UNIX

2.1) Quelle commande permet de consulter les pages de manuel ?

man

2.2) Quelle commande permet d’afficher le répertoire de travail actuel dans l’interpréteur de commandes ?

pwd

2.3) Quelle commande permet de créer un nouveau répertoire ?

mkdir

2.4) Quelle commande permet de naviguer vers un répertoire ?

cd

2.5) Quelle commande permet d’afficher le contenu d’un répertoire dans l’interpréteur de commandes ?

ls

2.6) Quelle commande permet de créer un fichier vide ?

touch

2.7) Quelle commande permet de déterminer le contenu d’un fichier ?

file

2.8) Quelle commande permet de concaténer le contenu de fichiers avec d’autres fichiers et peut également être utilisé pour afficher le contenu d’un fichier ?

cat

2.9) Quelle commande permet d’afficher des lignes à partir de la fin d’un fichier dans l’interpréteur de commandes ?

tail

2.10) Quelle commande permet d’afficher les lignes du début d’un fichier dans l’interpréteur de commandes ?

head

2.11) Quelle commande permet de copier des fichiers ou des répertoires à un autre endroit ?

cp

2.12) Quelle commande permet de déplacer des fichiers ou des répertoires vers un autre emplacement ?

mv

2.13) Quelle commande permet de supprimer des fichiers ou des répertoires ?

rm

2.14) Quelle commande permet de supprimer un répertoire vide ?

rmdir

2.15) Quelle commande permet d’introduire une chaîne dans le shell?

echo

2.16) Quelle commande permet de modifier les permissions du fichier ou du répertoire ?

chmod

2.17) Quelle commande permet de changer le mot de passe d’un utilisateur ?

passwd

2.18) Quelle commande permet de mettre fin à une session (et donc au shell) et permet de spécifier la valeur de retour d’un script shell ?

exit

2.19) Quelle commande permet de redémarrer le système ?

reboot OU shutdown -r now

2.20) Quelle commande permet d’arrêter le système ?

halt OU shutdown

2.21) Quelle commande permet de créer un nouvel utilisateur ?

adduser

2.22) Quelle commande permet de supprimer un utilisateur ?

deluser

2.23) Quelle commande permet de modifier un utilisateur ?

usermod

2.24) Quelle commande permet d’afficher l’appartenance d’un utilisateur à un groupe ?

groups

2.25) Quelle commande permet de créer un nouveau groupe ?

groupadd

2.26) Quelle commande permet de supprimer un groupe ?

groupdel

2.27) Quelle commande permet de modifier un groupe ?

groupmod

2.28) Quelle commande permet de changer l’utilisateur (ownership) associé à un fichier ou à un répertoire ?

chown

2.29) Quelle commande permet de changer le groupe associé à un fichier ou à un répertoire ?

chgrp

2.30) Quelle commande permet de créer un lien ?

ln

2.31) Quelle commande permet de rechercher dans un fichier les lignes qui contiennent un motif de recherche ?

grep

2.32) Quelle commande permet d’afficher la liste des processus en cours dans l’interpréteur de commandes ?

ps

2.33) Quelle commande permet de faire passer au premier-plan(foreground) un processus qui s’exécute dans l’arrière-plan(backgrund) de l’interpréteur de commandes ?

fg

2.34) Quelle commande permet de faire passer un processus en arrière-plan de l’interpréteur de commandes ?

bg

2.35) Quelle commande permet de tuer (terminer) un processus ?

kill

2.36) Quelle commande permet de tuer (terminer) un groupe de processus ?

killall

2.37) Quelle commande permet de spécifier la priorité d’un nouveau processus ?

nice

2.38) Quelle commande permet de modifier la priorité d’un processus existant ?

renice

2.39) Quelle commande permet d’afficher l’arbre des processus dans l’interpréteur de commandes ?

pstree
 

L’article Exercice Corrigé Système d’Exploitation Linux – Partie 2 est apparu en premier sur WayToLearnX.

❌
❌