Système d'exploitation - Guide rapide

Un système d'exploitation (OS) est une interface entre un utilisateur d'ordinateur et du matériel informatique. Un système d'exploitation est un logiciel qui effectue toutes les tâches de base telles que la gestion des fichiers, la gestion de la mémoire, la gestion des processus, la gestion des entrées et des sorties et le contrôle des périphériques tels que les lecteurs de disque et les imprimantes.

Certains systèmes d'exploitation populaires incluent le système d'exploitation Linux, le système d'exploitation Windows, VMS, OS / 400, AIX, z / OS, etc.

Définition

Un système d'exploitation est un programme qui agit comme une interface entre l'utilisateur et le matériel informatique et contrôle l'exécution de toutes sortes de programmes.

Voici quelques-unes des fonctions importantes d'un système d'exploitation.

  • Gestion de la mémoire
  • Gestion des processeurs
  • Gestion d'appareils
  • Gestion de fichiers
  • Security
  • Contrôle des performances du système
  • Comptabilité des emplois
  • Erreur lors de la détection des aides
  • Coordination entre les autres logiciels et les utilisateurs

Gestion de la mémoire

La gestion de la mémoire fait référence à la gestion de la mémoire principale ou de la mémoire principale. La mémoire principale est un grand tableau de mots ou d'octets où chaque mot ou octet a sa propre adresse.

La mémoire principale fournit un stockage rapide auquel le CPU peut accéder directement. Pour qu'un programme soit exécuté, il doit se trouver dans la mémoire principale. Un système d'exploitation effectue les activités suivantes pour la gestion de la mémoire:

  • Conserve les traces de la mémoire principale, c'est-à-dire quelle partie est utilisée par qui, quelle partie n'est pas utilisée.

  • En multiprogrammation, le système d'exploitation décide quel processus recevra de la mémoire quand et combien.

  • Alloue la mémoire lorsqu'un processus lui demande de le faire.

  • Désalloue la mémoire lorsqu'un processus n'en a plus besoin ou a été arrêté.

Gestion des processeurs

Dans un environnement de multiprogrammation, le système d'exploitation décide quel processus reçoit le processeur quand et pendant combien de temps. Cette fonction s'appelleprocess scheduling. Un système d'exploitation effectue les activités suivantes pour la gestion du processeur:

  • Garde des traces du processeur et de l'état du processus. Le programme responsable de cette tâche est appelétraffic controller.

  • Alloue le processeur (CPU) à un processus.

  • Désaffecte le processeur lorsqu'un processus n'est plus nécessaire.

Gestion d'appareils

Un système d'exploitation gère la communication des périphériques via leurs pilotes respectifs. Il effectue les activités suivantes pour la gestion des appareils -

  • Garde une trace de tous les appareils. Le programme responsable de cette tâche est appeléI/O controller.

  • Décide quel processus obtient l'appareil quand et pendant combien de temps.

  • Attribue l'appareil de manière efficace.

  • Désattribue les appareils.

Gestion de fichiers

Un système de fichiers est normalement organisé en répertoires pour une navigation et une utilisation faciles. Ces répertoires peuvent contenir des fichiers et d'autres directions.

Un système d'exploitation effectue les activités suivantes pour la gestion des fichiers -

  • Assure le suivi des informations, de l'emplacement, des utilisations, du statut, etc. Les installations collectives sont souvent appelées file system.

  • Décide qui obtient les ressources.

  • Alloue les ressources.

  • Désalloue les ressources.

Autres activités importantes

Voici quelques-unes des activités importantes effectuées par un système d'exploitation:

  • Security - Au moyen d'un mot de passe et d'autres techniques similaires, il empêche l'accès non autorisé aux programmes et aux données.

  • Control over system performance - Enregistrement des délais entre la demande d'un service et la réponse du système.

  • Job accounting - Garder une trace du temps et des ressources utilisées par divers emplois et utilisateurs.

  • Error detecting aids - Production de vidages, traces, messages d'erreur et autres aides au débogage et à la détection d'erreurs.

  • Coordination between other softwares and users - Coordination et affectation des compilateurs, interprètes, assembleurs et autres logiciels aux différents utilisateurs des systèmes informatiques.

Les systèmes d'exploitation existent dès la toute première génération d'ordinateurs et ils évoluent avec le temps. Dans ce chapitre, nous aborderons certains des types importants de systèmes d'exploitation les plus couramment utilisés.

Système d'exploitation par lots

Les utilisateurs d'un système d'exploitation par lots n'interagissent pas directement avec l'ordinateur. Chaque utilisateur prépare son travail sur un appareil hors ligne comme des cartes perforées et le soumet à l'opérateur informatique. Pour accélérer le traitement, les travaux ayant des besoins similaires sont regroupés et exécutés en tant que groupe. Les programmeurs laissent leurs programmes à l'opérateur et l'opérateur trie ensuite les programmes avec des exigences similaires en lots.

Les problèmes avec Batch Systems sont les suivants -

  • Manque d'interaction entre l'utilisateur et le travail.
  • Le processeur est souvent inactif, car la vitesse des périphériques d'E / S mécaniques est plus lente que celle du processeur.
  • Difficile de donner la priorité souhaitée.

Systèmes d'exploitation à temps partagé

Le partage de temps est une technique qui permet à de nombreuses personnes, situées à différents terminaux, d'utiliser un système informatique particulier en même temps. Le partage du temps ou le multitâche est une extension logique de la multiprogrammation. Le temps du processeur qui est partagé entre plusieurs utilisateurs simultanément est appelé temps partagé.

La principale différence entre les systèmes de lots multiprogrammés et les systèmes de partage de temps est que dans le cas des systèmes de lots multiprogrammés, l'objectif est de maximiser l'utilisation du processeur, alors que dans les systèmes de partage de temps, l'objectif est de minimiser le temps de réponse.

Plusieurs tâches sont exécutées par la CPU en basculant entre elles, mais les commutations se produisent si fréquemment. Ainsi, l'utilisateur peut recevoir une réponse immédiate. Par exemple, dans un traitement de transaction, le processeur exécute chaque programme utilisateur en une courte rafale ou quantum de calcul. Autrement dit, sinles utilisateurs sont présents, alors chaque utilisateur peut obtenir un quantum de temps. Lorsque l'utilisateur soumet la commande, le temps de réponse est de quelques secondes au maximum.

Le système d'exploitation utilise la planification du processeur et la multiprogrammation pour fournir à chaque utilisateur une petite partie du temps. Les systèmes informatiques qui étaient principalement conçus comme des systèmes par lots ont été modifiés en systèmes à temps partagé.

Les avantages des systèmes d'exploitation en temps partagé sont les suivants:

  • Fournit l'avantage d'une réponse rapide.
  • Evite la duplication du logiciel.
  • Réduit le temps d'inactivité du processeur.

Les inconvénients des systèmes d'exploitation à temps partagé sont les suivants:

  • Problème de fiabilité.
  • Question de sécurité et d'intégrité des programmes utilisateurs et des données.
  • Problème de communication de données.

Système d'exploitation distribué

Les systèmes distribués utilisent plusieurs processeurs centraux pour servir plusieurs applications en temps réel et plusieurs utilisateurs. Les tâches de traitement des données sont réparties entre les processeurs en conséquence.

Les processeurs communiquent entre eux via diverses lignes de communication (telles que des bus à grande vitesse ou des lignes téléphoniques). Celles-ci sont appeléesloosely coupled systemsou systèmes distribués. Les processeurs d'un système distribué peuvent varier en taille et en fonction. Ces processeurs sont appelés sites, nœuds, ordinateurs, etc.

Les avantages des systèmes distribués sont les suivants -

  • Avec la fonction de partage de ressources, un utilisateur d'un site peut être en mesure d'utiliser les ressources disponibles sur un autre.
  • Accélérez l'échange de données entre vous par courrier électronique.
  • Si un site échoue dans un système distribué, les sites restants peuvent potentiellement continuer à fonctionner.
  • Meilleur service aux clients.
  • Réduction de la charge sur l'ordinateur hôte.
  • Réduction des délais de traitement des données.

Système d'exploitation réseau

Un système d'exploitation réseau s'exécute sur un serveur et fournit au serveur la capacité de gérer les données, les utilisateurs, les groupes, la sécurité, les applications et d'autres fonctions de mise en réseau. Le but principal du système d'exploitation réseau est d'autoriser l'accès partagé aux fichiers et aux imprimantes entre plusieurs ordinateurs d'un réseau, généralement un réseau local (LAN), un réseau privé ou d'autres réseaux.

Des exemples de systèmes d'exploitation réseau incluent Microsoft Windows Server 2003, Microsoft Windows Server 2008, UNIX, Linux, Mac OS X, Novell NetWare et BSD.

Les avantages des systèmes d'exploitation réseau sont les suivants:

  • Les serveurs centralisés sont très stables.
  • La sécurité est gérée par le serveur.
  • Les mises à niveau vers de nouvelles technologies et du matériel peuvent être facilement intégrées dans le système.
  • L'accès à distance aux serveurs est possible à partir de différents emplacements et types de systèmes.

Les inconvénients des systèmes d'exploitation réseau sont les suivants:

  • Coût élevé d'achat et d'exploitation d'un serveur.
  • Dépendance à un emplacement central pour la plupart des opérations.
  • Une maintenance et des mises à jour régulières sont nécessaires.

Système d'exploitation en temps réel

Un système en temps réel est défini comme un système de traitement de données dans lequel l'intervalle de temps requis pour traiter et répondre aux entrées est si petit qu'il contrôle l'environnement. Le temps mis par le système pour répondre à une entrée et à l'affichage des informations mises à jour requises est appeléresponse time. Ainsi, dans cette méthode, le temps de réponse est très inférieur à celui du traitement en ligne.

Les systèmes en temps réel sont utilisés lorsqu'il existe des exigences de temps strictes sur le fonctionnement d'un processeur ou le flux de données et les systèmes en temps réel peuvent être utilisés comme dispositif de contrôle dans une application dédiée. Un système d'exploitation en temps réel doit avoir des contraintes de temps bien définies et fixes, sinon le système échouera. Par exemple, des expériences scientifiques, des systèmes d'imagerie médicale, des systèmes de contrôle industriel, des systèmes d'armes, des robots, des systèmes de contrôle du trafic aérien, etc.

Il existe deux types de systèmes d'exploitation en temps réel.

Systèmes durs en temps réel

Les systèmes durs en temps réel garantissent que les tâches critiques se terminent à temps. Dans les systèmes en temps réel dur, le stockage secondaire est limité ou manquant et les données sont stockées dans la ROM. Dans ces systèmes, la mémoire virtuelle n'est presque jamais trouvée.

Systèmes en temps réel doux

Les systèmes en temps réel doux sont moins restrictifs. Une tâche critique en temps réel a la priorité sur les autres tâches et conserve la priorité jusqu'à ce qu'elle soit terminée. Les systèmes temps réel souples ont une utilité limitée par rapport aux systèmes temps réel durs. Par exemple, le multimédia, la réalité virtuelle, les projets scientifiques avancés comme l'exploration sous-marine et les rovers planétaires, etc.

Un système d'exploitation fournit des services aux utilisateurs et aux programmes.

  • Il fournit aux programmes un environnement à exécuter.
  • Il fournit aux utilisateurs les services pour exécuter les programmes de manière pratique.

Voici quelques services courants fournis par un système d'exploitation -

  • Exécution du programme
  • Opérations d'E / S
  • Manipulation du système de fichiers
  • Communication
  • Détection d'erreur
  • Allocation des ressources
  • Protection

Exécution du programme

Les systèmes d'exploitation gèrent de nombreux types d'activités, des programmes utilisateur aux programmes système comme le spouleur d'imprimante, les serveurs de noms, le serveur de fichiers, etc. Chacune de ces activités est encapsulée en tant que processus.

Un processus comprend le contexte d'exécution complet (code à exécuter, données à manipuler, registres, ressources du système d'exploitation utilisées). Voici les principales activités d'un système d'exploitation en ce qui concerne la gestion de programme -

  • Charge un programme en mémoire.
  • Exécute le programme.
  • Gère l'exécution du programme.
  • Fournit un mécanisme pour la synchronisation des processus.
  • Fournit un mécanisme de communication de processus.
  • Fournit un mécanisme de gestion des interblocages.

Fonctionnement des E / S

