Introduction aux systèmes d'exploitation
Introduction aux systèmes d'exploitation
Module I
Le système d'exploitation contrôle et coordonne l'utilisation du matériel entre les différents programmes applicatifs (comme
compilateur, traitement de texte, etc.) pour divers utilisateurs.
Le système d'exploitation alloue les ressources entre les programmes de manière à ce que le matériel soit utilisé efficacement.
utilisé.
Le système d'exploitation est le programme qui fonctionne en permanence sur l'ordinateur. On l'appelle généralement
en tant que noyau.
Les fonctions noyau sont toujours utilisées dans le système, donc toujours stockées en mémoire. Les fonctions non noyau
sont stockés sur le disque dur, et ils sont récupérés chaque fois que nécessaire.
User Views:-
La vue de l'utilisateur sur le système d'exploitation dépend du type d'utilisateur.
Si l'utilisateur utilise un système autonome, alors le système d'exploitation est conçu pour la facilité d'utilisation et une haute performance.
performances. Ici, l'utilisation des ressources n'est pas considérée comme importante.
ii. Si les utilisateurs sont à différents terminaux connectés à un ordinateur central ou à des mini-ordinateurs, en partageant
informations et ressources, ensuite le système d'exploitation est conçu pour maximiser l'utilisation des ressources. Le système d'exploitation est
conçu de manière à ce que le temps CPU, la mémoire et l'E/S soient utilisés de manière efficace et qu'aucun utilisateur unique ne prenne
plus que la ressource qui leur est attribuée.
iii. Si les utilisateurs sont sur des postes de travail, connectés à des réseaux et des serveurs, alors l'utilisateur a un
unité système à part entière et partage des ressources et des fichiers avec d'autres systèmes. Ici, le système d'exploitation est
conçu à la fois pour la facilité d'utilisation et la disponibilité des ressources (fichiers).
iv. Les utilisateurs de systèmes portables s'attendent à ce que le système d'exploitation soit conçu pour la facilité d'utilisation et la performance.
par quantité de durée de vie de la batterie.
[Link] systèmes comme les systèmes embarqués utilisés dans les appareils domestiques (comme les machines à laver) et les automobiles
il n'y a pas d'interaction utilisateur. Il y a des LED pour montrer l'état de son travail.
System Views:-
[Link] de ressources - Le système d'exploitation agit en tant que gestionnaire des ressources matérielles et logicielles. Le système d'exploitatio
attribue les ressources au programme demandeur en fonction de la priorité.
vii. Programme de contrôle – Le système d'exploitation est un programme de contrôle et gère l'exécution du programme utilisateur
pour prévenir les erreurs et l'utilisation incorrecte de l'ordinateur.
Lorsque le système est allumé, le programme 'Bootstrap' est exécuté. C'est le programme initial à exécuter dans.
le programme systè[Link]
. Initialise les registres, la mémoire et les dispositifs d'entrée/sortie
. Localise et charge le noyau dans la mémoire
. Commence avec le processus 'init'
. Attends une interruption de l'utilisateur.
Structure de stockage
Les programmes informatiques doivent être dans la mémoire principale (RAM) pour être exécutés. La mémoire principale est
la grande mémoire à laquelle le processeur peut accéder directement. Elle est généralement mise en œuvre dans un
technologie des semi-conducteurs appelée mémoire vive dynamique (DRAM).
Les ordinateurs fournissent une mémoire morte (ROM), dont les données ne peuvent pas être modifiées.
Toutes les formes de mémoire fournissent un tableau de mots de mémoire. Chaque mot a sa propre adresse.
L'interaction est réalisée par une séquence d'instructions de chargement ou de stockage vers des spécifiques
adresses mémoire.
Un cycle d'exécution d'instructions typique, tel qu'il est exécuté sur un système avec une architecture de Von Neumann.
l'architecture, récupère d'abord une instruction de la mémoire et stocke cette instruction dans le
registre d'instructions.
L'instruction est ensuite décodée et peut provoquer le chargement des opérandes depuis la mémoire et
stocké dans un registre interne.
Après l'exécution de l'instruction sur les opérandes, le résultat peut être stocké à nouveau dans
mémoire.
Idéalement, nous voulons que les programmes et les données résident en permanence dans la mémoire principale.
l'arrangement n'est généralement pas possible pour les deux raisons suivantes :
1. La mémoire principale est généralement trop petite pour stocker tous les programmes et données nécessaires de manière permanente.
2. La mémoire principale est un dispositif de stockage volatile qui perd son contenu lorsque l'alimentation est coupée.
éteint.
Ainsi, la plupart des systèmes informatiques fournissent un stockage secondaire comme une extension de la mémoire principale.
mémoire. La principale exigence pour le stockage secondaire est qu'il doit être capable de contenir de grandes
quantités de données de manière permanente.
Le périphérique de stockage secondaire le plus courant est un disque magnétique, qui fournit du stockage
pour les deux programmes et données. La plupart des programmes sont stockés sur un disque jusqu'à ce qu'ils soient chargés dans
mémoire. De nombreux programmes utilisent alors le disque comme source et destination de la
information for their processing.
La grande variété de systèmes de stockage dans un système informatique peut être organisée en une hiérarchie.
comme montré dans la figure, selon la vitesse, le coût et la capacité.
Les niveaux supérieurs sont coûteux, mais ils sont rapides. À mesure que nous descendons dans la hiérarchie, le
le coût par bit diminue généralement, tandis que le temps d'accès et la capacité de stockage
augmente généralement.
En plus de différer en vitesse et en coût, les différents systèmes de stockage sont soit volatils
ou non volatile.
Le stockage volatil perd son contenu lorsque l'alimentation de l'appareil est coupée.
absence de systèmes de batterie coûteux et de sauvegarde par générateur, les données doivent être écrites sur
stockage non volatil pour la conservation.
Dans la hiérarchie montrée dans la figure, les systèmes de stockage au-dessus du disque électronique sont
volatile, tandis que ceux ci-dessous sont non volatils.
Structure E/S
Une grande partie du code du système d'exploitation est dédiée à la gestion des entrées/sorties.
Chaque périphérique a un contrôleur de périphérique, maintient un tampon local et un ensemble de spéciales.
registre des objectifs.
Le contrôleur de périphérique est responsable du déplacement des données entre les périphériques.
les systèmes d'exploitation ont un pilote de périphérique pour chaque contrôleur de périphérique
Pour commencer une opération d'entrée/sortie, le pilote de périphérique charge les registres dans le contrôleur de périphérique.
Le contrôleur de périphérique examine le contenu de ces registres pour déterminer quelle action entreprendre.
prendre (comme "lire un caractère à partir du clavier").
Le contrôleur commence le transfert de données de l'appareil vers son tampon local.
Une fois le transfert de données terminé, le contrôleur de périphérique informe le pilote de périphérique (OS)
via un interrupt qui a terminé son opération.
Le pilote de périphérique rend ensuite le contrôle au système d'exploitation et renvoie également les données.
d'autres opérations, le pilote de périphérique renvoie des informations sur l'état
Cette forme d'E/S pilotée par interruptions est adaptée pour déplacer de petites quantités de données, mais très difficile pour
mouvement de données en vrac. Pour résoudre ce problème, l'accès direct à la mémoire (DMA) est utilisé.
DMA est utilisé pour les périphériques d'E/S à haute vitesse, capables de transmettre des informations à proximité de la mémoire.
vitesses
Le contrôleur de périphérique transfère des blocs de données du stockage tampon directement vers la mémoire principale
sans intervention du processeur
Un seul interrupt est généré par bloc, plutôt qu'un interrupt par octet.
Architecture des systèmes informatiques
Catégorisés grossièrement selon le nombre de processeurs à usage général utilisés–
Dans un système à processeur unique, il y a un CPU principal capable d'exécuter des instructions de l'utilisateur
processus
Il contient des processeurs à usage spécial, sous la forme de processeurs spécifiques à des appareils, pour des appareils tels que
comme le disque, le clavier et les contrôleurs graphiques.
L'utilisation de microprocesseurs à usages spéciaux est courante et ne transforme pas un système à processeur unique en un
multiprocesseur. S'il n'y a qu'un seul processeur généraliste, alors le système est un système à processeur unique.
L'avantage de ce modèle est que de nombreux processus peuvent s'exécuter simultanément. Nprocesses peut
exécutez s'il y a des NCPUs—sans causer une détérioration significative des performances.
Les systèmes d'exploitation comme Windows, Windows XP, Mac OS X et Linux—fournissent maintenant
support pour SMP.
Une tendance récente dans la conception des processeurs est d'inclure plusieurs cœurs de calcul sur une seule puce.
la communication entre les processeurs à l'intérieur d'une puce est plus rapide que la communication entre
deux processeurs simples.
3. Systèmes groupés
Les systèmes en grappe sont deux ou plusieurs systèmes individuels connectés ensemble via un réseau.
et partage de ressources logicielles.
Le regroupement offre une haute disponibilité des ressources et des services.
Il existe deux types de systèmes en grappe.
I. Clustering asymétrique - un système est en mode veille chaude tandis que les autr
exécute les applications. La machine hôte en veille active ne fait rien d'autre que
surveiller le serveur actif. Si ce serveur échoue, l'hôte de secours en attente devient le
serveur actif.
II. clustering symétrique - deux systèmes ou plus exécutent des applications, et sont
se surveiller mutuellement. Ce mode est plus efficace, car il utilise toutes les ressources disponibles.
matériel. Si un système échoue, sa tâche est reprise par le système de surveillance.
D'autres formes de clusters incluent les clusters parallèles et le clustering sur un réseau étendu.
(WAN)
Les clusters parallèles permettent à plusieurs hôtes d'accéder aux mêmes données sur le stockage partagé.
La technologie des clusters évolue rapidement grâce aux SAN (réseaux de stockage).
L'utilisation des ressources SAN peut être partagée avec des dizaines de systèmes dans un cluster, qui sont
séparés par des miles.
Structure du système d'exploitation
L'un des aspects les plus importants des systèmes d'exploitation est la capacité à effectuer du multiprogramming.
Un seul utilisateur ne peut pas maintenir le processeur ou les dispositifs d'entrée/sortie occupés en tout temps.
Le multiprogrammation augmente l'utilisation du CPU en organisant les tâches, de sorte que le CPU
a toujours un à exécuter.
Le système d'exploitation garde plusieurs tâches en mémoire simultanément comme montré dans la figure.
Cet ensemble de travaux est un sous-ensemble des travaux conservés dans le pool de travaux.
Dans un système non multiprogrammé, le processeur resterait inactif. Dans un système multiprogrammé
système, le système d'exploitation bascule simplement vers, et exécute, un autre travail. Quand cela
le travail doit attendre, le processeur est basculé vers un autre travail, et ainsi de suite.
Finalement, le premier travail termine d'attendre et récupère le processeur. Ainsi, le processeur n'est jamais
inactif.
Un bit matériel de l'ordinateur, appelé bit de mode, est utilisé pour indiquer le mode actuel :
noyau (0) ou utilisateur (1).
Avec le bit de mode, nous sommes en mesure de distinguer entre une tâche exécutée par le système d'exploitation.
système et celui qui est exécuté par l'utilisateur.
When the computer system is executing a user application, the system is in user mode.
Lorsqu'une application utilisateur demande un service au système d'exploitation (via un appel système), le
la transition du mode utilisateur au mode noyau a lieu.
Au démarrage du système, le matériel démarre en mode noyau. Le système d'exploitation est ensuite
chargé et démarre les applications utilisateur en mode utilisateur.
Chaque fois qu'un piège ou une interruption se produit, le matériel passe du mode utilisateur au mode noyau
(c'est-à-dire, change le bit de mode de 1 à 0). Ainsi, chaque fois que le système d'exploitation acquiert
le contrôle de l'ordinateur, il est en mode noyau.
Le matériel permet d'exécuter des instructions privilégiées uniquement en mode noyau. Si un
une tentative d'exécution d'une instruction privilégiée en mode utilisateur est considérée comme illégale et
il le transmet au système d'exploitation.
Minuteur
Le système d'exploitation utilise un minuteur pour contrôler le CPU. Un programme utilisateur ne peut pas retenir le CPU longtemps.
le temps, cela est évité avec l'aide d'un minuteur.
Un minuteur peut être réglé pour interrompre l'ordinateur après une période spécifiée. La période peut être
Minuteur fixe – Après un temps fixe, le processus en cours d'exécution est interrompu.
Minuteur variable - L'interruption se produit après un intervalle variable.
Avant de passer au mode utilisateur, le système d'exploitation s'assure que le minuteur est réglé sur
interrompre. Si le minuteur interrompt, le contrôle est transféré automatiquement au système d'exploitation.
Gestion de la mémoire
La mémoire principale est un grand tableau de mots ou d'octets. Chaque mot ou octet a sa propre adresse.
Au fur et à mesure que le programme s'exécute, le processeur central lit des instructions et lit et écrit également
data from main memory.
Pour améliorer à la fois l'utilisation du processeur et la rapidité de la réponse de l'ordinateur à son
Les utilisateurs, les ordinateurs polyvalents doivent garder plusieurs programmes en mémoire, créant un besoin
pour la gestion de la mémoire.
Le système d'exploitation est responsable des activités suivantes en rapport avec la mémoire.
management:
Suivre les parties de la mémoire qui sont actuellement utilisées par l'utilisateur.
Décider quels processus et données déplacer dans et hors de la mémoire.
Allouer et désallouer de l'espace mémoire selon les besoins.
Gestion du stockage
Il existe trois types de gestion de stockage i) Gestion du système de fichiers ii) Stockage de masse
iii) Gestion du cache.
Gestion du système de fichiers
La gestion des fichiers est l'un des composants les plus visibles d'un système d'exploitation.
Un fichier est une collection d'informations liées définies par son créateur. En général, les fichiers représentent
programmes et données.
Le système d'exploitation met en œuvre le concept abstrait de fichier en gérant le stockage de masse.
Les fichiers média sont normalement organisés dans des répertoires pour faciliter leur utilisation.
Lorsque plusieurs utilisateurs ont accès à des fichiers, il peut être souhaitable de contrôler par qui et dans
de quelles manières (lire, écrire, exécuter) les fichiers peuvent-ils être accédés.
Le système d'exploitation est responsable des activités suivantes en rapport avec les fichiers
management:
Créer et supprimer des fichiers
Créer et supprimer des répertoires pour organiser des fichiers
Primitifs de support pour manipuler des fichiers et des répertoires
Mapper des fichiers sur le stockage secondaire
Sauvegarde des fichiers sur des supports de stockage stables (non volatils)
Gestion du stockage de masse
Comme la mémoire principale est trop petite pour accueillir toutes les données et programmes, et comme les données que
les données sont effacées lorsque l'alimentation est perdue, le système informatique doit fournir un stockage secondaire
sauvegarder la mémoire principale.
La plupart des systèmes informatiques modernes utilisent des disques comme moyen de stockage pour les programmes et les données.
La plupart des programmes - y compris les compilateurs, les assembleurs, les traitements de texte, les éditeurs, et
Les formatters sont stockés sur un disque jusqu'à ce qu'ils soient chargés en mémoire, puis utilisent le disque comme les deux.
source et destination de leur traitement.
Par conséquent, la gestion appropriée du stockage sur disque revêt une importance centrale pour un ordinateur.
Le système d'exploitation est responsable des activités suivantes en rapport avec
gestion des disques
Gestion de l'espace libre
Attribution de stockage
Planification de disque
Mise en cache
Le cache est un principe important des systèmes informatiques. Les données fréquemment utilisées sont copiées.
système de stockage plus rapide—le cache—comme données temporaires. Lorsqu'une pièce particulière de
des informations sont requises, nous vérifions d'abord dans le cache.
Parce que les caches ont une taille limitée, la gestion des caches est un problème de conception important.
Une sélection soigneuse de la taille du cache et de la politique de remplacement de pages peut entraîner une amélioration considérable.
performance accrue.
Le transfert de données du cache vers le processeur et les registres est généralement une fonction matérielle implicite.
sans intervention du système d'exploitation.
En revanche, le transfert de données du disque à la mémoire est généralement contrôlé par le système d'exploitation.
système-explicite.
Dans une structure de stockage hiérarchique, les mêmes données peuvent apparaître à différents niveaux de la
système de stockage. Par exemple, supposons de récupérer un entier A à partir d'un disque magnétique.
programme de traitement. L'opération commence par émettre une opération d'E/S pour copier le disque
block on which A resides to main memory. This operation is followed by copying A to the cache
et dans un registre interne. Ainsi, la copie de A apparaît à plusieurs endroits : sur le disque magnétique, dans
mémoire principale, dans le cache, et dans un registre interne.
Dans un environnement multiprocesseur, en plus de maintenir les registres internes, chacun des CPU
also contains a local cache. In such an environment, a copy of A may exist simultaneously in
plusieurs caches. Comme les différents processeurs peuvent tous s'exécuter de manière concurrente, toute mise à jour effectuée sur le
La valeur de A dans un cache est immédiatement reflétée dans tous les autres caches où A réside. Cela
La situation est appelée cohérence de cache, et c'est généralement un problème matériel (géré ci-dessous
niveau du système d'exploitation).
Systèmes I/O
L'un des objectifs d'un système d'exploitation est de cacher les particularités d'un matériel spécifique
les dispositifs de l'utilisateur. Le sous-système d'E/S se compose de plusieurs composants :
Un composant de gestion de la mémoire qui inclut le tamponnage, la mise en cache et
mise en file d'attente
Une interface générale de pilotes de périphériques
Pilotes pour des appareils matériels spécifiques
Seul le pilote de périphérique connaît les particularités du périphérique spécifique auquel il est assigné.
Protection et Sécurité
Protection - tout mécanisme de contrôle d'accès des processus ou des utilisateurs aux ressources définies par le système d'exploitation
La protection améliore la fiabilité. Un système axé sur la protection fournit un moyen de distinguer entre
utilisation autorisée et non autorisée
Sécurité – défense du système contre les attaques internes et externes. De telles attaques se répandent sur un énorme
étendue et inclure des virus et des vers, des attaques par déni de service, etc.
La protection et la sécurité exigent que le système soit capable de distinguer parmi tous ses utilisateurs. La plupart
les systèmes d'exploitation maintiennent
User identities (user IDs, security IDs) include name and associated number, one per user
L'ID utilisateur est alors associé à tous les fichiers et processus de cet utilisateur afin de déterminer le contrôle d'accès.
L'identifiant de groupe (ID de groupe) permet de définir un ensemble d'utilisateurs et de gérer les contrôles.
également associé à chaque processus, fichier.
L'escalade de privilèges permet à un utilisateur de changer son ID effectif pour obtenir des droits supplémentaires.
autorisations pour une activité.
Systèmes Distribués
Un système distribué est un ensemble de systèmes interconnectés pour fournir aux utilisateurs un
accès aux diverses ressources dans le réseau.
L'accès à une ressource partagée augmente la vitesse de computation, la fonctionnalité, la disponibilité des données,
et fiabilité.
Un réseau est un chemin de communication entre deux systèmes ou plus. Les réseaux varient selon le
protocoles utilisés (TCP/IP, UDP, FTP, etc.), les distances entre les nœuds et le transport
media(copper wires, fiber-optic,wireless).
Les réseaux sont caractérisés en fonction des distances entre leurs nœuds. Un réseau local
Un réseau local (LAN) connecte des ordinateurs dans une pièce, un étage ou un bâtiment.
Un réseau étendu (WAN) relie généralement des bâtiments, des villes ou des pays.
Un réseau de zone métropolitaine (MAN) connecte des bâtiments dans une ville.
Les dispositifs BlueTooth et 802.11 utilisent une technologie sans fil pour communiquer sur une distance de
plusieurs pieds, créant essentiellement un réseau de petite zone tel qu'on peut en trouver dans une maison.
Les supports de transport pour véhiculer les réseaux sont également variés. Ils comprennent des fils en cuivre, de la fibre
brins, et transmissions sans fil entre satellites, platines micro-ondes et radios.
Maintenant, des portails permettant aux systèmes en réseau et distants d'accéder aux mêmes ressources
Les réseaux domestiques étaient autrefois un système unique, puis des modems. Maintenant, ils sont protégés par un pare-feu et mis en réseau.
2. Informatique Client-Serveur
Les terminaux muets remplacés par des PC intelligents
De nombreux systèmes maintenant des serveurs, répondant aux requêtes générées par des clients.
Le serveur de calcul fournit une interface au client pour demander des services (c'est-à-dire une base de données)
Le serveur de fichiers fournit une interface pour que les clients stockent et récupèrent des fichiers
Les systèmes d'exploitation fournissent des services aux utilisateurs du système, y compris :
[Link] utilisateur. Presque tous les systèmes d'exploitation ont une interface utilisateur. Cette interface peut prendre plusieurs formes.
L'interface de ligne de commande utilise des commandes textuelles et une méthode pour les saisir (c'est-à-dire, un
programme permettant de saisir et de modifier des commandes).
batch dans lequel des commandes et des directives pour contrôler ces commandes sont entrées dans des fichiers,
et ces fichiers sont exécutés.
L'interface graphique utilisateur est un système de fenêtres avec un dispositif de pointage pour diriger l'entrée/sortie, choisir
à partir des menus, et faites des sélections et un clavier pour saisir du texte.
Certains systèmes offrent deux ou trois de ces variations.
[Link]écution du programme. Le système doit être capable de charger un programme en mémoire et de l'exécuter.
programme. Le programme doit être capable de terminer son exécution, soit normalement, soit anormalement
(indiquant une erreur).
3. Manipulation du système de fichiers. Le système de fichiers est d'un intérêt particulier. Évidemment, les programmes ont besoin
to read and write files and directories.
4. Communications. Il existe de nombreuses circonstances dans lesquelles un processus doit échanger
des informations avec un autre processus. Une telle communication peut se produire entre des processus qui sont
s'exécutant sur le même ordinateur ou entre des processus s'exécutant sur des ordinateurs différents
systèmes.
Les communications peuvent être mises en œuvre via un réseau partagé ou par le biais de l'envoi de messages.
5. Détection des erreurs. Le système d'exploitation doit être constamment conscient des erreurs possibles. Les erreurs
peut se produire dans le matériel du processeur et de la mémoire (tel qu'une erreur de mémoire ou une panne de courant), dans
Périphériques I/O
Les outils de débogage peuvent grandement améliorer les capacités de l'utilisateur et du programmeur à utiliser le système.
efficacement.
Un autre ensemble de fonctions du système d'exploitation existe non pas pour aider l'utilisateur mais plutôt pour garantir que
fonctionnement efficace du système lui-même. Les systèmes avec plusieurs utilisateurs peuvent gagner en efficacité en partageant le
ressources informatiques parmi les utilisateurs
[Link] des ressources - Ressources telles que les cycles CPU, la mémoire principale, l'espace de stockage et l'E/S
les dispositifs doivent être attribués à plusieurs utilisateurs et plusieurs tâches en même temps.
[Link]é – Il existe des services dans le système d'exploitation pour suivre l'activité du système et les ressources.
utilisation, soit à des fins de facturation, soit pour la tenue de dossiers statistiques qui peuvent être utilisés pour
optimiser la performance future.
3. Protection et Sécurité - Les propriétaires des informations (fichiers) dans un environnement multi-utilisateurs ou réseau
le système informatique peut vouloir contrôler l'utilisation de ces informations. Lorsque plusieurs séparés
les processus s'exécutent de manière concurrente, un processus ne doit pas interférer avec un autre ou avec le système d'exploitation.
La protection consiste à s'assurer que tout accès aux ressources du système est contrôlé. La sécurité de
le système des étrangers doit également être effectué, par le biais d'un mot de passe.
Il existe plusieurs façons pour les utilisateurs d'interagir avec le système d'exploitation.
[Link] en ligne de commande, ou interpréteur de commandes
permet aux utilisateurs d'entrer directement des commandes à exécuter par le système d'exploitation.
Les interprètes de commandes sont utilisés pour donner des commandes au système d'exploitation.
Il existe plusieurs interprètes de commandes connus sous le nom de shells. Dans UNIX et Linux
systèmes, il existe plusieurs shells différents, comme le shell Bourne, le shell C, Bourne-
Encore shell, Korn shell, et d'autres
La fonction principale de l'interpréteur de commandes est d'obtenir et d'exécuter les spécifications de l'utilisateur.
commande. Beaucoup des commandes manipulent des fichiers : créer, supprimer, lister, imprimer, copier, exécuter,
et ainsi de suite.
Appels système
System calls is a means to access the services of the operating system.
Généralement écrits en C ou C++, bien que certains soient écrits en assembleur pour des performances optimales.
La figure ci-dessous illustre la séquence des appels système nécessaires pour copier le contenu d'un fichier d'un
fichier (fichier d'entrée) vers un autre fichier (fichier de sortie).
La plupart des programmeurs n'utilisent pas directement les appels système de bas niveau, mais préfèrent utiliser un
Interface de Programmation d'Application, API.
Les API au lieu des appels système directs permettent une plus grande portabilité des programmes entre différents
systèmes.
Les trois API les plus courantes sont l'API Win32 pour Windows et l'API POSIX pour les systèmes basés sur POSIX.
(y compris pratiquement toutes les versions de UNIX, Linux et Mac OS X), et l'API Java pour Java
machine virtuelle (JVM)
L'API effectue ensuite les appels système appropriés via l'interface d'appels système, en utilisant un
table d'appels système pour accéder à des appels système numérotés spécifiques, comme montré dans la figure.
Chaque appel système a un appel système numéroté spécifique. La table des appels systèmes (consistant en
le numéro d'appel système et l'adresse du service particulier) invoque une routine de service particulière
pour un appel système spécifique.
L'appelant ne doit rien savoir sur la manière dont l'appel système est implémenté ni sur ce qu'il fait.
pendant l'exécution.
Trois méthodes générales utilisées pour passer des paramètres au système d'exploitation Plus simple : passer les paramètres dans
dans certains cas, il peut y avoir plus de paramètres que de registres
Paramètres stockés dans un ablock, ou tableau, en mémoire, et l'adresse du bloc passée en tant que paramètre dans un
enregistrer Cette approche adoptée par Linux et Solaris
Les paramètres placés, ou poussés, sur la pile par le programme et retirés de la pile par le
système d'exploitation
Les méthodes de bloc et d'empilement ne limitent pas le nombre ou la longueur des paramètres passés.
a) Contrôle de Processus
Les appels de système de contrôle de processus incluent fin, annuler, charger, exécuter, créer un processus, terminer
process, get/set process attributes, wait for time or event, signal event, and allocate and free
mémoire.
Des processus doivent être créés, lancés, surveillés, mis en pause, repris et finalement arrêtés.
Quand un processus fait une pause ou s'arrête, alors un autre doit être lancé ou repris.
Les attributs de processus tels que la priorité du processus, le temps d'exécution maximal autorisé, etc. sont définis et
récupéré par OS.
After creating the new process, the parent process may have to wait (wait time), or wait for
un événement à se produire (attendre l'événement).
Après avoir créé un fichier, le fichier est ouvert. Les données sont lues ou écrites dans un fichier.
Le pointeur de fichier peut devoir être repositionné à un point.
Les attributs du fichier comme le nom du fichier, le type de fichier, les autorisations, etc. sont définis et récupérés à l'aide de
appels système.
Ces opérations peuvent également être prises en charge pour les répertoires ainsi que pour les fichiers ordinaires.
Programmes Système
Une collection de programmes qui offrent un environnement pratique pour le développement et l'exécution de programmes
(autres que le système d'exploitation) sont appelés programmes système ou utilitaires système. Ce n'est pas une partie du noyau ou de la commande
interprètes.
Les programmes système peuvent être divisés en cinq catégories :
1. Gestion de fichiers - programmes pour créer, supprimer, copier, renommer, imprimer, lister et généralement
manipuler des fichiers et des répertoires.
[Link] sur l'état - Services publics à vérifier à la date, à l'heure, au nombre d'utilisateurs, aux processus en cours d'exécution,
enregistrement de données, etc. Les enregistrements système sont utilisés pour stocker et rappeler des informations de configuration pour
applications particulières.
3. Modification de fichier - par exemple, les éditeurs de texte et d'autres outils qui peuvent changer le contenu des fichiers.
[Link] aux langages de programmation - Par exemple : Compilateurs, éditeurs de liens, débogueurs, profileurs, assembleurs,
gestion des archives de bibliothèques, interprètes pour les langues courantes, et support pour la fabrication.
5. Chargement et exécution du programme - chargeurs, chargeurs dynamiques, chargeurs de superposition, etc., ainsi que
débogueurs interactifs.
6. Communications - Programmes pour fournir une connectivité entre les processus et les utilisateurs,
y compris le courrier électronique, les navigateurs Web, les connexions à distance, les transferts de fichiers et l'exécution de commandes à distance.
Mécanismes et Politiques
Policies determinewhatis to be done. Mechanisms determinehowit is to be
mis en œuvre.
Dans le temporisateur, le compteur et le compteur qui décrémente est le mécanisme et décide comment
longtemps, le temps doit être fixé selon les politiques.
Les politiques changent avec le temps. Dans le pire des cas, chaque changement de politique nécessiterait une
changement dans le mécanisme sous-jacent.
Si elles sont correctement séparées et mises en œuvre, les modifications de politique peuvent être facilement ajustées sans ré-
écrire le code, juste en ajustant des paramètres ou éventuellement en chargeant de nouvelles données
fichiers de configuration.
Mise en œuvre
Traditionnellement, les systèmes d'exploitation étaient écrits en langage d'assemblage.
Ces dernières années, les systèmes d'exploitation sont écrits en C ou en C++. Des sections critiques de code sont toujours écrites en
langage d'assemblage.
Le premier système d'exploitation qui n'a pas été écrit en langage d'assemblage était le Programme de Contrôle Maître
(MCP)
Les avantages d'utiliser un langage de haut niveau pour la mise en œuvre des systèmes d'exploitation sont :
Le code peut être écrit plus rapidement, de manière plus compacte, plus facile à porter sur d'autres systèmes et est plus facile à
comprendre et déboguer.
Les seuls inconvénients de la mise en œuvre d'un système d'exploitation dans un langage de haut niveau sont
vitesse réduite et besoins de stockage accrus.
Structure Simple
De nombreux systèmes d'exploitation n'ont pas de structures bien définies. Ils ont commencé comme petits, simples et
systèmes limités puis ont dépassé leur portée d'origine.
MS-DOS - écrit pour offrir le maximum de fonctionnalités dans le moindre espace, non divisé en modules. Bien que
MS-DOS a une certaine structure, ses interfaces et niveaux de fonctionnalité ne sont pas bien séparés.
Structure de MAC OS X
Modules
Le développement moderne des systèmes d'exploitation est orienté objet, avec un noyau central relativement petit et un ensemble de modules.
qui peut être lié dynamiquement.
Chaque composant principal est séparé
Chaque composant communique avec les autres via des interfaces connues. Chacun est chargeable selon les besoins au sein du noyau.
Globalement, similaire aux couches mais avec plus de flexibilité
Machines Virtuelles
L'idée fondamentale derrière une machine virtuelle est d'abstraire le matériel d'un seul ordinateur (le CPU,
mémoire, disques durs, cartes d'interface réseau, etc.) dans plusieurs environnements d'exécution différents,
créant ainsi l'illusion que chaque environnement d'exécution séparé fonctionne de manière privée.
ordinateur.
Le système d'exploitation hôte est le principal système d'exploitation installé dans le système et les autres systèmes d'exploitation installés dans le système sont appelés
système d'exploitation invité.
Les machines virtuelles sont apparues pour la première fois en tant que système d'exploitation VM pour les ordinateurs centraux IBM en 1972.
Avantages
Capable de partager le même matériel et d'exécuter plusieurs environnements d'exécution différents (OS).
Le système hôte est protégé des machines virtuelles et les machines virtuelles sont protégées.
les uns des autres. Un virus dans le système d'exploitation invité corrompra ce système d'exploitation mais n'affectera pas l'autre invité.
systèmes et systèmes hôtes.
Bien que les machines virtuelles soient séparées les unes des autres, les ressources logicielles peuvent être
partagé entre eux. Deux manières de partager une ressource s/w pour la communication sont : a) Partager un
système de fichiers volume (partie de la mémoire). b) Développer un réseau de communication virtuel pour
communiquer entre les machines virtuelles.
Le système d'exploitation fonctionne sur et contrôle l'ensemble de la machine. Par conséquent, le système actuel
doit être arrêté et retiré de l'utilisation pendant que des changements sont effectués et testés. Cette période est
communément appelé le temps de développement du système. Dans les machines virtuelles, ce problème est éliminé.
Les programmes utilisateur s'exécutent dans une machine virtuelle et le développement système est effectué dans
un autre environnement.
Plusieurs systèmes d'exploitation peuvent fonctionner simultanément sur le système du développeur. Cela aide à une rapide
portage et test du code des programmeurs dans différents environnements.
Consolidation des systèmes – deux systèmes ou plus sont intégrés pour fonctionner dans un seul système.
Simulation–
Ici, le système hôte a une architecture système et le système invité est compilé dans
une architecture différente. Les programmes du système invité compilés peuvent être exécutés dans un émulateur qui
traduit chaque instruction du programme invité en instructions natives de l'ensemble du système hôte.
Paravirtualisation
Cela présente à l'invité un système qui est similaire mais pas identique à celui préféré par l'invité.
Le système. L'invité doit être modifié pour fonctionner sur le matériel para-virtualisé.
Exemples
VMware
VMware fonctionne comme une application sur un système d'exploitation hôte tel que Windows ou Linux et permet
ce système hôte pour exécuter simultanément plusieurs systèmes d'exploitation invités différents de manière indépendante
machines virtuelles.
Dans le scénario ci-dessous, Linux fonctionne comme le système d'exploitation hôte ; FreeBSD, Windows NT, et
Windows XP fonctionne en tant que systèmes d'exploitation invités. La couche de virtualisation est le cœur de
VMware, car il abstrait le matériel physique en machines virtuelles isolées fonctionnant en tant qu'invités
systèmes d'exploitation. Chaque machine virtuelle a son propre processeur virtuel, sa mémoire, ses disques durs, son réseau
interfaces, et ainsi de suite.
Le code source Java est compilé en bytecode Java dans des fichiers .class. Le bytecode Java est binaire.
instructions qui s'exécuteront sur la JVM.
La JVM implémente la gestion de la mémoire et la collecte des ordures.
La JVM se compose d'un chargeur de classes et d'un interpréteur Java. Le chargeur de classes charge les fichiers .class compilés.
à la fois du programme Java et de l'API Java pour l'exécution de l'interpréteur Java. Ensuite, il vérifie le
.class fichier pour validité.
DÉMARRAGE DU SYSTÈME
Le système d'exploitation doit être mis à la disposition du matériel afin que le matériel puisse le démarrer.
Petit morceau de code – chargeur bootstrap, localise le noyau, le charge en mémoire et le démarre
Parfois, un processus en deux étapes où le bloc de démarrage à un emplacement fixe charge le chargeur de démarrage.
Lorsque l'alimentation est activée sur le système, l'exécution commence à un emplacement mémoire fixe utilisé pour contenir le microprogramme.
code d'amorçage initial
Le Processus
La mémoire du processus est divisée en quatre sections
La pile est utilisée pour stocker des variables locales, des fonctions
{"parameters":"paramètres","function return values":"valeurs de retour de fonction","return address":"adresse de retour"}
etc.
Le tas est utilisé pour l'allocation dynamique de mémoire.
La section des données stocke des variables globales et statiques.
La section de texte comprend le programme compilé
code.
Veuillez noter qu'il y a un espace libre entre la pile et le
tas. Lorsque la pile est pleine, elle grandit vers le bas et quand
le tas est plein, il grandit vers le haut
Process State
Lorsqu'un processus s'exécute, son état change. Un processus a 5 états. Chaque processus peut être dans l'un des
états suivants–
Bloc de contrôle de processus
Pour chaque processus, il existe un bloc de contrôle de processus (PCB), qui stocke des informations spécifiques au processus.
information.
Process State–The state of the process may be new, ready, running, waiting, and so on.
Compteur de programme - Le compteur indique l'adresse de l'instruction suivante à exécuter pour
ce processus.
Les registres de l'UC - Le nombre et le type de registres varient en fonction de l'architecture de l'ordinateur.
Ils incluent des accumulateurs, des registres d'index, des pointeurs de pile et des registres à usage général. En outre
avec le compteur de programme, ces informations d'état doivent être sauvegardées lorsqu'une interruption se produit, pour permettre
le processus doit être poursuivi correctement par la suite.
Informations sur la planification du CPU - Ces informations incluent une priorité de processus, des pointeurs vers
files d'attente de planification et tout autre paramètre de planification.
Informations sur la gestion de la mémoire - Cela inclut des informations telles que la valeur de la base
et les registres de limite, les tables de pages ou les tables de segments.
Informations comptables – Ces informations incluent la quantité de CPU et le temps réel utilisés.
limites de temps, numéros de compte, numéros de travail ou de processus, etc.
I/O status information–This information includes the list of I/O devices allocated to the
processus, une liste de fichiers ouverts, etc.
Le PCB sert simplement de réservoir pour toute information qui peut varier d'un processus à l'autre.
Ces files d'attente sont généralement stockées sous forme de liste chaînée de PCB.
. A queue header will contain two pointers - thehead pointerpointing to the first PCB and thetail
pointeur pointant vers le dernier PCB de la liste.
Chaque PCB a un champ de pointeur qui pointe vers le prochain processus dans la file d'attente.
Une représentation courante de la planification des processus est un diagramme de files d'attente. Chaque boîte rectangulaire dans
le diagramme représente une file d'attente.
Deux types de files d'attente sont présentes : la file d'attente prête et un ensemble de files d'attente de périphériques.
Les cercles représentent les ressources qui servent les files d'attente, et les flèches indiquent l'écoulement de
processus dans le système.
Un nouveau processus est d'abord placé dans la file d'attente prête. Il attend dans la file d'attente prête jusqu'à ce qu'il soit sélectionné pour
exécution et se voit attribuer le CPU.
Une fois que le processus est attribué au CPU et est en cours d'exécution, l'un des plusieurs événements pourrait se produire :
Le processus pourrait émettre une demande d'E/S, puis être placé dans une file d'attente d'E/S.
Le processus pourrait créer un nouveau sous-processus et attendre sa terminaison.
Le processus pourrait être retiré de force du CPU, à la suite d'une interruption, et être mis
de retour dans la file d'attente prête.
Dans les deux premiers cas, le processus passe finalement de l'état d'attente à l'état prêt, et
est ensuite remis dans la file d'attente prête.
Un processus continue ce cycle jusqu'à ce qu'il se termine, moment auquel il est retiré de toutes les files d'attente.
Planificateurs
Schedulers are software which selects an available program to be assigned to CPU.
1. Un planificateur à long terme ou planificateur de tâches – sélectionne des tâches dans le pool de tâches (de la mémoire secondaire,
disque) et les charge dans la mémoire. Il est invoqué très rarement (secondes, minutes). Le
le planificateur à long terme contrôle le degré de multiprogrammation
2. Le planificateur à court terme, ou Planificateur CPU - sélectionne les tâches dans la mémoire et assigne le CPU à
Le planificateur à court terme est invoqué très fréquemment (millisecondes) Þ (doit être rapide)
Le planificateur à moyen terme - sélectionne le processus dans la file d'attente des prêts et le réintroduit dans le
mémoire.
Les processus peuvent être décrits comme étant soit :
1. Processus limité par I/O - passe plus de temps à effectuer des E/S qu'à faire des calculs,
2. Processus lié au CPU - passe plus de temps à effectuer des calculs et peu d'opérations d'E/S.
Un système de planification efficace sélectionnera un bon mélange de processus liés au CPU et d'E/S.
processus liés.
Si le planificateur sélectionne davantage de processus liés à l'E/S, alors la file d'attente des E/S sera pleine et la file d'attente prête.
sera vide.
Si le planificateur sélectionne davantage de processus liés au CPU, alors la file d'attente prête sera pleine et la file d'attente I/O.
sera vide.
Changement de contexte
La tâche de passer d'un processus à un autre avec un CPU s'appelle le changement de contexte.
Lorsque le CPU passe à un autre processus, le système doit enregistrer l'état de l'ancien processus et
charger l'état enregistré pour le nouveau processus via un changement de contexte
Le contexte d'un processus est représenté dans le PCB
Le temps de changement de contexte est une surcharge ; le système ne fait aucun travail utile pendant le changement de temps
dépendant du support matériel
Sur les systèmes Solaris typiques, le processus en haut de l'arbre est le processus 'sched' avec un PID de
0.
Le processus 'sched' crée plusieurs processus enfants –init, pageout et fsflush. Pageout et
fsflush est responsable de la gestion de la mémoire et des systèmes de fichiers.
Le processus init avec un PID de 1 sert de processus parent pour tous les processus utilisateur.
Un processus aura besoin de certaines ressources (temps CPU, mémoire, fichiers, périphériques d'E/S) pour accomplir sa
tâche.
Lorsqu'un processus crée un sous-processus, le sous-processus peut être en mesure d'obtenir ses ressources de deux
façons
directement à partir du système d'exploitation.
Le sous-processus peut prendre les ressources du processus parent.
La ressource peut être prise du parent de deux manières –
Le parent peut être amené à répartir ses ressources entre ses enfants
Partagez les ressources entre plusieurs enfants.
Il y a deux options pour le processus parent après avoir créé l'enfant :
Attendez que le processus enfant se termine puis continuez l'exécution. Le parent fait un
appel système wait()
Exécutez en parallèle avec l'enfant, en continuant à exécuter sans attendre.
Deux possibilités pour l'espace d'adresses de l'enfant par rapport au parent :
Le processus enfant est un duplicata du processus parent (il a le même programme et les mêmes données
en tant que parent).
Le processus enfant a un nouveau programme chargé dans celui-ci.
Exemple UNIX
l'appel système fork crée un nouveau processus
L'appel execsystem utilisé après un fork pour remplacer l'espace mémoire du processus par un nouveau
programme
Création de processus
Exemple Windows
dans Windows. Les processus sont créés dans l'API Win32 en utilisant la fonction CreateProcess()
. qui est similaire à fork()
Deux paramètres passés à CreateProcess () sont des instances de STARTUPINFO et
Structures PROCESS_INFORMATION.
STARTUPINFO spécifie de nombreuses propriétés du nouveau processus, telles que la taille de la fenêtre et
#include <stdio.h>
#include <windows.h>
int principal(VIDE)
{
STARTUPINFO si;
INFORMATIONS_DE_PROCESSUS pi;
}
J'alloue de la mémoire
ZeroMemory(&si, sizeof(si));
[Link] = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
Je crée un processus enfant
si (!CreateProcess(NULL, J'utilise la ligne de commande
"C:\WINDOWS\system32\[Link]", II ligne de commande
NULL, je n'hérite pas de la poignée de processus
{
}
NULL, Je n'hérite pas de la poignée de thread
FAUX, je désactive l'héritage des poignées
0, II pas de drapeaux de création
NULL, j'utilise le bloc d'environnement du parent
NULL, j'utilise le répertoire existant du parent
&oui,
&pi))
fprintf(stderr, "Échec de la création du processus");
retourner -1;
Le parent attendra que l'enfant termine
AttendreUnObjetUnique([Link], INFINI);
printf("Enfant Complété");
Je ferme les poignées
FermerHandle([Link]);
FermezHandle([Link]);
2. Terminaison de processus
Un processus se termine lorsqu'il a fini d'exécuter sa dernière instruction et demande au système d'exploitation
système pour le supprimer, en utilisant l'appel système exit( ).
Toutes les ressources assignées au processus, comme la mémoire, les fichiers ouverts et les tampons d'entrée/sortie, sont
désalloué par le système d'exploitation.
Un processus peut provoquer la terminaison d'un autre processus en utilisant un appel système approprié.
Le processus parent peut terminer ses processus enfants en connaissant le PID de l'enfant.
Un parent peut mettre fin à l'exécution des enfants pour diverses raisons, telles que :
L'enfant a dépassé son utilisation des ressources qui lui ont été attribuées.
La tâche assignée à l'enfant n'est plus nécessaire.
Le parent est en train de sortir, et le système d'exploitation termine tous les enfants. Cela est
appelé résiliation en cascade.
Remarque : Les processus qui essaient de se terminer mais qui ne le peuvent pas parce que leur parent ne l'est pas.
Les processus en attente sont appelés zombies. Ceux-ci sont finalement hérités par init en tant qu'orphelins et
tués. (Les shells UNIX modernes ne produisent pas autant d'orphelins et de zombies que les anciens)
systèmes utilisés pour.
Communication interprocessus
Les processus en cours d'exécution peuvent être des processus coopératifs ou des processus indépendants.
Processus indépendants – processus qui ne peuvent pas affecter d'autres processus ou être affectés par d'autres.
processus s'exécutant dans le système.
Processus de coopération – processus qui peuvent affecter d'autres processus ou être affectés par d'autres processus
exécution dans le système.
La coopération entre les processus est autorisée pour les raisons suivantes–
Information Sharing - There may be several processes which need to access the same file. So
l'information doit être accessible en même temps à tous les utilisateurs.
Computation speedup - Often a solution to a problem can be solved faster if the problem can
être décomposé en sous-tâches, qui sont résolues simultanément (en particulier lorsque plusieurs
des processeurs sont impliqués.)
Modularité - Un système peut être divisé en modules coopérants et exécuté en envoyant
informations entre eux.
Commodité - Même un seul utilisateur peut travailler sur plusieurs tâches en partageant des informations.
Les processus coopérants nécessitent une certaine forme de communication inter-processus. Cela est permis par deux
models : 1(Shared Memory systems 2)Message Passing systems.
Dans le modèle de mémoire partagée, une région de mémoire qui est partagée par des processus coopérants est
établi. Les processus peuvent alors échanger des informations en lisant et en écrivant des données sur le partagé
région.
Dans le modèle de passage de messages, la communication se fait par le biais de messages échangés.
entre les processus coopérants. Les deux modèles de communication sont contrastés dans la Figure
1. Une région de mémoire est partagée par L'échange de messages se fait entre les processus
processus de communication, dans lesquels le en utilisant des objets.
l'information est écrite et lue
2. Useful for sending large block of data Utile pour envoyer de petites données.
3. L'appel système est utilisé uniquement pour créer un partagé L'appel système est utilisé lors de chaque lecture et écriture
mémoire opération.
4. Le message est envoyé plus rapidement, car il n'y a pas de Le message est communiqué lentement.
appels système
Systèmes à Mémoire Partagée
Une région de mémoire partagée est créée au sein de l'espace d'adresses d'un processus, qui doit
communiquer. D'autres processus qui ont besoin de communiquer utilisent cette mémoire partagée.
Le processus doit veiller à ce que les deux processus n'écrivent pas les données dans la mémoire partagée à
en même temps.
Considérez un problème de producteur-consommateur. Un processus de production produit des informations qui sont
consommé par un processus de consommation. Par exemple, un compilateur peut produire du code assembleur, qui est
consumé par un assembleur. L'assembleur, à son tour, peut produire des modules d'objet, qui sont
consommé par le chargeur.
Une solution au problème du producteur-consommateur utilise la mémoire partagée où un tampon d'éléments que
peut être rempli par le producteur et vidé par le consommateur, est disponible dans une région de mémoire qui
est partagé par les processus producteurs et consommateurs.
Deux types de tampons peuvent être utilisés
Le tampon sans limites pratiquement aucune limite sur la taille du tampon
le tampon borné suppose qu'il y a une taille de tampon fixe
Le tampon partagé est implémenté comme un tableau circulaire avec deux pointeurs logiques : entrée et sortie.
la variable pointe vers la prochaine position libre dans le tampon ; out pointe vers la première position pleine dans le
le tampon. Le tampon est vide lorsque in == out ; le tampon est plein lorsque ((in + 1) % TAILLE_TAMPON) ==
dehors
#define TAILLE_D_BUFFER 10
typedef struct
{
...
} élément;
élément tampon[BUFFER_SIZE];
int in = 0;
int sortie = 0;
Le processus du producteur a une variable locale nextProduced dans laquelle le nouvel article à produire est
stocké. Le processus consommateur a une variable locale next Consumed dans laquelle l'élément à être
les consommés sont stockés. Ce schéma permet au maximum BUFFER_SIZE - 1 éléments dans le tampon au même
temps.
Processus de production
tant que (vrai) {
/* Produire un article */
tant que (((in = (in + 1) % TAILLE DU BUFFER count) == out)); /* ne rien faire -- pas de buffers libres */
buffer[in] = élément;
in = (in + 1) % TAILLE DU BUFFER;
}
Processus de consommation
tant que (vrai)
{
pendant que (in == out); // ne rien faire -- rien à consommer
// supprimer un élément du tampon
item = tampon[out];
out = (out + 1) % TAILLE DU BUFFER;
retourner l'article;
plusieurs méthodes pour implémenter logiquement un lien et les opérations send 0 et receive() :
Communication directe ou indirecte
Communication synchrone ou asynchrone
Mise en mémoire tampon automatique ou explicite
Les problèmes suivants sont liés à chacun de ces facteurs
1. Naming
Les processus qui souhaitent communiquer doivent avoir un moyen de se référer les uns aux autres. Ils peuvent utiliser soit un moyen direct, soit
communication indirecte.
i. Communication directe - chaque processus qui souhaite communiquer doit explicitement nommer le
destinataire ou expéditeur du
envoyer(P, message)–envoyer un message au processus P
recevoir(Q, message)–recevoir un message du processus Q
Propriétés du lien de communication utilisé dans ce schéma
oLiens sont établis automatiquement
Un lien est associé à exactement une paire de processus de communication. Entre chaque paire.
il existe exactement un lien
Le lien peut être unidirectionnel, mais est généralement bidirectionnel
Ce schéma présente de la symétrie dans l'adressage ; c'est-à-dire que le processus d'envoi et le récepteur
le processus doit nommer l'autre pour communiquer.
osend(P, message) -Envoyer un message au processus P.
oreceive (id, message) -Recevoir un message de n'importe quel processus ; la variable id est définie sur le
nom du processus par lequel la communication a eu lieu.
ii. Communication indirecte-
Les messages sont dirigés et reçus des boîtes aux lettres (également appelées ports) Chaque
la boîte aux lettres a un identifiant unique.
Les processus ne peuvent communiquer que s'ils partagent une boîte aux lettres. Propriétés du lien de communication.
oLink établi uniquement si les processus partagent une boîte aux lettres commune Un lien peut être associé à
de nombreux processus
Chaque paire de processus peut partager plusieurs liens de communication. Un lien peut être unidirectionnel.
ou bidirectionnel
Opérations
Maintenant supposons que les processus P1, P2 et P3 partagent tous la boîte aux lettres A. Le processus P1 envoie un message à
A, alors que P2 et P3 exécutent tous deux un receive() de A. Quel processus recevra le message ?
envoyé par P1 ? La réponse dépend de la méthode que nous choisissons parmi les suivantes.
Autoriser un lien à être associé à au maximum deux processus.
Autoriser au maximum un processus à la fois à exécuter une opération de réception 0.
Autoriser le système à sélectionner arbitrairement quel processus recevra le message (c'est-à-dire,
soit P2 ou P3, mais pas les deux, recevra le message.
Une boîte aux lettres peut être possédée soit par un processus, soit par le système d'exploitation. Si la boîte aux lettres est
possédé par un processus, nous faisons ensuite la distinction entre le propriétaire et l'utilisateur
Puisque chaque boîte aux lettres a un propriétaire unique, il ne peut y avoir aucune confusion sur quel processus
devrait recevoir un message envoyé à cette boîte aux lettres.
Une boîte aux lettres qui appartient au système d'exploitation a une existence propre. Elle est
indépendant et n'est attaché à aucun processus particulier.
Le système d'exploitation doit alors fournir un mécanisme qui permet à un processus de faire le
suivant
Créer une nouvelle boîte aux lettres.
Envoyer et recevoir des messages via la boîte aux lettres.
Supprimer une boîte aux lettres.
2. Synchronisation
Le passage de messages peut être soit bloquant, soit non bloquant
Le blocage est considéré comme synchrone
Le blocage de l'envoi empêche l'expéditeur de continuer tant que le message n'est pas reçu
Le blocage de la réception fait que le récepteur reste bloqué jusqu'à ce qu'un message soit disponible. Non-bloquant est
considéré comme asynchrone
L'envoi non-bloquant permet à l'expéditeur d'envoyer le message et de continuer
La réception non bloquante permet au récepteur de recevoir un message valide ou null
File de messages attachée au lien ; mise en œuvre de l'une des trois manières
La capacité de la file d'attente Zero est de 0 messages. Ainsi, le lien ne peut pas avoir de messages.
attendre à cela. Dans ce cas, l'expéditeur doit se bloquer jusqu'à ce que le destinataire reçoive le message.
Capacité bornée La file d'attente a une longueur finie n ; ainsi, au maximum n messages peuvent y résider.
Si la file d'attente n'est pas pleine lorsqu'un nouveau message est envoyé, le message est placé dans la file d'attente et
l'expéditeur peut continuer l'exécution sans attendre. La capacité du lien est toutefois finie. Si
le lien est plein, l'expéditeur doit bloquer jusqu'à ce qu'il y ait de l'espace disponible dans la file d'attente.
Capacité non bornée - La longueur de la file d'attente est potentiellement infinie ; ainsi, n'importe quel nombre de
les messages peuvent attendre dedans. L'expéditeur ne bloque jamais
Questions
{"definition":"1) Définissez un système d'exploitation. Quel est le point de vue du système sur un système d'exploitation ?"}
exemple.
14) Expliquez comment un système d'exploitation peut être vu comme un gestionnaire de ressources.
15) Qu'est-ce qu'un système d'exploitation distribué ? Quels sont les avantages du système d'exploitation distribué ?
16) Qu'est-ce que les appels systèmes ? Avec des exemples, expliquez les différentes catégories d'appels systèmes.
17) Briefly explain the clustered systems and real time systems.
18) Expliquez la 'dégradation gracieuse' et la 'tolérance aux pannes' dans un système multiprocesseur
19) Qu'est-ce qu'une 'machine virtuelle'? Expliquez le compilateur just-in-time (JIT), utilisé dans une machine virtuelle Java.
20) Define: (i) Micro Kernel (ii) Bootstrap program (iii) Caching (iv) trap (v) Job Pool
21) Quelles sont les opérations du système d'exploitation ? Expliquez. (6)
22) ) Donnez les caractéristiques des systèmes de multiprocession symétriques et asymétriques. (4)
23) Give the features ofsymmetricandasymmetricmultiprocessing systems.
24) Listez et expliquez les avantages d'un système multimultiprocesseur.
25) Différenciez la communication inter-processus directe et indirecte
26) Décrivez les actions qu'un système d'exploitation effectue pour changer de contexte entre les processus.
{"question":"27) Qu'est-ce qu'un processus ? Avec un diagramme d'état, expliquez les états d'un processus. Écrivez également la structure d'un processus."}
30) Expliquez brièvement les classes de services communs fournis par les différents systèmes d'exploitation pour aider le
utilisateur et pour garantir le bon fonctionnement du système.