Système_dExploitation_Avancé_1_Chapitre_1.pdf
Document Details
![TopsDallas](https://quizgecko.com/images/avatars/avatar-13.webp)
Uploaded by TopsDallas
Honoris United Universities
2024
Tags
Full Transcript
ECOLE SUPÉRIEURE PRIVÉE D'INGÉNIEURS DE MONASTIR SYSTEMES D’EXPLOITATION AVANCES 1 HAJER MARAOUI [email protected] Année universitaire : 2024-2025 Objectif du cours ▪ Comprendre le rôle d’un système d’exploitation ▪ Comprend...
ECOLE SUPÉRIEURE PRIVÉE D'INGÉNIEURS DE MONASTIR SYSTEMES D’EXPLOITATION AVANCES 1 HAJER MARAOUI [email protected] Année universitaire : 2024-2025 Objectif du cours ▪ Comprendre le rôle d’un système d’exploitation ▪ Comprendre principe de fonctionnement des systèmes d’exploitation ▪ Maîtriser les fonctionnalités de gestion des mécanismes de base (fichier, processus, appels systèmes, périphériques (E/S)). 2 Table des matières ▪ Chapitre 1 : Introduction aux systèmes d’exploitation : Concepts généraux ▪ Chapitre 2 : Gestion des Processus ▪ Chapitre 3 : Les Processus : Création et synchronisation ▪ Chapitre 4 : Les Communications inter Processus 3 Chapitre 1 : Introduction aux systèmes d’exploitation : Concepts généraux Objectifs du chapitre ▪ Enumérer les fonctionnalités offertes par un système d’exploitation. ▪ Définir un appel système et expliquer son exécution. ▪ Comprendre l’évolution architecturale et matérielle des systèmes informatiques. ▪ Comprendre et appliquer le mécanisme de compilation d’un programme. 5 QU'EST-CE QU'UN SYSTÈME D'EXPLOITATION ? Logiciel essentiel qui gère le matériel de l'ordinateur et les ressources logicielles. Interface entre les applications utilisateur et le matériel de l'ordinateur. 6 Fonctionnalités d'un Système d'Exploitation Gestion des Processus Création, planification, et gestion de l'exécution des processus. Gestion de la Mémoire Allocation, suivi et libération de la mémoire vive. Gestion des Fichiers Organisation, stockage, et accès aux fichiers sur les dispositifs de stockage. Gestion des Périphériques Contrôle et gestion des périphériques matériels (imprimantes, disques, etc.). 7 Fonctionnalités d'un Système d'Exploitation Gestion de la Sécurité Protection des données et des ressources contre les accès non autorisés. Interface Utilisateur Fournir une interface graphique ou en ligne de commande pour l'interaction avec le système. Comment l'utilisateur accède-t-il aux fonctionnalités du système d'exploitation ? 8 Comment l'utilisateur accède-t-il aux fonctionnalités du système d'exploitation ? Appels Système L'accès aux fonctionnalités du système d'exploitation se fait principalement par le biais des appels système, qui agissent comme des ponts entre les programmes utilisateurs et les services fournis par le SE. 9 QU'EST-CE QU'UN APPEL SYSTÈME ? 10 Appel Système Un appel système est une demande faite par un programme utilisateur au noyau du système d'exploitation pour effectuer une opération qui nécessite des privilèges élevés ou un accès direct au matériel. Les appels système fournissent une interface standard pour accéder aux fonctionnalités du SE. Exemples d'Appels Systèmes : `read()`, `write()`, `open()`, `close()` 11 Appel Système Gestion des Processus : Fonctionnalité : Création, gestion, et terminaison des processus. Appel Système : fork(), exec(), wait(), exit() Exemple : Un programme utilise fork() pour créer un nouveau processus. Gestion de la Mémoire : Fonctionnalité : Allocation et libération de mémoire. Appel Système : malloc(), free(), mmap(), munmap() Exemple : Un programme utilise mmap() pour allouer de la mémoire partagée. 12 Appel Système Gestion des Fichiers : ▪ Fonctionnalité : Création, lecture, écriture, et suppression de fichiers. ▪ Appel Système : open(), read(), write(), close(), unlink() ▪ Exemple : Un programme utilise open() pour ouvrir un fichier et write() pour écrire dedans. Gestion des Périphériques : ▪ Fonctionnalité : Communication avec les périphériques matériels. ▪ Appel Système : ioctl(), read(), write() ▪ Exemple : Un programme utilise ioctl() pour envoyer des commandes spécifiques à un périphérique. 13 Appel Système Gestion des Réseaux : Fonctionnalité : Configuration et gestion des connexions réseau. Appel Système : socket(), bind(), listen(), accept(), connect() Exemple : Un programme utilise socket() pour créer une connexion réseau. Sécurité et Protection : ▪ Fonctionnalité : Gestion des permissions et des droits d'accès. ▪ Appel Système : chmod(), chown(), umask() ▪ Exemple : Un programme utilise chmod() pour changer les permissions d'un fichier. 14 Exemples d’appels système : Windows / Unix 15 Evolution Architecturale et Matérielle L'évolution des systèmes informatiques, tant au niveau de l'architecture que du matériel, a été marquée par des progrès significatifs au fil des décennies. Évolution des Architectures : Années 1960-70 : Ordinateurs centraux, multiprogrammation. Années 1980 : Ordinateurs personnels, systèmes multitâches. Années 2000 : Multiprocesseurs, architectures multi-cœurs. Évolution Matérielle : Processeurs : Améliorations en termes de vitesse, nombre de cœurs. Mémoire : Augmentation de la capacité et de la vitesse. Stockage : Disques durs, SSD, stockage en cloud. 16 La 1ère Génération (1940-1950s) Utilisation de tubes à vide. Les ordinateurs de cette époque, comme l'ENIAC, étaient énormes, peu fiables, et consommaient beaucoup d'énergie. La 1ère Génération (1940-1950s) Utilisation de tubes à vide. Les ordinateurs de cette époque, comme l'ENIAC, étaient énormes, peu fiables, et consommaient beaucoup d'énergie. La 1ère Génération (1940-1950s) Utilisation de tubes à vide. Les ordinateurs de cette époque, comme l'ENIAC, étaient énormes, peu fiables, et consommaient beaucoup d'énergie. La 2ème Génération (1950s-1960s) Introduction des transistors, qui ont permis de créer des ordinateurs plus petits, plus rapides et plus fiables, comme les ordinateurs IBM 1401. La 3ème Génération (1960s-1970s) Adoption des circuits intégrés (CI), permettant encore plus de miniaturisation et une augmentation de la puissance de traitement. Des systèmes comme les mainframes IBM System/360 sont représentatifs de cette période. 3ème Génération (1960s-1970s) Adoption des circuits intégrés (CI), permettant encore plus de miniaturisation et une augmentation de la puissance de traitement. Des systèmes comme les mainframes IBM System/360 sont représentatifs de cette période. La 4ème Génération (1970s-Présent) Utilisation de micro- processeurs, qui combinent des millions de transistors sur une seule puce. Cette génération a vu l'émergence des ordinateurs personnels comme les PC et les Macintosh. La 5ème Génération (Présent et Futur) Développement des technologies avancées telles que l'intelligence artificielle, les ordinateurs quantiques, et les architectures parallèles. Cette génération se concentre sur l'intégration des technologies pour une performance et une capacité accrue. La 5ème Génération (Présent et Futur) Développement des technologies avancées telles que l'intelligence artificielle, les ordinateurs quantiques, et les architectures parallèles. Cette génération se concentre sur l'intégration des technologies pour une performance et une capacité accrue. Evolution Matérielle Processeurs Processeurs à un seul cœur : Les premiers processeurs exécutaient une seule tâche à la fois. Les Intel 4004 et 8086 sont des exemples de cette époque. Multi-cœurs : Introduction des processeurs multi-cœurs permettant l'exécution simultanée de plusieurs tâches, améliorant ainsi les performances et la réactivité des systèmes. Processeurs spécialisés : Émergence de processeurs spécialisés comme les GPU pour le traitement graphique et les TPUs pour l'apprentissage automatique. 26 Evolution Matérielle Mémoire Mémoire RAM : Les premières mémoires RAM étaient de petite taille et coûteuses. Avec le temps, la capacité et la vitesse des mémoires RAM ont considérablement augmenté. Stockage : Évolution des supports de stockage, des disques durs aux SSD, avec une augmentation continue de la capacité et de la vitesse de lecture/écriture. 27 Evolution Matérielle Périphériques Périphériques d'entrée/sortie : Les premiers périphériques étaient principalement des cartes perforées et des lecteurs de bandes. Aujourd'hui, nous avons des périphériques d'entrée/sortie sophistiqués comme les claviers, les souris, les écrans tactiles, et les dispositifs de stockage USB. Interfaces : Evolution des interfaces, des ports parallèles et série aux interfaces USB, Thunderbolt, et aux connexions sans fil comme le Bluetooth et le Wi-Fi. 28 Mécanisme de compilation d’un programme ▪ Le processus de compilation transforme un code source écrit dans un langage de programmation (comme le C) en un programme exécutable que l'ordinateur peut comprendre et exécuter. 29 Étapes du processus de compilation ▪ Pré-compilation : Cette étape traite les directives du préprocesseur (comme #include et #define). Le préprocesseur remplace les macros et inclut les fichiers d'en-tête. ▪ Compilation : Le compilateur transforme le code source prétraité en code assembleur. ▪ Assemblage : Le code assembleur est converti en code machine binaire (fichiers objets). ▪ Édition des Liens : Les fichiers objets sont combinés avec des bibliothèques et d'autres fichiers objets pour créer un fichier exécutable. 30 Préparer l’Environnement ▪ Avant de compiler un programme en C sur Ubuntu, vous devez vous assurer que les outils nécessaires sont installés. En général, vous aurez besoin du compilateur gcc (GNU Compiler Collection). ▪ Pour installer gcc, ouvrez un terminal et exécutez : sudo apt update sudo apt install gcc 31 Écrire un Programme en C ▪ Créez un fichier source en C. Par exemple, un fichier hello.c avec le code suivant : #include int main() { printf("Hello, World!\n"); return 0; } 32 Compiler le Programme ▪ Ouvrez un terminal et naviguez jusqu'au répertoire contenant votre fichier hello.c. Ensuite, compilez le programme en utilisant gcc : gcc -o hello hello.c Explication des options : ❑ gcc : Le compilateur GNU pour le langage C. ❑ -o hello : Spécifie le nom du fichier exécutable de sortie (hello dans ce cas). ❑ hello.c : Le fichier source en C à compiler. 33 Exécuter le Programme ▪ Après compilation, vous pouvez exécuter le programme en utilisant la commande suivante dans le terminal :./hello ▪ Vous devriez voir le message : Hello, World! 34