Un sous-système d'E / S comprend des périphériques d'E / S et leur logiciel pilote correspondant. Les pilotes cachent aux utilisateurs les particularités de périphériques matériels spécifiques.

Un système d'exploitation gère la communication entre l'utilisateur et les pilotes de périphérique.

  • L'opération d'E / S signifie l'opération de lecture ou d'écriture avec n'importe quel fichier ou n'importe quel périphérique d'E / S spécifique.
  • Le système d'exploitation fournit l'accès au périphérique d'E / S requis si nécessaire.

Manipulation du système de fichiers

Un fichier représente une collection d'informations connexes. Les ordinateurs peuvent stocker des fichiers sur le disque (stockage secondaire), à ​​des fins de stockage à long terme. Des exemples de supports de stockage comprennent les bandes magnétiques, les disques magnétiques et les lecteurs de disques optiques tels que CD, DVD. Chacun de ces supports a ses propres propriétés telles que la vitesse, la capacité, le taux de transfert de données et les méthodes d'accès aux données.

Un système de fichiers est normalement organisé en répertoires pour une navigation et une utilisation faciles. Ces répertoires peuvent contenir des fichiers et d'autres directions. Voici les principales activités d'un système d'exploitation en ce qui concerne la gestion des fichiers -

  • Le programme doit lire un fichier ou écrire un fichier.
  • Le système d'exploitation autorise le programme à fonctionner sur fichier.
  • L'autorisation varie de lecture seule, lecture-écriture, refusée, etc.
  • Le système d'exploitation fournit une interface à l'utilisateur pour créer / supprimer des fichiers.
  • Le système d'exploitation fournit une interface à l'utilisateur pour créer / supprimer des répertoires.
  • Le système d'exploitation fournit une interface pour créer la sauvegarde du système de fichiers.

la communication

Dans le cas de systèmes distribués qui sont un ensemble de processeurs qui ne partagent pas la mémoire, les périphériques ou une horloge, le système d'exploitation gère les communications entre tous les processus. Plusieurs processus communiquent entre eux via des lignes de communication dans le réseau.

Le système d'exploitation gère les stratégies de routage et de connexion, ainsi que les problèmes de contention et de sécurité. Voici les principales activités d'un système d'exploitation en ce qui concerne la communication -

  • Deux processus nécessitent souvent le transfert de données entre eux
  • Les deux processus peuvent être sur un ordinateur ou sur des ordinateurs différents, mais sont connectés via un réseau informatique.
  • La communication peut être mise en œuvre par deux méthodes, soit par mémoire partagée, soit par transmission de messages.

La gestion des erreurs

Des erreurs peuvent survenir à tout moment et n'importe où. Une erreur peut se produire dans la CPU, dans les périphériques d'E / S ou dans le matériel de mémoire. Voici les principales activités d'un système d'exploitation en ce qui concerne la gestion des erreurs -

  • Le système d'exploitation vérifie en permanence d'éventuelles erreurs.
  • Le système d'exploitation prend les mesures appropriées pour garantir un calcul correct et cohérent.

La gestion des ressources

Dans le cas d'un environnement multi-utilisateur ou multi-tâches, des ressources telles que la mémoire principale, les cycles CPU et le stockage de fichiers doivent être allouées à chaque utilisateur ou travail. Voici les principales activités d'un système d'exploitation en ce qui concerne la gestion des ressources -

  • Le système d'exploitation gère toutes sortes de ressources à l'aide d'ordonnanceurs.
  • Les algorithmes de planification du processeur sont utilisés pour une meilleure utilisation du processeur.

protection

Considérant un système informatique ayant plusieurs utilisateurs et l'exécution simultanée de plusieurs processus, les différents processus doivent être protégés les uns des autres.

La protection fait référence à un mécanisme ou un moyen de contrôler l'accès des programmes, des processus ou des utilisateurs aux ressources définies par un système informatique. Voici les principales activités d'un système d'exploitation en ce qui concerne la protection -

  • Le système d'exploitation garantit que tous les accès aux ressources système sont contrôlés.
  • Le système d'exploitation garantit que les périphériques d'E / S externes sont protégés contre les tentatives d'accès non valides.
  • Le système d'exploitation fournit des fonctionnalités d'authentification pour chaque utilisateur au moyen de mots de passe.

Le traitement par lots

Le traitement par lots est une technique dans laquelle un système d'exploitation collecte les programmes et les données ensemble dans un lot avant le début du traitement. Un système d'exploitation effectue les activités suivantes liées au traitement par lots:

  • Le système d'exploitation définit un travail qui a une séquence prédéfinie de commandes, de programmes et de données comme une seule unité.

  • Le système d'exploitation garde un certain nombre de travaux en mémoire et les exécute sans aucune information manuelle.

  • Les travaux sont traités dans l'ordre de soumission, c'est-à-dire selon le principe du premier arrivé, premier servi.

  • Lorsqu'un travail termine son exécution, sa mémoire est libérée et la sortie du travail est copiée dans un spool de sortie pour une impression ou un traitement ultérieur.

Avantages

  • Le traitement par lots demande une grande partie du travail de l'opérateur à l'ordinateur.

  • Amélioration des performances lors du démarrage d'un nouveau travail dès que le travail précédent est terminé, sans aucune intervention manuelle.

Désavantages

  • Difficile de déboguer le programme.
  • Un travail peut entrer dans une boucle infinie.
  • En raison de l'absence de schéma de protection, un travail par lots peut affecter les travaux en attente.

Multitâche

Le multitâche se produit lorsque plusieurs tâches sont exécutées simultanément par la CPU en basculant entre elles. Les commutations se produisent si fréquemment que les utilisateurs peuvent interagir avec chaque programme pendant son exécution. Un système d'exploitation effectue les activités suivantes liées au multitâche -

  • L'utilisateur donne directement des instructions au système d'exploitation ou à un programme et reçoit une réponse immédiate.

  • Le système d'exploitation gère le multitâche de la manière qu'il peut gérer plusieurs opérations / exécute plusieurs programmes à la fois.

  • Les systèmes d'exploitation multitâches sont également appelés systèmes à temps partagé.

  • Ces systèmes d'exploitation ont été développés pour fournir une utilisation interactive d'un système informatique à un coût raisonnable.

  • Un système d'exploitation à temps partagé utilise le concept de planification et de multiprogrammation de l'UC pour fournir à chaque utilisateur une petite partie d'une CPU à temps partagé.

  • Chaque utilisateur a au moins un programme séparé en mémoire.

  • Un programme chargé en mémoire et en cours d’exécution est généralement appelé process.

  • Lorsqu'un processus s'exécute, il ne s'exécute généralement que très peu de temps avant de se terminer ou de devoir effectuer des E / S.

  • Étant donné que les E / S interactives s'exécutent généralement à des vitesses plus lentes, leur exécution peut prendre un certain temps. Pendant ce temps, une CPU peut être utilisée par un autre processus.

  • Le système d'exploitation permet aux utilisateurs de partager l'ordinateur simultanément. Étant donné que chaque action ou commande dans un système à temps partagé a tendance à être courte, seul un peu de temps CPU est nécessaire pour chaque utilisateur.

  • Au fur et à mesure que le système bascule rapidement le CPU d'un utilisateur / programme à l'autre, chaque utilisateur a l'impression qu'il / elle a son propre CPU, alors qu'en réalité un CPU est partagé entre de nombreux utilisateurs.

Multiprogrammation

Le partage du processeur, lorsque deux programmes ou plus résident en mémoire en même temps, est appelé multiprogramming. La multiprogrammation suppose un seul processeur partagé. La multiprogrammation augmente l'utilisation du processeur en organisant les tâches de sorte que la CPU en ait toujours une à exécuter.

La figure suivante montre la disposition de la mémoire pour un système de multiprogrammation.

Un système d'exploitation effectue les activités suivantes liées à la multiprogrammation.

  • Le système d'exploitation conserve plusieurs travaux en mémoire à la fois.

  • Cet ensemble de travaux est un sous-ensemble des travaux conservés dans le pool de travaux.

  • Le système d'exploitation sélectionne et commence à exécuter l'un des travaux en mémoire.

  • Les systèmes d'exploitation multiprogrammés surveillent l'état de tous les programmes actifs et des ressources système à l'aide de programmes de gestion de la mémoire pour s'assurer que le processeur n'est jamais inactif, sauf s'il n'y a pas de travaux à traiter.

Avantages

  • Utilisation du processeur élevée et efficace.
  • L'utilisateur a le sentiment que de nombreux programmes sont attribués au processeur presque simultanément.

Désavantages

  • La planification du processeur est requise.
  • Pour accueillir de nombreux travaux en mémoire, la gestion de la mémoire est nécessaire.

L'interactivité

L'interactivité fait référence à la capacité des utilisateurs à interagir avec un système informatique. Un système d'exploitation effectue les activités suivantes liées à l'interactivité -

  • Fournit à l'utilisateur une interface pour interagir avec le système.
  • Gère les périphériques d'entrée pour prendre les entrées de l'utilisateur. Par exemple, clavier.
  • Gère les périphériques de sortie pour afficher les sorties à l'utilisateur. Par exemple, Monitor.

Le temps de réponse du système d'exploitation doit être court, car l'utilisateur soumet et attend le résultat.

Système en temps réel

Les systèmes en temps réel sont généralement des systèmes embarqués dédiés. Un système d'exploitation effectue les activités suivantes liées à l'activité du système en temps réel.

  • Dans de tels systèmes, les systèmes d'exploitation lisent généralement et réagissent aux données des capteurs.
  • Le système d'exploitation doit garantir une réponse aux événements dans des délais fixes pour garantir des performances correctes.

Environnement distribué

Un environnement distribué fait référence à plusieurs processeurs ou processeurs indépendants dans un système informatique. Un système d'exploitation effectue les activités suivantes liées à l'environnement distribué -

  • Le système d'exploitation distribue les logiques de calcul entre plusieurs processeurs physiques.

  • Les processeurs ne partagent pas de mémoire ni d'horloge. Au lieu de cela, chaque processeur a sa propre mémoire locale.

  • Le système d'exploitation gère les communications entre les processeurs. Ils communiquent entre eux via différentes lignes de communication.

Spooling

Spooling est un acronyme pour les opérations périphériques simultanées en ligne. La mise en file d'attente fait référence à la mise en mémoire tampon des données de divers travaux d'E / S. Ce tampon est une zone spéciale de la mémoire ou du disque dur accessible aux périphériques d'E / S.

Un système d'exploitation effectue les activités suivantes liées à l'environnement distribué -

  • Gère la mise en file d'attente des données des périphériques d'E / S car les périphériques ont des taux d'accès aux données différents.

  • Maintient le tampon de mise en file d'attente qui fournit une station d'attente où les données peuvent reposer pendant que le périphérique le plus lent rattrape.

  • Conserve le calcul parallèle en raison du processus de mise en file d'attente car un ordinateur peut effectuer des E / S de manière parallèle. Il devient possible de demander à l'ordinateur de lire les données d'une bande, d'écrire des données sur le disque et d'écrire sur une imprimante à bande pendant qu'il effectue sa tâche de calcul.

Avantages

  • L'opération de mise en file d'attente utilise un disque comme un très grand tampon.
  • Le spoulage est capable de chevaucher les opérations d'E / S pour un travail avec les opérations du processeur pour un autre travail.

Processus

Un processus est essentiellement un programme en cours d'exécution. L'exécution d'un processus doit se dérouler de manière séquentielle.

Un processus est défini comme une entité qui représente l'unité de travail de base à mettre en œuvre dans le système.

Pour le dire simplement, nous écrivons nos programmes informatiques dans un fichier texte et lorsque nous exécutons ce programme, il devient un processus qui effectue toutes les tâches mentionnées dans le programme.

Lorsqu'un programme est chargé dans la mémoire et qu'il devient un processus, il peut être divisé en quatre sections: pile, tas, texte et données. L'image suivante montre une disposition simplifiée d'un processus dans la mémoire principale -

SN Composant et description
1

Stack

La pile de processus contient les données temporaires telles que les paramètres de méthode / fonction, l'adresse de retour et les variables locales.

2

Heap

Il s'agit de la mémoire allouée dynamiquement à un processus pendant son exécution.

3

Text

Cela inclut l'activité actuelle représentée par la valeur de Program Counter et le contenu des registres du processeur.

4

Data

