Un système d'exploitation (OS) est au cœur de tout le matériel et logiciel connecté.
L'amélioration de l'efficacité permet d'accélérer l'implémentation des applications du point de vue du temps de codage et du temps d'exécution. Les OS ont une grande influence en raison des abstractions/interfaces qu'ils implémentent.
Les systèmes d'exploitation fournissent à la fois un mécanisme et une politique. Le mécanisme fait référence à un ensemble d'activités que l'on peut réaliser. La politique est la manière d'utiliser le mécanisme dans des situations spécifiques.
La virtualisation dans un système d'exploitation permet au système d'exécuter différentes applications gérées par plusieurs utilisateurs simultanément sur le même ordinateur.
La virtualisation de serveur place une couche logicielle appelée un hyperviseur (par exemple, un moniteur de machine virtuelle ou VMM) entre le matériel d'une machine (par exemple, un serveur) et les systèmes d'exploitation qui y s'exécutent.
L'utilisation de la virtualisation au niveau de l'OS ou du serveur permet à un serveur d'exécuter différents types de systèmes d'exploitation simultanément sur le même ordinateur.
L'OS traduit de l'interface matérielle à l'interface d'application et fournit à chaque programme en exécution son propre processus.
Un processus se compose d'un espace d'adressage, d'un ou plusieurs fils d'exécution s'exécutant dans cet espace d'adressage, et d'un état système supplémentaire qui lui est associé. Le fil d'exécution est un chemin d'exécution au sein d'un processus, et un processus peut contenir plusieurs fils d'exécution.
L'architecture de jeu d'instructions (ISA) définit un ensemble d'instructions qui peuvent être utilisées pour écrire des programmes en langage d'assemblage qui utilisent le CPU tout en abstrayant les détails matériels du programme.
Les fonctions de l'OS garantissent la protection, l'isolation et le partage efficace des ressources via l'allocation des ressources et la communication.
Un OS gère les ressources informatiques (matériel) et fournit des services pour les programmes informatiques (logiciel).
Un OS est un système complexe et exécute de nombreux types d'activités, allant de l'exécution des programmes des utilisateurs à l'exécution de tâches ou de scripts en arrière-plan, en passant par l'achèvement des programmes système.
Le traitement implique un programme, un processus et un processeur. Un OS est responsable de la gestion des processus, et différents OS abordent la gestion des processus de différentes manières.
L'espace d'adressage est l'ensemble des adresses générées par les programmes lorsqu'ils référencent des instructions et des données. L'espace mémoire contient les emplacements réels de la mémoire principale qui sont directement adressables pour le traitement.
La mémoire informatique se compose de deux types principaux : la mémoire principale et la mémoire secondaire. Un OS gère l'espace mémoire par l'allocation de mémoire et la désallocation de mémoire, ainsi qu'en maintenant des mappages des adresses virtuelles aux adresses physiques et en commutant le contexte du CPU entre les espaces d'adressage.
Les pilotes de périphérique sont les routines qui interagissent directement avec des types de périphériques spécifiques et le matériel associé pour indiquer comment initialiser le périphérique, demander des I/O et gérer les interruptions ou les erreurs.
Un registre de périphérique est l'interface qu'un périphérique présente à un programmeur, tandis que chaque périphérique d'I/O apparaît dans l'espace d'adressage physique de la machine comme quelques mots.
Dans un OS, il est important d'avoir des opérations en mode dual pour assurer un haut niveau de sécurité et d'autorité. Le mode dual est responsable de la séparation de l'utilisateur du mode noyau.
Les conceptions réussies d'OS ont eu une variété d'architectures, telles que monolithe, en couches, micro-noyau et moniteurs de machine virtuelle. Comme la conception d'un OS — et même son rôle — sont toujours en évolution, il est tout simplement impossible aujourd'hui de choisir une seule manière « correcte » de structurer un OS.
Une conception d'OS monolithe est une architecture d'OS où l'intégralité de l'OS fonctionne dans l'espace noyau.
Une architecture de système d'exploitation en couches consiste à implémenter l'OS comme un ensemble de couches où chaque couche expose une machine virtuelle améliorée à la couche supérieure.
La couche d'abstraction matérielle (HAL) est un exemple de superposition dans les OS modernes. Elle permet à un OS d'interagir avec un périphérique matériel à un niveau général ou abstrait plutôt que d'entrer dans un niveau matériel détaillé, ce qui améliore la lisibilité.
Dans une architecture d'OS micro-noyau, la fonctionnalité et les capacités sont ajoutées à un noyau d'OS minimal.
Le traitement concurrent est un modèle informatique qui améliore les performances lorsque plusieurs processeurs exécutent des instructions simultanément.
Un processus se compose au minimum d'un espace d'adressage, d'un état du processeur et d'un ensemble de ressources de l'OS.
Les particularités de l'espace de noms des processus de l'OS dépendent de l'OS spécifique, mais en général, le nom d'un processus est appelé un PID (identifiant de processus), qui est un ensemble de numéros uniques identifiant les processus.
L'OS maintient une structure de données pour suivre l'état d'un processus, qui est appelé le bloc de contrôle de processus (PCB) ou descripteur de processus.
La concurrence fait référence à plusieurs activités et processus se déroulant simultanément. Un OS peut réaliser le traitement concurrent via l'utilisation de fils d'exécution ou l'un des trois environnements de traitement différents : multiprogrammation, multiprocesseur ou traitement distribué.
L'ordonnancement est l'acte de déterminer quel processus est dans l'état prêt et doit être déplacé vers l'état d'exécution lorsque plus de ressources sont demandées qu'il ne peut en être accordé immédiatement, et dans quel ordre les requêtes doivent être traitées.
Un bon algorithme d'ordonnancement minimise le temps de réponse, utilise efficacement les ressources et met en œuvre l'équité en distribuant équitablement les cycles CPU. Quatre algorithmes d'ordonnancement simples sont FCFS, RR, STCF et SRPT.
La synchronisation est un moyen de coordonner plusieurs activités concurrentes qui utilisent un état partagé.
L'allocation est une méthode qui définit comment les données sont stockées dans la mémoire en fournissant un ensemble de requêtes de ressources et en identifiant quels processus doivent recevoir quelles ressources pour utiliser les ressources le plus efficacement possible. Il existe trois formes principales d'allocation : l'allocation contiguë, l'allocation liée et l'allocation indexée.
L'OS charge les fichiers exécutables en mémoire, permet à plusieurs processus différents de partager la mémoire, et fournit des facilités pour que les processus dépassent la taille de la mémoire après avoir commencé à s'exécuter.
Le multiplexage de mémoire consiste à diviser la capacité du canal de communication en plusieurs canaux logiques.
Plusieurs concepts sont essentiels au multiplexage de mémoire, à savoir l'isolation, le partage, la virtualisation et l'utilisation.
La tranche de temps est une période de temps pour chaque processus à exécuter dans un CPU multitâche préemptif, de sorte que chaque processus sera exécuté à chaque tranche de temps.
Le partage signifie que plusieurs processus peuvent partager la même donnée de manière concurrente.
Le partage de mémoire améliore les performances du système car les données ne sont pas copiées d'un espace d'adressage à un autre, de sorte que l'allocation de mémoire n'est effectuée qu'une seule fois.
La virtualisation est une technique qui donne à une application l'impression qu'elle dispose de sa propre mémoire logique et qu'elle est indépendante de la mémoire physique disponible.
La fragmentation est un problème où les blocs de mémoire ne peuvent pas être alloués aux processus en raison de leur petite taille individuelle et de la distribution des tailles dans le pool ; il pourrait y avoir suffisamment de mémoire libre totale pour satisfaire la demande, mais les morceaux disponibles ne peuvent pas être alloués de manière contiguë.
Les éditeurs de liens combinent de nombreuses pièces distinctes d'un programme, réorganisent l'allocation de stockage afin que toutes les pièces puissent s'assembler, et ajustent les adresses afin que le programme puisse s'exécuter sous la nouvelle organisation de la mémoire.
Il existe deux opérations de base utilisées dans la gestion dynamique du stockage pour gérer une mémoire ou un stockage afin de satisfaire divers besoins : allouer un bloc avec un nombre donné d'octets ou libérer un bloc précédemment alloué.
La mémoire virtuelle est un composant clé du système d'exploitation pour assurer l'isolation des processus en garantissant que chaque processus obtient sa propre vue de la mémoire.
Un système de fichiers est responsable de la définition des noms de fichiers, du stockage des fichiers sur un périphérique de stockage et de la récupération des fichiers à partir d'un périphérique de stockage.
Les systèmes de fichiers définissent des opérations sur des objets telles que créer, lire et écrire, et ils peuvent également fournir des services de niveau supérieur, tels que la comptabilité et les quotas, l'indexation ou la recherche de sauvegarde incrémentielle, la gestion de versions de fichiers et le chiffrement.
Les systèmes de fichiers se préoccupent de caractéristiques de niveau inférieur telles que les performances et la résilience aux pannes.
L'interface du système de fichiers définit des opérations standard telles que la création et la suppression de fichiers (ou de répertoires), la manipulation de fichiers et de répertoires, la copie et le verrou.
Les systèmes de fichiers sont responsables de la gestion des parties du disque qui sont utilisées (inœuds) et des parties du disque qui ne sont pas utilisées (blocs libres).
Un système de fichiers distribué (DFS) est un système de fichiers distribué sur plusieurs serveurs de fichiers ou plusieurs emplacements qui prennent en charge le partage de fichiers et de périphériques à l'échelle du réseau.
Un DFS fournit une abstraction sur les disques physiques qui est similaire à l'abstraction que la mémoire virtuelle fournit sur la mémoire physique.
Nous considérons qu'un OS est fiable s'il fournit un service sans erreurs ni interruptions.
La protection est un mécanisme général utilisé dans tout l'OS et pour toutes les ressources nécessitant une protection, telles que la mémoire, les processus, les fichiers, les périphériques, le temps CPU et la bande passante du réseau.
Un mécanisme de protection comporte trois aspects : l'authentification, l'autorisation et l'application du contrôle d'accès.
La manière traditionnelle d'authentification implique un mot de passe, qui est une information secrète utilisée pour établir l'identité d'un utilisateur et qui doit être relativement longue et difficile à deviner. Une autre forme d'authentification est l'authentification à deux facteurs, qui implique deux facteurs : le système appelle ou envoie un SMS au téléphone d'un utilisateur pour le mot de passe traditionnel lors de la connexion, utilisant le téléphone portable comme clé.
L'autorisation détermine la relation entre les entités, les opérations et les objets en définissant quelles entités peuvent effectuer quelles opérations sur quels objets.
Une liste de contrôle d'accès (ACL) est une liste de règles qui spécifie quels utilisateurs sont autorisés à accéder à un objet ou une ressource spécifique.
Une liste de capacités est une liste d'objets et d'opérations pour chaque utilisateur qui définit les droits et les capacités de l'utilisateur.
Pour prendre en charge l'application du contrôle d'accès, une partie de l'OS doit être responsable de l'application des contrôles d'accès et de la protection des informations d'authentification et d'autorisation.
L'utilisation de la journalisation présente de nombreux avantages : la récupération est beaucoup plus rapide ; elle élimine les incohérences ; un journal peut être localisé dans une zone du disque, ce qui rend les écritures de journal plus rapides ; et elle entraîne de meilleures performances. L'un des inconvénients de la journalisation est que l'écriture synchrone sur disque se produit avant chaque opération de métadonnées.
Les machines virtuelles sont devenues un composant fondamental de l'informatique en nuage, car elles permettent aux fournisseurs de nuage d'offrir des ressources informatiques évolutives et flexibles aux utilisateurs sur une base de paiement à l'usage.