Cette section contient les variables globales et statiques.

Programme

Un programme est un morceau de code qui peut être une seule ligne ou des millions de lignes. Un programme informatique est généralement écrit par un programmeur informatique dans un langage de programmation. Par exemple, voici un programme simple écrit en langage de programmation C -

#include <stdio.h>

int main() {
   printf("Hello, World! \n");
   return 0;
}

Un programme informatique est un ensemble d'instructions qui exécute une tâche spécifique lorsqu'il est exécuté par un ordinateur. Lorsque nous comparons un programme à un processus, nous pouvons conclure qu'un processus est une instance dynamique d'un programme informatique.

Une partie d'un programme informatique qui exécute une tâche bien définie est appelée algorithm. Une collection de programmes informatiques, de bibliothèques et de données connexes est appeléesoftware.

Cycle de vie du processus

Lorsqu'un processus s'exécute, il passe par différents états. Ces étapes peuvent différer selon les systèmes d'exploitation et les noms de ces états ne sont pas non plus standardisés.

En général, un processus peut avoir l'un des cinq états suivants à la fois.

SN État et description
1

Start

Il s'agit de l'état initial lors du premier démarrage / création d'un processus.

2

Ready

Le processus attend d'être affecté à un processeur. Les processus prêts attendent que le processeur leur soit alloué par le système d'exploitation pour pouvoir s'exécuter. Le processus peut entrer dans cet état aprèsStart state ou pendant son exécution mais interrompu par le planificateur pour affecter le processeur à un autre processus.

3

Running

Une fois que le processus a été attribué à un processeur par le planificateur du système d'exploitation, l'état du processus est défini sur en cours d'exécution et le processeur exécute ses instructions.

4

Waiting

Le processus passe à l'état d'attente s'il a besoin d'attendre une ressource, comme attendre l'entrée de l'utilisateur ou attendre qu'un fichier devienne disponible.

5

Terminated or Exit

Une fois que le processus a terminé son exécution ou qu'il est arrêté par le système d'exploitation, il est déplacé vers l'état terminé où il attend d'être supprimé de la mémoire principale.

Bloc de contrôle de processus (PCB)

Un bloc de contrôle de processus est une structure de données gérée par le système d'exploitation pour chaque processus. Le PCB est identifié par un identifiant de processus entier (PID). Un PCB conserve toutes les informations nécessaires pour suivre un processus comme indiqué ci-dessous dans le tableau -

SN Informations et description
1

Process State

L'état actuel du processus, c'est-à-dire s'il est prêt, en cours d'exécution, en attente ou autre.

2

Process privileges

Ceci est nécessaire pour autoriser / interdire l'accès aux ressources système.

3

Process ID

Identification unique pour chacun des processus dans le système d'exploitation.

4

Pointer

Un pointeur vers le processus parent.

5

Program Counter

Le compteur de programme est un pointeur vers l'adresse de la prochaine instruction à exécuter pour ce processus.

6

CPU registers

Divers registres de CPU où le processus doit être stocké pour être exécuté pour l'état de fonctionnement.

sept

CPU Scheduling Information

Priorité du processus et autres informations de planification nécessaires pour planifier le processus.

8

Memory management information

Cela comprend les informations de la table des pages, les limites de la mémoire, la table des segments en fonction de la mémoire utilisée par le système d'exploitation.

9

Accounting information

Cela inclut la quantité de CPU utilisée pour l'exécution du processus, les limites de temps, l'ID d'exécution, etc.

dix

IO status information

Cela inclut une liste des périphériques d'E / S alloués au processus.

L'architecture d'un PCB dépend entièrement du système d'exploitation et peut contenir des informations différentes selon les systèmes d'exploitation. Voici un schéma simplifié d'un PCB -

Le PCB est conservé pendant un processus pendant toute sa durée de vie et est supprimé une fois le processus terminé.

Définition

La planification de processus est l'activité du gestionnaire de processus qui gère la suppression du processus en cours de la CPU et la sélection d'un autre processus sur la base d'une stratégie particulière.

La planification des processus est une partie essentielle d'un système d'exploitation multiprogrammation. De tels systèmes d'exploitation permettent à plus d'un processus d'être chargé dans la mémoire exécutable à la fois et le processus chargé partage la CPU en utilisant le multiplexage temporel.

Files d'attente de planification de processus

Le système d'exploitation gère tous les PCB dans les files d'attente de planification de processus. Le système d'exploitation maintient une file d'attente distincte pour chacun des états de processus et les PCB de tous les processus dans le même état d'exécution sont placés dans la même file d'attente. Lorsque l'état d'un processus est modifié, son PCB est dissocié de sa file d'attente actuelle et déplacé vers sa nouvelle file d'attente d'état.

Le système d'exploitation gère les files d'attente de planification de processus importantes suivantes:

  • Job queue - Cette file d'attente conserve tous les processus du système.

  • Ready queue- Cette file d'attente conserve un ensemble de tous les processus résidant dans la mémoire principale, prêts et en attente d'exécution. Un nouveau processus est toujours placé dans cette file d'attente.

  • Device queues - Les processus bloqués en raison de l'indisponibilité d'un périphérique d'E / S constituent cette file d'attente.

Le système d'exploitation peut utiliser différentes politiques pour gérer chaque file d'attente (FIFO, Round Robin, Priority, etc.). Le planificateur du système d'exploitation détermine comment déplacer les processus entre les files d'attente prêtes et exécutées qui ne peuvent avoir qu'une seule entrée par cœur de processeur sur le système; dans le diagramme ci-dessus, il a été fusionné avec le CPU.

Modèle de processus à deux états

Le modèle de processus à deux états fait référence aux états en cours d'exécution et non en cours d'exécution qui sont décrits ci-dessous -

SN État et description
1

Running

Lorsqu'un nouveau processus est créé, il entre dans le système comme dans l'état en cours d'exécution.

2

Not Running

Les processus qui ne sont pas en cours d'exécution sont mis en file d'attente, attendant leur tour pour s'exécuter. Chaque entrée de la file d'attente est un pointeur vers un processus particulier. La file d'attente est implémentée à l'aide de la liste liée. L'utilisation du répartiteur est la suivante. Lorsqu'un processus est interrompu, ce processus est transféré dans la file d'attente. Si le processus est terminé ou abandonné, le processus est ignoré. Dans les deux cas, le répartiteur sélectionne ensuite un processus dans la file d'attente à exécuter.

Planificateurs

Les ordonnanceurs sont des logiciels système spéciaux qui gèrent la planification des processus de diverses manières. Leur tâche principale est de sélectionner les travaux à soumettre dans le système et de décider du processus à exécuter. Les planificateurs sont de trois types -

  • Planificateur à long terme
  • Planificateur à court terme
  • Planificateur à moyen terme

Planificateur à long terme

Il est également appelé un job scheduler. Un planificateur à long terme détermine quels programmes sont admis dans le système pour traitement. Il sélectionne les processus de la file d'attente et les charge en mémoire pour exécution. Le processus se charge dans la mémoire pour la planification du processeur.

L'objectif principal du planificateur de travaux est de fournir un mélange équilibré de travaux, tels que les E / S liées et le processeur. Il contrôle également le degré de multiprogrammation. Si le degré de multiprogrammation est stable, alors le taux moyen de création de processus doit être égal au taux de départ moyen des processus quittant le système.

Sur certains systèmes, le planificateur à long terme peut ne pas être disponible ou minimal. Les systèmes d'exploitation à temps partagé n'ont pas de planificateur à long terme. Lorsqu'un processus change l'état de nouveau à prêt, alors il y a utilisation du planificateur à long terme.

Planificateur à court terme

Il est également appelé comme CPU scheduler. Son objectif principal est d'augmenter les performances du système conformément à l'ensemble de critères choisi. Il s'agit du passage de l'état prêt à l'état d'exécution du processus. Le planificateur de processeur sélectionne un processus parmi les processus prêts à être exécutés et alloue le processeur à l'un d'entre eux.

Les planificateurs à court terme, également appelés répartiteurs, prennent la décision du processus à exécuter ensuite. Les planificateurs à court terme sont plus rapides que les planificateurs à long terme.

Planificateur à moyen terme

La planification à moyen terme fait partie de swapping. Il supprime les processus de la mémoire. Cela réduit le degré de multiprogrammation. L'ordonnanceur à moyen terme est en charge de la gestion des out-process échangés.

Un processus en cours d'exécution peut être suspendu s'il effectue une demande d'E / S. Un processus suspendu ne peut pas progresser vers l'achèvement. Dans cette condition, pour supprimer le processus de la mémoire et libérer de l'espace pour d'autres processus, le processus suspendu est déplacé vers le stockage secondaire. Ce processus s'appelleswapping, et on dit que le processus est échangé ou déployé. Un échange peut être nécessaire pour améliorer le mélange de processus.

Comparaison entre Scheduler

SN Planificateur à long terme Planificateur à court terme Planificateur à moyen terme
1 C'est un planificateur de travaux C'est un ordonnanceur CPU C'est un planificateur d'échange de processus.
2 La vitesse est inférieure à celle du planificateur à court terme La vitesse est la plus rapide parmi les deux autres La vitesse se situe entre le planificateur à court et à long terme.
3 Il contrôle le degré de multiprogrammation Il offre moins de contrôle sur le degré de multiprogrammation Cela réduit le degré de multiprogrammation.
4 Il est presque absent ou minimal dans le système de partage de temps Il est également minimal dans le système de partage de temps Cela fait partie des systèmes de partage du temps.
5 Il sélectionne les processus du pool et les charge en mémoire pour exécution Il sélectionne les processus qui sont prêts à s'exécuter Il peut réintroduire le processus en mémoire et l'exécution peut être poursuivie.

Changement de contexte

Un changement de contexte est le mécanisme permettant de stocker et de restaurer l'état ou le contexte d'une CPU dans le bloc de contrôle de processus afin qu'une exécution de processus puisse être reprise à partir du même point ultérieurement. En utilisant cette technique, un commutateur de contexte permet à plusieurs processus de partager un seul processeur. La commutation de contexte est une partie essentielle des fonctionnalités d'un système d'exploitation multitâche.

Lorsque l'ordonnanceur fait passer le CPU de l'exécution d'un processus à un autre, l'état du processus en cours d'exécution est stocké dans le bloc de contrôle de processus. Après cela, l'état du processus à exécuter ensuite est chargé à partir de son propre PCB et utilisé pour définir le PC, les registres, etc. À ce stade, le deuxième processus peut commencer à s'exécuter.

Les commutateurs de contexte sont gourmands en calculs car l'état du registre et de la mémoire doit être sauvegardé et restauré. Pour éviter la quantité de temps de commutation de contexte, certains systèmes matériels emploient deux ou plusieurs ensembles de registres de processeur. Lorsque le processus est commuté, les informations suivantes sont stockées pour une utilisation ultérieure.

  • Compteur de programme
  • Informations de planification
  • Valeur du registre de base et limite
  • Registre actuellement utilisé
  • État changé
  • Informations sur l'état des E / S
  • Information comptable

Un planificateur de processus planifie différents processus à affecter à la CPU en fonction d'algorithmes de planification particuliers. Il existe six algorithmes d'ordonnancement de processus populaires dont nous allons discuter dans ce chapitre -

  • Planification du premier arrivé, premier servi (FCFS)
  • Planification SJN (Shortest-Job-Next)
  • Planification prioritaire
  • Temps restant le plus court
  • Programmation à la ronde (RR)
  • Planification de files d'attente à plusieurs niveaux

Ces algorithmes sont soit non-preemptive or preemptive. Les algorithmes non préemptifs sont conçus de sorte qu'une fois qu'un processus entre dans l'état en cours d'exécution, il ne peut pas être préempté jusqu'à ce qu'il ait terminé son temps alloué, tandis que la planification préventive est basée sur la priorité où un planificateur peut préempter un processus en cours d'exécution de faible priorité à tout moment lorsqu'une priorité élevée le processus entre dans un état prêt.

Premier arrivé, premier servi (FCFS)

  • Les travaux sont exécutés sur la base du premier arrivé, premier servi.
  • Il s'agit d'un algorithme d'ordonnancement non préemptif et préemptif.
  • Facile à comprendre et à mettre en œuvre.
  • Son implémentation est basée sur la file d'attente FIFO.
  • Mauvaise performance car le temps d'attente moyen est élevé.

Wait time de chaque processus est comme suit -

Processus Temps d'attente: temps de service - heure d'arrivée
P0 0 - 0 = 0
P1 5 - 1 = 4
P2 8 - 2 = 6
P3 16 - 3 = 13

Temps d'attente moyen: (0 + 4 + 6 + 13) / 4 = 5,75

Travail le plus court ensuite (SJN)

  • Ceci est également connu comme shortest job first, ou SJF

  • Il s'agit d'un algorithme de planification non préemptif et préemptif.

  • Meilleure approche pour minimiser le temps d'attente.

  • Facile à mettre en œuvre dans les systèmes Batch où le temps CPU requis est connu à l'avance.

  • Impossible d'implémenter dans des systèmes interactifs où le temps CPU requis n'est pas connu.

  • Le transformateur doit savoir à l'avance combien de temps le processus prendra.

Données: tableau des processus, et leur heure d'arrivée, temps d'exécution

Processus Heure d'arrivée Temps d'exécution Temps de service
P0 0 5 0
P1 1 3 5
P2 2 8 14
P3 3 6 8

Waiting time de chaque processus est comme suit -

Processus Temps d'attente
P0 0 - 0 = 0
P1 5 - 1 = 4
P2 14 - 2 = 12
P3 8 - 3 = 5

Temps d'attente moyen: (0 + 4 + 12 + 5) / 4 = 21/4 = 5,25

Planification basée sur la priorité

  • La planification prioritaire est un algorithme non préemptif et l'un des algorithmes de planification les plus courants dans les systèmes par lots.

  • Chaque processus se voit attribuer une priorité. Le processus avec la priorité la plus élevée doit être exécuté en premier et ainsi de suite.

  • Les processus ayant la même priorité sont exécutés sur la base du premier arrivé, premier servi.

  • La priorité peut être décidée en fonction des besoins en mémoire, des besoins en temps ou de tout autre besoin en ressources.

Données: Tableau des processus, et leur heure d'arrivée, heure d'exécution et priorité. Ici, nous considérons que 1 est la priorité la plus basse.

Processus Heure d'arrivée Temps d'exécution Priorité Temps de service
P0 0 5 1 0
P1 1 3 2 11
P2 2 8 1 14
P3 3 6 3 5

Waiting time de chaque processus est comme suit -

Processus Temps d'attente
P0 0 - 0 = 0
P1 11 - 1 = 10
P2 14 - 2 = 12
P3 5 - 3 = 2

Temps d'attente moyen: (0 + 10 + 12 + 2) / 4 = 24/4 = 6

Temps restant le plus court

  • Le temps restant le plus court (SRT) est la version préemptive de l'algorithme SJN.

  • Le processeur est alloué au travail le plus proche de l'achèvement, mais il peut être préempté par un travail prêt plus récent avec un délai d'exécution plus court.

  • Impossible d'implémenter dans des systèmes interactifs où le temps CPU requis n'est pas connu.

  • Il est souvent utilisé dans les environnements par lots où les travaux courts doivent donner la préférence.

Planification à la ronde

  • Round Robin est l'algorithme de planification de processus préemptif.

  • Chaque processus reçoit un temps fixe pour s'exécuter, il est appelé un quantum.

  • Une fois qu'un processus est exécuté pendant une période donnée, il est préempté et un autre processus s'exécute pendant une période donnée.

  • La commutation de contexte est utilisée pour enregistrer les états des processus préemptés.

Wait time de chaque processus est comme suit -

Processus Temps d'attente: temps de service - heure d'arrivée
P0 (0 - 0) + (12 - 3) = 9
P1 (3 - 1) = 2
P2 (6 - 2) + (14 - 9) + (20 - 17) = 12
P3 (9 - 3) + (17 - 12) = 11

Temps d'attente moyen: (9 + 2 + 12 + 11) / 4 = 8,5

Planification de files d'attente à plusieurs niveaux

Les files d'attente à plusieurs niveaux ne sont pas un algorithme de planification indépendant. Ils utilisent d'autres algorithmes existants pour regrouper et planifier des tâches ayant des caractéristiques communes.

  • Plusieurs files d'attente sont conservées pour les processus ayant des caractéristiques communes.
  • Chaque file d'attente peut avoir ses propres algorithmes de planification.
  • Des priorités sont attribuées à chaque file d'attente.

Par exemple, les travaux liés au processeur peuvent être planifiés dans une file d'attente et tous les travaux liés aux E / S dans une autre file d'attente. Le planificateur de processus sélectionne ensuite alternativement les travaux dans chaque file d'attente et les attribue au processeur en fonction de l'algorithme affecté à la file d'attente.

Qu'est-ce que Thread?

Un thread est un flux d'exécution à travers le code de processus, avec son propre compteur de programme qui garde la trace de l'instruction à exécuter ensuite, des registres système qui contiennent ses variables de travail actuelles et une pile qui contient l'historique d'exécution.

Un thread partage avec ses threads pairs peu d'informations comme le segment de code, le segment de données et les fichiers ouverts. Lorsqu'un thread modifie un élément de mémoire de segment de code, tous les autres threads le voient.

Un fil est également appelé un lightweight process. Les threads fournissent un moyen d'améliorer les performances des applications grâce au parallélisme. Les threads représentent une approche logicielle pour améliorer les performances du système d'exploitation en réduisant le thread overhead équivaut à un processus classique.

Chaque thread appartient à exactement un processus et aucun thread ne peut exister en dehors d'un processus. Chaque thread représente un flux de contrôle distinct. Les threads ont été utilisés avec succès dans la mise en œuvre des serveurs réseau et du serveur Web. Ils fournissent également une base appropriée pour l'exécution parallèle d'applications sur des multiprocesseurs à mémoire partagée. La figure suivante montre le fonctionnement d'un processus monothread et multithread.

Différence entre processus et filetage

SN Processus Fil
1 Le processus est lourd ou gourmand en ressources. Le fil est léger, prenant moins de ressources qu'un processus.
2 La commutation de processus nécessite une interaction avec le système d'exploitation. La commutation de thread n'a pas besoin d'interagir avec le système d'exploitation.
3 Dans plusieurs environnements de traitement, chaque processus exécute le même code mais possède sa propre mémoire et ses propres ressources de fichiers. Tous les threads peuvent partager le même ensemble de fichiers ouverts, processus enfants.
4 Si un processus est bloqué, aucun autre processus ne peut s'exécuter tant que le premier processus n'est pas débloqué. Pendant qu'un thread est bloqué et en attente, un deuxième thread de la même tâche peut s'exécuter.
5 Plusieurs processus sans utiliser de threads utilisent plus de ressources. Plusieurs processus threadés utilisent moins de ressources.
6 Dans plusieurs processus, chaque processus fonctionne indépendamment des autres. Un thread peut lire, écrire ou modifier les données d'un autre thread.

Avantages du fil

  • Les threads minimisent le temps de changement de contexte.
  • L'utilisation de threads fournit la concurrence au sein d'un processus.
  • Communication efficace.
  • Il est plus économique de créer et de changer de contexte.
  • Les threads permettent l'utilisation des architectures multiprocesseurs à une plus grande échelle et plus d'efficacité.

Types de fil

Les threads sont implémentés de deux manières:

  • User Level Threads - Threads gérés par l'utilisateur.

  • Kernel Level Threads - Threads gérés par le système d'exploitation agissant sur le noyau, un noyau du système d'exploitation.

Threads de niveau utilisateur

Dans ce cas, le noyau de gestion des threads n'a pas connaissance de l'existence de threads. La bibliothèque de threads contient du code pour créer et détruire des threads, pour passer des messages et des données entre des threads, pour planifier l'exécution de threads et pour enregistrer et restaurer des contextes de thread. L'application démarre avec un seul thread.

Avantages

  • La commutation de thread ne nécessite pas de privilèges de mode noyau.
  • Le thread de niveau utilisateur peut s'exécuter sur n'importe quel système d'exploitation.
  • La planification peut être spécifique à l'application dans le thread de niveau utilisateur.
  • Les threads de niveau utilisateur sont rapides à créer et à gérer.

Désavantages

  • Dans un système d'exploitation classique, la plupart des appels système sont bloquants.
  • L'application multithread ne peut pas tirer parti du multitraitement.

Threads au niveau du noyau

Dans ce cas, la gestion des threads est effectuée par le noyau. Il n'y a pas de code de gestion des threads dans la zone d'application. Les threads du noyau sont pris en charge directement par le système d'exploitation. Toute application peut être programmée pour être multithread. Tous les threads d'une application sont pris en charge dans un seul processus.

Le noyau conserve les informations de contexte pour le processus dans son ensemble et pour les threads individuels au sein du processus. La planification par le noyau se fait sur une base de thread. Le noyau effectue la création, la planification et la gestion des threads dans l'espace noyau. Les threads du noyau sont généralement plus lents à créer et à gérer que les threads utilisateur.

Avantages

  • Le noyau peut planifier simultanément plusieurs threads du même processus sur plusieurs processus.
  • Si un thread d'un processus est bloqué, le noyau peut planifier un autre thread du même processus.
  • Les routines du noyau elles-mêmes peuvent être multithreads.

Désavantages

  • Les threads du noyau sont généralement plus lents à créer et à gérer que les threads utilisateur.
  • Le transfert de contrôle d'un thread à un autre au sein du même processus nécessite un changement de mode vers le noyau.

Modèles multithreading

Certains systèmes d'exploitation fournissent une fonction de thread de niveau utilisateur et de thread de niveau noyau. Solaris est un bon exemple de cette approche combinée. Dans un système combiné, plusieurs threads au sein de la même application peuvent s'exécuter en parallèle sur plusieurs processeurs et un appel système bloquant n'a pas besoin de bloquer l'ensemble du processus. Les modèles multithreading sont de trois types

  • Relation plusieurs à plusieurs.
  • Plusieurs à une relation.
  • Relation un à un.

Modèle plusieurs à plusieurs

Le modèle plusieurs-à-plusieurs multiplexe n'importe quel nombre de threads utilisateur sur un nombre égal ou inférieur de threads du noyau.

Le diagramme suivant montre le modèle de thread plusieurs à plusieurs dans lequel 6 threads de niveau utilisateur sont multiplexés avec 6 threads de niveau noyau. Dans ce modèle, les développeurs peuvent créer autant de threads utilisateur que nécessaire et les threads du noyau correspondants peuvent s'exécuter en parallèle sur une machine multiprocesseur. Ce modèle offre la meilleure précision sur la concurrence et lorsqu'un thread effectue un appel système bloquant, le noyau peut planifier un autre thread pour l'exécution.

Plusieurs à un modèle

Le modèle plusieurs-à-un mappe de nombreux threads de niveau utilisateur à un thread au niveau du noyau. La gestion des threads se fait dans l'espace utilisateur par la bibliothèque de threads. Lorsque le thread effectue un appel système bloquant, l'ensemble du processus est bloqué. Un seul thread peut accéder au noyau à la fois, de sorte que plusieurs threads ne peuvent pas s'exécuter en parallèle sur des multiprocesseurs.

Si les bibliothèques de threads de niveau utilisateur sont implémentées dans le système d'exploitation de telle sorte que le système ne les prend pas en charge, les threads du noyau utilisent les modes de relation plusieurs-à-un.

Un à un modèle

Il existe une relation univoque entre le thread de niveau utilisateur et le thread de niveau noyau. Ce modèle offre plus de concurrence que le modèle plusieurs-à-un. Il permet également à un autre thread de s'exécuter lorsqu'un thread effectue un appel système bloquant. Il prend en charge plusieurs threads à exécuter en parallèle sur des microprocesseurs.

L'inconvénient de ce modèle est que la création d'un thread utilisateur nécessite le thread Kernel correspondant. OS / 2, Windows NT et Windows 2000 utilisent un modèle de relation un à un.

Différence entre le thread au niveau de l'utilisateur et au niveau du noyau

SN Threads de niveau utilisateur Thread au niveau du noyau
1 Les threads de niveau utilisateur sont plus rapides à créer et à gérer. Les threads au niveau du noyau sont plus lents à créer et à gérer.
2 La mise en œuvre se fait par une bibliothèque de threads au niveau de l'utilisateur. Le système d'exploitation prend en charge la création de threads du noyau.
3 Le thread de niveau utilisateur est générique et peut s'exécuter sur n'importe quel système d'exploitation. Le thread au niveau du noyau est spécifique au système d'exploitation.
4 Les applications multithreads ne peuvent pas tirer parti du multitraitement. Les routines du noyau elles-mêmes peuvent être multithreads.

La gestion de la mémoire est la fonctionnalité d'un système d'exploitation qui gère ou gère la mémoire principale et déplace les processus entre la mémoire principale et le disque pendant l'exécution. La gestion de la mémoire garde une trace de chaque emplacement de mémoire, qu'il soit alloué à un processus ou qu'il soit libre. Il vérifie la quantité de mémoire à allouer aux processus. Il décide quel processus recevra de la mémoire à quel moment. Il suit chaque fois qu'une partie de la mémoire est libérée ou non allouée et met à jour le statut en conséquence.

Ce didacticiel vous apprendra les concepts de base liés à la gestion de la mémoire.

Espace d'adressage de processus

L'espace d'adressage de processus est l'ensemble des adresses logiques qu'un processus référence dans son code. Par exemple, lorsque l'adressage 32 bits est utilisé, les adresses peuvent être comprises entre 0 et 0x7fffffff; c'est-à-dire 2 ^ 31 nombres possibles, pour une taille théorique totale de 2 gigaoctets.

Le système d'exploitation se charge de mapper les adresses logiques aux adresses physiques au moment de l'allocation de mémoire au programme. Il existe trois types d'adresses utilisées dans un programme avant et après l'allocation de la mémoire -

SN Adresses de mémoire et description
1

Symbolic addresses

Les adresses utilisées dans un code source. Les noms de variables, les constantes et les étiquettes d'instructions sont les éléments de base de l'espace d'adressage symbolique.

2

Relative addresses

Au moment de la compilation, un compilateur convertit les adresses symboliques en adresses relatives.

3

Physical addresses

Le chargeur génère ces adresses au moment où un programme est chargé dans la mémoire principale.

Les adresses virtuelles et physiques sont les mêmes dans les schémas de liaison d'adresses au moment de la compilation et au moment du chargement. Les adresses virtuelles et physiques diffèrent dans le schéma de liaison d'adresse au moment de l'exécution.

L'ensemble de toutes les adresses logiques générées par un programme est appelé logical address space. L'ensemble de toutes les adresses physiques correspondant à ces adresses logiques est appeléphysical address space.

Le mappage d'exécution de l'adresse virtuelle à l'adresse physique est effectué par l'unité de gestion de la mémoire (MMU) qui est un périphérique matériel. MMU utilise le mécanisme suivant pour convertir une adresse virtuelle en adresse physique.

  • La valeur du registre de base est ajoutée à chaque adresse générée par un processus utilisateur, qui est traitée comme un décalage au moment où elle est envoyée en mémoire. Par exemple, si la valeur du registre de base est 10000, alors une tentative par l'utilisateur d'utiliser l'emplacement d'adresse 100 sera réallouée dynamiquement à l'emplacement 10100.

  • Le programme utilisateur traite des adresses virtuelles; il ne voit jamais les vraies adresses physiques.

Chargement statique vs dynamique

Le choix entre le chargement statique ou dynamique doit être fait au moment du développement du programme informatique. Si vous devez charger votre programme de manière statique, au moment de la compilation, les programmes complets seront compilés et liés sans laisser aucune dépendance de programme ou de module externe. L'éditeur de liens combine le programme objet avec d'autres modules objet nécessaires dans un programme absolu, qui comprend également des adresses logiques.

Si vous écrivez un programme chargé dynamiquement, votre compilateur compilera le programme et pour tous les modules que vous souhaitez inclure dynamiquement, seules les références seront fournies et le reste du travail sera effectué au moment de l'exécution.

Au moment du chargement, avec static loading, le programme absolu (et les données) sont chargés en mémoire pour que l'exécution démarre.

Si vous utilisez dynamic loading, les routines dynamiques de la bibliothèque sont stockées sur un disque sous une forme réadressable et ne sont chargées en mémoire que lorsqu'elles sont nécessaires au programme.

Liaison statique vs dynamique

Comme expliqué ci-dessus, lorsque la liaison statique est utilisée, l'éditeur de liens combine tous les autres modules nécessaires à un programme en un seul programme exécutable pour éviter toute dépendance d'exécution.

Lorsque la liaison dynamique est utilisée, il n'est pas nécessaire de lier le module ou la bibliothèque réelle avec le programme, mais une référence au module dynamique est fournie au moment de la compilation et de la liaison. Les bibliothèques de liens dynamiques (DLL) dans Windows et les objets partagés sous Unix sont de bons exemples de bibliothèques dynamiques.

Échange

L'échange est un mécanisme dans lequel un processus peut être temporairement échangé hors de la mémoire principale (ou être déplacé) vers un stockage secondaire (disque) et rendre cette mémoire disponible pour d'autres processus. Plus tard, le système rétablit le processus du stockage secondaire vers la mémoire principale.

Bien que les performances soient généralement affectées par le processus de permutation, elles aident à exécuter plusieurs et gros processus en parallèle et c'est la raison Swapping is also known as a technique for memory compaction.

Le temps total nécessaire au processus d'échange comprend le temps nécessaire pour déplacer l'ensemble du processus sur un disque secondaire, puis pour le recopier en mémoire, ainsi que le temps nécessaire au processus pour regagner la mémoire principale.

Supposons que le processus utilisateur ait une taille de 2048 Ko et que sur un disque dur standard où l'échange aura lieu, un taux de transfert de données d'environ 1 Mo par seconde. Le transfert réel du processus 1000K vers ou depuis la mémoire prendra

2048KB / 1024KB per second
= 2 seconds
= 2000 milliseconds

Compte tenu du temps d'entrée et de sortie, il faudra au total 4000 millisecondes plus d'autres frais généraux où le processus est en concurrence pour regagner la mémoire principale.

Allocation de mémoire

La mémoire principale a généralement deux partitions -

  • Low Memory - Le système d'exploitation réside dans cette mémoire.

  • High Memory - Les processus utilisateur sont conservés dans une mémoire élevée.

Le système d'exploitation utilise le mécanisme d'allocation de mémoire suivant.

SN Allocation de mémoire et description
1

Single-partition allocation

Dans ce type d'allocation, un schéma de registre de relocalisation est utilisé pour protéger les processus utilisateur les uns des autres et contre la modification du code et des données du système d'exploitation. Le registre de relocalisation contient la valeur de la plus petite adresse physique tandis que le registre de limite contient une plage d'adresses logiques. Chaque adresse logique doit être inférieure au registre de limite.

2

Multiple-partition allocation

Dans ce type d'allocation, la mémoire principale est divisée en un certain nombre de partitions de taille fixe où chaque partition ne doit contenir qu'un seul processus. Lorsqu'une partition est libre, un processus est sélectionné dans la file d'attente d'entrée et est chargé dans la partition libre. Lorsque le processus se termine, la partition devient disponible pour un autre processus.

Fragmentation

Au fur et à mesure que les processus sont chargés et supprimés de la mémoire, l'espace mémoire libre est divisé en petits morceaux. Il arrive parfois que les processus ne puissent pas être alloués aux blocs de mémoire compte tenu de leur petite taille et que les blocs de mémoire restent inutilisés. Ce problème est connu sous le nom de fragmentation.

La fragmentation est de deux types -

SN Fragmentation et description
1

External fragmentation

L'espace mémoire total est suffisant pour satisfaire une demande ou pour y résider un processus, mais il n'est pas contigu et ne peut donc pas être utilisé.

2

Internal fragmentation

Le bloc de mémoire affecté au processus est plus grand. Une partie de la mémoire est laissée inutilisée, car elle ne peut pas être utilisée par un autre processus.

Le diagramme suivant montre comment la fragmentation peut entraîner un gaspillage de mémoire et une technique de compactage peut être utilisée pour créer plus de mémoire libre à partir de la mémoire fragmentée -

La fragmentation externe peut être réduite en compactant ou en mélangeant le contenu de la mémoire pour placer toute la mémoire libre ensemble dans un grand bloc. Pour rendre le compactage possible, le déplacement doit être dynamique.

La fragmentation interne peut être réduite en attribuant efficacement la plus petite partition mais suffisamment grande pour le processus.

Pagination

Un ordinateur peut adresser plus de mémoire que la quantité physiquement installée sur le système. Cette mémoire supplémentaire est en fait appelée mémoire virtuelle et c'est une section d'un disque dur qui est configurée pour émuler la RAM de l'ordinateur. La technique de pagination joue un rôle important dans l'implémentation de la mémoire virtuelle.

La pagination est une technique de gestion de la mémoire dans laquelle l'espace d'adressage de processus est divisé en blocs de même taille appelés pages(la taille est la puissance de 2, entre 512 octets et 8192 octets). La taille du processus est mesurée en nombre de pages.

De même, la mémoire principale est divisée en petits blocs de mémoire (physique) de taille fixe appelés frames et la taille d'une trame est gardée la même que celle d'une page pour avoir une utilisation optimale de la mémoire principale et pour éviter la fragmentation externe.

Traduction d'adresse

L'adresse de la page est appelée logical address et représenté par page number et le offset.

Logical Address = Page number + page offset

L'adresse de trame est appelée physical address et représenté par un frame number et le offset.

Physical Address = Frame number + page offset

Une structure de données appelée page map table est utilisé pour garder une trace de la relation entre une page d'un processus et une trame de la mémoire physique.

Lorsque le système attribue un cadre à une page, il traduit cette adresse logique en une adresse physique et crée une entrée dans la table de pages à utiliser tout au long de l'exécution du programme.

Lorsqu'un processus doit être exécuté, ses pages correspondantes sont chargées dans toutes les trames de mémoire disponibles. Supposons que vous ayez un programme de 8 Ko mais que votre mémoire ne puisse accueillir que 5 Ko à un moment donné, alors le concept de pagination entrera en image. Lorsqu'un ordinateur manque de RAM, le système d'exploitation (OS) déplace les pages de mémoire inactives ou indésirables vers la mémoire secondaire pour libérer de la RAM pour d'autres processus et les ramène lorsque le programme en a besoin.

Ce processus se poursuit pendant toute l'exécution du programme où le système d'exploitation continue de supprimer les pages inactives de la mémoire principale et de les écrire sur la mémoire secondaire et de les ramener lorsque requis par le programme.

Avantages et inconvénients de la pagination

Voici une liste des avantages et des inconvénients de la pagination -

  • La pagination réduit la fragmentation externe, mais souffre toujours de la fragmentation interne.

  • La pagination est simple à implémenter et considérée comme une technique efficace de gestion de la mémoire.

  • En raison de la taille égale des pages et des cadres, l'échange devient très facile.

  • La table des pages nécessite de l'espace mémoire supplémentaire, elle peut donc ne pas convenir à un système disposant de peu de RAM.

Segmentation

La segmentation est une technique de gestion de la mémoire dans laquelle chaque travail est divisé en plusieurs segments de différentes tailles, un pour chaque module contenant des éléments qui exécutent des fonctions associées. Chaque segment est en fait un espace d'adressage logique différent du programme.

Lorsqu'un processus doit être exécuté, sa segmentation correspondante est chargée dans une mémoire non contiguë bien que chaque segment soit chargé dans un bloc contigu de mémoire disponible.

La gestion de la mémoire de segmentation fonctionne de manière très similaire à la pagination, mais ici les segments sont de longueur variable alors que les pages de pagination sont de taille fixe.

Un segment de programme contient la fonction principale du programme, les fonctions utilitaires, les structures de données, etc. Le système d'exploitation maintient unsegment map tablepour chaque processus et une liste des blocs de mémoire libres avec les numéros de segment, leur taille et les emplacements mémoire correspondants dans la mémoire principale. Pour chaque segment, la table stocke l'adresse de départ du segment et la longueur du segment. Une référence à un emplacement mémoire comprend une valeur qui identifie un segment et un décalage.

Un ordinateur peut adresser plus de mémoire que la quantité physiquement installée sur le système. Cette mémoire supplémentaire est en fait appeléevirtual memory et c'est une section d'un disque dur qui est configurée pour émuler la RAM de l'ordinateur.

Le principal avantage visible de ce schéma est que les programmes peuvent être plus volumineux que la mémoire physique. La mémoire virtuelle a deux objectifs. Premièrement, cela nous permet d'étendre l'utilisation de la mémoire physique en utilisant le disque. Deuxièmement, cela nous permet d'avoir une protection de la mémoire, car chaque adresse virtuelle est traduite en une adresse physique.

Voici les situations où il n'est pas nécessaire de charger complètement le programme dans la mémoire principale.

  • Les routines de gestion des erreurs écrites par l'utilisateur ne sont utilisées que lorsqu'une erreur s'est produite dans les données ou le calcul.

  • Certaines options et fonctionnalités d'un programme peuvent être rarement utilisées.

  • De nombreuses tables se voient attribuer une quantité fixe d'espace d'adressage même si seule une petite partie de la table est réellement utilisée.

  • La possibilité d'exécuter un programme qui n'est que partiellement en mémoire contrarierait de nombreux avantages.

  • Moins de nombre d'E / S seraient nécessaires pour charger ou échanger chaque programme utilisateur en mémoire.

  • Un programme ne serait plus contraint par la quantité de mémoire physique disponible.

  • Chaque programme utilisateur pourrait prendre moins de mémoire physique, plus de programmes pourraient être exécutés en même temps, avec une augmentation correspondante de l'utilisation du processeur et du débit.

Des microprocesseurs modernes destinés à un usage général, une unité de gestion de mémoire ou MMU, sont intégrés au matériel. Le travail de la MMU est de traduire les adresses virtuelles en adresses physiques. Un exemple de base est donné ci-dessous -

La mémoire virtuelle est généralement implémentée par pagination à la demande. Il peut également être implémenté dans un système de segmentation. La segmentation de la demande peut également être utilisée pour fournir de la mémoire virtuelle.

Demande de pagination

Un système de pagination à la demande est assez similaire à un système de pagination avec permutation où les processus résident dans la mémoire secondaire et les pages sont chargées uniquement à la demande, pas à l'avance. Lorsqu'un changement de contexte se produit, le système d'exploitation ne copie aucune des pages de l'ancien programme sur le disque ou l'une des pages du nouveau programme dans la mémoire principale Au lieu de cela, il commence simplement à exécuter le nouveau programme après le chargement de la première page et récupère cela les pages du programme telles qu'elles sont référencées.

Lors de l'exécution d'un programme, si le programme référence une page qui n'est pas disponible dans la mémoire principale parce qu'elle a été permutée il y a peu, le processeur traite cette référence mémoire invalide comme une page fault et transfère le contrôle du programme vers le système d'exploitation pour demander à nouveau la page dans la mémoire.

Avantages

Voici les avantages de la pagination à la demande -

  • Grande mémoire virtuelle.
  • Utilisation plus efficace de la mémoire.
  • Il n'y a pas de limite au degré de multiprogrammation.

Désavantages

  • Le nombre de tables et la quantité de surcharge du processeur pour la gestion des interruptions de page sont plus importants que dans le cas des techniques de gestion paginées simples.

Algorithme de remplacement de page

Les algorithmes de remplacement de page sont les techniques par lesquelles un système d'exploitation décide quelles pages de mémoire doivent être permutées, écrites sur le disque lorsqu'une page de mémoire doit être allouée. La pagination se produit chaque fois qu'une erreur de page se produit et qu'une page gratuite ne peut pas être utilisée à des fins de comptabilité d'allocation pour expliquer que les pages ne sont pas disponibles ou que le nombre de pages gratuites est inférieur au nombre de pages requises.

Lorsque la page qui a été sélectionnée pour le remplacement et qui a été paginée, est à nouveau référencée, elle doit être lue à partir du disque, ce qui nécessite l'achèvement des E / S. Ce processus détermine la qualité de l'algorithme de remplacement de page: plus le temps d'attente pour les entrées de page est court, meilleur est l'algorithme.

Un algorithme de remplacement de page examine les informations limitées sur l'accès aux pages fournies par le matériel et essaie de sélectionner les pages à remplacer pour minimiser le nombre total de pages manquées, tout en l'équilibrant avec les coûts de stockage principal et le temps processeur de l'algorithme. lui-même. Il existe de nombreux algorithmes de remplacement de page. Nous évaluons un algorithme en l'exécutant sur une chaîne particulière de référence mémoire et en calculant le nombre de défauts de page,

Chaîne de référence

La chaîne de références mémoire est appelée chaîne de référence. Les chaînes de référence sont générées artificiellement ou en traçant un système donné et en enregistrant l'adresse de chaque référence mémoire. Ce dernier choix produit un grand nombre de données, où l'on note deux choses.

  • Pour une taille de page donnée, nous devons considérer uniquement le numéro de page, pas l'adresse entière.

  • Si nous avons une référence à une page p, puis toute référence à la page immédiatement suivante pne causera jamais de défaut de page. La page p sera en mémoire après la première référence; les références immédiatement suivantes ne seront pas défectueuses.

  • Par exemple, considérez la séquence d'adresses suivante - 123,215,600,1234,76,96

  • Si la taille de la page est 100, la chaîne de référence est 1,2,6,12,0,0

Algorithme du premier entré, premier sorti (FIFO)

  • La plus ancienne page de la mémoire principale est celle qui sera sélectionnée pour le remplacement.

  • Facile à mettre en œuvre, gardez une liste, remplacez les pages de la queue et ajoutez de nouvelles pages en tête.

Algorithme de page optimal

  • Un algorithme de remplacement de page optimal a le taux d'erreur de page le plus bas de tous les algorithmes. Un algorithme de remplacement de page optimal existe et a été appelé OPT ou MIN.

  • Remplacez la page qui ne sera pas utilisée pendant la période la plus longue. Utilisez l'heure à laquelle une page doit être utilisée.

Algorithme le moins récemment utilisé (LRU)

  • La page qui n'a pas été utilisée depuis le plus longtemps dans la mémoire principale est celle qui sera sélectionnée pour le remplacement.

  • Facile à mettre en œuvre, gardez une liste, remplacez les pages en remontant le temps.

Algorithme de mise en mémoire tampon de page

  • Pour démarrer rapidement un processus, conservez un pool d'images libres.
  • En cas d'erreur de page, sélectionnez une page à remplacer.
  • Écrivez la nouvelle page dans le cadre du pool libre, marquez le tableau des pages et redémarrez le processus.
  • Maintenant, écrivez la page sale sur le disque et placez le cadre contenant la page remplacée dans le pool libre.

Algorithme le moins fréquemment utilisé (LFU)

  • La page avec le plus petit nombre est celle qui sera sélectionnée pour le remplacement.

  • Cet algorithme souffre de la situation dans laquelle une page est fortement utilisée pendant la phase initiale d'un processus, mais n'est plus jamais utilisée.

Algorithme le plus fréquemment utilisé (MFU)

  • Cet algorithme est basé sur l'argument selon lequel la page avec le plus petit nombre vient probablement d'être importée et n'a pas encore été utilisée.

L'une des tâches importantes d'un système d'exploitation est de gérer divers périphériques d'E / S, y compris la souris, les claviers, le pavé tactile, les lecteurs de disque, les adaptateurs d'affichage, les périphériques USB, l'écran bitmap, la LED, le convertisseur analogique-numérique, On / interrupteur d'arrêt, connexions réseau, E / S audio, imprimantes, etc.

Un système d'E / S doit prendre une demande d'E / S d'application et l'envoyer au périphérique physique, puis prendre toute réponse provenant du périphérique et l'envoyer à l'application. Les périphériques d'E / S peuvent être divisés en deux catégories -

  • Block devices- Un périphérique bloc est un périphérique avec lequel le pilote communique en envoyant des blocs entiers de données. Par exemple, disques durs, caméras USB, Disk-On-Key, etc.

  • Character devices- Un périphérique de caractères est un périphérique avec lequel le pilote communique en envoyant et en recevant des caractères uniques (octets, octets). Par exemple, les ports série, les ports parallèles, les cartes son, etc.

Contrôleurs de périphériques

Les pilotes de périphérique sont des modules logiciels qui peuvent être connectés à un système d'exploitation pour gérer un périphérique particulier. Le système d'exploitation prend l'aide des pilotes de périphériques pour gérer tous les périphériques d'E / S.

Le contrôleur de périphérique fonctionne comme une interface entre un périphérique et un pilote de périphérique. Les unités d'E / S (clavier, souris, imprimante, etc.) se composent généralement d'un composant mécanique et d'un composant électronique où le composant électronique est appelé contrôleur de périphérique.

Il existe toujours un contrôleur de périphérique et un pilote de périphérique pour chaque périphérique afin de communiquer avec les systèmes d'exploitation. Un contrôleur de périphérique peut être capable de gérer plusieurs périphériques. En tant qu'interface, sa tâche principale est de convertir le train de bits série en bloc d'octets, d'effectuer une correction d'erreur si nécessaire.

Tout périphérique connecté à l'ordinateur est connecté par une fiche et une prise, et la prise est connectée à un contrôleur de périphérique. Voici un modèle de connexion du CPU, de la mémoire, des contrôleurs et des périphériques d'E / S où les contrôleurs de CPU et de périphérique utilisent tous un bus commun pour la communication.

E / S synchrones vs asynchrones

  • Synchronous I/O - Dans ce schéma, l'exécution du processeur attend pendant que les E / S se poursuivent

  • Asynchronous I/O - Les E / S se déroulent en même temps que l'exécution du CPU

Communication avec les périphériques d'E / S

L'UC doit disposer d'un moyen de transmettre des informations vers et depuis un périphérique d'E / S. Il existe trois approches disponibles pour communiquer avec le CPU et le périphérique.

  • Instruction spéciale I / O
  • E / S mappées en mémoire
  • Accès direct à la mémoire (DMA)

Instruction spéciale I / O

Cela utilise des instructions CPU spécialement conçues pour contrôler les périphériques d'E / S. Ces instructions permettent généralement d'envoyer des données à un périphérique d'E / S ou de les lire à partir d'un périphérique d'E / S.

E / S mappées en mémoire

Lors de l'utilisation d'E / S mappées en mémoire, le même espace d'adressage est partagé par la mémoire et les périphériques d'E / S. Le périphérique est connecté directement à certains emplacements de mémoire principale afin que le périphérique d'E / S puisse transférer un bloc de données vers / depuis la mémoire sans passer par le CPU.

Lors de l'utilisation d'E / S mappées en mémoire, le système d'exploitation alloue un tampon dans la mémoire et informe le périphérique d'E / S d'utiliser ce tampon pour envoyer des données à la CPU. Le périphérique d'E / S fonctionne de manière asynchrone avec le CPU, interrompt le CPU une fois terminé.

L'avantage de cette méthode est que chaque instruction qui peut accéder à la mémoire peut être utilisée pour manipuler un périphérique d'E / S. Les E / S mappées en mémoire sont utilisées pour la plupart des périphériques d'E / S haute vitesse tels que les disques et les interfaces de communication.

Accès direct à la mémoire (DMA)

Les périphériques lents comme les claviers génèrent une interruption vers le processeur principal après le transfert de chaque octet. Si un périphérique rapide tel qu'un disque générait une interruption pour chaque octet, le système d'exploitation passerait la plupart de son temps à gérer ces interruptions. Ainsi, un ordinateur typique utilise du matériel d'accès direct à la mémoire (DMA) pour réduire cette surcharge.

L'accès direct à la mémoire (DMA) signifie que l'UC accorde au module d'E / S l'autorisation de lire ou d'écrire dans la mémoire sans intervention. Le module DMA contrôle lui-même l'échange de données entre la mémoire principale et le périphérique d'E / S. La CPU n'est impliquée qu'au début et à la fin du transfert et n'est interrompue qu'après le transfert complet du bloc.

L'accès direct à la mémoire nécessite un matériel spécial appelé contrôleur DMA (DMAC) qui gère les transferts de données et arbitre l'accès au bus système. Les contrôleurs sont programmés avec des pointeurs de source et de destination (où lire / écrire les données), des compteurs pour suivre le nombre d'octets transférés et des paramètres, qui incluent les types d'E / S et de mémoire, les interruptions et les états des cycles du processeur.

Le système d'exploitation utilise le matériel DMA comme suit -

Étape La description
1 Le pilote de périphérique est invité à transférer les données du disque vers une adresse de tampon X.
2 Le pilote de périphérique demande ensuite au contrôleur de disque de transférer les données vers la mémoire tampon.
3 Le contrôleur de disque démarre le transfert DMA.
4 Le contrôleur de disque envoie chaque octet au contrôleur DMA.
5 Le contrôleur DMA transfère les octets au tampon, augmente l'adresse mémoire, diminue le compteur C jusqu'à ce que C devienne zéro.
6 Lorsque C devient zéro, DMA interrompt la CPU pour signaler l'achèvement du transfert.

Interrogation vs interruptions d'E / S

Un ordinateur doit avoir un moyen de détecter l'arrivée de tout type d'entrée. Cela peut se produire de deux manières, appeléespolling et interrupts. Ces deux techniques permettent au processeur de gérer des événements qui peuvent survenir à tout moment et qui ne sont pas liés au processus qu'il exécute actuellement.

Interrogation d'E / S

L'interrogation est le moyen le plus simple pour un périphérique d'E / S de communiquer avec le processeur. Le processus de vérification périodique de l'état du périphérique pour voir s'il est temps pour la prochaine opération d'E / S est appelé interrogation. Le périphérique d'E / S met simplement les informations dans un registre d'état, et le processeur doit venir chercher les informations.

La plupart du temps, les appareils ne nécessitent pas d'attention et quand on le fait, il devra attendre d'être interrogé ensuite par le programme d'interrogation. C'est une méthode inefficace et une grande partie du temps des processeurs est gaspillée sur des sondages inutiles.

Comparez cette méthode à un enseignant qui demande continuellement à chaque élève d'une classe, l'un après l'autre, s'ils ont besoin d'aide. De toute évidence, la méthode la plus efficace serait pour un élève d'informer l'enseignant chaque fois qu'il a besoin d'aide.

Interrompt les E / S

Un autre schéma pour traiter les E / S est la méthode pilotée par interruption. Une interruption est un signal adressé au microprocesseur provenant d'un appareil qui nécessite une attention particulière.

Un contrôleur de périphérique met un signal d'interruption sur le bus lorsqu'il a besoin de l'attention du CPU lorsque le CPU reçoit une interruption.Il enregistre son état actuel et appelle le gestionnaire d'interruption approprié en utilisant le vecteur d'interruption (adresses des routines du système d'exploitation pour gérer divers événements). Une fois le dispositif d'interruption traité, la CPU poursuit sa tâche d'origine comme si elle n'avait jamais été interrompue.

Les logiciels d'E / S sont souvent organisés dans les couches suivantes -

  • User Level Libraries- Cela fournit une interface simple au programme utilisateur pour effectuer des entrées et des sorties. Par exemple,stdio est une bibliothèque fournie par les langages de programmation C et C ++.

  • Kernel Level Modules - Cela permet au pilote de périphérique d'interagir avec le contrôleur de périphérique et les modules d'E / S indépendants du périphérique utilisés par les pilotes de périphérique.

  • Hardware - Cette couche comprend le matériel réel et le contrôleur matériel qui interagit avec les pilotes de périphérique et rend le matériel vivant.

Un concept clé dans la conception d'un logiciel d'E / S est qu'il doit être indépendant du périphérique où il doit être possible d'écrire des programmes qui peuvent accéder à n'importe quel périphérique d'E / S sans avoir à spécifier le périphérique à l'avance. Par exemple, un programme qui lit un fichier en entrée doit pouvoir lire un fichier sur une disquette, sur un disque dur ou sur un CD-ROM, sans avoir à modifier le programme pour chaque périphérique différent.

Pilotes de périphérique

Les pilotes de périphérique sont des modules logiciels qui peuvent être connectés à un système d'exploitation pour gérer un périphérique particulier. Le système d'exploitation prend l'aide des pilotes de périphériques pour gérer tous les périphériques d'E / S. Les pilotes de périphérique encapsulent le code dépendant du périphérique et implémentent une interface standard de telle sorte que le code contienne des lectures / écritures de registre spécifiques au périphérique. Le pilote de périphérique est généralement écrit par le fabricant du périphérique et livré avec le périphérique sur un CD-ROM.

Un pilote de périphérique effectue les tâches suivantes -

  • Pour accepter la demande du logiciel indépendant de l'appareil ci-dessus.
  • Interagir avec le contrôleur de périphérique pour prendre et donner des E / S et effectuer la gestion des erreurs requise
  • S'assurer que la demande est exécutée avec succès

La manière dont un pilote de périphérique gère une requête est la suivante: Supposons qu'une requête vienne lire un bloc N. Si le pilote est inactif au moment où une requête arrive, il commence immédiatement à exécuter la requête. Sinon, si le pilote est déjà occupé avec une autre demande, il place la nouvelle demande dans la file d'attente des demandes en attente.

Gestionnaires d'interruption

Un gestionnaire d'interruption, également appelé routine de service d'interruption ou ISR, est un logiciel ou plus précisément une fonction de rappel dans un système d'exploitation ou plus spécifiquement dans un pilote de périphérique, dont l'exécution est déclenchée par la réception d'une interruption.

Lorsque l'interruption se produit, la procédure d'interruption fait tout ce qu'elle doit pour gérer l'interruption, met à jour les structures de données et réveille le processus qui attendait qu'une interruption se produise.

Le mécanisme d'interruption accepte une adresse - un nombre qui sélectionne une routine / fonction de gestion d'interruption spécifique dans un petit ensemble. Dans la plupart des architectures, cette adresse est un offset stocké dans une table appelée table vectorielle d'interruption. Ce vecteur contient les adresses mémoire des gestionnaires d'interruption spécialisés.

Logiciel d'E / S indépendant du périphérique

La fonction de base du logiciel indépendant de l'appareil est d'exécuter les fonctions d'E / S communes à tous les appareils et de fournir une interface uniforme au logiciel de niveau utilisateur. Bien qu'il soit difficile d'écrire un logiciel complètement indépendant du périphérique, nous pouvons écrire certains modules qui sont communs à tous les périphériques. Voici une liste des fonctions du logiciel d'E / S indépendant de l'appareil -

  • Interfaçage uniforme pour les pilotes de périphériques
  • Nom des appareils - Noms mnémotechniques mappés aux numéros d'appareils majeurs et mineurs
  • Protection des appareils
  • Fournir une taille de bloc indépendante de l'appareil
  • Mise en mémoire tampon car les données provenant d'un appareil ne peuvent pas être stockées dans la destination finale.
  • Allocation de stockage sur les périphériques bloc
  • Allocation et libération d'appareils dédiés
  • Rapport d'erreurs

Logiciel d'E / S de l'espace utilisateur

Ce sont les bibliothèques qui fournissent une interface plus riche et simplifiée pour accéder aux fonctionnalités du noyau ou finalement interactives avec les pilotes de périphériques. La plupart des logiciels d'E / S de niveau utilisateur se composent de procédures de bibliothèque à quelques exceptions près comme le système de spoule qui est une façon de traiter les périphériques d'E / S dédiés dans un système de multiprogrammation.

Les bibliothèques d'E / S (par exemple, stdio) sont dans l'espace utilisateur pour fournir une interface avec le logiciel d'E / S indépendant du périphérique résident du système d'exploitation. Par exemple, putchar (), getchar (), printf () et scanf () sont des exemples de bibliothèque d'E / S de niveau utilisateur stdio disponible en programmation C.

Sous-système d'E / S du noyau

Le sous-système d'E / S du noyau est chargé de fournir de nombreux services liés aux E / S. Voici quelques-uns des services fournis.

  • Scheduling- Le noyau planifie un ensemble de demandes d'E / S pour déterminer un bon ordre dans lequel les exécuter. Lorsqu'une application émet un appel système d'E / S bloquant, la demande est placée dans la file d'attente de ce périphérique. Le planificateur d'E / S du noyau réorganise l'ordre de la file d'attente pour améliorer l'efficacité globale du système et le temps de réponse moyen des applications.

  • Buffering - Le sous-système d'E / S du noyau conserve une zone de mémoire appelée bufferqui stocke les données lors de leur transfert entre deux appareils ou entre un appareil avec une opération d'application. La mise en mémoire tampon est effectuée pour faire face à une discordance de vitesse entre le producteur et le consommateur d'un flux de données ou pour s'adapter entre des périphériques qui ont des tailles de transfert de données différentes.

  • Caching- Le noyau maintient la mémoire cache qui est la région de la mémoire rapide qui contient des copies de données. L'accès à la copie mise en cache est plus efficace que l'accès à l'original.

  • Spooling and Device Reservation- Un spool est un tampon qui contient la sortie d'un périphérique, comme une imprimante, qui ne peut pas accepter les flux de données entrelacés. Le système de spoule copie les fichiers spoule en file d'attente sur l'imprimante un par un. Dans certains systèmes d'exploitation, la mise en file d'attente est gérée par un processus démon système. Dans d'autres systèmes d'exploitation, il est géré par un thread dans le noyau.

  • Error Handling - Un système d'exploitation qui utilise une mémoire protégée peut se prémunir contre de nombreux types d'erreurs matérielles et applicatives.

Fichier

Un fichier est une collection nommée d'informations associées qui sont enregistrées sur un stockage secondaire tel que des disques magnétiques, des bandes magnétiques et des disques optiques. En général, un fichier est une séquence de bits, d'octets, de lignes ou d'enregistrements dont la signification est définie par le créateur et l'utilisateur du fichier.

Structure des fichiers

Une structure de fichier doit être conforme à un format requis que le système d'exploitation peut comprendre.

  • Un fichier a une certaine structure définie en fonction de son type.

  • Un fichier texte est une séquence de caractères organisée en lignes.

  • Un fichier source est une séquence de procédures et de fonctions.

  • Un fichier objet est une séquence d'octets organisée en blocs compréhensibles par la machine.

  • Lorsque le système d'exploitation définit différentes structures de fichiers, il contient également le code pour prendre en charge ces structures de fichiers. Unix, MS-DOS prend en charge le nombre minimum de structures de fichiers.

Type de fichier

Le type de fichier fait référence à la capacité du système d'exploitation à distinguer différents types de fichiers tels que les fichiers texte, les fichiers source et les fichiers binaires, etc. De nombreux systèmes d'exploitation prennent en charge de nombreux types de fichiers. Les systèmes d'exploitation comme MS-DOS et UNIX ont les types de fichiers suivants -

Fichiers ordinaires

  • Ce sont les fichiers qui contiennent des informations utilisateur.
  • Ceux-ci peuvent avoir du texte, des bases de données ou un programme exécutable.
  • L'utilisateur peut appliquer diverses opérations sur de tels fichiers comme ajouter, modifier, supprimer ou même supprimer le fichier entier.

Fichiers de répertoire

  • Ces fichiers contiennent une liste de noms de fichiers et d'autres informations liées à ces fichiers.

Fichiers spéciaux

  • Ces fichiers sont également appelés fichiers de périphérique.
  • Ces fichiers représentent des périphériques physiques tels que des disques, des terminaux, des imprimantes, des réseaux, des lecteurs de bande, etc.

Ces fichiers sont de deux types -

  • Character special files - les données sont traitées caractère par caractère comme dans le cas des terminaux ou des imprimantes.

  • Block special files - les données sont traitées par blocs comme dans le cas des disques et des bandes.

Mécanismes d'accès aux fichiers

Le mécanisme d'accès aux fichiers fait référence à la manière dont les enregistrements d'un fichier peuvent être consultés. Il existe plusieurs façons d'accéder aux fichiers -

  • Accès séquentiel
  • Accès direct / aléatoire
  • Accès séquentiel indexé

Accès séquentiel

Un accès séquentiel est celui dans lequel les enregistrements sont accédés dans une certaine séquence, c'est-à-dire que les informations du fichier sont traitées dans l'ordre, un enregistrement après l'autre. Cette méthode d'accès est la plus primitive. Exemple: les compilateurs accèdent généralement aux fichiers de cette manière.

Accès direct / aléatoire

  • L'organisation des fichiers à accès aléatoire permet d'accéder directement aux enregistrements.

  • Chaque enregistrement a sa propre adresse sur le fichier à l'aide de laquelle il est directement accessible pour la lecture ou l'écriture.

  • Les enregistrements n'ont pas besoin d'être dans un ordre quelconque dans le fichier et ils n'ont pas besoin d'être dans des emplacements adjacents sur le support de stockage.

Accès séquentiel indexé

  • Ce mécanisme est construit sur la base d'un accès séquentiel.
  • Un index est créé pour chaque fichier qui contient des pointeurs vers différents blocs.
  • L'index est recherché séquentiellement et son pointeur est utilisé pour accéder directement au fichier.

Allocation d'espace

Les fichiers sont alloués aux espaces disque par système d'exploitation. Les systèmes d'exploitation se déploient de trois manières principales pour allouer de l'espace disque aux fichiers.

  • Allocation contiguë
  • Allocation liée
  • Allocation indexée

Allocation contiguë

  • Chaque fichier occupe un espace d'adressage contigu sur le disque.
  • L'adresse de disque attribuée est dans un ordre linéaire.
  • Facile à mettre en œuvre.
  • La fragmentation externe est un problème majeur avec ce type de technique d'allocation.

Allocation liée

  • Chaque fichier contient une liste de liens vers des blocs de disque.
  • Le répertoire contient un lien / un pointeur vers le premier bloc d'un fichier.
  • Pas de fragmentation externe
  • Utilisé efficacement dans le fichier d'accès séquentiel.
  • Inefficace en cas d'accès direct au fichier.

Allocation indexée

  • Fournit des solutions aux problèmes d'allocation contiguë et liée.
  • Un bloc d'index est créé avec tous les pointeurs vers des fichiers.
  • Chaque fichier a son propre bloc d'index qui stocke les adresses de l'espace disque occupé par le fichier.
  • Le répertoire contient les adresses des blocs d'index de fichiers.

La sécurité fait référence à la fourniture d'un système de protection aux ressources du système informatique telles que le processeur, la mémoire, le disque, les programmes logiciels et, surtout, les données / informations stockées dans le système informatique. Si un programme informatique est exécuté par un utilisateur non autorisé, celui-ci peut endommager gravement l'ordinateur ou les données qui y sont stockées. Un système informatique doit donc être protégé contre les accès non autorisés, les accès malveillants à la mémoire système, les virus, les vers, etc. Nous allons aborder les sujets suivants dans ce chapitre.

  • Authentication
  • Mots de passe à usage unique
  • Menaces du programme
  • Menaces système
  • Classifications de sécurité informatique

Authentification

L'authentification fait référence à l'identification de chaque utilisateur du système et à l'association des programmes en cours d'exécution avec ces utilisateurs. Il est de la responsabilité du système d'exploitation de créer un système de protection qui garantit l'authenticité d'un utilisateur qui exécute un programme particulier. Les systèmes d'exploitation identifient / authentifient généralement les utilisateurs en utilisant les trois méthodes suivantes:

  • Username / Password - L'utilisateur doit entrer un nom d'utilisateur et un mot de passe enregistrés avec le système d'exploitation pour se connecter au système.

  • User card/key - L'utilisateur doit perforer la carte dans la fente de la carte ou saisir la clé générée par le générateur de clé en option fournie par le système d'exploitation pour se connecter au système.

  • User attribute - fingerprint/ eye retina pattern/ signature - L'utilisateur doit transmettre son attribut via le périphérique d'entrée désigné utilisé par le système d'exploitation pour se connecter au système.

Mots de passe à usage unique

Les mots de passe à usage unique offrent une sécurité supplémentaire ainsi qu'une authentification normale. Dans le système de mot de passe à usage unique, un mot de passe unique est requis chaque fois que l'utilisateur tente de se connecter au système. Une fois qu'un mot de passe à usage unique est utilisé, il ne peut plus être utilisé. Les mots de passe à usage unique sont implémentés de différentes manières.

  • Random numbers- Les utilisateurs reçoivent des cartes comportant des numéros imprimés avec les alphabets correspondants. Le système demande des nombres correspondant à quelques alphabets choisis au hasard.

  • Secret key- L'utilisateur reçoit un périphérique matériel qui peut créer un identifiant secret mappé avec un identifiant utilisateur. Le système demande un tel identifiant secret qui doit être généré à chaque fois avant la connexion.

  • Network password - Certaines applications commerciales envoient des mots de passe à usage unique à l'utilisateur sur un mobile / e-mail enregistré qui doit être saisi avant la connexion.

Menaces du programme

Les processus et le noyau du système d'exploitation effectuent la tâche désignée comme indiqué. Si un programme utilisateur a amené ces processus à effectuer des tâches malveillantes, on parle alors deProgram Threats. L'un des exemples courants de menace de programme est un programme installé sur un ordinateur qui peut stocker et envoyer les informations d'identification de l'utilisateur via le réseau à un pirate informatique. Voici la liste de certaines menaces de programmes bien connues.

  • Trojan Horse - Un tel programme intercepte les informations de connexion de l'utilisateur et les stocke pour les envoyer à un utilisateur malveillant qui peut plus tard se connecter à l'ordinateur et accéder aux ressources du système.

  • Trap Door - Si un programme conçu pour fonctionner selon les besoins, a une faille de sécurité dans son code et effectue une action illégale sans connaissance de l'utilisateur, il est appelé à avoir une trappe.

  • Logic Bomb- La bombe logique est une situation où un programme ne se comporte mal que lorsque certaines conditions sont réunies, sinon il fonctionne comme un véritable programme. C'est plus difficile à détecter.

  • Virus- Le virus, comme son nom l'indique, peut se répliquer sur le système informatique. Ils sont très dangereux et peuvent modifier / supprimer des fichiers utilisateur, planter des systèmes. Un virus est généralement un petit code intégré dans un programme. Lorsque l'utilisateur accède au programme, le virus commence à être intégré dans d'autres fichiers / programmes et peut rendre le système inutilisable pour l'utilisateur

Menaces système

Les menaces système font référence à une mauvaise utilisation des services système et des connexions réseau pour mettre l'utilisateur en difficulté. Les menaces système peuvent être utilisées pour lancer des menaces de programme sur un réseau complet appelé attaque de programme. Les menaces système créent un environnement tel que les ressources du système d'exploitation / les fichiers utilisateur sont mal utilisés. Voici la liste de certaines menaces système bien connues.

  • Worm- Le ver est un processus qui peut réduire les performances d'un système en utilisant les ressources système à des niveaux extrêmes. Un processus Worm génère ses multiples copies où chaque copie utilise les ressources système, empêche tous les autres processus d'obtenir les ressources requises. Les processus de vers peuvent même arrêter un réseau entier.

  • Port Scanning - L'analyse de port est un mécanisme ou un moyen par lequel un pirate informatique peut détecter les vulnérabilités du système pour attaquer le système.

  • Denial of Service- Les attaques par déni de service empêchent normalement l'utilisateur de faire un usage légitime du système. Par exemple, un utilisateur peut ne pas être en mesure d'utiliser Internet si le déni de service attaque les paramètres de contenu du navigateur.

Classifications de sécurité informatique

Selon les critères d'évaluation du US Department of Defense Trusted Computer System, il existe quatre classifications de sécurité dans les systèmes informatiques: A, B, C et D. Il s'agit de spécifications largement utilisées pour déterminer et modéliser la sécurité des systèmes et des solutions de sécurité. Voici la brève description de chaque classification.

SN Type de classification et description
1

Type A

Plus haut niveau. Utilise des spécifications de conception formelles et des techniques de vérification. Accorde un degré élevé d'assurance de la sécurité des processus.

2

Type B

Fournit un système de protection obligatoire. Possède toutes les propriétés d'un système de classe C2. Attache une étiquette de sensibilité à chaque objet. Il est de trois types.

  • B1- Conserve l'étiquette de sécurité de chaque objet du système. L'étiquette est utilisée pour prendre des décisions concernant le contrôle d'accès.

  • B2 - Étend les étiquettes de sensibilité à chaque ressource système, comme les objets de stockage, prend en charge les canaux cachés et l'audit des événements.

  • B3 - Permet de créer des listes ou des groupes d'utilisateurs pour le contrôle d'accès pour accorder l'accès ou révoquer l'accès à un objet nommé donné.

3

Type C

Assure la protection et la responsabilité des utilisateurs à l'aide des capacités d'audit. Il est de deux types.

  • C1- Intègre des contrôles afin que les utilisateurs puissent protéger leurs informations privées et empêcher les autres utilisateurs de lire / supprimer accidentellement leurs données. Les versions UNIX sont pour la plupart de classe Cl.

  • C2 - Ajoute un contrôle d'accès de niveau individuel aux capacités d'un système de niveau Cl.

4

Type D

Le plus bas niveau. Protection minimale. MS-DOS, Windows 3.1 entrent dans cette catégorie.

Linux est l'une des versions les plus populaires du système d'exploitation UNIX. Il est open source car son code source est disponible gratuitement. C'est gratuit à utiliser. Linux a été conçu en tenant compte de la compatibilité UNIX. Sa liste de fonctionnalités est assez similaire à celle d'UNIX.

Composants du système Linux

Le système d'exploitation Linux a principalement trois composants

  • Kernel- Le noyau est la partie centrale de Linux. Il est responsable de toutes les activités principales de ce système d'exploitation. Il se compose de divers modules et interagit directement avec le matériel sous-jacent. Le noyau fournit l'abstraction requise pour masquer les détails matériels de bas niveau aux programmes système ou d'application.

  • System Library- Les bibliothèques système sont des fonctions ou programmes spéciaux utilisant les programmes d'application ou les utilitaires système qui accèdent aux fonctionnalités du noyau. Ces bibliothèques implémentent la plupart des fonctionnalités du système d'exploitation et ne nécessitent pas les droits d'accès au code du module noyau.

  • System Utility - Les programmes utilitaires système sont chargés d'effectuer des tâches spécialisées au niveau individuel.

Mode noyau vs mode utilisateur

Le code du composant du noyau s'exécute dans un mode privilégié spécial appelé kernel modeavec un accès complet à toutes les ressources de l'ordinateur. Ce code représente un processus unique, s'exécute dans un seul espace d'adressage et ne nécessite aucun changement de contexte et est donc très efficace et rapide. Le noyau exécute chaque processus et fournit des services système aux processus, fournit un accès protégé au matériel aux processus.

Le code de support qui n'est pas nécessaire pour s'exécuter en mode noyau se trouve dans la bibliothèque système. Les programmes utilisateur et autres programmes système fonctionnent dansUser Modequi n'a pas accès au matériel système et au code du noyau. Les programmes / utilitaires utilisateur utilisent les bibliothèques système pour accéder aux fonctions du noyau afin d'obtenir les tâches de bas niveau du système.

Caractéristiques de base

Voici quelques-unes des caractéristiques importantes du système d'exploitation Linux.

  • Portable- La portabilité signifie que le logiciel peut fonctionner sur différents types de matériel de la même manière. Le noyau Linux et les programmes d'application prennent en charge leur installation sur tout type de plate-forme matérielle.

  • Open Source- Le code source Linux est disponible gratuitement et il s'agit d'un projet de développement communautaire. Plusieurs équipes travaillent en collaboration pour améliorer la capacité du système d'exploitation Linux et celui-ci est en constante évolution.

  • Multi-User - Linux est un système multi-utilisateur, ce qui signifie que plusieurs utilisateurs peuvent accéder aux ressources système comme la mémoire / RAM / programmes d'application en même temps.

  • Multiprogramming - Linux est un système multiprogrammé qui signifie que plusieurs applications peuvent s'exécuter en même temps.

  • Hierarchical File System - Linux fournit une structure de fichiers standard dans laquelle les fichiers système / fichiers utilisateur sont organisés.

  • Shell- Linux fournit un programme d'interprétation spécial qui peut être utilisé pour exécuter des commandes du système d'exploitation. Il peut être utilisé pour effectuer différents types d'opérations, appeler des programmes d'application. etc.

  • Security - Linux fournit la sécurité des utilisateurs en utilisant des fonctionnalités d'authentification telles que la protection par mot de passe / l'accès contrôlé à des fichiers spécifiques / le cryptage des données.

Architecture

L'illustration suivante montre l'architecture d'un système Linux -

L'architecture d'un système Linux se compose des couches suivantes -

  • Hardware layer - Le matériel comprend tous les périphériques (RAM / HDD / CPU, etc.).

  • Kernel - C'est le composant de base du système d'exploitation, interagit directement avec le matériel, fournit des services de bas niveau aux composants de la couche supérieure.

  • Shell- Une interface avec le noyau, cachant la complexité des fonctions du noyau aux utilisateurs. Le shell prend les commandes de l'utilisateur et exécute les fonctions du noyau.

  • Utilities - Programmes utilitaires qui fournissent à l'utilisateur la plupart des fonctionnalités d'un système d'exploitation.